Repository: NosCoreIO/NosCore Branch: master Commit: 20e599074479 Files: 976 Total size: 8.7 MB Directory structure: gitextract_crxs70bx/ ├── .coderabbit.yaml ├── .editorconfig ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ ├── dependabot.yml │ └── workflows/ │ └── dotnet.yml ├── .gitignore ├── CONTRIBUTING.md ├── Directory.Build.props ├── Directory.Packages.props ├── LICENSE ├── NosCore.sln ├── NosCore.sln.DotSettings ├── NosCore.sln.startup.json ├── NuGet.config ├── README.md ├── build/ │ └── .gitkeep ├── build-exe.cmd ├── build.cmd ├── codecov.yml ├── configuration/ │ ├── api.yml │ ├── database.yml │ ├── logger.yml │ ├── login.yml │ ├── master.yml │ ├── parser.yml │ └── world.yml ├── deploy/ │ ├── Dockerfile-login │ ├── Dockerfile-master │ └── Dockerfile-world ├── docker-compose.yml ├── documentation/ │ ├── PostmanCollection/ │ │ └── NosCore.postman_collection.json │ └── dat/ │ ├── Card.dat.md │ ├── Item.dat.md │ ├── Skill.dat.md │ ├── monster.dat.md │ └── quest.dat.md ├── lgtm.yml ├── scripts/ │ ├── Docker - All.cmd │ ├── Docker - LoginServer.cmd │ ├── Docker - MasterServer.cmd │ ├── Docker - Postgres.cmd │ ├── Docker - ReverseProxy.cmd │ ├── Docker - Shutdown.cmd │ ├── Docker - WorldServer.cmd │ ├── LoginServer.cmd │ ├── MasterServer.cmd │ ├── Parser.cmd │ ├── WorldServer.cmd │ └── docker-publish.sh ├── src/ │ ├── NosCore.Core/ │ │ ├── AuthorizeRoleAttribute.cs │ │ ├── Channel.cs │ │ ├── ChannelInfo.cs │ │ ├── Concurrency/ │ │ │ └── AsyncLock.cs │ │ ├── Configuration/ │ │ │ ├── LoginConfiguration.cs │ │ │ └── WorldConfiguration.cs │ │ ├── ConfigureJwtBearerOptions.cs │ │ ├── ConnectionInfo.cs │ │ ├── Encryption/ │ │ │ ├── BcryptEncryption.cs │ │ │ ├── Pbkdf2Hasher.cs │ │ │ └── Sha512Hasher.cs │ │ ├── Extensions/ │ │ │ └── TypeExtension.cs │ │ ├── I18N/ │ │ │ ├── GameLanguageLocalizer.cs │ │ │ └── IGameLanguageLocalizer.cs │ │ ├── NosCore.Core.csproj │ │ ├── Observability/ │ │ │ └── NosCoreTelemetry.cs │ │ ├── Services/ │ │ │ └── IdService/ │ │ │ ├── IIdService.cs │ │ │ └── IdService.cs │ │ └── SessionFactory.cs │ ├── NosCore.Data/ │ │ ├── CommandPackets/ │ │ │ ├── ChangeChannelPacket.cs │ │ │ ├── ChangeClassPacket.cs │ │ │ ├── ChangeGenderPacket.cs │ │ │ ├── ClearInventoryPacket.cs │ │ │ ├── CommandPacketHeaderAttribute.cs │ │ │ ├── CreateItemPacket.cs │ │ │ ├── EffectCommandPacket.cs │ │ │ ├── EntryPointPacket.cs │ │ │ ├── FlCommandPacket.cs │ │ │ ├── GiftPacket.cs │ │ │ ├── HelpPacket.cs │ │ │ ├── ICommandPacket.cs │ │ │ ├── InvisibleCommandPacket.cs │ │ │ ├── KickPacket.cs │ │ │ ├── KillPacket.cs │ │ │ ├── PositionPacket.cs │ │ │ ├── SetBankGoldPacket.cs │ │ │ ├── SetGoldCommandPacket.cs │ │ │ ├── SetHairColorPacket.cs │ │ │ ├── SetHairStylePacket.cs │ │ │ ├── SetHeroLevelCommandPacket.cs │ │ │ ├── SetHeroXpPacket.cs │ │ │ ├── SetJobLevelCommandPacket.cs │ │ │ ├── SetJobLevelXpPacket.cs │ │ │ ├── SetLevelCommandPacket.cs │ │ │ ├── SetMaintenancePacket.cs │ │ │ ├── SetReputationPacket.cs │ │ │ ├── SetSpAdditionPointPacket.cs │ │ │ ├── SetSpPointPacket.cs │ │ │ ├── ShoutHerePacket.cs │ │ │ ├── ShoutPacket.cs │ │ │ ├── SizePacket.cs │ │ │ ├── SpeedPacket.cs │ │ │ └── TeleportPacket.cs │ │ ├── DataAttributes/ │ │ │ └── StaticMetaDataAttribute.cs │ │ ├── Dto/ │ │ │ ├── I18NFromAttribute.cs │ │ │ ├── I18NString.cs │ │ │ ├── IDTO.cs │ │ │ ├── II18NDto.cs │ │ │ ├── IItemInstanceDto.cs │ │ │ ├── IStaticDto.cs │ │ │ └── StaticDtoExtension.cs │ │ ├── Enumerations/ │ │ │ ├── Audit/ │ │ │ │ └── AuditLogType.cs │ │ │ ├── Battle/ │ │ │ │ └── TargetHitType.cs │ │ │ ├── Bazaar/ │ │ │ │ ├── BazaarEquipmentType.cs │ │ │ │ ├── BazaarJeweleryType.cs │ │ │ │ ├── BazaarMainType.cs │ │ │ │ └── BazaarUsableType.cs │ │ │ ├── Buff/ │ │ │ │ ├── AdditionalTypes.cs │ │ │ │ ├── BCardType.cs │ │ │ │ ├── BuffType.cs │ │ │ │ ├── MedalType.cs │ │ │ │ ├── ShellOptionType.cs │ │ │ │ └── StaticBonusType.cs │ │ │ ├── Character/ │ │ │ │ ├── CharacterOption.cs │ │ │ │ ├── CharacterState.cs │ │ │ │ ├── FactionType.cs │ │ │ │ └── MateType.cs │ │ │ ├── Event/ │ │ │ │ ├── EventActionType.cs │ │ │ │ └── EventType.cs │ │ │ ├── Family/ │ │ │ │ ├── FamilyAuthority.cs │ │ │ │ ├── FamilyLogType.cs │ │ │ │ └── FamilyMemberRank.cs │ │ │ ├── Group/ │ │ │ │ ├── GroupSharingType.cs │ │ │ │ └── GroupType.cs │ │ │ ├── HashingType.cs │ │ │ ├── I18N/ │ │ │ │ └── LanguageKey.cs │ │ │ ├── Interaction/ │ │ │ │ ├── Act4RaidType.cs │ │ │ │ ├── ArenaTeamType.cs │ │ │ │ ├── ChatType.cs │ │ │ │ ├── GeneralLogType.cs │ │ │ │ ├── InRespawnType.cs │ │ │ │ ├── PenaltyType.cs │ │ │ │ ├── ReceiverType.cs │ │ │ │ ├── RespawnType.cs │ │ │ │ ├── ScriptedInstanceType.cs │ │ │ │ ├── TalentArenaOptionType.cs │ │ │ │ └── TeleporterType.cs │ │ │ ├── Items/ │ │ │ │ ├── CellonType.cs │ │ │ │ ├── ItemEffectType.cs │ │ │ │ ├── ItemType.cs │ │ │ │ ├── JewelOptionType.cs │ │ │ │ ├── RarifyMode.cs │ │ │ │ ├── RarifyProtection.cs │ │ │ │ ├── UpgradeMode.cs │ │ │ │ └── UpgradeProtection.cs │ │ │ ├── Map/ │ │ │ │ ├── MapInstanceEventType.cs │ │ │ │ ├── MapInstanceType.cs │ │ │ │ ├── MapTypeType.cs │ │ │ │ └── MonsterType.cs │ │ │ ├── Miniland/ │ │ │ │ └── WarehouseType.cs │ │ │ ├── NoscorePocketType.cs │ │ │ ├── Quest/ │ │ │ │ └── QuestRewardType.cs │ │ │ ├── SaveResult.cs │ │ │ └── UpdateStatActionType.cs │ │ ├── GameObjectMapper.cs │ │ ├── NosCore.Data.csproj │ │ ├── Resource/ │ │ │ ├── LocalizedResources.Designer.cs │ │ │ ├── LocalizedResources.cs.resx │ │ │ ├── LocalizedResources.de.resx │ │ │ ├── LocalizedResources.es.resx │ │ │ ├── LocalizedResources.fr.resx │ │ │ ├── LocalizedResources.it.resx │ │ │ ├── LocalizedResources.pl.resx │ │ │ ├── LocalizedResources.resx │ │ │ ├── LocalizedResources.ru.resx │ │ │ └── LocalizedResources.tr.resx │ │ └── WebApi/ │ │ ├── AuthIntent.cs │ │ ├── BazaarLink.cs │ │ ├── BazaarRequest.cs │ │ ├── BlacklistRequest.cs │ │ ├── Character.cs │ │ ├── CharacterRelationStatus.cs │ │ ├── FriendShipRequest.cs │ │ ├── MailRequest.cs │ │ ├── Subscriber.cs │ │ ├── WareHouseDepositRequest.cs │ │ └── WarehouseLink.cs │ ├── NosCore.Database/ │ │ ├── DesignTimeDbContextFactory.cs │ │ ├── Entities/ │ │ │ ├── Account.cs │ │ │ ├── Act.cs │ │ │ ├── ActPart.cs │ │ │ ├── AuditLog.cs │ │ │ ├── BCard.cs │ │ │ ├── Base/ │ │ │ │ ├── I18NStringAttribute.cs │ │ │ │ ├── IEntity.cs │ │ │ │ ├── IStaticEntity.cs │ │ │ │ └── SynchronizableBaseEntity.cs │ │ │ ├── BazaarItem.cs │ │ │ ├── BoxInstance.cs │ │ │ ├── Card.cs │ │ │ ├── Character.cs │ │ │ ├── CharacterActPart.cs │ │ │ ├── CharacterQuest.cs │ │ │ ├── CharacterQuestObjective.cs │ │ │ ├── CharacterRelation.cs │ │ │ ├── Characterskill.cs │ │ │ ├── Combo.cs │ │ │ ├── Drop.cs │ │ │ ├── EquipmentOption.cs │ │ │ ├── Family.cs │ │ │ ├── FamilyCharacter.cs │ │ │ ├── FamilyLog.cs │ │ │ ├── I18NActDesc.cs │ │ │ ├── I18NBCard.cs │ │ │ ├── I18NCard.cs │ │ │ ├── I18NItem.cs │ │ │ ├── I18NMapIdData.cs │ │ │ ├── I18NMapPointData.cs │ │ │ ├── I18NNpcMonster.cs │ │ │ ├── I18NNpcMonsterTalk.cs │ │ │ ├── I18NQuest.cs │ │ │ ├── I18NSkill.cs │ │ │ ├── InventoryItemInstance.cs │ │ │ ├── Item.cs │ │ │ ├── ItemInstance.cs │ │ │ ├── Mail.cs │ │ │ ├── Map.cs │ │ │ ├── MapMonster.cs │ │ │ ├── MapNpc.cs │ │ │ ├── MapType.cs │ │ │ ├── MapTypeMap.cs │ │ │ ├── Mate.cs │ │ │ ├── Miniland.cs │ │ │ ├── MinilandObject.cs │ │ │ ├── NpcMonster.cs │ │ │ ├── NpcMonsterskill.cs │ │ │ ├── NpcTalk.cs │ │ │ ├── PenaltyLog.cs │ │ │ ├── Portal.cs │ │ │ ├── Quest.cs │ │ │ ├── QuestObjective.cs │ │ │ ├── QuestQuestReward.cs │ │ │ ├── QuestReward.cs │ │ │ ├── QuicklistEntry.cs │ │ │ ├── Recipe.cs │ │ │ ├── RecipeItem.cs │ │ │ ├── Respawn.cs │ │ │ ├── RespawnMapType.cs │ │ │ ├── RollGeneratedItem.cs │ │ │ ├── Script.cs │ │ │ ├── ScriptedInstance.cs │ │ │ ├── Shop.cs │ │ │ ├── ShopItem.cs │ │ │ ├── Shopskill.cs │ │ │ ├── Skill.cs │ │ │ ├── SpecialistInstance.cs │ │ │ ├── StaticBonus.cs │ │ │ ├── StaticBuff.cs │ │ │ ├── Teleporter.cs │ │ │ ├── Title.cs │ │ │ ├── UsableInstance.cs │ │ │ ├── Warehouse.cs │ │ │ ├── WarehouseItem.cs │ │ │ └── WearableInstance.cs │ │ ├── Hosting/ │ │ │ └── PersistenceModule.cs │ │ ├── Migrations/ │ │ │ ├── 20220103074410_FirstMigration.Designer.cs │ │ │ ├── 20220103074410_FirstMigration.cs │ │ │ ├── 20231125092440_BumpToEf8.Designer.cs │ │ │ ├── 20231125092440_BumpToEf8.cs │ │ │ ├── 20260420121955_AddCharacterQuestObjective.Designer.cs │ │ │ ├── 20260420121955_AddCharacterQuestObjective.cs │ │ │ ├── 20260420231052_AddNpcMonsterCanWalk.Designer.cs │ │ │ ├── 20260420231052_AddNpcMonsterCanWalk.cs │ │ │ ├── 20260421034800_ParseMonsterDatExtras.Designer.cs │ │ │ ├── 20260421034800_ParseMonsterDatExtras.cs │ │ │ ├── 20260421054001_AddBCardSlot.Designer.cs │ │ │ ├── 20260421054001_AddBCardSlot.cs │ │ │ ├── 20260421070126_AddMountAndRaidPockets.Designer.cs │ │ │ ├── 20260421070126_AddMountAndRaidPockets.cs │ │ │ ├── 20260421105756_DropMapMonsterIsMoving.Designer.cs │ │ │ ├── 20260421105756_DropMapMonsterIsMoving.cs │ │ │ ├── 20260421112205_ParseExtraNpcMonsterColumns.Designer.cs │ │ │ ├── 20260421112205_ParseExtraNpcMonsterColumns.cs │ │ │ ├── 20260424144528_AddMateCaptureItemEffect.Designer.cs │ │ │ ├── 20260424144528_AddMateCaptureItemEffect.cs │ │ │ └── NosCoreContextModelSnapshot.cs │ │ ├── NosCore.Database.csproj │ │ └── NosCoreContext.cs │ ├── NosCore.GameObject/ │ │ ├── Ecs/ │ │ │ ├── Attributes/ │ │ │ │ └── ComponentBundleAttribute.cs │ │ │ ├── Components/ │ │ │ │ ├── AggroComponent.cs │ │ │ │ ├── AppearanceComponent.cs │ │ │ │ ├── BuffStateComponent.cs │ │ │ │ ├── CombatComponent.cs │ │ │ │ ├── EffectComponent.cs │ │ │ │ ├── EntityIdentityComponent.cs │ │ │ │ ├── ExperienceComponent.cs │ │ │ │ ├── GoldComponent.cs │ │ │ │ ├── HealthComponent.cs │ │ │ │ ├── ManaComponent.cs │ │ │ │ ├── MapItemDataComponent.cs │ │ │ │ ├── NameComponent.cs │ │ │ │ ├── NpcDataComponent.cs │ │ │ │ ├── NpcMovementComponent.cs │ │ │ │ ├── NpcStateComponent.cs │ │ │ │ ├── PlayerComponent.cs │ │ │ │ ├── PlayerContextComponent.cs │ │ │ │ ├── PlayerFlagsComponent.cs │ │ │ │ ├── PlayerInventoryComponent.cs │ │ │ │ ├── PlayerNetworkComponent.cs │ │ │ │ ├── PlayerRequestsComponent.cs │ │ │ │ ├── PlayerSocialComponent.cs │ │ │ │ ├── PlayerStateComponent.cs │ │ │ │ ├── PositionComponent.cs │ │ │ │ ├── ReputationComponent.cs │ │ │ │ ├── SkillCooldownComponent.cs │ │ │ │ ├── SpComponent.cs │ │ │ │ ├── SpawnComponent.cs │ │ │ │ ├── SpeedComponent.cs │ │ │ │ ├── TimingComponent.cs │ │ │ │ └── VisualComponent.cs │ │ │ ├── DignityLevels.cs │ │ │ ├── Extensions/ │ │ │ │ ├── AliveEntityExtension.cs │ │ │ │ ├── CharacterEntityExtension.cs │ │ │ │ ├── GroupExtension.cs │ │ │ │ ├── ItemInstanceExtension.cs │ │ │ │ ├── MapItemBundleExtensions.cs │ │ │ │ ├── MonsterBundleExtensions.cs │ │ │ │ ├── NonPlayableEntityExtension.cs │ │ │ │ ├── NpcBundleExtensions.cs │ │ │ │ ├── NpcInfoExtensions.cs │ │ │ │ ├── PlayerBundleExtensions.cs │ │ │ │ └── VisualEntityExtension.cs │ │ │ ├── Interfaces/ │ │ │ │ ├── IAliveEntity.cs │ │ │ │ ├── ICharacterEntity.cs │ │ │ │ ├── INamedEntity.cs │ │ │ │ ├── INonPlayableEntity.cs │ │ │ │ └── IVisualEntity.cs │ │ │ ├── MapItemComponentBundle.cs │ │ │ ├── MapWorld.cs │ │ │ ├── MonsterComponentBundle.cs │ │ │ ├── NpcComponentBundle.cs │ │ │ ├── PlayerComponentBundle.cs │ │ │ ├── ReputationLevels.cs │ │ │ └── Systems/ │ │ │ ├── MovementSystem.cs │ │ │ └── VisibilitySystem.cs │ │ ├── Hosting/ │ │ │ └── Modules/ │ │ │ └── NetworkingModule.cs │ │ ├── Infastructure/ │ │ │ ├── IPacketHandler.cs │ │ │ └── ISingletonService.cs │ │ ├── InterChannelCommunication/ │ │ │ ├── HubConnectionFactory.cs │ │ │ ├── Hubs/ │ │ │ │ ├── AuthHub/ │ │ │ │ │ ├── AuthHub.cs │ │ │ │ │ ├── AuthHubClient.cs │ │ │ │ │ └── IAuthHub.cs │ │ │ │ ├── BaseHubClient.cs │ │ │ │ ├── BazaarHub/ │ │ │ │ │ ├── BazaarHub.cs │ │ │ │ │ ├── BazaarHubClient.cs │ │ │ │ │ └── IBazaarHub.cs │ │ │ │ ├── BlacklistHub/ │ │ │ │ │ ├── BlacklistHub.cs │ │ │ │ │ ├── BlacklistHubClient.cs │ │ │ │ │ └── IBlacklistHub.cs │ │ │ │ ├── ChannelHub/ │ │ │ │ │ ├── ChannelHub.cs │ │ │ │ │ ├── ChannelHubClient.cs │ │ │ │ │ └── IChannelHub.cs │ │ │ │ ├── FriendHub/ │ │ │ │ │ ├── FriendHub.cs │ │ │ │ │ ├── FriendHubClient.cs │ │ │ │ │ └── IFriendHub.cs │ │ │ │ ├── MailHub/ │ │ │ │ │ ├── IMailHub.cs │ │ │ │ │ ├── MailHub.cs │ │ │ │ │ └── MailHubClient.cs │ │ │ │ ├── PubSub/ │ │ │ │ │ ├── IPubSubHub.cs │ │ │ │ │ ├── PubSubHub.cs │ │ │ │ │ └── PubSubHubClient.cs │ │ │ │ └── WarehouseHub/ │ │ │ │ ├── IWarehouseHub.cs │ │ │ │ ├── WarehouseHub.cs │ │ │ │ └── WarehouseHubClient.cs │ │ │ ├── MasterClientList.cs │ │ │ ├── Messages/ │ │ │ │ ├── DeleteMailData.cs │ │ │ │ ├── DisconnectData.cs │ │ │ │ ├── IMessage.cs │ │ │ │ ├── MailData.cs │ │ │ │ ├── PostedPacket.cs │ │ │ │ └── StatData.cs │ │ │ └── PolymorphicConverter.cs │ │ ├── Map/ │ │ │ ├── Map.cs │ │ │ └── Portal.cs │ │ ├── Messaging/ │ │ │ ├── Events/ │ │ │ │ ├── CharacterMovedEvent.cs │ │ │ │ ├── EntityCapturedEvent.cs │ │ │ │ ├── EntityDamagedEvent.cs │ │ │ │ ├── EntityDiedEvent.cs │ │ │ │ ├── GuriPacketReceivedEvent.cs │ │ │ │ ├── ItemUsedEvent.cs │ │ │ │ ├── MapInstanceEnteredEvent.cs │ │ │ │ ├── MapItemPickedUpEvent.cs │ │ │ │ └── QuestCompletedEvent.cs │ │ │ ├── Handlers/ │ │ │ │ ├── Battle/ │ │ │ │ │ ├── DeathBCardHandler.cs │ │ │ │ │ ├── MonsterAggroHandler.cs │ │ │ │ │ ├── MonsterRespawnHandler.cs │ │ │ │ │ ├── PlayerRevivalHandler.cs │ │ │ │ │ └── RewardDistributionHandler.cs │ │ │ │ ├── Guri/ │ │ │ │ │ ├── EmoticonHandler.cs │ │ │ │ │ ├── MfaHandler.cs │ │ │ │ │ ├── SpeakerHandler.cs │ │ │ │ │ └── TitleHandler.cs │ │ │ │ ├── Map/ │ │ │ │ │ └── MinilandEntranceHandler.cs │ │ │ │ ├── MapItem/ │ │ │ │ │ ├── DropHandler.cs │ │ │ │ │ ├── GoldDropHandler.cs │ │ │ │ │ └── SpChargerHandler.cs │ │ │ │ ├── Nrun/ │ │ │ │ │ ├── BazaarHandler.cs │ │ │ │ │ ├── CellonItemHandler.cs │ │ │ │ │ ├── ChangeClassHandler.cs │ │ │ │ │ ├── FinishedTsDialogHandler.cs │ │ │ │ │ ├── INrunEventHandler.cs │ │ │ │ │ ├── OpenProductionHandler.cs │ │ │ │ │ ├── OpenShopHandler.cs │ │ │ │ │ ├── SetPlaceOfRevivalHandler.cs │ │ │ │ │ ├── TeleporterHandler.cs │ │ │ │ │ └── UpgradeItemHandler.cs │ │ │ │ ├── Quest/ │ │ │ │ │ ├── OnCharacterMovedHandler.cs │ │ │ │ │ ├── OnEntityCapturedHandler.cs │ │ │ │ │ ├── OnEntityDiedHandler.cs │ │ │ │ │ └── OnQuestCompletedHandler.cs │ │ │ │ └── UseItem/ │ │ │ │ ├── BackPackHandler.cs │ │ │ │ ├── BazaarMedalsHandler.cs │ │ │ │ ├── BoxEffectHandler.cs │ │ │ │ ├── ChangeGenderHandler.cs │ │ │ │ ├── HairDieHandler.cs │ │ │ │ ├── MinilandBellHandler.cs │ │ │ │ ├── PetBasketHandler.cs │ │ │ │ ├── SealedTarotCardHandler.cs │ │ │ │ ├── SpRechargerHandler.cs │ │ │ │ ├── SpeakerHandler.cs │ │ │ │ ├── TitleHandler.cs │ │ │ │ ├── VehicleHandler.cs │ │ │ │ └── WearHandler.cs │ │ │ ├── RecurringMessagePublisher.cs │ │ │ ├── ScheduledJobs/ │ │ │ │ ├── RemoveTimeoutStaticBonusesHandler.cs │ │ │ │ ├── RemoveTimeoutStaticBonusesMessage.cs │ │ │ │ ├── SaveAllSessionsHandler.cs │ │ │ │ └── SaveAllSessionsMessage.cs │ │ │ ├── WolverineDependencyRegistrar.cs │ │ │ └── WolverineHostExtensions.cs │ │ ├── Networking/ │ │ │ ├── Broadcaster.cs │ │ │ └── ClientSession/ │ │ │ ├── ClientSession.cs │ │ │ ├── DisconnectHandlers/ │ │ │ │ ├── ExchangeDisconnectHandler.cs │ │ │ │ ├── FriendNotificationDisconnectHandler.cs │ │ │ │ ├── MapDisconnectHandler.cs │ │ │ │ ├── MinilandDisconnectHandler.cs │ │ │ │ └── SaveDisconnectHandler.cs │ │ │ ├── IPacketHandlingStrategy.cs │ │ │ ├── ISessionDisconnectHandler.cs │ │ │ ├── LoginPacketHandlingStrategy.cs │ │ │ ├── NpcDialogRequestSubject.cs │ │ │ ├── RequestData.cs │ │ │ └── WorldPacketHandlingStrategy.cs │ │ ├── NosCore.GameObject.csproj │ │ └── Services/ │ │ ├── AuthService/ │ │ │ ├── AuthCodeService.cs │ │ │ └── IAuthCodeService.cs │ │ ├── BattleService/ │ │ │ ├── AggroService.cs │ │ │ ├── BattleService.cs │ │ │ ├── BattleStatsProvider.cs │ │ │ ├── BuffService.cs │ │ │ ├── CaptureService.cs │ │ │ ├── CharacterSkill.cs │ │ │ ├── DamageCalculator.cs │ │ │ ├── DamageResult.cs │ │ │ ├── HitArguments.cs │ │ │ ├── HitQueue.cs │ │ │ ├── IAggroService.cs │ │ │ ├── IBattleService.cs │ │ │ ├── IBattleStatsProvider.cs │ │ │ ├── IBuffService.cs │ │ │ ├── ICaptureService.cs │ │ │ ├── IDamageCalculator.cs │ │ │ ├── IHitQueue.cs │ │ │ ├── IMonsterAi.cs │ │ │ ├── INpcCombatCatalog.cs │ │ │ ├── IRandomProvider.cs │ │ │ ├── IRegenerationService.cs │ │ │ ├── IRespawnService.cs │ │ │ ├── IRewardService.cs │ │ │ ├── ISkillResolver.cs │ │ │ ├── ITargetResolver.cs │ │ │ ├── Model/ │ │ │ │ ├── BuffInstance.cs │ │ │ │ ├── CombatStats.cs │ │ │ │ ├── HitOutcome.cs │ │ │ │ ├── HitRequest.cs │ │ │ │ └── SkillInfo.cs │ │ │ ├── MonsterAi.cs │ │ │ ├── NpcCombatCatalog.cs │ │ │ ├── RegenerationService.cs │ │ │ ├── RespawnService.cs │ │ │ ├── RewardService.cs │ │ │ ├── SkillResolver.cs │ │ │ ├── SkillResult.cs │ │ │ └── TargetResolver.cs │ │ ├── BazaarService/ │ │ │ ├── BazaarRegistry.cs │ │ │ ├── BazaarService.cs │ │ │ ├── IBazaarRegistry.cs │ │ │ └── IBazaarService.cs │ │ ├── BlackListService/ │ │ │ ├── BlacklistService.cs │ │ │ └── IBlacklistService.cs │ │ ├── BroadcastService/ │ │ │ ├── IPacketBroadcaster.cs │ │ │ ├── IPacketSender.cs │ │ │ ├── IPacketTarget.cs │ │ │ ├── ISessionRegistry.cs │ │ │ ├── PacketBroadcaster.cs │ │ │ └── SessionRegistry.cs │ │ ├── ChannelCommunicationService/ │ │ │ ├── ChannelCommunicationRunner.cs │ │ │ └── Handlers/ │ │ │ ├── DeleteMailDataMessageChannelCommunicationMessageHandler.cs │ │ │ ├── DisconnectDataMessageChannelCommunicationMessageHandler.cs │ │ │ ├── IChannelCommunicationMessageHandler.cs │ │ │ ├── MailDataMessageChannelCommunicationMessageHandler.cs │ │ │ ├── PostedPacketMessageChannelCommunicationMessageHandler.cs │ │ │ └── StatDataMessageChannelCommunicationMessageHandler.cs │ │ ├── ChannelService/ │ │ │ ├── ChannelService.cs │ │ │ └── IChannelService.cs │ │ ├── CharacterService/ │ │ │ ├── CharacterInitializationService.cs │ │ │ └── ICharacterInitializationService.cs │ │ ├── ExchangeService/ │ │ │ ├── ExchangeData.cs │ │ │ ├── ExchangeRequestRegistry.cs │ │ │ ├── ExchangeService.cs │ │ │ ├── IExchangeRequestRegistry.cs │ │ │ └── IExchangeService.cs │ │ ├── ExperienceService/ │ │ │ ├── ExperienceProgressionService.cs │ │ │ └── IExperienceProgressionService.cs │ │ ├── FriendService/ │ │ │ ├── CharacterRelation.cs │ │ │ ├── FriendRequestRegistry.cs │ │ │ ├── FriendService.cs │ │ │ ├── IFriendRequestRegistry.cs │ │ │ └── IFriendService.cs │ │ ├── GroupService/ │ │ │ ├── Group.cs │ │ │ ├── GroupRegistry.cs │ │ │ └── IGroupRegistry.cs │ │ ├── InventoryService/ │ │ │ ├── IInventoryService.cs │ │ │ ├── InventoryItemInstance.cs │ │ │ └── InventoryService.cs │ │ ├── ItemGenerationService/ │ │ │ ├── IItemGenerationService.cs │ │ │ ├── Item/ │ │ │ │ ├── BoxInstance.cs │ │ │ │ ├── IItemInstance.cs │ │ │ │ ├── Item.cs │ │ │ │ ├── ItemInstance.cs │ │ │ │ ├── SpecialistInstance.cs │ │ │ │ ├── UsableInstance.cs │ │ │ │ └── WearableInstance.cs │ │ │ └── ItemGenerationService.cs │ │ ├── ItemStorage/ │ │ │ ├── ISlotBasedStorage.cs │ │ │ ├── ISlotItem.cs │ │ │ └── SlotStorageHelper.cs │ │ ├── LoginService/ │ │ │ ├── ILoginService.cs │ │ │ └── LoginService.cs │ │ ├── MailService/ │ │ │ ├── Gift.cs │ │ │ ├── GiftHelper.cs │ │ │ ├── IMailService.cs │ │ │ ├── IParcelRegistry.cs │ │ │ ├── MailService.cs │ │ │ └── ParcelRegistry.cs │ │ ├── MapChangeService/ │ │ │ ├── IMapChangeService.cs │ │ │ └── MapChangeService.cs │ │ ├── MapInstanceAccessService/ │ │ │ ├── IMapInstanceAccessService.cs │ │ │ └── MapInstanceAccessService.cs │ │ ├── MapInstanceGenerationService/ │ │ │ ├── IMapInstanceGenerationService.cs │ │ │ ├── IMapInstanceRegistry.cs │ │ │ ├── MapInstance.cs │ │ │ ├── MapInstanceGenerationService.cs │ │ │ └── MapInstanceRegistry.cs │ │ ├── MapItemGenerationService/ │ │ │ ├── IMapItemGenerationService.cs │ │ │ └── MapItemGenerationService.cs │ │ ├── MinilandService/ │ │ │ ├── IMinilandRegistry.cs │ │ │ ├── IMinilandService.cs │ │ │ ├── MapDesignObject.cs │ │ │ ├── Miniland.cs │ │ │ ├── MinilandHelper.cs │ │ │ ├── MinilandRegistry.cs │ │ │ └── MinilandService.cs │ │ ├── PacketHandlerService/ │ │ │ ├── IPacketHandlerRegistry.cs │ │ │ └── PacketHandlerRegistry.cs │ │ ├── PathfindingService/ │ │ │ ├── IPathfindingService.cs │ │ │ └── PathfindingService.cs │ │ ├── QuestService/ │ │ │ ├── Handlers/ │ │ │ │ ├── GoToQuestHandler.cs │ │ │ │ ├── HuntQuestHandler.cs │ │ │ │ ├── KillQuestHandlerBase.cs │ │ │ │ └── NumberOfKillQuestHandler.cs │ │ │ ├── IQuestService.cs │ │ │ ├── IQuestTypeHandler.cs │ │ │ ├── Quest.cs │ │ │ └── QuestService.cs │ │ ├── SaveService/ │ │ │ ├── ISaveService.cs │ │ │ └── SaveService.cs │ │ ├── ShopService/ │ │ │ ├── IShopRegistry.cs │ │ │ ├── Shop.cs │ │ │ ├── ShopItem.cs │ │ │ └── ShopRegistry.cs │ │ ├── SkillService/ │ │ │ ├── ISkillService.cs │ │ │ └── SkillService.cs │ │ ├── SpeedCalculationService/ │ │ │ ├── ISpeedCalculationService.cs │ │ │ └── SpeedCalculationService.cs │ │ ├── TransformationService/ │ │ │ ├── ITransformationService.cs │ │ │ └── TransformationService.cs │ │ ├── UpgradeService/ │ │ │ ├── EquipmentUpgradeOperationBase.cs │ │ │ ├── IRandomNumberSource.cs │ │ │ ├── IUpgradeOperation.cs │ │ │ ├── RarifyOperation.cs │ │ │ ├── RarifyOperationBase.cs │ │ │ ├── SumUpgradeOperation.cs │ │ │ ├── UpgradeContext.cs │ │ │ ├── UpgradeItemOperation.cs │ │ │ ├── UpgradeOperation.cs │ │ │ └── UpgradeOutcome.cs │ │ └── WarehouseService/ │ │ ├── IWarehouseService.cs │ │ ├── WarehouseItem.cs │ │ └── WarehouseService.cs │ ├── NosCore.LoginServer/ │ │ ├── LoginServer.cs │ │ ├── LoginServerBootstrap.cs │ │ └── NosCore.LoginServer.csproj │ ├── NosCore.MasterServer/ │ │ ├── MasterConfiguration.cs │ │ ├── MasterServer.cs │ │ ├── MasterServerBootstrap.cs │ │ └── NosCore.MasterServer.csproj │ ├── NosCore.PacketHandlers/ │ │ ├── Battle/ │ │ │ ├── RevivalPacketHandler.cs │ │ │ └── UseSkillPacketHandler.cs │ │ ├── Bazaar/ │ │ │ ├── CBListPacketHandler.cs │ │ │ ├── CBuyPacketHandler.cs │ │ │ ├── CModPacketHandler.cs │ │ │ ├── CRegPacketHandler.cs │ │ │ ├── CSListPacketHandler.cs │ │ │ ├── CScalcPacketHandler.cs │ │ │ └── CSkillPacketHandler.cs │ │ ├── CharacterScreen/ │ │ │ ├── CharNewJobPacketHandler.cs │ │ │ ├── CharNewPacketHandler.cs │ │ │ ├── CharRenPacketHandler.cs │ │ │ ├── CharacterDeletePacketHandler.cs │ │ │ ├── DacPacketHandler.cs │ │ │ ├── EntryPointPacketHandler.cs │ │ │ └── SelectPacketHandler.cs │ │ ├── Chat/ │ │ │ ├── BtkPacketHandler.cs │ │ │ ├── ClientSayPacketHandler.cs │ │ │ └── WhisperPacketHandler.cs │ │ ├── Command/ │ │ │ ├── ChangeChannelPacketHandler.cs │ │ │ ├── ChangeClassPacketHandler.cs │ │ │ ├── ChangeGenderPacketHandler.cs │ │ │ ├── CreateItemPacketHandler.cs │ │ │ ├── EffectCommandPacketHandler.cs │ │ │ ├── GiftPacketHandler.cs │ │ │ ├── HelpPacketHandler.cs │ │ │ ├── InvisibleCommandPacketHandler.cs │ │ │ ├── KickPacketHandler.cs │ │ │ ├── KillCommandPacketHandler.cs │ │ │ ├── PositionPacketHandler.cs │ │ │ ├── SetBankGoldPacketHandler.cs │ │ │ ├── SetGoldCommandPacketHandler.cs │ │ │ ├── SetHairColorPacketHandler.cs │ │ │ ├── SetHairStylePacketHandler.cs │ │ │ ├── SetHeroLevelCommandPacketHandler.cs │ │ │ ├── SetHeroXpPacketHandler.cs │ │ │ ├── SetJobLevelCommandPacketHandler.cs │ │ │ ├── SetJobLevelXpPacketHandler.cs │ │ │ ├── SetLevelCommandPacketHandler.cs │ │ │ ├── SetMaintenancePacketHandler.cs │ │ │ ├── SetReputationPacketHandler.cs │ │ │ ├── SetSpAdditionPointPacketHandler.cs │ │ │ ├── SetSpPointPacketHandler.cs │ │ │ ├── ShoutHerePacketHandler.cs │ │ │ ├── ShoutPacketHandler.cs │ │ │ ├── SizePacketHandler.cs │ │ │ ├── SpeedPacketHandler.cs │ │ │ └── TeleportPacketHandler.cs │ │ ├── Exchange/ │ │ │ ├── ExcListPacketHandler.cs │ │ │ └── ExchangeRequestPacketHandler.cs │ │ ├── Friend/ │ │ │ ├── BlDelPacketHandler.cs │ │ │ ├── BlInsPacketHandler.cs │ │ │ ├── BlPacketHandler.cs │ │ │ ├── FdelPacketHandler.cs │ │ │ ├── FinsPacketHandler.cs │ │ │ └── FlPacketHandler.cs │ │ ├── Game/ │ │ │ ├── GameStartPacketHandler.cs │ │ │ ├── GuriPacketHandler.cs │ │ │ ├── NcifPacketHandler.cs │ │ │ ├── NpinfoPacketHandler.cs │ │ │ ├── PulsePacketHandler.cs │ │ │ ├── QSetPacketHandler.cs │ │ │ ├── ReqInfoPacketHandler.cs │ │ │ ├── ScpCtsPacketHandler.cs │ │ │ └── TitEqPacketHandler.cs │ │ ├── Group/ │ │ │ ├── GroupTalkPacketHandler.cs │ │ │ ├── PjoinPacketHandler.cs │ │ │ └── PleavePacketHandler.cs │ │ ├── Inventory/ │ │ │ ├── BiPacketHandler.cs │ │ │ ├── GetPacketHandler.cs │ │ │ ├── MvePacketHandler.cs │ │ │ ├── MviPacketHandler.cs │ │ │ ├── PutPacketHandler.cs │ │ │ ├── RemovePacketHandler.cs │ │ │ ├── SpTransformPacketHandler.cs │ │ │ ├── UseItemPacketHandler.cs │ │ │ └── WearPacketHandler.cs │ │ ├── Login/ │ │ │ ├── NoS0575PacketHandler.cs │ │ │ └── NoS0577PacketHandler.cs │ │ ├── Miniland/ │ │ │ ├── AddobjPacketHandler.cs │ │ │ ├── MJoinPacketHandler.cs │ │ │ ├── MinilandObjects/ │ │ │ │ ├── MgPacketHandler.cs │ │ │ │ └── UseobjPacketHandler.cs │ │ │ ├── MlobjPacketHandler.cs │ │ │ └── RmvobjPacketHandler.cs │ │ ├── Movement/ │ │ │ ├── ClientDirPacketHandler.cs │ │ │ ├── PreqPacketHandler.cs │ │ │ ├── SitPacketHandler.cs │ │ │ └── WalkPacketHandler.cs │ │ ├── NoAction/ │ │ │ ├── BpClosePacketHandler.cs │ │ │ ├── CClosePacketHandler.cs │ │ │ ├── LbsPacketHandler.cs │ │ │ ├── SnapPacketHandler.cs │ │ │ ├── SortOpenPacketHandler.cs │ │ │ └── ZeroPacketHandler.cs │ │ ├── NosCore.PacketHandlers.csproj │ │ ├── Parcel/ │ │ │ ├── PclPacketHandler.cs │ │ │ └── PstClientPacketHandler.cs │ │ ├── Quest/ │ │ │ ├── QTPacketHandler.cs │ │ │ └── ScriptPacketHandler.cs │ │ ├── Shops/ │ │ │ ├── BuyPacketHandler.cs │ │ │ ├── MShopPacketHandler.cs │ │ │ ├── NrunPacketHandler.cs │ │ │ ├── RequestNpcPacketHandler.cs │ │ │ ├── SellPacketHandler.cs │ │ │ └── ShoppingPacketHandler.cs │ │ ├── Upgrades/ │ │ │ └── UpgradePacketHandler.cs │ │ └── Warehouse/ │ │ ├── DepositPacketHandler.cs │ │ ├── FDepositPacketHandler.cs │ │ ├── FReposPacketHandler.cs │ │ ├── FStashEndPacketHandler.cs │ │ ├── FWithdrawPacketHandler.cs │ │ ├── ReposPacketHandler.cs │ │ ├── StashEndPacketHandler.cs │ │ └── WithdrawPacketHandler.cs │ ├── NosCore.Parser/ │ │ ├── ImportFactory.cs │ │ ├── NosCore.Parser.csproj │ │ ├── Parser.cs │ │ ├── ParserBootstrap.cs │ │ ├── ParserCliOptions.cs │ │ ├── ParserConfiguration.cs │ │ └── Parsers/ │ │ ├── ActParser.cs │ │ ├── CardParser.cs │ │ ├── DropParser.cs │ │ ├── Generic/ │ │ │ ├── DatDocumentationGenerator.cs │ │ │ ├── DatFieldMetadata.cs │ │ │ ├── FluentParserBuilder.cs │ │ │ └── GenericParser.cs │ │ ├── I18NParser.cs │ │ ├── ItemParser.cs │ │ ├── MapMonsterParser.cs │ │ ├── MapNpcParser.cs │ │ ├── MapParser.cs │ │ ├── MapTypeMapParser.cs │ │ ├── MapTypeParser.cs │ │ ├── NpcMonsterParser.cs │ │ ├── NpcTalkParser.cs │ │ ├── PortalParser.cs │ │ ├── QuestParser.cs │ │ ├── QuestPrizeParser.cs │ │ ├── RespawnMapTypeParser.cs │ │ ├── ScriptParser.cs │ │ ├── ShopItemParser.cs │ │ ├── ShopParser.cs │ │ └── SkillParser.cs │ ├── NosCore.WebApi/ │ │ ├── ApiConfiguration.cs │ │ ├── Controllers/ │ │ │ ├── AuthController.cs │ │ │ └── NosmallController.cs │ │ ├── NosCore.WebApi.csproj │ │ └── WebApiBootstrap.cs │ └── NosCore.WorldServer/ │ ├── NosCore.WorldServer.csproj │ ├── WorldServer.cs │ └── WorldServerBootstrap.cs ├── test/ │ ├── NosCore.Core.Tests/ │ │ ├── LogLanguageTests.cs │ │ └── NosCore.Core.Tests.csproj │ ├── NosCore.Database.Tests/ │ │ ├── DatabaseTests.cs │ │ └── NosCore.Database.Tests.csproj │ ├── NosCore.GameObject.Tests/ │ │ ├── BazaarTests.cs │ │ ├── GroupTests.cs │ │ ├── Messaging/ │ │ │ ├── Handlers/ │ │ │ │ ├── Battle/ │ │ │ │ │ ├── MonsterAggroHandlerTests.cs │ │ │ │ │ ├── MonsterRespawnHandlerTests.cs │ │ │ │ │ ├── PlayerRevivalHandlerTests.cs │ │ │ │ │ └── RewardDistributionHandlerTests.cs │ │ │ │ ├── Guri/ │ │ │ │ │ ├── EmoticonHandlerTests.cs │ │ │ │ │ └── MfaHandlerTests.cs │ │ │ │ ├── Map/ │ │ │ │ │ └── MinilandEntranceHandlerTests.cs │ │ │ │ ├── Nrun/ │ │ │ │ │ ├── SetPlaceOfRevivalHandlerTests.cs │ │ │ │ │ ├── TeleporterHandlerTests.cs │ │ │ │ │ └── UpgradeItemHandlerTests.cs │ │ │ │ └── UseItem/ │ │ │ │ ├── BackPackHandlerTests.cs │ │ │ │ ├── BazaarMedalsHandlerTests.cs │ │ │ │ ├── BoxEffectHandlerTests.cs │ │ │ │ ├── ChangeGenderHandlerTests.cs │ │ │ │ ├── HairDieHandlerTests.cs │ │ │ │ ├── MinilandBellHandlerTests.cs │ │ │ │ ├── PetBasketHandlerTests.cs │ │ │ │ ├── SealedTarotCardHandlerTests.cs │ │ │ │ ├── SpRechargerHandlerTests.cs │ │ │ │ ├── SpeakerHandlerTests.cs │ │ │ │ ├── TitleHandlerTests.cs │ │ │ │ └── WearHandlerTests.cs │ │ │ └── WolverineHandlerResolutionTests.cs │ │ ├── NosCore.GameObject.Tests.csproj │ │ ├── Services/ │ │ │ ├── AuthService/ │ │ │ │ └── AuthCodeServiceTests.cs │ │ │ ├── BattleService/ │ │ │ │ ├── AggroServiceTests.cs │ │ │ │ ├── BattleServiceTests.cs │ │ │ │ ├── BuffServiceTests.cs │ │ │ │ ├── DamageCalculatorTests.cs │ │ │ │ ├── HitQueueTests.cs │ │ │ │ ├── MonsterAiTests.cs │ │ │ │ ├── NpcCombatCatalogTests.cs │ │ │ │ └── SkillResolverTests.cs │ │ │ ├── BazaarService/ │ │ │ │ └── BazaarRegistryTests.cs │ │ │ ├── BlacklistService/ │ │ │ │ └── BlacklistServiceTests.cs │ │ │ ├── BroadcastService/ │ │ │ │ └── SessionRegistryTests.cs │ │ │ ├── ChannelCommunicationService/ │ │ │ │ └── Handlers/ │ │ │ │ ├── DeleteMailDataMessageHandlerTests.cs │ │ │ │ ├── DisconnectDataMessageHandlerTests.cs │ │ │ │ ├── MailDataMessageHandlerTests.cs │ │ │ │ ├── PostedPacketMessageHandlerTests.cs │ │ │ │ └── StatDataMessageHandlerTests.cs │ │ │ ├── ChannelService/ │ │ │ │ └── ChannelServiceTests.cs │ │ │ ├── CharacterService/ │ │ │ │ └── CharacterInitializationServiceTests.cs │ │ │ ├── ExchangeService/ │ │ │ │ ├── ExchangeRequestRegistryTests.cs │ │ │ │ └── ExchangeServiceTests.cs │ │ │ ├── FriendService/ │ │ │ │ ├── FriendRequestRegistryTests.cs │ │ │ │ └── FriendServiceTests.cs │ │ │ ├── GroupService/ │ │ │ │ └── GroupRegistryTests.cs │ │ │ ├── InventoryService/ │ │ │ │ └── InventoryServiceTests.cs │ │ │ ├── LoginService/ │ │ │ │ └── LoginServiceTests.cs │ │ │ ├── MailService/ │ │ │ │ └── MailServiceTests.cs │ │ │ ├── MapChangeService/ │ │ │ │ └── MapChangeServiceTests.cs │ │ │ ├── MapInstanceAccessService/ │ │ │ │ └── MapInstanceAccessServiceTests.cs │ │ │ ├── MapInstanceGenerationService/ │ │ │ │ └── MapInstanceRegistryTests.cs │ │ │ ├── MinilandService/ │ │ │ │ ├── MinilandRegistryTests.cs │ │ │ │ └── MinilandServiceTests.cs │ │ │ ├── PacketHandlerService/ │ │ │ │ └── PacketHandlerRegistryTests.cs │ │ │ ├── PathfindingService/ │ │ │ │ └── PathfindingServiceTests.cs │ │ │ ├── QuestService/ │ │ │ │ └── QuestServiceTests.cs │ │ │ ├── SaveService/ │ │ │ │ └── SaveServiceTests.cs │ │ │ ├── ShopService/ │ │ │ │ └── ShopRegistryTests.cs │ │ │ ├── SkillService/ │ │ │ │ └── SkillServiceTests.cs │ │ │ ├── SpeedCalculationService/ │ │ │ │ └── SpeedCalculationServiceTests.cs │ │ │ ├── TransformationService/ │ │ │ │ └── TransformationServiceTests.cs │ │ │ ├── UpgradeService/ │ │ │ │ ├── EquipmentUpgradeOperationTests.cs │ │ │ │ ├── RarifyOperationTests.cs │ │ │ │ └── SumUpgradeOperationTests.cs │ │ │ └── WarehouseService/ │ │ │ └── WarehouseServiceTests.cs │ │ ├── SetupAssemblyInitializer.cs │ │ └── ShopTests.cs │ ├── NosCore.PacketHandlers.Tests/ │ │ ├── Battle/ │ │ │ ├── RevivalPacketHandlerTests.cs │ │ │ └── UseSkillPacketHandlerTests.cs │ │ ├── Bazaar/ │ │ │ ├── CBListPacketHandlerTests.cs │ │ │ ├── CBuyPacketHandlerTests.cs │ │ │ ├── CModPacketHandlerTests.cs │ │ │ ├── CRegPacketHandlerTests.cs │ │ │ ├── CSListPacketHandlerTests.cs │ │ │ ├── CScalcPacketHandlerTests.cs │ │ │ └── CSkillPacketHandlerTests.cs │ │ ├── CharacterScreen/ │ │ │ ├── CharNewJobPacketHandlerTests.cs │ │ │ ├── CharNewPacketHandlerTests.cs │ │ │ ├── CharRenPacketHandlerTests.cs │ │ │ ├── CharacterDeletePacketHandlerTests.cs │ │ │ ├── DacPacketHandlerTests.cs │ │ │ ├── EntryPointPacketHandlerTests.cs │ │ │ └── SelectPacketHandlerTests.cs │ │ ├── Chat/ │ │ │ ├── BtkPacketHandlerTests.cs │ │ │ ├── ClientSayPacketHandlerTests.cs │ │ │ └── WhisperPacketHandlerTests.cs │ │ ├── Command/ │ │ │ ├── ChangeChannelPacketHandlerTests.cs │ │ │ ├── ChangeClassPacketHandlerTests.cs │ │ │ ├── CreateItemPacketHandlerTests.cs │ │ │ ├── EffectCommandPacketHandlerTests.cs │ │ │ ├── GiftPacketHandlerTests.cs │ │ │ ├── HelpPacketHandlerTests.cs │ │ │ ├── InvisibleCommandPacketHandlerTests.cs │ │ │ ├── KickPacketHandlerTests.cs │ │ │ ├── PositionPacketHandlerTests.cs │ │ │ ├── SetGoldCommandPacketHandlerTests.cs │ │ │ ├── SetHeroLevelCommandPacketHandlerTests.cs │ │ │ ├── SetJobLevelCommandPacketHandlerTests.cs │ │ │ ├── SetLevelCommandPacketHandlerTests.cs │ │ │ ├── SetMaintenancePacketHandlerTests.cs │ │ │ ├── SetReputationPacketHandlerTests.cs │ │ │ ├── ShoutPacketHandlerTests.cs │ │ │ ├── SizePacketHandlerTests.cs │ │ │ ├── SpeedPacketHandlerTests.cs │ │ │ └── TeleportPacketHandlerTests.cs │ │ ├── Exchange/ │ │ │ ├── ExcListPacketHandlerTests.cs │ │ │ └── ExchangeRequestPacketHandlerTests.cs │ │ ├── Friend/ │ │ │ ├── BlDelPacketHandlerTests.cs │ │ │ ├── BlInsPacketHandlerTests.cs │ │ │ ├── BlPacketHandlerTests.cs │ │ │ ├── FinsPacketHandlerTests.cs │ │ │ ├── FlPacketHandlerTests.cs │ │ │ └── fDelPacketHandlerTests.cs │ │ ├── Game/ │ │ │ ├── GameStartPacketHandlerTests.cs │ │ │ ├── GuriPacketHandlerTests.cs │ │ │ ├── NcifPacketHandlerTests.cs │ │ │ ├── PulsePacketHandlerTests.cs │ │ │ ├── QsetPacketHandlerTests.cs │ │ │ ├── ReqInfoPacketHandlerTests.cs │ │ │ └── TitEqPacketHandlerTests.cs │ │ ├── Group/ │ │ │ ├── GroupTalkPacketHandlerTests.cs │ │ │ ├── PJoinPacketHandlerTests.cs │ │ │ └── PleavePacketHandlerTests.cs │ │ ├── Inventory/ │ │ │ ├── BiPacketHandlerTests.cs │ │ │ ├── MvePacketHandlerTests.cs │ │ │ ├── MviPacketHandlerTests.cs │ │ │ ├── PutPacketHandlerTests.cs │ │ │ ├── RemovePacketHandlerTests.cs │ │ │ └── SpTransformPacketHandlerTests.cs │ │ ├── Login/ │ │ │ ├── NoS0575PacketHandlerTests.cs │ │ │ └── NoS0577PacketHandlerTests.cs │ │ ├── Miniland/ │ │ │ ├── AddobjPacketHandlerTests.cs │ │ │ ├── MJoinPacketHandlerTests.cs │ │ │ ├── MinilandObjects/ │ │ │ │ ├── MgPacketHandlerTests.cs │ │ │ │ └── UseobjPacketHandlerTests.cs │ │ │ ├── MlEditPacketHandlerTests.cs │ │ │ └── RmvobjPacketHandlerTests.cs │ │ ├── Movement/ │ │ │ ├── ClientDirPacketHandlerTests.cs │ │ │ ├── PreqPacketHandlerTests.cs │ │ │ ├── SitPacketHandlerTests.cs │ │ │ └── WalkPacketHandlerTests.cs │ │ ├── NosCore.PacketHandlers.Tests.csproj │ │ ├── Parcel/ │ │ │ ├── PclPacketHandlerTests.cs │ │ │ └── PstClientPacketHandlerTests.cs │ │ ├── Quest/ │ │ │ ├── QtPacketHandlerTests.cs │ │ │ └── ScriptPacketHandlerTests.cs │ │ ├── SetupAssemblyInitializer.cs │ │ ├── Shops/ │ │ │ ├── BuyPacketHandlerTests.cs │ │ │ ├── MShopPacketHandlerTests.cs │ │ │ ├── NrunPacketHandlerTests.cs │ │ │ ├── RequestNpcPacketHandlerTests.cs │ │ │ ├── SellPacketHandlerTests.cs │ │ │ └── ShoppingPacketHandlerTests.cs │ │ ├── Upgrades/ │ │ │ └── UpgradePacketHandlerTests.cs │ │ └── Warehouse/ │ │ ├── DepositPacketHandlerTests.cs │ │ ├── FDepositPacketHandlerTests.cs │ │ ├── FReposPacketHandlerTests.cs │ │ ├── FStashEndPacketHandlerTests.cs │ │ ├── FWithdrawPacketHandlerTests.cs │ │ ├── ReposPacketHandlerTests.cs │ │ ├── StashEndPacketHandlerTests.cs │ │ ├── WarehousePacketHandlerTests.cs │ │ └── WithdrawPacketHandlerTests.cs │ ├── NosCore.Parser.Tests/ │ │ ├── ActParserTests.cs │ │ ├── CardParserTests.cs │ │ ├── DatDocumentationGeneratorTests.cs │ │ ├── DatDocumentationSnapshotTests.cs │ │ ├── DropParserTests.cs │ │ ├── FluentParserBuilderTests.cs │ │ ├── GenericParserTests.cs │ │ ├── ItemParserTests.cs │ │ ├── MapMonsterParserTests.cs │ │ ├── MapNpcParserTests.cs │ │ ├── MapParserTests.cs │ │ ├── NosCore.Parser.Tests.csproj │ │ ├── NpcMonsterParserTests.cs │ │ ├── PortalParserTests.cs │ │ ├── QuestParserTests.cs │ │ ├── QuestPrizeParserTests.cs │ │ ├── ShopParserTests.cs │ │ └── SkillParserTests.cs │ ├── NosCore.Tests.Shared/ │ │ ├── AutoFixture/ │ │ │ └── NosCoreFixture.cs │ │ ├── BDD/ │ │ │ ├── SpecBase.cs │ │ │ └── Steps/ │ │ │ ├── InventorySteps.cs │ │ │ ├── PacketSteps.cs │ │ │ └── SessionSteps.cs │ │ ├── NosCore.Tests.Shared.csproj │ │ ├── TestHelpers.cs │ │ └── tools/ │ │ └── coverage.opencover.xml │ └── NosCore.WebApi.Tests/ │ ├── ApiTests/ │ │ └── AuthControllerTests.cs │ ├── NosCore.WebApi.Tests.csproj │ └── SetupAssemblyInitializer.cs └── tools/ ├── NosCore.DtoGenerator/ │ ├── DtoGenerator.cs │ └── NosCore.DtoGenerator.csproj └── NosCore.EcsGenerator/ ├── ComponentBundleGenerator.cs └── NosCore.EcsGenerator.csproj ================================================ FILE CONTENTS ================================================ ================================================ FILE: .coderabbit.yaml ================================================ language: "en" early_access: false reviews: profile: "chill" request_changes_workflow: false high_level_summary: true poem: false review_status: true collapse_walkthrough: false auto_review: enabled: true drafts: false path_filters: - "!**/*.min.js" - "!**/bin/**" - "!**/obj/**" - "!**/TestResults/**" - "!**/*.Designer.cs" chat: auto_reply: true ================================================ FILE: .editorconfig ================================================ [*.proto] indent_style=tab indent_size=tab tab_width=4 [*.{asax,ascx,aspx,cs,cshtml,css,htm,html,js,jsx,master,razor,skin,ts,tsx,vb,xaml,xamlx,xoml}] indent_style=space indent_size=4 tab_width=4 [*.{appxmanifest,build,config,csproj,dbml,discomap,dtd,json,jsproj,lsproj,njsproj,nuspec,proj,props,resjson,resw,resx,StyleCop,targets,tasks,vbproj,xml,xsd}] indent_style=space indent_size=2 tab_width=2 [*] # Microsoft .NET properties csharp_new_line_before_members_in_object_initializers=false csharp_new_line_between_query_expression_clauses=false csharp_preferred_modifier_order=public, private, protected, internal, new, abstract, virtual, sealed, override, static, readonly, extern, unsafe, volatile, async:suggestion csharp_style_var_elsewhere=true:hint csharp_style_var_for_built_in_types=true:hint csharp_style_var_when_type_is_apparent=true:hint dotnet_style_predefined_type_for_locals_parameters_members=true:hint dotnet_style_predefined_type_for_member_access=true:hint dotnet_style_qualification_for_event=false:hint dotnet_style_qualification_for_field=false:hint dotnet_style_qualification_for_method=false:hint dotnet_style_qualification_for_property=false:hint dotnet_style_require_accessibility_modifiers=for_non_interface_members:hint # ReSharper properties resharper_align_multiline_binary_expressions_chain=false resharper_braces_for_for=required resharper_braces_for_foreach=required resharper_braces_for_ifelse=required resharper_braces_for_while=required resharper_csharp_stick_comment=false resharper_csharp_use_indent_from_vs=false resharper_csharp_wrap_ternary_expr_style=wrap_if_long resharper_indent_type_constraints=false resharper_nested_ternary_style=simple_wrap resharper_parentheses_non_obvious_operations=shift, bitwise_and, bitwise_exclusive_or, bitwise_inclusive_or, bitwise, conditional_and, conditional_or, conditional resharper_place_accessorholder_attribute_on_same_line=False resharper_place_expr_accessor_on_single_line=True resharper_place_expr_method_on_single_line=True resharper_place_expr_property_on_single_line=True # ReSharper inspection severities resharper_arrange_missing_parentheses_highlighting=hint resharper_redundant_base_qualifier_highlighting=warning resharper_virtual_member_call_in_constructor_highlighting=none ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms github: 0Lucifer0 patreon: NosCore ko_fi: noscoreio ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.md ================================================ --- name: Bug report about: Create a report to help us improve --- **Describe the bug** A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error **Expected behavior** A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. **Additional context** Add any other context about the problem here. ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.md ================================================ --- name: Feature request about: Suggest an idea for this project --- **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Describe the solution you'd like** A clear and concise description of what you want to happen. **Describe alternatives you've considered** A clear and concise description of any alternative solutions or features you've considered. **Additional context** Add any other context or screenshots about the feature request here. ================================================ FILE: .github/dependabot.yml ================================================ version: 2 updates: - package-ecosystem: nuget directory: "/" schedule: interval: daily open-pull-requests-limit: 50 ================================================ FILE: .github/workflows/dotnet.yml ================================================ name: .NET on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: 10.0.x - name: Run Unit Tests run: | dotnet --version dotnet restore dotnet build dotnet test --no-build --filter TestCategory!=OPTIONAL-TEST - name: Run Code Coverage run: | dotnet test test/NosCore.Core.Tests/NosCore.Core.Tests.csproj --no-build --filter TestCategory!=OPTIONAL-TEST /p:CollectCoverage=true /p:CoverletOutput="../TestResults/" /p:MergeWith="../TestResults/coverlet.json" /p:CoverletOutputFormat=opencover /p:ExcludeByAttribute='GeneratedCodeAttribute' /p:ExcludeByAttribute='Obsolete' /p:ExcludeByAttribute='CompilerGeneratedAttribute' /p:CoverletOutput='./tools/coverage.opencover.xml' dotnet test test/NosCore.Database.Tests/NosCore.Database.Tests.csproj --no-build --filter TestCategory!=OPTIONAL-TEST /p:CollectCoverage=true /p:CoverletOutput="../TestResults/" /p:MergeWith="../TestResults/coverlet.json" /p:CoverletOutputFormat=opencover /p:ExcludeByAttribute='GeneratedCodeAttribute' /p:ExcludeByAttribute='Obsolete' /p:ExcludeByAttribute='CompilerGeneratedAttribute' /p:CoverletOutput='./tools/coverage.opencover.xml' dotnet test test/NosCore.GameObject.Tests/NosCore.GameObject.Tests.csproj --no-build --filter TestCategory!=OPTIONAL-TEST /p:CollectCoverage=true /p:CoverletOutput="../TestResults/" /p:MergeWith="../TestResults/coverlet.json" /p:CoverletOutputFormat=opencover /p:ExcludeByAttribute='GeneratedCodeAttribute' /p:ExcludeByAttribute='Obsolete' /p:ExcludeByAttribute='CompilerGeneratedAttribute' /p:CoverletOutput='./tools/coverage.opencover.xml' dotnet test test/NosCore.PacketHandlers.Tests/NosCore.PacketHandlers.Tests.csproj --no-build --filter TestCategory!=OPTIONAL-TEST /p:CollectCoverage=true /p:CoverletOutput="../TestResults/" /p:MergeWith="../TestResults/coverlet.json" /p:CoverletOutputFormat=opencover /p:ExcludeByAttribute='GeneratedCodeAttribute' /p:ExcludeByAttribute='Obsolete' /p:ExcludeByAttribute='CompilerGeneratedAttribute' /p:CoverletOutput='./tools/coverage.opencover.xml' dotnet test test/NosCore.Tests.Shared/NosCore.Tests.Shared.csproj --no-build --filter TestCategory!=OPTIONAL-TEST /p:CollectCoverage=true /p:CoverletOutput="../TestResults/" /p:MergeWith="../TestResults/coverlet.json" /p:CoverletOutputFormat=opencover /p:ExcludeByAttribute='GeneratedCodeAttribute' /p:ExcludeByAttribute='Obsolete' /p:ExcludeByAttribute='CompilerGeneratedAttribute' /p:CoverletOutput='./tools/coverage.opencover.xml' dotnet test test/NosCore.WebApi.Tests/NosCore.WebApi.Tests.csproj --no-build --filter TestCategory!=OPTIONAL-TEST /p:CollectCoverage=true /p:CoverletOutput="../TestResults/" /p:MergeWith="../TestResults/coverlet.json" /p:CoverletOutputFormat=opencover /p:ExcludeByAttribute='GeneratedCodeAttribute' /p:ExcludeByAttribute='Obsolete' /p:ExcludeByAttribute='CompilerGeneratedAttribute' /p:CoverletOutput='./tools/coverage.opencover.xml' curl -s https://codecov.io/bash | bash -s -- -t $(CODECOV_TOKEN) - name: Login to DockerHub if: github.ref == 'refs/heads/master' uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - run: dotnet test --runtime linux-musl-x64 --filter TestCategory=SomethingAsDotnetBuildDoesntWorkAnymore - name: Build, tag, and push image LoginServer if: github.ref == 'refs/heads/master' uses: docker/build-push-action@v6 with: context: . file: ./deploy/Dockerfile-login push: true tags: | noscoreio/noscore.loginserver:latest noscoreio/noscore.loginserver:${{ github.sha }} - name: Build, tag, and push image MasterServer if: github.ref == 'refs/heads/master' uses: docker/build-push-action@v6 with: context: . file: ./deploy/Dockerfile-master push: true tags: | noscoreio/noscore.masterserver:latest noscoreio/noscore.masterserver:${{ github.sha }} - name: Build, tag, and push image WorldServer if: github.ref == 'refs/heads/master' uses: docker/build-push-action@v6 with: context: . file: ./deploy/Dockerfile-world push: true tags: | noscoreio/noscore.worldserver:latest noscoreio/noscore.worldserver:${{ github.sha }} ================================================ FILE: .gitignore ================================================ ### Csharp ### ## 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 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ # 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 # .NET Core project.lock.json project.fragment.lock.json artifacts/ **/Properties/launchSettings.json *_i.c *_p.c *_i.h *.ilk *.meta *.obj *.pch *.pdb *.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 # 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 # 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 # TODO: Uncomment the next line to ignore your web deploy settings. # By default, sensitive information, such as encrypted password # should be stored in the .pubxml.user file. #*.pubxml *.pubxml.user *.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 **/packages/* # except build/, which is used as an MSBuild target. !**/packages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/packages/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 # 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 # 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 # SQL Server files *.mdf *.ldf *.ndf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings # Microsoft Fakes FakesAssemblies/ # GhostDoc plugin setting file *.GhostDoc.xml # Node.js Tools for Visual Studio .ntvs_analysis.dat node_modules/ # Typescript v1 declaration files typings/ # 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 # Telerik's JustMock configuration file *.jmconfig # BizTalk build output *.btp.cs *.btm.cs *.odx.cs *.xsd.cs ### JetBrains+all ### # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # User-specific stuff: .idea/**/workspace.xml .idea/**/tasks.xml .idea/dictionaries # Sensitive or high-churn files: .idea/**/dataSources/ .idea/**/dataSources.ids .idea/**/dataSources.xml .idea/**/dataSources.local.xml .idea/**/sqlDataSources.xml .idea/**/dynamic.xml .idea/**/uiDesigner.xml # Gradle: .idea/**/gradle.xml .idea/**/libraries # CMake cmake-build-debug/ # Mongo Explorer plugin: .idea/**/mongoSettings.xml ## File-based project format: *.iws ## Plugin-specific files: # IntelliJ /out/ # mpeltonen/sbt-idea plugin .idea_modules/ # JIRA plugin atlassian-ide-plugin.xml # Cursive Clojure plugin .idea/replstate.xml # Ruby plugin and RubyMine /.rakeTasks # Crashlytics plugin (for Android Studio and IntelliJ) com_crashlytics_export_strings.xml crashlytics.properties crashlytics-build.properties fabric.properties ### JetBrains+all Patch ### # Ignores the whole idea folder # See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360 ### VisualStudioCode ### .vscode/* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json .history ### VisualStudio ### ## 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 # User-specific files (MonoDevelop/Xamarin Studio) # Build results # Visual Studio 2015 cache/options directory # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ # MSTest test Results # NUNIT # Build Results of an ATL Project # .NET Core # Chutzpah Test files # Visual C++ cache files # Visual Studio profiler # TFS 2012 Local Workspace # Guidance Automation Toolkit # ReSharper is a .NET coding add-in # JustCode is a .NET coding add-in # TeamCity is a build add-in # DotCover is a Code Coverage Tool # Visual Studio code coverage results # NCrunch # MightyMoose # Web workbench (sass) # Installshield output folder # DocProject is a documentation generator add-in # Click-Once directory # Publish Web Output # TODO: Uncomment the next line to ignore your web deploy settings. # By default, sensitive information, such as encrypted password # should be stored in the .pubxml.user file. #*.pubxml # 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 # NuGet Packages # The packages folder can be ignored because of Package Restore # except build/, which is used as an MSBuild target. # Uncomment if necessary however generally it will be regenerated when needed #!**/packages/repositories.config # NuGet v3's project.json files produces more ignorable files # Microsoft Azure Build Output # Microsoft Azure Emulator # Windows Store app package directories and files # Visual Studio cache files # files ending in .cache can be ignored # but keep track of directories ending in .cache # Others # 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 # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) # SQL Server files # Business Intelligence projects # Microsoft Fakes # GhostDoc plugin setting file # Node.js Tools for Visual Studio # Typescript v1 declaration files # Visual Studio 6 build log # Visual Studio 6 workspace options file # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) # Visual Studio LightSwitch build output # Paket dependency manager # FAKE - F# Make # JetBrains Rider # CodeRush # Python Tools for Visual Studio (PTVS) # Cake - Uncomment if you are using it # tools/** # !tools/packages.config # Telerik's JustMock configuration file # BizTalk build output ### VisualStudio Patch ### # By default, sensitive information, such as encrypted password # should be stored in the .pubxml.user file. Log.txt /build/Configuration /build/netcoreapp2.* /build/netcoreapp3.* /build/netcoreapp5.* /build/net*.* *.orig /postgres # Claude Code .claude/ ================================================ FILE: CONTRIBUTING.md ================================================ # Contributing to NosCore ## Concurrency & locking NosCore intentionally uses **per-resource locks** rather than a global lock manager. Each lock has one job and lives on the resource it protects. When you add a new lock, follow the existing pattern below — do not introduce a centralised `LockManager`. | Resource | Lock | Where it lives | |---|---|---| | Inbound packets for a session | `SemaphoreSlim _handlingPacketLock` | `ClientSession` | | Damage application to a single entity | `SemaphoreSlim HitSemaphore` | `IAliveEntity` (player / monster / NPC) | | SignalR hub connect/disconnect | `SemaphoreSlim _connectionLock` | `BaseHubClient` / `PubSubHubClient` | ### Rules 1. **One purpose per lock.** A lock guards exactly one mutable resource. Don't reuse an existing semaphore for unrelated state. 2. **Lock lives on the resource.** Put it as a field on the entity / session / client it protects, not in a static dictionary. 3. **Use `SemaphoreSlim(1, 1)` for serialization, `ConcurrentDictionary` for shared maps.** Don't reach for `lock(obj)` — async code can't `await` inside a `lock`. 4. **Always `try { ... } finally { _lock.Release(); }`** when acquiring a semaphore. Without `finally` an exception leaves the lock held. 5. **Never hold a lock across an external I/O call (DB, HTTP, SignalR).** If the call is slow, drop the lock first or use a more granular one. 6. **Don't acquire two locks at once** unless the order is documented at both call sites. Lock-ordering bugs surface at scale. If a new feature needs cross-cutting coordination (e.g. "all map instances must agree on X"), prefer publishing a Wolverine message to a handler that owns the state — not adding a lock that spans subsystems. ## Background work & scheduled jobs For "do X every N minutes" jobs, use the Wolverine pattern in `NosCore.GameObject.Messaging.ScheduledJobs/`: 1. Define a message record: `public sealed record FooJobMessage;` 2. Define a handler with a `Handle(FooJobMessage _)` method. 3. Register a `RecurringMessagePublisher` as an `IHostedService` in the relevant `*Bootstrap.cs`. For one-shot delayed work, publish via `IMessageBus.PublishAsync` with a `DeliveryOptions { ScheduledTime = ... }` — see Wolverine docs for details. ## Domain events Cross-cutting reactions ("on monster killed → award XP, update quest progress, write family log") should be Wolverine messages, not direct calls between services. See `NosCore.GameObject.Messaging.Events/MonsterKilledEvent.cs` for the template. ### Conventions - **Events** live in `NosCore.GameObject.Messaging.Events/` as `sealed record EventNameEvent(...)`. Use past tense — `XHappenedEvent` — to make it clear the event represents something that already occurred. - **Handlers** live in `NosCore.GameObject.Messaging.Handlers//`, one folder per packet/feature area (e.g. `Guri/`, `Nrun/`, `UseItem/`, `MapItem/`, `Map/`). Class names always end with `Handler`, never `EventHandler`. Handlers are plain classes — Wolverine discovers them by convention via the `Handle`/`HandleAsync` method. - **One handler per file.** Multiple handlers can subscribe to the same event; each filters internally with an early `return` if the event isn't relevant. - **Publishing**: inject `Wolverine.IMessageBus` and call `messageBus.PublishAsync(new XEvent(...))`. Don't introduce per-domain "runner" services — the bus is the runner. ### Recurring & scheduled work Recurring jobs (e.g. periodic save) are registered as `RecurringMessagePublisher` hosted services in the relevant `*Bootstrap.cs`. The publisher fires a fresh message every interval; the Wolverine handler does the work. See `Messaging/ScheduledJobs/` for examples. For one-shot delayed work (e.g. "expire this buff in 30s"), publish via `IMessageBus.PublishAsync` with `DeliveryOptions { ScheduledTime = ... }`. ================================================ FILE: Directory.Build.props ================================================ latest enable true $(RestoreAdditionalProjectSources);$(NOSCORE_LOCAL_PACKAGES) ================================================ FILE: Directory.Packages.props ================================================ true ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2026 NosCoreIO Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: NosCore.sln ================================================  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 18 VisualStudioVersion = 18.2.11408.102 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.LoginServer", "src\NosCore.LoginServer\NosCore.LoginServer.csproj", "{40663D90-0B3E-48A7-800E-CB5E1BED27B6}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.WorldServer", "src\NosCore.WorldServer\NosCore.WorldServer.csproj", "{4EFCF709-5899-4C49-A368-E556AFA3931F}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.Parser", "src\NosCore.Parser\NosCore.Parser.csproj", "{BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.MasterServer", "src\NosCore.MasterServer\NosCore.MasterServer.csproj", "{756A8A86-A7EE-475D-B2E4-E98D79049F6B}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.Core", "src\NosCore.Core\NosCore.Core.csproj", "{83F1DAD2-9E07-4D0B-B548-DEB03105F874}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.Database", "src\NosCore.Database\NosCore.Database.csproj", "{93487BBB-589C-4315-9E52-1279C9434B3C}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.GameObject", "src\NosCore.GameObject\NosCore.GameObject.csproj", "{77D6E5F6-9A08-436D-8A9D-7F5832322FAE}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.Data", "src\NosCore.Data\NosCore.Data.csproj", "{AEDAAE2C-D615-4241-8006-240BB7FF1446}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.PacketHandlers", "src\NosCore.PacketHandlers\NosCore.PacketHandlers.csproj", "{8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.Tests.Shared", "test\NosCore.Tests.Shared\NosCore.Tests.Shared.csproj", "{B22C7ABE-2B56-42AF-8CF2-46058A5B6543}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Infrastructure", "Infrastructure", "{975CF226-2297-4B1B-88C6-5783C5359D18}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Executables", "Executables", "{D4E0F6CD-9F21-4140-AC42-CD021D98B980}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{EFA0F8A7-CBF2-4542-82A9-931BB0111FED}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.Core.Tests", "test\NosCore.Core.Tests\NosCore.Core.Tests.csproj", "{A4B32710-06C8-4222-BC2B-2341EF514D9C}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.GameObject.Tests", "test\NosCore.GameObject.Tests\NosCore.GameObject.Tests.csproj", "{DCD71941-444F-4A8B-B2CF-AF1C95BAB824}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.PacketHandlers.Tests", "test\NosCore.PacketHandlers.Tests\NosCore.PacketHandlers.Tests.csproj", "{07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.Database.Tests", "test\NosCore.Database.Tests\NosCore.Database.Tests.csproj", "{DCE80DB0-6530-4599-9433-5601F55E4270}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.WebApi.Tests", "test\NosCore.WebApi.Tests\NosCore.WebApi.Tests.csproj", "{5C60F99A-1BA8-4A82-9973-7150D4BE57A3}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.DtoGenerator", "tools\NosCore.DtoGenerator\NosCore.DtoGenerator.csproj", "{3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosCore.WebApi", "src\NosCore.WebApi\NosCore.WebApi.csproj", "{4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosCore.Parser.Tests", "test\NosCore.Parser.Tests\NosCore.Parser.Tests.csproj", "{4E68313F-69F8-4125-B87E-665D6F7DFD5D}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{07C2787E-EAC7-C090-1BA3-A61EC2A24D84}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosCore.EcsGenerator", "tools\NosCore.EcsGenerator\NosCore.EcsGenerator.csproj", "{78731E48-C6CA-4614-B617-65B55A85CAE0}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Debug|Any CPU.Build.0 = Debug|Any CPU {40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Debug|x64.ActiveCfg = Debug|Any CPU {40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Debug|x64.Build.0 = Debug|Any CPU {40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Debug|x86.ActiveCfg = Debug|Any CPU {40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Debug|x86.Build.0 = Debug|Any CPU {40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Release|Any CPU.ActiveCfg = Release|Any CPU {40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Release|Any CPU.Build.0 = Release|Any CPU {40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Release|x64.ActiveCfg = Release|Any CPU {40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Release|x64.Build.0 = Release|Any CPU {40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Release|x86.ActiveCfg = Release|Any CPU {40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Release|x86.Build.0 = Release|Any CPU {4EFCF709-5899-4C49-A368-E556AFA3931F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4EFCF709-5899-4C49-A368-E556AFA3931F}.Debug|Any CPU.Build.0 = Debug|Any CPU {4EFCF709-5899-4C49-A368-E556AFA3931F}.Debug|x64.ActiveCfg = Debug|Any CPU {4EFCF709-5899-4C49-A368-E556AFA3931F}.Debug|x64.Build.0 = Debug|Any CPU {4EFCF709-5899-4C49-A368-E556AFA3931F}.Debug|x86.ActiveCfg = Debug|Any CPU {4EFCF709-5899-4C49-A368-E556AFA3931F}.Debug|x86.Build.0 = Debug|Any CPU {4EFCF709-5899-4C49-A368-E556AFA3931F}.Release|Any CPU.ActiveCfg = Release|Any CPU {4EFCF709-5899-4C49-A368-E556AFA3931F}.Release|Any CPU.Build.0 = Release|Any CPU {4EFCF709-5899-4C49-A368-E556AFA3931F}.Release|x64.ActiveCfg = Release|Any CPU {4EFCF709-5899-4C49-A368-E556AFA3931F}.Release|x64.Build.0 = Release|Any CPU {4EFCF709-5899-4C49-A368-E556AFA3931F}.Release|x86.ActiveCfg = Release|Any CPU {4EFCF709-5899-4C49-A368-E556AFA3931F}.Release|x86.Build.0 = Release|Any CPU {BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Debug|Any CPU.Build.0 = Debug|Any CPU {BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Debug|x64.ActiveCfg = Debug|Any CPU {BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Debug|x64.Build.0 = Debug|Any CPU {BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Debug|x86.ActiveCfg = Debug|Any CPU {BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Debug|x86.Build.0 = Debug|Any CPU {BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Release|Any CPU.ActiveCfg = Release|Any CPU {BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Release|Any CPU.Build.0 = Release|Any CPU {BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Release|x64.ActiveCfg = Release|Any CPU {BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Release|x64.Build.0 = Release|Any CPU {BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Release|x86.ActiveCfg = Release|Any CPU {BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Release|x86.Build.0 = Release|Any CPU {756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Debug|Any CPU.Build.0 = Debug|Any CPU {756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Debug|x64.ActiveCfg = Debug|Any CPU {756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Debug|x64.Build.0 = Debug|Any CPU {756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Debug|x86.ActiveCfg = Debug|Any CPU {756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Debug|x86.Build.0 = Debug|Any CPU {756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Release|Any CPU.ActiveCfg = Release|Any CPU {756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Release|Any CPU.Build.0 = Release|Any CPU {756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Release|x64.ActiveCfg = Release|Any CPU {756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Release|x64.Build.0 = Release|Any CPU {756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Release|x86.ActiveCfg = Release|Any CPU {756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Release|x86.Build.0 = Release|Any CPU {83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Debug|Any CPU.Build.0 = Debug|Any CPU {83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Debug|x64.ActiveCfg = Debug|Any CPU {83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Debug|x64.Build.0 = Debug|Any CPU {83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Debug|x86.ActiveCfg = Debug|Any CPU {83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Debug|x86.Build.0 = Debug|Any CPU {83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Release|Any CPU.ActiveCfg = Release|Any CPU {83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Release|Any CPU.Build.0 = Release|Any CPU {83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Release|x64.ActiveCfg = Release|Any CPU {83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Release|x64.Build.0 = Release|Any CPU {83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Release|x86.ActiveCfg = Release|Any CPU {83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Release|x86.Build.0 = Release|Any CPU {93487BBB-589C-4315-9E52-1279C9434B3C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {93487BBB-589C-4315-9E52-1279C9434B3C}.Debug|Any CPU.Build.0 = Debug|Any CPU {93487BBB-589C-4315-9E52-1279C9434B3C}.Debug|x64.ActiveCfg = Debug|Any CPU {93487BBB-589C-4315-9E52-1279C9434B3C}.Debug|x64.Build.0 = Debug|Any CPU {93487BBB-589C-4315-9E52-1279C9434B3C}.Debug|x86.ActiveCfg = Debug|Any CPU {93487BBB-589C-4315-9E52-1279C9434B3C}.Debug|x86.Build.0 = Debug|Any CPU {93487BBB-589C-4315-9E52-1279C9434B3C}.Release|Any CPU.ActiveCfg = Release|Any CPU {93487BBB-589C-4315-9E52-1279C9434B3C}.Release|Any CPU.Build.0 = Release|Any CPU {93487BBB-589C-4315-9E52-1279C9434B3C}.Release|x64.ActiveCfg = Release|Any CPU {93487BBB-589C-4315-9E52-1279C9434B3C}.Release|x64.Build.0 = Release|Any CPU {93487BBB-589C-4315-9E52-1279C9434B3C}.Release|x86.ActiveCfg = Release|Any CPU {93487BBB-589C-4315-9E52-1279C9434B3C}.Release|x86.Build.0 = Release|Any CPU {77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Debug|Any CPU.Build.0 = Debug|Any CPU {77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Debug|x64.ActiveCfg = Debug|Any CPU {77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Debug|x64.Build.0 = Debug|Any CPU {77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Debug|x86.ActiveCfg = Debug|Any CPU {77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Debug|x86.Build.0 = Debug|Any CPU {77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Release|Any CPU.ActiveCfg = Release|Any CPU {77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Release|Any CPU.Build.0 = Release|Any CPU {77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Release|x64.ActiveCfg = Release|Any CPU {77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Release|x64.Build.0 = Release|Any CPU {77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Release|x86.ActiveCfg = Release|Any CPU {77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Release|x86.Build.0 = Release|Any CPU {AEDAAE2C-D615-4241-8006-240BB7FF1446}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AEDAAE2C-D615-4241-8006-240BB7FF1446}.Debug|Any CPU.Build.0 = Debug|Any CPU {AEDAAE2C-D615-4241-8006-240BB7FF1446}.Debug|x64.ActiveCfg = Debug|Any CPU {AEDAAE2C-D615-4241-8006-240BB7FF1446}.Debug|x64.Build.0 = Debug|Any CPU {AEDAAE2C-D615-4241-8006-240BB7FF1446}.Debug|x86.ActiveCfg = Debug|Any CPU {AEDAAE2C-D615-4241-8006-240BB7FF1446}.Debug|x86.Build.0 = Debug|Any CPU {AEDAAE2C-D615-4241-8006-240BB7FF1446}.Release|Any CPU.ActiveCfg = Release|Any CPU {AEDAAE2C-D615-4241-8006-240BB7FF1446}.Release|Any CPU.Build.0 = Release|Any CPU {AEDAAE2C-D615-4241-8006-240BB7FF1446}.Release|x64.ActiveCfg = Release|Any CPU {AEDAAE2C-D615-4241-8006-240BB7FF1446}.Release|x64.Build.0 = Release|Any CPU {AEDAAE2C-D615-4241-8006-240BB7FF1446}.Release|x86.ActiveCfg = Release|Any CPU {AEDAAE2C-D615-4241-8006-240BB7FF1446}.Release|x86.Build.0 = Release|Any CPU {8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Debug|Any CPU.Build.0 = Debug|Any CPU {8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Debug|x64.ActiveCfg = Debug|Any CPU {8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Debug|x64.Build.0 = Debug|Any CPU {8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Debug|x86.ActiveCfg = Debug|Any CPU {8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Debug|x86.Build.0 = Debug|Any CPU {8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Release|Any CPU.ActiveCfg = Release|Any CPU {8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Release|Any CPU.Build.0 = Release|Any CPU {8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Release|x64.ActiveCfg = Release|Any CPU {8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Release|x64.Build.0 = Release|Any CPU {8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Release|x86.ActiveCfg = Release|Any CPU {8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Release|x86.Build.0 = Release|Any CPU {B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Debug|Any CPU.Build.0 = Debug|Any CPU {B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Debug|x64.ActiveCfg = Debug|Any CPU {B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Debug|x64.Build.0 = Debug|Any CPU {B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Debug|x86.ActiveCfg = Debug|Any CPU {B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Debug|x86.Build.0 = Debug|Any CPU {B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Release|Any CPU.ActiveCfg = Release|Any CPU {B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Release|Any CPU.Build.0 = Release|Any CPU {B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Release|x64.ActiveCfg = Release|Any CPU {B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Release|x64.Build.0 = Release|Any CPU {B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Release|x86.ActiveCfg = Release|Any CPU {B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Release|x86.Build.0 = Release|Any CPU {A4B32710-06C8-4222-BC2B-2341EF514D9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A4B32710-06C8-4222-BC2B-2341EF514D9C}.Debug|Any CPU.Build.0 = Debug|Any CPU {A4B32710-06C8-4222-BC2B-2341EF514D9C}.Debug|x64.ActiveCfg = Debug|Any CPU {A4B32710-06C8-4222-BC2B-2341EF514D9C}.Debug|x64.Build.0 = Debug|Any CPU {A4B32710-06C8-4222-BC2B-2341EF514D9C}.Debug|x86.ActiveCfg = Debug|Any CPU {A4B32710-06C8-4222-BC2B-2341EF514D9C}.Debug|x86.Build.0 = Debug|Any CPU {A4B32710-06C8-4222-BC2B-2341EF514D9C}.Release|Any CPU.ActiveCfg = Release|Any CPU {A4B32710-06C8-4222-BC2B-2341EF514D9C}.Release|Any CPU.Build.0 = Release|Any CPU {A4B32710-06C8-4222-BC2B-2341EF514D9C}.Release|x64.ActiveCfg = Release|Any CPU {A4B32710-06C8-4222-BC2B-2341EF514D9C}.Release|x64.Build.0 = Release|Any CPU {A4B32710-06C8-4222-BC2B-2341EF514D9C}.Release|x86.ActiveCfg = Release|Any CPU {A4B32710-06C8-4222-BC2B-2341EF514D9C}.Release|x86.Build.0 = Release|Any CPU {DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Debug|Any CPU.Build.0 = Debug|Any CPU {DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Debug|x64.ActiveCfg = Debug|Any CPU {DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Debug|x64.Build.0 = Debug|Any CPU {DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Debug|x86.ActiveCfg = Debug|Any CPU {DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Debug|x86.Build.0 = Debug|Any CPU {DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Release|Any CPU.ActiveCfg = Release|Any CPU {DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Release|Any CPU.Build.0 = Release|Any CPU {DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Release|x64.ActiveCfg = Release|Any CPU {DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Release|x64.Build.0 = Release|Any CPU {DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Release|x86.ActiveCfg = Release|Any CPU {DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Release|x86.Build.0 = Release|Any CPU {07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Debug|Any CPU.Build.0 = Debug|Any CPU {07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Debug|x64.ActiveCfg = Debug|Any CPU {07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Debug|x64.Build.0 = Debug|Any CPU {07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Debug|x86.ActiveCfg = Debug|Any CPU {07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Debug|x86.Build.0 = Debug|Any CPU {07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Release|Any CPU.ActiveCfg = Release|Any CPU {07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Release|Any CPU.Build.0 = Release|Any CPU {07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Release|x64.ActiveCfg = Release|Any CPU {07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Release|x64.Build.0 = Release|Any CPU {07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Release|x86.ActiveCfg = Release|Any CPU {07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Release|x86.Build.0 = Release|Any CPU {DCE80DB0-6530-4599-9433-5601F55E4270}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DCE80DB0-6530-4599-9433-5601F55E4270}.Debug|Any CPU.Build.0 = Debug|Any CPU {DCE80DB0-6530-4599-9433-5601F55E4270}.Debug|x64.ActiveCfg = Debug|Any CPU {DCE80DB0-6530-4599-9433-5601F55E4270}.Debug|x64.Build.0 = Debug|Any CPU {DCE80DB0-6530-4599-9433-5601F55E4270}.Debug|x86.ActiveCfg = Debug|Any CPU {DCE80DB0-6530-4599-9433-5601F55E4270}.Debug|x86.Build.0 = Debug|Any CPU {DCE80DB0-6530-4599-9433-5601F55E4270}.Release|Any CPU.ActiveCfg = Release|Any CPU {DCE80DB0-6530-4599-9433-5601F55E4270}.Release|Any CPU.Build.0 = Release|Any CPU {DCE80DB0-6530-4599-9433-5601F55E4270}.Release|x64.ActiveCfg = Release|Any CPU {DCE80DB0-6530-4599-9433-5601F55E4270}.Release|x64.Build.0 = Release|Any CPU {DCE80DB0-6530-4599-9433-5601F55E4270}.Release|x86.ActiveCfg = Release|Any CPU {DCE80DB0-6530-4599-9433-5601F55E4270}.Release|x86.Build.0 = Release|Any CPU {5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Debug|Any CPU.Build.0 = Debug|Any CPU {5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Debug|x64.ActiveCfg = Debug|Any CPU {5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Debug|x64.Build.0 = Debug|Any CPU {5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Debug|x86.ActiveCfg = Debug|Any CPU {5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Debug|x86.Build.0 = Debug|Any CPU {5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Release|Any CPU.ActiveCfg = Release|Any CPU {5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Release|Any CPU.Build.0 = Release|Any CPU {5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Release|x64.ActiveCfg = Release|Any CPU {5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Release|x64.Build.0 = Release|Any CPU {5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Release|x86.ActiveCfg = Release|Any CPU {5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Release|x86.Build.0 = Release|Any CPU {3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Debug|Any CPU.Build.0 = Debug|Any CPU {3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Debug|x64.ActiveCfg = Debug|Any CPU {3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Debug|x64.Build.0 = Debug|Any CPU {3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Debug|x86.ActiveCfg = Debug|Any CPU {3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Debug|x86.Build.0 = Debug|Any CPU {3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Release|Any CPU.ActiveCfg = Release|Any CPU {3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Release|Any CPU.Build.0 = Release|Any CPU {3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Release|x64.ActiveCfg = Release|Any CPU {3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Release|x64.Build.0 = Release|Any CPU {3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Release|x86.ActiveCfg = Release|Any CPU {3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Release|x86.Build.0 = Release|Any CPU {4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Debug|Any CPU.Build.0 = Debug|Any CPU {4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Debug|x64.ActiveCfg = Debug|Any CPU {4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Debug|x64.Build.0 = Debug|Any CPU {4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Debug|x86.ActiveCfg = Debug|Any CPU {4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Debug|x86.Build.0 = Debug|Any CPU {4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Release|Any CPU.ActiveCfg = Release|Any CPU {4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Release|Any CPU.Build.0 = Release|Any CPU {4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Release|x64.ActiveCfg = Release|Any CPU {4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Release|x64.Build.0 = Release|Any CPU {4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Release|x86.ActiveCfg = Release|Any CPU {4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Release|x86.Build.0 = Release|Any CPU {4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Debug|Any CPU.Build.0 = Debug|Any CPU {4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Debug|x64.ActiveCfg = Debug|Any CPU {4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Debug|x64.Build.0 = Debug|Any CPU {4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Debug|x86.ActiveCfg = Debug|Any CPU {4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Debug|x86.Build.0 = Debug|Any CPU {4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Release|Any CPU.ActiveCfg = Release|Any CPU {4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Release|Any CPU.Build.0 = Release|Any CPU {4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Release|x64.ActiveCfg = Release|Any CPU {4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Release|x64.Build.0 = Release|Any CPU {4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Release|x86.ActiveCfg = Release|Any CPU {4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Release|x86.Build.0 = Release|Any CPU {78731E48-C6CA-4614-B617-65B55A85CAE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {78731E48-C6CA-4614-B617-65B55A85CAE0}.Debug|Any CPU.Build.0 = Debug|Any CPU {78731E48-C6CA-4614-B617-65B55A85CAE0}.Debug|x64.ActiveCfg = Debug|Any CPU {78731E48-C6CA-4614-B617-65B55A85CAE0}.Debug|x64.Build.0 = Debug|Any CPU {78731E48-C6CA-4614-B617-65B55A85CAE0}.Debug|x86.ActiveCfg = Debug|Any CPU {78731E48-C6CA-4614-B617-65B55A85CAE0}.Debug|x86.Build.0 = Debug|Any CPU {78731E48-C6CA-4614-B617-65B55A85CAE0}.Release|Any CPU.ActiveCfg = Release|Any CPU {78731E48-C6CA-4614-B617-65B55A85CAE0}.Release|Any CPU.Build.0 = Release|Any CPU {78731E48-C6CA-4614-B617-65B55A85CAE0}.Release|x64.ActiveCfg = Release|Any CPU {78731E48-C6CA-4614-B617-65B55A85CAE0}.Release|x64.Build.0 = Release|Any CPU {78731E48-C6CA-4614-B617-65B55A85CAE0}.Release|x86.ActiveCfg = Release|Any CPU {78731E48-C6CA-4614-B617-65B55A85CAE0}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {40663D90-0B3E-48A7-800E-CB5E1BED27B6} = {D4E0F6CD-9F21-4140-AC42-CD021D98B980} {4EFCF709-5899-4C49-A368-E556AFA3931F} = {D4E0F6CD-9F21-4140-AC42-CD021D98B980} {BBAF31CA-9D4F-4786-81B8-7FD56633C7B7} = {D4E0F6CD-9F21-4140-AC42-CD021D98B980} {756A8A86-A7EE-475D-B2E4-E98D79049F6B} = {D4E0F6CD-9F21-4140-AC42-CD021D98B980} {83F1DAD2-9E07-4D0B-B548-DEB03105F874} = {975CF226-2297-4B1B-88C6-5783C5359D18} {93487BBB-589C-4315-9E52-1279C9434B3C} = {975CF226-2297-4B1B-88C6-5783C5359D18} {77D6E5F6-9A08-436D-8A9D-7F5832322FAE} = {975CF226-2297-4B1B-88C6-5783C5359D18} {AEDAAE2C-D615-4241-8006-240BB7FF1446} = {975CF226-2297-4B1B-88C6-5783C5359D18} {8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA} = {975CF226-2297-4B1B-88C6-5783C5359D18} {B22C7ABE-2B56-42AF-8CF2-46058A5B6543} = {EFA0F8A7-CBF2-4542-82A9-931BB0111FED} {A4B32710-06C8-4222-BC2B-2341EF514D9C} = {EFA0F8A7-CBF2-4542-82A9-931BB0111FED} {DCD71941-444F-4A8B-B2CF-AF1C95BAB824} = {EFA0F8A7-CBF2-4542-82A9-931BB0111FED} {07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676} = {EFA0F8A7-CBF2-4542-82A9-931BB0111FED} {DCE80DB0-6530-4599-9433-5601F55E4270} = {EFA0F8A7-CBF2-4542-82A9-931BB0111FED} {5C60F99A-1BA8-4A82-9973-7150D4BE57A3} = {EFA0F8A7-CBF2-4542-82A9-931BB0111FED} {3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C} = {975CF226-2297-4B1B-88C6-5783C5359D18} {4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5} = {D4E0F6CD-9F21-4140-AC42-CD021D98B980} {4E68313F-69F8-4125-B87E-665D6F7DFD5D} = {EFA0F8A7-CBF2-4542-82A9-931BB0111FED} {78731E48-C6CA-4614-B617-65B55A85CAE0} = {07C2787E-EAC7-C090-1BA3-A61EC2A24D84} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {4B673C11-52EF-455B-BFC6-8CFEBC340972} EndGlobalSection EndGlobal ================================================ FILE: NosCore.sln.DotSettings ================================================  <?xml version="1.0" encoding="utf-16"?><Profile name="Update file header"><CSCodeStyleAttributes ArrangeTypeAccessModifier="False" ArrangeTypeMemberAccessModifier="False" SortModifiers="False" RemoveRedundantParentheses="False" AddMissingParentheses="False" ArrangeBraces="False" ArrangeAttributes="False" ArrangeArgumentsStyle="False" ArrangeCodeBodyStyle="False" ArrangeVarStyle="False" /><CSOptimizeUsings><OptimizeUsings>False</OptimizeUsings><EmbraceInRegion>False</EmbraceInRegion><RegionName></RegionName></CSOptimizeUsings><CSUpdateFileHeader>True</CSUpdateFileHeader><XAMLCollapseEmptyTags>False</XAMLCollapseEmptyTags></Profile> __ _ __ __ ___ __ ___ ___ | \| |/__\ /' _/ / _//__\| _ \ __| | | ' | \/ |`._`.| \_| \/ | v / _| |_|\__|\__/ |___/ \__/\__/|_|_\___| Copyright (C) 2019 - NosCore NosCore is a 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 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/>. LIVE_MONITOR True ================================================ FILE: NosCore.sln.startup.json ================================================ /* This is a configuration file for the SwitchStartupProject Visual Studio Extension See https://bitbucket.org/thirteen/switchstartupproject/src/tip/Configuration.md */ { /* Configuration File Version */ "Version": 3, /* Create an item in the dropdown list for each project in the solution? */ "ListAllProjects": false, "MultiProjectConfigurations": { "Login + Master": { "Projects": { "NosCore.LoginServer": {}, "NosCore.MasterServer": {} } }, "World + Login + Master": { "Projects": { "NosCore.WorldServer": {}, "NosCore.LoginServer": {}, "NosCore.MasterServer": {} } }, "World + Login + Master + WebApi": { "Projects": { "NosCore.WorldServer": {}, "NosCore.LoginServer": {}, "NosCore.MasterServer": {}, "NosCore.WebApi": {} } }, "All": { "Projects": { "NosCore.WorldServer": {}, "NosCore.LoginServer": {}, "NosCore.MasterServer": {}, "NosCore.Parser": {}, "NosCore.WebApi": {} } }, "LoginServer": { "Projects": { "NosCore.LoginServer": {} } }, "MasterServer": { "Projects": { "NosCore.MasterServer": {} } }, "WorldServer": { "Projects": { "NosCore.WorldServer": {} } }, "Parser": { "Projects": { "NosCore.Parser": {} } }, "WebApi": { "Projects": { "NosCore.WebApi": {} } } } } ================================================ FILE: NuGet.config ================================================ ================================================ FILE: README.md ================================================

# NosCore # [![Codacy Badge](https://app.codacy.com/project/badge/Grade/643fd3df0ce742ec9b2ac3dab95bdc44)](https://www.codacy.com/gh/NosCoreIO/NosCore/dashboard?utm_source=github.com&utm_medium=referral&utm_content=NosCoreIO/NosCore&utm_campaign=Badge_Grade) [![.NET](https://github.com/NosCoreIO/NosCore/actions/workflows/dotnet.yml/badge.svg?branch=master)](https://github.com/NosCoreIO/NosCore/actions/workflows/dotnet.yml) # Special Thanks for Contributions #

## You want to contribute ? ## [![Discord](https://i.gyazo.com/2115a3ecb258220f5b1a8ebd8c50eb8f.png)](https://discord.gg/Eu3ETSw) ## You like our work ? ## Sponsor me! [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/A3562BQV) Become a Patron! ## Warning! ## We are not responsible of any damages caused by bad usage of our source. Please before asking questions or installing this source read this readme and also do a research, google is your friend. If you mess up when installing our source because you didnt follow it, we will laugh at you. A lot. ## Instructions to contribute ## ### Disclaimer ### This project is a community project not for commercial use. The emulator itself is proof of concept of our idea to try out anything what's not possible on original servers. The result is to learn and program together for prove the study. ### Legal ### This Website and Project is in no way affiliated with, authorized, maintained, sponsored or endorsed by Gameforge or any of its affiliates or subsidiaries. This is an independent and unofficial server for educational use ONLY. Using the Project might be against the TOS. ### Contribution is only possible with Visual Studio 2026 ### We recommend usage of : * [Roslynator extension](https://github.com/JosefPihrt/Roslynator). * [Resharper](https://www.jetbrains.com/resharper/) * [SwitchStartupProject extension](https://marketplace.visualstudio.com/items?itemName=vs-publisher-141975.SwitchStartupProjectForVS2022) # Building the code # ## 1. Install .Net 10 ## - https://dotnet.microsoft.com/download/dotnet/10.0 - Visual Studio > Tools > Options > Preview Features > Use previews of the .NET CORE SDK - Restart ## 2. Install or Configure PostgreSQL ## - PostgreSQL: https://www.postgresql.org/ - Use update-database - Parse all ## 3. Use the NuGet Package Manager to Update the Database ## - Go to Tools -> NuGet Package Manager -> Package Manager Console - Choose Project NosCore.Database - Type 'update-database' and update the Database ## 4. Start services ## - script to start services are in .\scripts ## 5. (Optional) Local NuGet packages ## Every NosCore repo ships a `Directory.Build.props` that adds a NuGet source when the `NOSCORE_LOCAL_PACKAGES` environment variable is set — useful for testing an un-released `NosCore.Packets` / `NosCore.Dao` / `NosCore.Shared` build without publishing it. One-time setup (run once per machine): ``` setx NOSCORE_LOCAL_PACKAGES C:\LocalPackages mkdir C:\LocalPackages ``` Restart Visual Studio / your shell so the new variable is picked up. Drop any `.nupkg` file into that folder, then restore as usual. If the variable is unset the property group is skipped and only nuget.org is used — no action needed for contributors who don't want local packages. ================================================ FILE: build/.gitkeep ================================================  ================================================ FILE: build-exe.cmd ================================================ dotnet build -r win-x64 || exit /b 1 dotnet build -r linux-x64 || exit /b 1 dotnet build -r linux-musl-x64 || exit /b 1 mkdir .\build\Configuration || exit /b 1 cd Configuration || exit /b 1 copy *.* ..\build\Configuration\ || exit /b 1 ================================================ FILE: build.cmd ================================================ dotnet build ================================================ FILE: codecov.yml ================================================ coverage: range: 35..100 #upgrade when code coverage is up round: down precision: 2 ignore: - "src/NosCore.WorldServer/*" - "src/NosCore.MasterServer/*" - "src/NosCore.LoginServer/*" - "src/NosCore.WebApi/*" - "src/NosCore.Database/**/*" - "src/NosCore.Data/**/*" - "test/**/*" ================================================ FILE: configuration/api.yml ================================================ MasterCommunication: Password: NosCorePassword Host: ${MASTER_HOST,http://localhost} Port: 5000 Host: ${HOST,127.0.0.1} Port: ${API_PORT,8080} Language: en Database: Host: ${DB_HOST,localhost} Port: 5432 Database: noscore Username: postgres Password: password ================================================ FILE: configuration/database.yml ================================================ Host: localhost Port: 5432 Database: noscore Username: postgres Password: password ================================================ FILE: configuration/logger.yml ================================================ Serilog: MinimumLevel: Default: Debug Override: Microsoft: Warning WriteTo: - Name: Console Args: outputTemplate: "{Level:u4} {Timestamp:HH:mm:ss} -- {Message:lj}{NewLine}{Exception}" theme: Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Literate, Serilog.Sinks.Console ================================================ FILE: configuration/login.yml ================================================ MasterCommunication: Password: NosCorePassword Host: ${MASTER_HOST,http://localhost} Port: 5000 Host: ${HOST,127.0.0.1} Port: ${LOGIN_PORT,4000} Language: en Database: Host: ${DB_HOST,localhost} Port: 5432 Database: noscore Username: postgres Password: password ================================================ FILE: configuration/master.yml ================================================ WebApi: Host: ${WEBAPI_HOST,http://localhost} Port: 5000 Password: NosCorePassword Language: en Database: Host: ${DB_HOST,localhost} Port: 5432 Database: noscore Username: postgres Password: password ================================================ FILE: configuration/parser.yml ================================================ Language: en Database: Host: 127.0.0.1 Port: 5432 Database: noscore Username: postgres Password: password ================================================ FILE: configuration/world.yml ================================================ MasterCommunication: Password: NosCorePassword Host: ${MASTER_HOST,http://localhost} Port: 5000 ServerName: S1-NosCore Host: ${HOST,127.0.0.1} Port: ${WORLD_PORT,1337} DisplayHost: 127.0.0.1 DisplayPort: 1337 ConnectedAccountLimit: 100 SceneOnCreate: false StartInMaintenance: false #0-3 English / International #4-7 German #8-11 French #12-15 Italian #16-19 Polish #20-23 Spanish ServerId: 0 WorldInformation: true WebApi: Host: ${WEBAPI_HOST,http://localhost} Port: 5001 Password: NosCorePassword Language: en Database: Host: ${DB_HOST,localhost} Port: 5432 Database: noscore Username: postgres Password: password BackpackSize: 48 MaxItemAmount: 999 MaxGoldAmount: 1000000000 MaxBankGoldAmount: 100000000000 MaxSpPoints: 10000 MaxAdditionalSpPoints: 1000000 AllClassAvailableOnCreate: false # BasicEquipments / BasicSkills are keyed first by class name, then by starter origin: # CreateAndUpgrade : Adventurer creation (lvl 1) and Adventurer -> specialist upgrade # Create56 : specialist direct-create on normal server # Create80 : any class direct-create when AllClassAvailableOnCreate=true BasicEquipments: Adventurer: CreateAndUpgrade: - VNum: 1 Amount: 1 NoscorePocketType: 8 - VNum: 8 Amount: 1 NoscorePocketType: 8 - VNum: 12 Amount: 1 NoscorePocketType: 8 - VNum: 2024 Amount: 10 NoscorePocketType: 2 - VNum: 2081 Amount: 1 NoscorePocketType: 2 Swordsman: CreateAndUpgrade: [] Create56: - VNum: 901 Amount: 1 NoscorePocketType: 0 Upgrade: 5 - VNum: 902 Amount: 1 NoscorePocketType: 0 Upgrade: 5 - VNum: 884 Amount: 1 NoscorePocketType: 0 - VNum: 885 Amount: 1 NoscorePocketType: 0 - VNum: 886 Amount: 1 NoscorePocketType: 0 - VNum: 887 Amount: 1 NoscorePocketType: 0 - VNum: 4833 Amount: 1 NoscorePocketType: 0 - VNum: 4834 Amount: 1 NoscorePocketType: 0 - VNum: 4870 Amount: 1 NoscorePocketType: 0 - VNum: 4989 Amount: 1 NoscorePocketType: 0 - VNum: 4995 Amount: 1 NoscorePocketType: 0 - VNum: 4996 Amount: 1 NoscorePocketType: 0 - VNum: 4997 Amount: 1 NoscorePocketType: 0 - VNum: 4998 Amount: 1 NoscorePocketType: 0 - VNum: 2082 Amount: 100 NoscorePocketType: 2 Create80: [] Archer: CreateAndUpgrade: [] Create56: - VNum: 903 Amount: 1 NoscorePocketType: 0 Upgrade: 5 - VNum: 904 Amount: 1 NoscorePocketType: 0 Upgrade: 5 - VNum: 884 Amount: 1 NoscorePocketType: 0 - VNum: 885 Amount: 1 NoscorePocketType: 0 - VNum: 886 Amount: 1 NoscorePocketType: 0 - VNum: 887 Amount: 1 NoscorePocketType: 0 - VNum: 4833 Amount: 1 NoscorePocketType: 0 - VNum: 4834 Amount: 1 NoscorePocketType: 0 - VNum: 4870 Amount: 1 NoscorePocketType: 0 - VNum: 4989 Amount: 1 NoscorePocketType: 0 - VNum: 4995 Amount: 1 NoscorePocketType: 0 - VNum: 4996 Amount: 1 NoscorePocketType: 0 - VNum: 4997 Amount: 1 NoscorePocketType: 0 - VNum: 4998 Amount: 1 NoscorePocketType: 0 - VNum: 2083 Amount: 100 NoscorePocketType: 2 Create80: [] Mage: CreateAndUpgrade: [] Create56: - VNum: 905 Amount: 1 NoscorePocketType: 0 Upgrade: 5 - VNum: 906 Amount: 1 NoscorePocketType: 0 Upgrade: 5 - VNum: 884 Amount: 1 NoscorePocketType: 0 - VNum: 885 Amount: 1 NoscorePocketType: 0 - VNum: 886 Amount: 1 NoscorePocketType: 0 - VNum: 887 Amount: 1 NoscorePocketType: 0 - VNum: 4833 Amount: 1 NoscorePocketType: 0 - VNum: 4834 Amount: 1 NoscorePocketType: 0 - VNum: 4870 Amount: 1 NoscorePocketType: 0 - VNum: 4989 Amount: 1 NoscorePocketType: 0 - VNum: 4995 Amount: 1 NoscorePocketType: 0 - VNum: 4996 Amount: 1 NoscorePocketType: 0 - VNum: 4997 Amount: 1 NoscorePocketType: 0 - VNum: 4998 Amount: 1 NoscorePocketType: 0 Create80: [] MartialArtist: Create80: [] BasicSkills: # 200 / 201 / 209 (Adventurer primary / secondary / Pet Catcher) are seeded # unconditionally for every new character in CharNewPacketHandler — matches # vanosilla's hard-coded BaseSkill list — and must not live here, otherwise # a JSON misedit could create characters without the capture slot working. Adventurer: CreateAndUpgrade: [] Swordsman: CreateAndUpgrade: [] Create56: - 220 - 221 - 222 - 223 - 224 - 225 - 226 - 227 - 228 - 229 - 230 - 231 - 232 - 233 - 234 - 235 - 22 - 25 - 29 - 38 - 41 - 46 - 50 - 53 - 57 Create80: [] Archer: CreateAndUpgrade: [] Create56: - 240 - 241 - 242 - 243 - 244 - 245 - 246 - 247 - 248 - 249 - 250 - 251 - 252 - 253 - 254 - 255 - 256 - 236 - 21 - 26 - 29 - 37 - 41 - 46 - 50 - 53 - 57 - 60 Create80: [] Mage: CreateAndUpgrade: [] Create56: - 260 - 261 - 262 - 263 - 264 - 265 - 266 - 267 - 268 - 269 - 270 - 271 - 272 - 273 - 274 - 275 - 276 - 277 - 237 - 30 - 37 - 42 - 46 - 50 - 53 - 58 Create80: [] MartialArtist: Create80: [] ================================================ FILE: deploy/Dockerfile-login ================================================ # cf https://github.com/dotnet/dotnet-docker/blob/main/src/aspnet/10.0/alpine3.21/amd64/Dockerfile ARG REPO=mcr.microsoft.com/dotnet/runtime FROM $REPO:10.0.1-alpine3.21-amd64 # .NET globalization APIs will use invariant mode by default because DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true is set # by the base runtime-deps image. See https://aka.ms/dotnet-globalization-alpine-containers for more information. # ASP.NET Core version ENV ASPNET_VERSION=10.0.1 ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false # Install ASP.NET Core RUN wget -O aspnetcore.tar.gz https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$ASPNET_VERSION/aspnetcore-runtime-$ASPNET_VERSION-linux-musl-x64.tar.gz \ && aspnetcore_sha512='ef84b8bcfb323a11acc57e54068e1ff7daa400bd5c8aeb89c65fb13fb2ad9e302986647495561a0c4fda5eb4c0836a67e5e7e591d58661f20cd6ddff97d6d4c9' \ && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ && tar -oxzf aspnetcore.tar.gz -C /usr/share/dotnet ./shared/Microsoft.AspNetCore.App \ && rm aspnetcore.tar.gz # Update package list and install libicu (ICU libraries) for Alpine RUN apk update \ && apk add --no-cache icu-libs COPY ./build/net10.0 /app/build/net10.0 COPY ./configuration /app/configuration WORKDIR /app/build/net10.0 EXPOSE 4002 ENTRYPOINT ["dotnet", "NosCore.LoginServer.dll"] ================================================ FILE: deploy/Dockerfile-master ================================================ # cf https://github.com/dotnet/dotnet-docker/blob/main/src/aspnet/10.0/alpine3.21/amd64/Dockerfile ARG REPO=mcr.microsoft.com/dotnet/runtime FROM $REPO:10.0.1-alpine3.21-amd64 # .NET globalization APIs will use invariant mode by default because DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true is set # by the base runtime-deps image. See https://aka.ms/dotnet-globalization-alpine-containers for more information. # ASP.NET Core version ENV ASPNET_VERSION=10.0.1 ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false # Install ASP.NET Core RUN wget -O aspnetcore.tar.gz https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$ASPNET_VERSION/aspnetcore-runtime-$ASPNET_VERSION-linux-musl-x64.tar.gz \ && aspnetcore_sha512='ef84b8bcfb323a11acc57e54068e1ff7daa400bd5c8aeb89c65fb13fb2ad9e302986647495561a0c4fda5eb4c0836a67e5e7e591d58661f20cd6ddff97d6d4c9' \ && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ && tar -oxzf aspnetcore.tar.gz -C /usr/share/dotnet ./shared/Microsoft.AspNetCore.App \ && rm aspnetcore.tar.gz # Update package list and install libicu (ICU libraries) for Alpine RUN apk update \ && apk add --no-cache icu-libs COPY ./build/net10.0 /app/build/net10.0 COPY ./configuration /app/configuration WORKDIR /app/build/net10.0 EXPOSE 5000 6969 ENTRYPOINT ["dotnet", "NosCore.MasterServer.dll"] ================================================ FILE: deploy/Dockerfile-world ================================================ # cf https://github.com/dotnet/dotnet-docker/blob/main/src/aspnet/10.0/alpine3.21/amd64/Dockerfile ARG REPO=mcr.microsoft.com/dotnet/runtime FROM $REPO:10.0.1-alpine3.21-amd64 # .NET globalization APIs will use invariant mode by default because DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true is set # by the base runtime-deps image. See https://aka.ms/dotnet-globalization-alpine-containers for more information. # ASP.NET Core version ENV ASPNET_VERSION=10.0.1 ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false # Install ASP.NET Core RUN wget -O aspnetcore.tar.gz https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$ASPNET_VERSION/aspnetcore-runtime-$ASPNET_VERSION-linux-musl-x64.tar.gz \ && aspnetcore_sha512='ef84b8bcfb323a11acc57e54068e1ff7daa400bd5c8aeb89c65fb13fb2ad9e302986647495561a0c4fda5eb4c0836a67e5e7e591d58661f20cd6ddff97d6d4c9' \ && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \ && tar -oxzf aspnetcore.tar.gz -C /usr/share/dotnet ./shared/Microsoft.AspNetCore.App \ && rm aspnetcore.tar.gz # Update package list and install libicu (ICU libraries) for Alpine RUN apk update \ && apk add --no-cache icu-libs COPY ./build/net10.0 /app/build/net10.0 COPY ./configuration /app/configuration WORKDIR /app/build/net10.0 EXPOSE 1337 5001 # RUN dotnet help ENTRYPOINT ["dotnet", "NosCore.WorldServer.dll"] ================================================ FILE: docker-compose.yml ================================================ services: db: container_name: noscore-db image: postgres:17.2-alpine3.21 restart: unless-stopped environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=password - POSTGRES_DB=noscore ports: - 5432:5432 # PG17 cannot read a PG12 data directory. A dedicated path forces a clean # init on upgrade — existing developers just rename ./postgres out of the # way (or dump+restore) and let PG17 initialise ./postgres17 from scratch. volumes: - ./postgres17:/var/lib/postgresql/data networks: - noscore-network reverse-proxy: container_name: noscore-reverse-proxy image: noscoreio/noscore.reverseproxy:latest restart: unless-stopped ports: - 4000:4000 - 1337:1337 expose: - 4000 - 1337 networks: - noscore-network master: container_name: noscore-master environment: - PORT=5000 - DB_HOST=db - WEBAPI_HOST=http://master build: context: ./ dockerfile: deploy/Dockerfile-master restart: unless-stopped ports: - 5000:5000 expose: - 5432 networks: - noscore-network volumes: - ./build/net10.0/linux-musl-x64:/app/build/net10.0 - ./configuration/:/app/build/configuration world: container_name: noscore-world environment: - WEBAPI_PORT=5001 - WEBAPI_HOST=http://world - WORLD_PORT=1337 - MASTER_HOST=http://master - DB_HOST=db - HOST=127.0.0.1 build: context: ./ dockerfile: deploy/Dockerfile-world restart: unless-stopped ports: - 5001:5001 - 1337:1337 expose: - 5432 networks: - noscore-network volumes: - ./build/net10.0/linux-musl-x64:/app/build/net10.0 - ./configuration/:/app/build/configuration login: container_name: noscore-login environment: - LOGIN_PORT=4000 - MASTER_HOST=http://master - DB_HOST=db - HOST=127.0.0.1 build: context: ./ dockerfile: deploy/Dockerfile-login restart: unless-stopped ports: - 4000:4000 expose: - 5432 networks: - noscore-network volumes: - ./build/net10.0/linux-musl-x64:/app/build/net10.0 - ./configuration/:/app/build/configuration networks: noscore-network: driver: bridge ================================================ FILE: documentation/PostmanCollection/NosCore.postman_collection.json ================================================ { "info": { "_postman_id": "2a1742ee-c773-4210-90b1-2f6f07ceec39", "name": "NosCore", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "item": [ { "name": "Get Bearer Token", "event": [ { "listen": "test", "script": { "id": "55bf7691-9fc9-4eba-8271-f2b32d83ae2a", "type": "text/javascript", "exec": [ "postman.setEnvironmentVariable(\"Token\", responseBody);" ] } } ], "request": { "auth": { "type": "noauth" }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\r\n\t\"ServerToken\": \"NosCorePassword\"\r\n}" }, "url": { "raw": "http://localhost:5000/api/token/connectServer", "protocol": "http", "host": [ "localhost" ], "port": "5000", "path": [ "api", "token", "connectServer" ] }, "description": "Post on NosCore API" }, "response": [] }, { "name": "Get Channel List", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{Token}}", "type": "string" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "" }, "url": { "raw": "http://localhost:5000/api/channels", "protocol": "http", "host": [ "localhost" ], "port": "5000", "path": [ "api", "channels" ] }, "description": "Post on NosCore API" }, "response": [] }, { "name": "Post Packet", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{Token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{ \r\n \"Packet\":\"finfo 6 1\",\r\n \"ReceiverType\": 4,\r\n \"SenderCharacter\":{\"Name\":\"test\",\"Id\":6},\r\n \"ReceiverCharacter\":{\"Name\":\"Elendan\",\"Id\":5},\r\n \"OriginWorldId\":0\r\n}" }, "url": { "raw": "http://localhost:5001/api/packet", "protocol": "http", "host": [ "localhost" ], "port": "5001", "path": [ "api", "packet" ] }, "description": "Post on NosCore API" }, "response": [] } ] } ================================================ FILE: documentation/dat/Card.dat.md ================================================ # Card.dat ```text EFFECT {EffectId} GROUP 0 {Level} LAST {TimeoutBuff} {TimeoutBuffChance} NAME {NameI18NKey} STYLE 0 {BuffType} TIME {Duration} {Delay} VNUM {CardId} ``` ## EFFECT | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | EffectId | Int32 | Visual effect id | ## GROUP | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Unknown | | | | | 3 | Parsed | Level | Byte | Card level tier | ## LAST | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | TimeoutBuff | Int16 | Follow-up buff id when card expires | | 3 | Parsed | TimeoutBuffChance | Byte | % chance the follow-up buff fires | ## NAME | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | NameI18NKey | String | Localization key (zts##e) | ## STYLE | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Unknown | | | | | 3 | Parsed | BuffType | CardType | Buff type from STYLE column 3 | ## TIME | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | Duration | Int32 | Duration in deciseconds | | 3 | Parsed | Delay | Int32 | Activation delay | ## VNUM | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | CardId | Int16 | Card vnum | ## Computed / multi-section fields | DTO property | Type | Source | Description | |---|---|---|---| | BCards | ICollection`1 | 1ST + 2ST (5 groups of 6) | Up to 5 BCards, first 3 from 1ST then 2 from 2ST | ================================================ FILE: documentation/dat/Item.dat.md ================================================ # Item.dat ```text FLAG 0 0 0 {IsSoldable} {IsDroppable} {IsTradable} {IsMinilandActionable} {IsWarehouse} {Flag9} {Flag1} {Flag2} {Flag3} {Flag4} {RequireBinding} {IsColored} {FemaleOnly} {MaleOnly} 0 {Flag6} 0 {IsHeroic} {Flag7} {Flag8} {RaidItem} {UnknownLastBit} INDEX 0 0 {ItemSubType} NAME {NameI18NKey} VNUM {VNum} {Price} ``` ## FLAG 25 boolean bits. FLAG[25] identifies raid-inventory items (seals, boxes, chests, drops). | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Unknown | | | | | 3 | Unknown | | | | | 4 | Unknown | | | | | 5 | Parsed | IsSoldable | Boolean | Inverted: dat=0 -> soldable | | 6 | Parsed | IsDroppable | Boolean | Inverted: dat=0 -> droppable | | 7 | Parsed | IsTradable | Boolean | Inverted: dat=0 -> tradable | | 8 | Parsed | IsMinilandActionable | Boolean | Miniland-actionable object | | 9 | Parsed | IsWarehouse | Boolean | Can be stored in the account warehouse | | 10 | Parsed | Flag9 | Boolean | FLAG bit 9 (appears on beads, medals, raid seals) | | 11 | Parsed | Flag1 | Boolean | FLAG bit 10 (unknown) | | 12 | Parsed | Flag2 | Boolean | FLAG bit 11 (set on mounts + raid items + partner equipment) | | 13 | Parsed | Flag3 | Boolean | FLAG bit 12 (unknown) | | 14 | Parsed | Flag4 | Boolean | FLAG bit 13 (unknown) | | 15 | Parsed | RequireBinding | Boolean | Binds to character on use/equip | | 16 | Parsed | IsColored | Boolean | Uses design slot for color | | 17 | NonParsed | FemaleOnly | | Set together with FLAG[18]=0 to mark a female-only item; rolled up into Sex. | | 18 | NonParsed | MaleOnly | | Set together with FLAG[17]=0 to mark a male-only item; rolled up into Sex. | | 19 | Unknown | | | | | 20 | Parsed | Flag6 | Boolean | FLAG bit 19 (unknown) | | 21 | Unknown | | | | | 22 | Parsed | IsHeroic | Boolean | Heroic item | | 23 | Parsed | Flag7 | Boolean | FLAG bit 22 (unknown) | | 24 | Parsed | Flag8 | Boolean | FLAG bit 23 (unknown) | | 25 | NonParsed | RaidItem | | Set on raid seals, raid boxes, chests and drops — routed to the Raid pocket. | | 26 | NonParsed | UnknownLastBit | | | ## INDEX | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Unknown | | | | | 3 | Unknown | | | | | 4 | Parsed | ItemSubType | Byte | Subtype within item category | ## NAME | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | NameI18NKey | String | Localization key (zts##e) | ## VNUM | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | VNum | Int16 | Item vnum | | 3 | Parsed | Price | Int64 | NPC shop sell price | ## Computed / multi-section fields | DTO property | Type | Source | Description | |---|---|---|---| | BasicUpgrade | Byte | DATA[varies] | Base upgrade level | | BCards | ICollection`1 | BUFF[0..24] | Up to 5 BCard groups (5 fields each) | | Class | Byte | TYPE[1] (fairy override: 15) | Class restriction bitmask | | CloseDefence | Int16 | DATA[varies] | Melee defence | | CriticalLuckRate | Byte | DATA[varies] | Critical luck multiplier | | CriticalRate | Int16 | DATA[varies] | Critical hit chance | | DamageMaximum | Int16 | DATA[varies] | Max weapon damage | | DamageMinimum | Int16 | DATA[varies] | Min weapon damage | | DarkResistance | Int16 | DATA[11] or DATA[18] | Dark resistance; SP uses DATA[18] | | DefenceDodge | Int16 | DATA[varies] | Dodge chance | | DistanceDefence | Int16 | DATA[varies] | Ranged defence | | DistanceDefenceDodge | Int16 | DATA[varies] | Ranged dodge chance | | Effect | ItemEffectType | DATA[varies] per ItemType | ItemEffectType enum | | EffectValue | Int32 | DATA[varies] per ItemType | Effect numeric argument | | Element | ElementType | DATA[varies] | Primary elemental alignment | | ElementRate | Int16 | DATA[varies] | Element rate % | | EquipmentSlot | EquipmentType | INDEX[3] | Equipment slot | | FireResistance | Int16 | DATA[7] or DATA[15] | Fire resistance; SP uses DATA[15], others DATA[7] | | Height | Byte | DATA[4] (miniland only) | Miniland object footprint height | | HitRate | Int16 | DATA[varies] | Hit rate | | Hp | Int16 | DATA[varies] | Hp bonus on equip | | ItemType | ItemType | INDEX[0,1] | ItemType composite enum | | ItemValidTime | Int64 | DATA[varies] | Expiration duration in seconds | | LevelJobMinimum | Byte | DATA[varies] | Minimum job level to use/equip | | LevelMinimum | Byte | DATA[varies] | Minimum level to equip/use, per-ItemType | | LightResistance | Int16 | DATA[9] or DATA[17] | Light resistance; SP uses DATA[17] | | MagicDefence | Int16 | DATA[varies] | Magic defence | | MaxCellon | Byte | DATA[varies] | Max cellons slotted | | MaxCellonLvl | Byte | DATA[varies] | Max cellon level | | MaximumAmmo | Byte | DATA[varies] | Max ammo | | MinilandObjectPoint | Int32 | DATA[2] (miniland only) | Miniland point value | | Morph | Int16 | INDEX[3] + INDEX[5] | Morph id (partner skin) or effect value | | Mp | Int16 | DATA[varies] | Mp bonus on equip | | ReputationMinimum | Byte | DATA[varies] | Minimum reputation tier | | ReputPrice | Int64 | FLAG[20] + VNUM[1] | Reputation price when FLAG[20] is set | | Sex | Byte | FLAG[16] + FLAG[17] | Gender restriction: 1=female, 2=male, 0=any | | Speed | Byte | DATA[varies] | Movement speed bonus / vehicle speed | | SpType | Byte | DATA[varies] (SP only) | SP transformation type | | Type | NoscorePocketType | FLAG[25] + DATA[0] + INDEX[0,1] | Pocket type: FLAG[25]==1 -> Raid, DATA[0]==1000 && INDEX[1]==4 -> Mount, else legacy INDEX[0] map | | WaitDelay | Int16 | DATA[varies] | Cooldown / use delay | | WaterResistance | Int16 | DATA[8] or DATA[16] | Water resistance; SP uses DATA[16] | | Width | Byte | DATA[3] (miniland only) | Miniland object footprint width | ================================================ FILE: documentation/dat/Skill.dat.md ================================================ # Skill.dat ```text ``` ## Computed / multi-section fields | DTO property | Type | Source | Description | |---|---|---|---| | AttackAnimation | Int16 | | | | BCards | ICollection`1 | | | | CastAnimation | Int16 | | | | CastEffect | Int16 | | | | CastId | Int16 | | | | CastTime | Int16 | | | | Class | Byte | | | | Combo | ICollection`1 | | | | Cooldown | Int16 | | | | CpCost | Byte | | | | Effect | Int16 | | | | Element | Byte | | | | HitType | Byte | | | | ItemVNum | Int16 | | | | LevelMinimum | Byte | | | | MinimumAdventurerLevel | Byte | | | | MinimumArcherLevel | Byte | | | | MinimumMagicianLevel | Byte | | | | MinimumSwordmanLevel | Byte | | | | MpCost | Int16 | | | | NameI18NKey | String | | | | Price | Int32 | | | | Range | Byte | | | | SkillType | Byte | | | | SkillVNum | Int16 | | | | TargetRange | Byte | | | | TargetType | Byte | | | | Type | Byte | | | | UpgradeSkill | Int16 | | | | UpgradeType | Int16 | | | ================================================ FILE: documentation/dat/monster.dat.md ================================================ # monster.dat ```text AINFO {ainfoDefType} {DefenceUpgrade} ARMOR {CloseDefence} {meleeDef} {rangedDef} {magicDef} {dodge} ATTRIB {Element} {ElementRate} {FireResistance} {WaterResistance} {LightResistance} {DarkResistance} BASIC {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} CARD {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} EFF {BasicSkill} {EffectIdConstantly} {EffectIdOnDeath} ETC {CanWalk} {unknown1} {IsPercentileDmg} {CanOnlyBeDmgedByJajamaruLastSkill} {unknown2} {VisibleOnMinimapAsGreenDot} {unknown3} {IsValhallaPartner} EXP {HeroXp} {JobXp} HP/MP {MaxHp} {MaxMp} ITEM {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} LEVEL {Level} MODE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 {AlwaysActive} {Limiter} {HpThreshold} {RangeThreshold} {CModeVNum} {CellMinRange} {Midgard} NAME {NameI18NKey} PARTNER {partnerUnused} PETINFO {PetInfoVal1} {PetInfoVal2} {PetInfoVal3} {PetInfoVal4} PREATT {IsHostile} {GroupAttack} {NoticeRange} {Speed} {RespawnTime} RACE {Race} {RaceType} SETTING {IconId} {SpawnMobOrColor} {VNumRequired} {SpriteSize} {CellSize} {unknown0} SKILL {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} VNUM {NpcMonsterVNum} WEAPON {DamageMinimum} {DamageMinimum} {DamageMinimum} {DamageMaximum} {Concentrate} {CriticalChance} {CriticalRate} WINFO {AttackUpgrade} {unknown5} {AttackUpgrade} ZSKILL {AttackClass} {BasicRange} {BasicHitChance} {BasicArea} {BasicCooldown} {DashSpeed} {unknown4} ``` ## AINFO | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | NonParsed | ainfoDefType | | Defence-type override for ARMOR derivation. | | 3 | Parsed | DefenceUpgrade | Byte | Armor upgrade level | ## ARMOR | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | CloseDefence | Int16 | (armorLvl-1)*2 + 18 | | 2 | Parsed | DefenceDodge | Int16 | (armorLvl-1)*5 + 31 | | 2 | Parsed | DistanceDefence | Int16 | (armorLvl-1)*3 + 17 | | 2 | Parsed | DistanceDefenceDodge | Int16 | (armorLvl-1)*5 + 31 | | 2 | Parsed | MagicDefence | Int16 | (armorLvl-1)*2 + 13 | | 3 | NonParsed | meleeDef | | Stored in .dat but we recompute from armorLvl. | | 4 | NonParsed | rangedDef | | Stored in .dat but we recompute from armorLvl. | | 5 | NonParsed | magicDef | | Stored in .dat but we recompute from armorLvl. | | 6 | NonParsed | dodge | | Stored in .dat but we recompute from armorLvl. | ## ATTRIB | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | Element | Byte | Primary elemental alignment | | 3 | Parsed | ElementRate | Int16 | Element rate % | | 4 | Parsed | FireResistance | Int16 | Fire resistance | | 5 | Parsed | WaterResistance | Int16 | Water resistance | | 6 | Parsed | LightResistance | Int16 | Light resistance | | 7 | Parsed | DarkResistance | Int16 | Dark resistance | ## BASIC | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 3 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 4 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 5 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 6 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 7 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 8 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 9 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 10 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 11 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 12 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 13 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 14 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 15 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 16 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 17 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 18 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 19 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 20 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 21 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 22 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 23 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 24 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 25 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 26 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 27 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 28 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 29 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 30 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 31 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 32 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 33 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 34 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 35 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 36 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 37 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 38 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 39 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 40 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 41 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 42 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 43 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 44 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 45 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 46 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 47 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 48 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 49 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 50 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 51 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | ## CARD | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 3 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 4 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 5 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 6 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 7 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 8 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 9 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 10 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 11 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 12 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 13 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 14 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 15 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 16 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 17 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 18 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 19 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 20 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 21 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | ## EFF | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | BasicSkill | Int16 | Basic on-attack effect id | | 3 | Parsed | EffectIdConstantly | Int16 | Constantly-running aura effect id | | 4 | Parsed | EffectIdOnDeath | Int16 | Effect id played on death | ## ETC 32-bit flag word stored as a decimal integer. Each bit flips a named gameplay behaviour; only a subset is documented in NSgtd. | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | AmountRequired | Byte | Amount of the required item | | 2 | Parsed | AttackUpgrade | Byte | Weapon upgrade level | | 2 | Parsed | CanCatch | Boolean | ETC bit 3 -> catchable (mate) | | 2 | Parsed | CanCollect | Boolean | ETC bit 1 -> harvestable | | 2 | Parsed | CantDebuff | Boolean | ETC bit 2 -> immune to debuffs | | 2 | Parsed | CantTargetInfo | Boolean | ETC bit 31 -> hidden from target-info UI | | 2 | Parsed | CantVoke | Boolean | ETC bit 11 -> immune to voke | | 2 | Parsed | CanWalk | Boolean | ETC bit 0 clear -> can walk | | 2 | Parsed | DefenceUpgrade | Byte | Armor upgrade level | | 2 | Parsed | DisappearAfterHitting | Boolean | ETC bit 5 -> despawns after a hit | | 2 | Parsed | DisappearAfterSeconds | Boolean | ETC bit 4 -> despawns on a timer | | 2 | Parsed | DisappearAfterSecondsMana | Boolean | ETC bit 7 -> despawns when mana empties | | 2 | Parsed | DontDrainHpAfterSeconds | Boolean | ETC bit 28 -> skips HP drain over time | | 2 | Parsed | HasDash | Boolean | ETC bit 9 -> has a dash skill | | 2 | Parsed | HasMode | Boolean | ETC bit 6 -> uses a MODE | | 2 | Parsed | MonsterType | MonsterType | Categorisation (Mate/Normal/Trap/Unknown) | | 2 | Parsed | NoAggresiveIcon | Boolean | Talkable / trap entities: suppress the aggressive icon | | 2 | Parsed | OnDefenseOnlyOnce | Boolean | ETC bit 8 -> defensive AI fires once | | 2 | Parsed | RegenerateHpOverTime | Boolean | ETC bit 10 -> passive HP regen | | 2 | Parsed | VNumRequired | Int16 | VNum of the item required to tame/interact | | 3 | NonParsed | unknown1 | | | | 4 | Parsed | IsPercentileDmg | Boolean | Damage output is expressed as % of target max HP (boss mechanic) | | 5 | Parsed | CanOnlyBeDmgedByJajamaruLastSkill | Boolean | Only damageable by Jajamaru's final skill (Namaju) | | 6 | NonParsed | unknown2 | | Always 0. | | 7 | Parsed | VisibleOnMinimapAsGreenDot | Boolean | Renders as a green dot on the minimap | | 8 | NonParsed | unknown3 | | | | 9 | Parsed | IsValhallaPartner | Boolean | Marks Valhalla raid partner mobs | ## EXP | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | HeroXp | Int32 | Hero-level XP award, scaled down from XP | | 2 | Parsed | Xp | Int32 | Base XP award | | 3 | Parsed | JobXp | Int32 | Base job XP award | ## HP/MP | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | MaxHp | Int32 | Override HP plus level-based baseline | | 3 | Parsed | MaxMp | Int32 | Override MP plus level-based baseline, branch on Race | ## ITEM | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 3 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 4 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 5 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 6 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 7 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 8 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 9 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 10 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 11 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 12 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 13 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 14 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 15 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 16 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 17 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 18 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 19 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 20 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 21 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 22 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 23 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 24 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 25 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 26 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 27 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 28 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 29 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 30 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 31 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 32 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 33 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 34 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 35 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 36 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 37 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 38 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 39 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 40 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 41 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 42 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 43 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 44 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 45 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 46 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 47 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 48 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 49 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 50 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 51 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 52 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 53 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 54 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 55 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 56 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 57 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 58 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 59 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 60 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 61 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | ## LEVEL | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | DamageMaximum | Int16 | Max attack damage | | 2 | Parsed | DamageMinimum | Int16 | Min attack damage | | 2 | Parsed | HeroXp | Int32 | Hero-level XP award, scaled down from XP | | 2 | Parsed | JobXp | Int32 | Base job XP award | | 2 | Parsed | Level | Byte | Parsed by Level(chunk) helper | | 2 | Parsed | MaxHp | Int32 | Override HP plus level-based baseline | | 2 | Parsed | MaxMp | Int32 | Override MP plus level-based baseline, branch on Race | | 2 | Parsed | Xp | Int32 | Base XP award | ## MODE 4 BCard groups of 5 + 7 mode-meta columns; AlwaysActive onwards is meta. | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Unknown | | | | | 3 | Unknown | | | | | 4 | Unknown | | | | | 5 | Unknown | | | | | 6 | Unknown | | | | | 7 | Unknown | | | | | 8 | Unknown | | | | | 9 | Unknown | | | | | 10 | Unknown | | | | | 11 | Unknown | | | | | 12 | Unknown | | | | | 13 | Unknown | | | | | 14 | Unknown | | | | | 15 | Unknown | | | | | 16 | Unknown | | | | | 17 | Unknown | | | | | 18 | Unknown | | | | | 19 | Unknown | | | | | 20 | Unknown | | | | | 21 | Unknown | | | | | 22 | Unknown | | | | | 23 | Unknown | | | | | 24 | Unknown | | | | | 25 | Unknown | | | | | 26 | Parsed | AlwaysActive | Boolean | Mode always active when non-zero | | 27 | Parsed | Limiter | Byte | Mode limiter | | 28 | Parsed | HpThreshold | Int16 | HP% threshold that swaps the mode / item vnum | | 29 | Parsed | RangeThreshold | Int16 | Range threshold for mode swap | | 30 | Parsed | CModeVNum | Int16 | c_mode vnum (transform target) | | 31 | Parsed | CellMinRange | Byte | Minimum cells before the mode engages | | 32 | Parsed | Midgard | Int32 | Midgard-specific data | ## NAME | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | NameI18NKey | String | Localization key (zts##e) | ## PARTNER | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | NonParsed | partnerUnused | | PARTNER block is always 20 zeros in vanilla; unused. | ## PETINFO | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | PetInfoVal1 | Int32 | Pet stat factor 1 (collectable: tries; teleporter: itemVnum; mate: HP/melee factor) | | 2 | Parsed | VNumRequired | Int16 | VNum of the item required to tame/interact | | 3 | Parsed | AmountRequired | Byte | Amount of the required item | | 3 | Parsed | PetInfoVal2 | Int32 | Pet stat factor 2 (collectable: cooldown; teleporter: amount; mate: ranged/dodge factor) | | 4 | Parsed | PetInfoVal3 | Int32 | Pet stat factor 3 (collectable: needItem flag; teleporter: removeItem; mate: magic/MP factor) | | 5 | Parsed | PetInfoVal4 | Int32 | Pet stat factor 4 (collectable: dance duration; mate: level threshold) | ## PREATT | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | IsHostile | Boolean | Non-zero means the mob aggroes on sight | | 3 | Parsed | GroupAttack | Byte | Group-aggro mode (1 = with allies, 5 = with group) | | 4 | Parsed | NoticeRange | Byte | Aggro radius in cells | | 5 | Parsed | Speed | Byte | Movement speed | | 6 | Parsed | RespawnTime | Int32 | Respawn delay, deciseconds | ## RACE | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | MaxMp | Int32 | Override MP plus level-based baseline, branch on Race | | 2 | Parsed | MonsterType | MonsterType | Categorisation (Mate/Normal/Trap/Unknown) | | 2 | Parsed | NoAggresiveIcon | Boolean | Talkable / trap entities: suppress the aggressive icon | | 2 | Parsed | Race | Byte | Race group (plant, animal, monster, dragon, …) | | 3 | Parsed | MonsterType | MonsterType | Categorisation (Mate/Normal/Trap/Unknown) | | 3 | Parsed | NoAggresiveIcon | Boolean | Talkable / trap entities: suppress the aggressive icon | | 3 | Parsed | RaceType | Byte | Subtype within the race group | ## SETTING | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | IconId | Int16 | Target-info avatar index (NSip) | | 3 | Parsed | SpawnMobOrColor | Int32 | When hostility>20000: spawn-mob vnum, else packed RGBA color | | 4 | Parsed | AmountRequired | Byte | Amount of the required item | | 4 | Parsed | VNumRequired | Int16 | VNum of the item required to tame/interact | | 5 | Parsed | SpriteSize | SByte | Sprite scale bonus % (negative shrinks, positive grows) | | 6 | Parsed | CellSize | Byte | Collision cell footprint (used for big-boss AOE math) | | 7 | NonParsed | unknown0 | | Always 0. | ## SKILL | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) | | 3 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) | | 4 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) | | 5 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) | | 6 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) | | 7 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) | | 8 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) | | 9 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) | | 10 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) | | 11 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) | | 12 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) | | 13 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) | | 14 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) | | 15 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) | | 16 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) | ## VNUM | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) | | 2 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO | | 2 | Parsed | MonsterType | MonsterType | Categorisation (Mate/Normal/Trap/Unknown) | | 2 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) | | 2 | Parsed | NpcMonsterVNum | Int16 | Monster vnum | ## WEAPON | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | Concentrate | Int16 | Hit rate | | 2 | Parsed | DamageMaximum | Int16 | Max attack damage | | 2 | Parsed | DamageMinimum | Int16 | Min attack damage | | 3 | Parsed | Concentrate | Int16 | Hit rate | | 3 | Parsed | CriticalChance | Byte | Critical hit chance | | 3 | Parsed | CriticalRate | Int16 | Critical hit damage multiplier | | 3 | Parsed | DamageMaximum | Int16 | Max attack damage | | 3 | Parsed | DamageMinimum | Int16 | Min attack damage | | 4 | Parsed | DamageMaximum | Int16 | Max attack damage | | 4 | Parsed | DamageMinimum | Int16 | Min attack damage | | 5 | Parsed | DamageMaximum | Int16 | Max attack damage | | 6 | Parsed | Concentrate | Int16 | Hit rate | | 7 | Parsed | CriticalChance | Byte | Critical hit chance | | 8 | Parsed | CriticalRate | Int16 | Critical hit damage multiplier | ## WINFO | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | AttackUpgrade | Byte | Weapon upgrade level | | 2 | Parsed | DefenceUpgrade | Byte | Armor upgrade level | | 3 | NonParsed | unknown5 | | | | 4 | Parsed | AttackUpgrade | Byte | Weapon upgrade level | ## ZSKILL | Column | Status | Name | Type | Description | |---:|---|---|---|---| | 2 | Parsed | AttackClass | Byte | Attack class (melee/ranged/magic) | | 3 | Parsed | BasicRange | Byte | Basic attack range in cells | | 4 | Parsed | BasicHitChance | Byte | Basic-attack hit chance (each tick rolls hitChance*20%) | | 5 | Parsed | BasicArea | Byte | Basic attack area-of-effect radius | | 6 | Parsed | BasicCooldown | Int16 | Basic attack cooldown, deciseconds | | 7 | Parsed | DashSpeed | Byte | Dash visual speed | | 8 | NonParsed | unknown4 | | | ================================================ FILE: documentation/dat/quest.dat.md ================================================ # quest.dat ```text ``` ## Computed / multi-section fields | DTO property | Type | Source | Description | |---|---|---|---| | AutoFinish | Boolean | | | | DescI18NKey | String | | | | EndDialogId | Nullable`1 | | | | IsDaily | Boolean | | | | IsSecondary | Boolean | | | | LevelMax | Byte | | | | LevelMin | Byte | | | | NextQuestId | Nullable`1 | | | | QuestId | Int16 | | | | QuestObjective | ICollection`1 | | | | QuestQuestReward | ICollection`1 | | | | QuestType | QuestType | | | | RequiredQuestId | Nullable`1 | | | | StartDialogId | Nullable`1 | | | | TargetMap | Nullable`1 | | | | TargetX | Nullable`1 | | | | TargetY | Nullable`1 | | | | TitleI18NKey | String | | | ================================================ FILE: lgtm.yml ================================================ extraction: csharp: index: dotnet: version: "8.0.100" ================================================ FILE: scripts/Docker - All.cmd ================================================ cd .. dotnet build --nologo -p:TargetArch=linux-musl-x64 docker-compose up --force-recreate --build login master world PAUSE ================================================ FILE: scripts/Docker - LoginServer.cmd ================================================ cd .. dotnet build --nologo -p:TargetArch=linux-musl-x64 docker-compose up --force-recreate --build login PAUSE ================================================ FILE: scripts/Docker - MasterServer.cmd ================================================ cd .. dotnet build --nologo -p:TargetArch=linux-musl-x64 docker-compose up --force-recreate --build master PAUSE ================================================ FILE: scripts/Docker - Postgres.cmd ================================================ cd .. docker-compose up db PAUSE ================================================ FILE: scripts/Docker - ReverseProxy.cmd ================================================ cd .. docker-compose pull dotnet build --nologo -p:TargetArch=linux-musl-x64 docker-compose up --force-recreate --build reverse-proxy PAUSE ================================================ FILE: scripts/Docker - Shutdown.cmd ================================================ cd .. docker-compose down PAUSE ================================================ FILE: scripts/Docker - WorldServer.cmd ================================================ cd .. dotnet build --nologo -p:TargetArch=linux-musl-x64 docker-compose up --force-recreate --build world PAUSE ================================================ FILE: scripts/LoginServer.cmd ================================================ cd ..\build\net8.0\ start /d "." dotnet NosCore.LoginServer.dll ================================================ FILE: scripts/MasterServer.cmd ================================================ cd ..\build\net8.0\ start /d "." dotnet NosCore.MasterServer.dll ================================================ FILE: scripts/Parser.cmd ================================================ cd ..\build\net8.0\ start /d "." dotnet NosCore.Parser.dll ================================================ FILE: scripts/WorldServer.cmd ================================================ cd ..\build\net8.0\ start /d "." dotnet NosCore.WorldServer.dll ================================================ FILE: scripts/docker-publish.sh ================================================ #!/usr/bin/env bash echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin dotnet test --runtime linux-musl-x64 --filter TestCategory=SomethingAsDotnetBuildDoesntWorkAnymore DOCKER_ENV='' DOCKER_TAG='' export PATH=$PATH:$HOME/.local/bin case "$TRAVIS_BRANCH" in "master") DOCKER_ENV=production DOCKER_TAG=latest ;; esac docker build -f ./deploy/Dockerfile-world -t noscore.worldserver:$DOCKER_TAG --no-cache . docker tag noscore.worldserver:$DOCKER_TAG noscoreio/noscore.worldserver:$DOCKER_TAG docker push noscoreio/noscore.worldserver:$DOCKER_TAG docker build -f ./deploy/Dockerfile-login -t noscore.loginserver:$DOCKER_TAG --no-cache . docker tag noscore.loginserver:$DOCKER_TAG noscoreio/noscore.loginserver:$DOCKER_TAG docker push noscoreio/noscore.loginserver:$DOCKER_TAG docker build -f ./deploy/Dockerfile-master -t noscore.masterserver:$DOCKER_TAG --no-cache . docker tag noscore.masterserver:$DOCKER_TAG noscoreio/noscore.masterserver:$DOCKER_TAG docker push noscoreio/noscore.masterserver:$DOCKER_TAG ================================================ FILE: src/NosCore.Core/AuthorizeRoleAttribute.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.AspNetCore.Authorization; using NosCore.Shared.Enumerations; using System; using System.Linq; namespace NosCore.Core { public class AuthorizeRoleAttribute : AuthorizeAttribute { public AuthorizeRoleAttribute(AuthorityType allowedRole) { var enums = Enum.GetValues(typeof(AuthorityType)).Cast().ToList() .Where(s => s >= allowedRole); Roles = string.Join(",", enums.ToArray()); } } } ================================================ FILE: src/NosCore.Core/Channel.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Configuration; using NosCore.Shared.Enumerations; namespace NosCore.Core { public class Channel { public WebApiConfiguration? MasterCommunication { get; set; } public required string ClientName { get; set; } public ServerType ClientType { get; set; } public ushort Port { get; set; } public byte ServerId { get; set; } public long ChannelId { get; set; } public string? DisplayHost { get; set; } public int? DisplayPort { get; set; } public bool StartInMaintenance { get; set; } public required string Host { get; set; } public int ConnectedAccountLimit { get; set; } } } ================================================ FILE: src/NosCore.Core/ChannelInfo.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Shared.Enumerations; namespace NosCore.Core { public class ChannelInfo { public long Id { get; set; } public string? Name { get; set; } public string Host { get; set; } = null!; public ushort Port { get; set; } public string? DisplayHost { get; set; } public ushort? DisplayPort { get; set; } public int ConnectedAccountLimit { get; set; } public Instant LastPing { get; set; } public ServerType Type { get; set; } public bool IsMaintenance { get; set; } public byte ServerId { get; set; } } } ================================================ FILE: src/NosCore.Core/Concurrency/AsyncLock.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Threading; using System.Threading.Tasks; namespace NosCore.Core.Concurrency { // Thin async-disposable wrapper around SemaphoreSlim(1, 1). Use with `await using` // so the lock is always released, even on exception. Replaces the manual // WaitAsync()/Release() pattern that requires a try/finally at every call site. public sealed class AsyncLock : IDisposable { private readonly SemaphoreSlim _semaphore = new(1, 1); public async ValueTask AcquireAsync(CancellationToken cancellationToken = default) { await _semaphore.WaitAsync(cancellationToken).ConfigureAwait(false); return new Releaser(_semaphore); } public void Dispose() => _semaphore.Dispose(); public readonly struct Releaser(SemaphoreSlim semaphore) : IDisposable { public void Dispose() => semaphore.Release(); } } } ================================================ FILE: src/NosCore.Core/Configuration/LoginConfiguration.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.ClientPackets.Login; using NosCore.Shared.Configuration; using System.ComponentModel.DataAnnotations; namespace NosCore.Core.Configuration { public class LoginConfiguration : ServerConfiguration { [Required] public WebApiConfiguration MasterCommunication { get; set; } = null!; [Required] public SqlConnectionConfiguration Database { get; set; } = null!; public ClientVersionSubPacket? ClientVersion { get; set; } public string? Md5String { get; set; } public bool EnforceNewAuth { get; set; } } } ================================================ FILE: src/NosCore.Core/Configuration/WorldConfiguration.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations; using NosCore.Shared.Configuration; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace NosCore.Core.Configuration { public class WorldConfiguration : ServerConfiguration { [Required] public WebApiConfiguration MasterCommunication { get; set; } = null!; [Required] public SqlConnectionConfiguration Database { get; set; } = null!; [Range(1, short.MaxValue)] public short ConnectedAccountLimit { get; set; } public byte ServerId { get; set; } public bool WorldInformation { get; set; } public bool SceneOnCreate { get; set; } public string? DisplayHost { get; set; } public int? DisplayPort { get; set; } public bool StartInMaintenance { get; set; } [Required] public string? ServerName { get; set; } #pragma warning disable CA2227 // Collection properties should be read only public FeatureFlags FeatureFlags { get; set; } = new(); #pragma warning restore CA2227 // Collection properties should be read only public short MaxItemAmount { get; set; } public byte BackpackSize { get; set; } public long MaxGoldAmount { get; set; } public long MaxBankGoldAmount { get; set; } public int MaxSpPoints { get; set; } public int MaxAdditionalSpPoints { get; set; } public bool AllClassAvailableOnCreate { get; set; } #pragma warning disable CA2227 // Collection properties should be read only public Dictionary>> BasicEquipments { get; set; } = new(); public Dictionary>> BasicSkills { get; set; } = new(); #pragma warning restore CA2227 // Collection properties should be read only } public enum StarterOrigin : byte { CreateAndUpgrade, Create56, Create80 } public class BasicEquipment { public short VNum { get; set; } public short Amount { get; set; } public NoscorePocketType NoscorePocketType { get; set; } public sbyte Rare { get; set; } public byte Upgrade { get; set; } } } ================================================ FILE: src/NosCore.Core/ConfigureJwtBearerOptions.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Tokens; using NosCore.Shared.Authentication; using NosCore.Shared.Configuration; using System; using System.Text; namespace NosCore.Core { public class ConfigureJwtBearerOptions(IOptions webApiConfiguration, IHasher hasher) : IConfigureNamedOptions { public void Configure(string? name, JwtBearerOptions options) { if (options == null) { throw new ArgumentNullException(nameof(options)); } var password = hasher.Hash(webApiConfiguration.Value.Password!, webApiConfiguration.Value.Salt); if (name == JwtBearerDefaults.AuthenticationScheme) { options.RequireHttpsMetadata = false; options.SaveToken = true; options.TokenValidationParameters = new TokenValidationParameters { IssuerSigningKey = new SymmetricSecurityKey( Encoding.Default.GetBytes(password)), ValidAudience = "Audience", ValidIssuer = "Issuer", ValidateIssuerSigningKey = true, ValidateLifetime = true }; } } public void Configure(JwtBearerOptions options) { Configure(JwtBearerDefaults.AuthenticationScheme, options); } } } ================================================ FILE: src/NosCore.Core/ConnectionInfo.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Core { public class ConnectionInfo { public string? Token { get; set; } public Channel? ChannelInfo { get; set; } } } ================================================ FILE: src/NosCore.Core/Encryption/BcryptEncryption.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Authentication; using System; namespace NosCore.Core.Encryption { public class BcryptHasher : IHasher { public string Hash(string password, string? salt) { return BCrypt.Net.BCrypt.HashPassword(password, salt); } public string Hash(string password) => throw new NotImplementedException(); } } ================================================ FILE: src/NosCore.Core/Encryption/Pbkdf2Hasher.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Authentication; using System; using System.Globalization; using System.Linq; using System.Security.Cryptography; using System.Text; namespace NosCore.Core.Encryption { public class Pbkdf2Hasher : IHasher { public string Hash(string inputString, string? salt) { var saltBytes = Convert.FromBase64String(Convert.ToBase64String(Encoding.Default.GetBytes(salt ?? ""))); var hashBytes = Rfc2898DeriveBytes.Pbkdf2( Encoding.Default.GetBytes(inputString), saltBytes, 150000, HashAlgorithmName.SHA512, 64); return string.Concat(hashBytes.Select(item => item.ToString("x2", CultureInfo.CurrentCulture))); } public string Hash(string password) => throw new NotImplementedException(); } } ================================================ FILE: src/NosCore.Core/Encryption/Sha512Hasher.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Authentication; using System.Globalization; using System.Linq; using System.Security.Cryptography; using System.Text; namespace NosCore.Core.Encryption { public class Sha512Hasher : IHasher { public string Hash(string password, string? salt) { using var hash = SHA512.Create(); return string.Concat(hash.ComputeHash(Encoding.Default.GetBytes(salt ?? "" + password)) .Select(item => item.ToString("x2", CultureInfo.CurrentCulture))); } public string Hash(string password) => Hash(password, null); } } ================================================ FILE: src/NosCore.Core/Extensions/TypeExtension.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Concurrent; using System.Linq; using System.Reflection.Emit; namespace NosCore.Core.Extensions { public static class TypeExtension { private static readonly ConcurrentDictionary> Constructors = new(); public static Func GetConstructorDelegate(this Type type) { return (Func)GetConstructorDelegate(type, typeof(Func)); } public static Func GetConstructorDelegate(this Type type) { return (Func)GetConstructorDelegate(type, typeof(Func)); } public static Delegate GetConstructorDelegate(this Type type, Type delegateType) { if (type == null) { throw new ArgumentNullException(nameof(type)); } if (delegateType == null) { throw new ArgumentNullException(nameof(delegateType)); } var genericArguments = delegateType.GetGenericArguments(); var argTypes = genericArguments.Length > 1 ? genericArguments.Take(genericArguments.Length - 1).ToArray() : Type.EmptyTypes; var constructor = type.GetConstructor(argTypes); if (constructor == null) { if (argTypes.Length == 0) { throw new InvalidProgramException( $"Type '{type.Name}' doesn't have a parameterless constructor."); } throw new InvalidProgramException($"Type '{type.Name}' doesn't have the requested constructor."); } var dynamicMethod = new DynamicMethod("DM$_" + type.Name, type, argTypes, type); var ilGen = dynamicMethod.GetILGenerator(); for (var i = 0; i < argTypes.Length; i++) { ilGen.Emit(OpCodes.Ldarg, i); } ilGen.Emit(OpCodes.Newobj, constructor); ilGen.Emit(OpCodes.Ret); return dynamicMethod.CreateDelegate(delegateType); } public static T CreateInstance(this Type type) { if (Constructors.TryGetValue(type, out var constructor)) { return (T)constructor(); } constructor = type.GetConstructorDelegate(); Constructors.TryAdd(type, constructor); return (T)constructor(); } } } ================================================ FILE: src/NosCore.Core/I18N/GameLanguageLocalizer.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Localization; using NosCore.Data.Enumerations.I18N; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using System.Collections.Generic; using System.Globalization; namespace NosCore.Core.I18N { public class GameLanguageLocalizer(ILogLanguageLocalizer stringLocalizer) : IGameLanguageLocalizer { public LocalizedString this[LanguageKey key, RegionType region] { get { var currentUi = CultureInfo.CurrentUICulture; var current = CultureInfo.CurrentCulture; CultureInfo.CurrentUICulture = new CultureInfo(region.ToString()); CultureInfo.CurrentCulture = new CultureInfo(region.ToString()); var result = stringLocalizer[key]; CultureInfo.CurrentUICulture = currentUi; CultureInfo.CurrentCulture = current; return result; } } public LocalizedString this[LanguageKey key, RegionType region, params object[] arguments] { get { var currentUi = CultureInfo.CurrentUICulture; var current = CultureInfo.CurrentCulture; CultureInfo.CurrentUICulture = new CultureInfo(region.ToString()); CultureInfo.CurrentCulture = new CultureInfo(region.ToString()); var result = stringLocalizer[key, arguments]; CultureInfo.CurrentUICulture = currentUi; CultureInfo.CurrentCulture = current; return result; } } public IEnumerable GetAllStrings() => stringLocalizer.GetAllStrings(); } } ================================================ FILE: src/NosCore.Core/I18N/IGameLanguageLocalizer.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Localization; using NosCore.Data.Enumerations.I18N; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; namespace NosCore.Core.I18N; public interface IGameLanguageLocalizer : ILogLanguageLocalizer { LocalizedString this[LanguageKey key, RegionType region, params object[] arguments] { get; } LocalizedString this[LanguageKey key, RegionType region] { get; } } ================================================ FILE: src/NosCore.Core/NosCore.Core.csproj ================================================ net10.0 true ..\..\build\ ..\..\build\ all runtime; build; native; contentfiles; analyzers; buildtransitive ================================================ FILE: src/NosCore.Core/Observability/NosCoreTelemetry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Diagnostics; using System.Diagnostics.Metrics; using Microsoft.Extensions.DependencyInjection; using OpenTelemetry.Metrics; using OpenTelemetry.Resources; using OpenTelemetry.Trace; namespace NosCore.Core.Observability { public static class NosCoreTelemetry { public const string ActivitySourceName = "NosCore"; public const string MeterName = "NosCore"; public static readonly ActivitySource ActivitySource = new(ActivitySourceName); public static readonly Meter Meter = new(MeterName); // Configured via standard OTEL env vars: OTEL_SERVICE_NAME, // OTEL_RESOURCE_ATTRIBUTES, OTEL_EXPORTER_OTLP_ENDPOINT, // OTEL_EXPORTER_OTLP_PROTOCOL. public static IServiceCollection AddNosCoreTelemetry(this IServiceCollection services, string defaultServiceName, bool includeAspNetCore = false) { services.AddOpenTelemetry() .ConfigureResource(rb => rb.AddService(defaultServiceName)) .WithTracing(t => { t.AddSource(ActivitySourceName); t.AddHttpClientInstrumentation(); t.AddEntityFrameworkCoreInstrumentation(); if (includeAspNetCore) { t.AddAspNetCoreInstrumentation(); } t.AddOtlpExporter(); }) .WithMetrics(m => { m.AddMeter(MeterName); m.AddRuntimeInstrumentation(); m.AddHttpClientInstrumentation(); if (includeAspNetCore) { m.AddAspNetCoreInstrumentation(); } m.AddOtlpExporter(); }); return services; } } } ================================================ FILE: src/NosCore.Core/Services/IdService/IIdService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Concurrent; namespace NosCore.Core.Services.IdService { public interface IIdService { ConcurrentDictionary Items { get; } long GetNextId(); } } ================================================ FILE: src/NosCore.Core/Services/IdService/IdService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Concurrent; namespace NosCore.Core.Services.IdService { public class IdService(long firstId) : IIdService { public ConcurrentDictionary Items { get; } = new(); public long GetNextId() { return ++firstId; } } } ================================================ FILE: src/NosCore.Core/SessionFactory.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Concurrent; namespace NosCore.Core { public sealed class SessionFactory { private static readonly Lazy Lazy = new(() => new SessionFactory()); private SessionFactory() { AuthCodes = new ConcurrentDictionary(); ReadyForAuth = new ConcurrentDictionary(); } public static SessionFactory Instance => Lazy.Value; public ConcurrentDictionary AuthCodes { get; } public ConcurrentDictionary ReadyForAuth { get; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/ChangeChannelPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$ChangeChannel", AuthorityType.GameMaster)] public class ChangeChannelPacket : CommandPacket { [PacketIndex(0)] public int ChannelId { get; set; } public override string Help() { return "$ChangeChannel ChannelId"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/ChangeClassPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$ChangeClass", AuthorityType.GameMaster)] public class ChangeClassPacket : CommandPacket { [PacketIndex(0)] public CharacterClassType ClassType { get; set; } [PacketIndex(1)] public string? Name { get; set; } public override string Help() { return "$ChangeClass ClassType [Name]"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/ChangeGenderPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$ChangeGender", AuthorityType.GameMaster)] public class ChangeGenderPacket : CommandPacket { public override string Help() { return "$ChangeGender"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/ClearInventoryPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$ClearInventory", AuthorityType.Moderator)] public class ClearInventoryPacket : CommandPacket { public override string Help() { return "$ClearInventory"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/CommandPacketHeaderAttribute.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { public class CommandPacketHeaderAttribute(string identification, AuthorityType authority) : PacketHeaderAttribute(identification, Scope.InGame) { public AuthorityType Authority { get; } = authority; } } ================================================ FILE: src/NosCore.Data/CommandPackets/CreateItemPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$CreateItem", AuthorityType.GameMaster)] public class CreateItemPacket : CommandPacket { [PacketIndex(0)] public short VNum { get; set; } [PacketIndex(1)] public short? DesignOrAmount { get; set; } [PacketIndex(2)] public byte? Upgrade { get; set; } public override string Help() { return "$CreateItem VNum [DesignOrAmount] [Upgrade]"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/EffectCommandPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$Effect", AuthorityType.GameMaster)] public class EffectCommandPacket : CommandPacket { [PacketIndex(0)] public int EffectId { get; set; } public override string Help() { return "$Effect EffectId"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/EntryPointPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets; using NosCore.Packets.Attributes; using NosCore.Packets.Enumerations; namespace NosCore.Data.CommandPackets { [PacketHeader("EntryPoint", Scope.OnCharacterScreen)] public class EntryPointPacket : PacketBase { [PacketIndex(1)] public required string Name { get; set; } [PacketIndex(2)] public string? Password { get; set; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/FlCommandPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Packets.Enumerations; namespace NosCore.Data.CommandPackets { [PacketHeader("$fl", Scope.InTrade | Scope.InGame)] public class FlCommandPacket : CommandPacket { [PacketIndex(0)] public string? CharacterName { get; set; } public override string Help() { return "$fl [CharacterName]"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/GiftPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$Gift", AuthorityType.GameMaster)] public class GiftPacket : CommandPacket { [PacketIndex(0)] public short VNum { get; set; } [PacketIndex(1)] public byte Amount { get; set; } [PacketIndex(2)] public sbyte Rare { get; set; } [PacketIndex(3)] public byte Upgrade { get; set; } [PacketIndex(4)] public string? CharacterName { get; set; } public override string Help() { return "$Gift VNum Amount Rare Upgrade [CharacterName]"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/HelpPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$Help", AuthorityType.GameMaster)] public class HelpPacket : CommandPacket { public override string Help() { return "$Help"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/ICommandPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using JetBrains.Annotations; using NosCore.Packets; using NosCore.Packets.Interfaces; namespace NosCore.Data.CommandPackets { public interface ICommandPacket : IPacket { [UsedImplicitly] string Help(); } public abstract class CommandPacket : PacketBase, ICommandPacket { public abstract string Help(); } } ================================================ FILE: src/NosCore.Data/CommandPackets/InvisibleCommandPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$Invisible", AuthorityType.GameMaster)] public class InvisibleCommandPacket : CommandPacket { public override string Help() { return "$Invisible"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/KickPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$Kick", AuthorityType.Moderator)] public class KickPacket : CommandPacket { [PacketIndex(0)] public string? Name { get; set; } public override string Help() { return "$Kick [Name]"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/KillPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$Kill", AuthorityType.GameMaster)] public class KillPacket : CommandPacket { public override string Help() { return "$Kill"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/PositionPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$Position", AuthorityType.GameMaster)] public class PositionPacket : CommandPacket { public override string Help() { return "$Position"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/SetBankGoldPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$SetBankGold", AuthorityType.GameMaster)] public class SetBankGoldPacket : CommandPacket { [PacketIndex(0)] public long BankGold { get; set; } public override string Help() { return "$SetBankGold Amount"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/SetGoldCommandPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; using System.ComponentModel.DataAnnotations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$SetGold", AuthorityType.GameMaster)] [PacketHeaderAlias("$Gold")] public class SetGoldCommandPacket : CommandPacket { [PacketIndex(0)] [Range(1, 1000000000)] public long Gold { get; set; } [PacketIndex(1)] public string? Name { get; set; } public override string Help() { return "$Gold Gold [Name]"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/SetHairColorPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$SetHairColor", AuthorityType.GameMaster)] public class SetHairColorPacket : CommandPacket { [PacketIndex(0)] public byte Color { get; set; } public override string Help() { return "$SetHairColor Color"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/SetHairStylePacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$SetHairStyle", AuthorityType.GameMaster)] public class SetHairStylePacket : CommandPacket { [PacketIndex(0)] public byte Style { get; set; } public override string Help() { return "$SetHairStyle Style"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/SetHeroLevelCommandPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; using System.ComponentModel.DataAnnotations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$SetHeroLevel", AuthorityType.GameMaster)] [PacketHeaderAlias("$HeroLvl")] public class SetHeroLevelCommandPacket : CommandPacket { [PacketIndex(0)] [Range(1, byte.MaxValue)] public byte Level { get; set; } [PacketIndex(1)] public string? Name { get; set; } public override string Help() { return "$SetHeroLevel Level [Name]"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/SetHeroXpPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$SetHeroXp", AuthorityType.GameMaster)] public class SetHeroXpPacket : CommandPacket { [PacketIndex(0)] public long HeroXp { get; set; } public override string Help() { return "$SetHeroXp Amount"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/SetJobLevelCommandPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; using System.ComponentModel.DataAnnotations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$SetJobLevel", AuthorityType.GameMaster)] [PacketHeaderAlias("$JLvl")] public class SetJobLevelCommandPacket : CommandPacket { [PacketIndex(0)] [Range(1, byte.MaxValue)] public byte Level { get; set; } [PacketIndex(1)] public string? Name { get; set; } public override string Help() { return "$SetJobLevel Level [Name]"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/SetJobLevelXpPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$SetJobLevelXp", AuthorityType.GameMaster)] public class SetJobLevelXpPacket : CommandPacket { [PacketIndex(0)] public long JobLevelXp { get; set; } public override string Help() { return "$SetJobLevelXp Amount"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/SetLevelCommandPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; using System.ComponentModel.DataAnnotations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$SetLevel", AuthorityType.GameMaster)] [PacketHeaderAlias("$Lvl")] public class SetLevelCommandPacket : CommandPacket { [PacketIndex(0)] [Range(1, byte.MaxValue)] public byte Level { get; set; } [PacketIndex(1)] public string? Name { get; set; } public override string Help() { return "$SetLevel Level [Name]"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/SetMaintenancePacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$SetMaintenance", AuthorityType.GameMaster)] public class SetMaintenancePacket : CommandPacket { [PacketIndex(0)] public bool IsGlobal { get; set; } [PacketIndex(1)] public bool MaintenanceMode { get; set; } public override string Help() { return "$SetMaintenance IsGlobal MaintenanceMode"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/SetReputationPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; using System.ComponentModel.DataAnnotations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$SetReputation", AuthorityType.GameMaster)] [PacketHeaderAlias("$Reputation")] public class SetReputationPacket : CommandPacket { [PacketIndex(0)] [Range(0, long.MaxValue)] public long Reputation { get; set; } [PacketIndex(1)] public string? Name { get; set; } public override string Help() { return "$SetReputation Reputation [Name]"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/SetSpAdditionPointPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$SetSpAdditionPoint", AuthorityType.GameMaster)] public class SetSpAdditionPointPacket : CommandPacket { [PacketIndex(0)] public int SpAdditionPoint { get; set; } public override string Help() { return "$SetSpAdditionPoint Value"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/SetSpPointPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$SetSpPoint", AuthorityType.GameMaster)] public class SetSpPointPacket : CommandPacket { [PacketIndex(0)] public int SpPoint { get; set; } public override string Help() { return "$SetSpPoint Value"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/ShoutHerePacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$ShoutHere", AuthorityType.Moderator)] public class ShoutHerePacket : CommandPacket { [PacketIndex(0)] public string? Message { get; set; } public override string Help() { return "$ShoutHere Message"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/ShoutPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$Shout", AuthorityType.Moderator)] public class ShoutPacket : CommandPacket { [PacketIndex(0)] public string? Message { get; set; } public override string Help() { return "$Shout Message"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/SizePacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$Size", AuthorityType.GameMaster)] public class SizePacket : CommandPacket { [PacketIndex(0)] public VisualType VisualType { get; set; } [PacketIndex(1)] public long VisualId { get; set; } [PacketIndex(2)] public byte Size { get; set; } public override string Help() { return "$Size VisualType VisualId Size"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/SpeedPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$Speed", AuthorityType.GameMaster)] public class SpeedPacket : CommandPacket { [PacketIndex(0)] public byte Speed { get; set; } public override string Help() { return "$Speed Speed"; } } } ================================================ FILE: src/NosCore.Data/CommandPackets/TeleportPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Attributes; using NosCore.Shared.Enumerations; namespace NosCore.Data.CommandPackets { [CommandPacketHeader("$Teleport", AuthorityType.GameMaster)] public class TeleportPacket : CommandPacket { [PacketIndex(0)] public string? TeleportArgument { get; set; } [PacketIndex(1)] public short? MapX { get; set; } [PacketIndex(2)] public short? MapY { get; set; } public override string Help() { return "$Teleport TeleportArgument [X] [Y]"; } } } ================================================ FILE: src/NosCore.Data/DataAttributes/StaticMetaDataAttribute.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using System; namespace NosCore.Data.DataAttributes { public class StaticMetaDataAttribute : Attribute { public LogLanguageKey LoadedMessage { get; set; } public LogLanguageKey EmptyMessage { get; set; } } } ================================================ FILE: src/NosCore.Data/Dto/I18NFromAttribute.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; namespace NosCore.Data.Dto { public class I18NFromAttribute(Type type) : Attribute { public Type Type { get; set; } = type; } } ================================================ FILE: src/NosCore.Data/Dto/I18NString.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Enumerations; using System.Collections.Generic; namespace NosCore.Data.Dto { public class I18NString : Dictionary { public I18NString() { Add(RegionType.EN, "NONAME"); Add(RegionType.DE, "NONAME"); Add(RegionType.FR, "NONAME"); Add(RegionType.IT, "NONAME"); Add(RegionType.PL, "NONAME"); Add(RegionType.ES, "NONAME"); Add(RegionType.CS, "NONAME"); Add(RegionType.TR, "NONAME"); Add(RegionType.RU, "NONAME"); } } } ================================================ FILE: src/NosCore.Data/Dto/IDTO.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Dto { public interface IDto { } } ================================================ FILE: src/NosCore.Data/Dto/II18NDto.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Enumerations; namespace NosCore.Data.Dto { public interface II18NDto : IDto { string Key { get; set; } RegionType RegionType { get; set; } string Text { get; set; } } } ================================================ FILE: src/NosCore.Data/Dto/IItemInstanceDto.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using System; using System.ComponentModel.DataAnnotations; namespace NosCore.Data.Dto { public interface IItemInstanceDto : IDto { [Key] Guid Id { get; set; } short Amount { get; set; } long? BoundCharacterId { get; set; } short Design { get; set; } int DurabilityPoint { get; set; } Instant? ItemDeleteTime { get; set; } short ItemVNum { get; set; } short Rare { get; set; } byte Upgrade { get; set; } } } ================================================ FILE: src/NosCore.Data/Dto/IStaticDto.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Dto { public interface IStaticDto : IDto { } } ================================================ FILE: src/NosCore.Data/Dto/StaticDtoExtension.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using FastMember; using NosCore.Shared.Enumerations; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; namespace NosCore.Data.Dto { public static class StaticDtoExtension { public static IDictionary> GetI18NProperties(Type staticDto) { var dic = new Dictionary>(); var properties = staticDto.GetProperties(); foreach (var prop in properties.Where(p => typeof(I18NString).IsAssignableFrom(p.PropertyType))) { var key = properties.FirstOrDefault(s => s.Name == $"{prop.Name}I18NKey"); if (key == null) { continue; } dic.Add(prop, new Tuple(key, prop.GetCustomAttribute()!.Type)); } return dic; } public static void InjectI18N(this IStaticDto staticDto, IDictionary> propertyInfos, IDictionary>> langDictionary, Array regions, TypeAccessor accessor) { foreach (var prop in propertyInfos) { var key = accessor[staticDto, prop.Value.Item1.Name]?.ToString() ?? "NONAME"; var dic = new I18NString(); foreach (var region in regions) { if (!langDictionary[prop.Value.Item2].ContainsKey(key)) { continue; } if (langDictionary[prop.Value.Item2][key].ContainsKey((RegionType)region!)) { dic[(RegionType)region] = langDictionary[prop.Value.Item2][key][(RegionType)region].Text; } } accessor[staticDto, prop.Key.Name] = dic; } } } } ================================================ FILE: src/NosCore.Data/Enumerations/Audit/AuditLogType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Audit { public enum AuditLogType { AccountCreation, CharacterCreation, EmailUpdate } } ================================================ FILE: src/NosCore.Data/Enumerations/Battle/TargetHitType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Battle { public enum TargetHitType : byte { SingleTargetHit = 0, SingleTargetHitCombo = 1, SingleAoeTargetHit = 2, AoeTargetHit = 3, ZoneHit = 4, SpecialZoneHit = 5 } } ================================================ FILE: src/NosCore.Data/Enumerations/Bazaar/BazaarEquipmentType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Bazaar { public enum BazaarEquipmentType { Mask = 2, Hat = 1, CostumeHat = 6, CostumeSuit = 5, Gloves = 3, Boots = 4 } } ================================================ FILE: src/NosCore.Data/Enumerations/Bazaar/BazaarJeweleryType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Bazaar { public enum BazaarJeweleryType { Ring = 2, Necklace = 1, Amulet = 5, Bracelet = 3, Fairy = 4, Box = 5 } } ================================================ FILE: src/NosCore.Data/Enumerations/Bazaar/BazaarMainType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Bazaar { public enum BazaarMainType { Main = 1, Upgrade = 2, Production = 3, Special = 4, Potion = 5, Event = 6 } } ================================================ FILE: src/NosCore.Data/Enumerations/Bazaar/BazaarUsableType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Bazaar { public enum BazaarUsableType { Food = 1, Snack = 2, Magical = 3, Part = 4, Teacher = 5, Sell = 6 } } ================================================ FILE: src/NosCore.Data/Enumerations/Buff/AdditionalTypes.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Diagnostics.CodeAnalysis; namespace NosCore.Data.Enumerations.Buff { [SuppressMessage("ReSharper", "UnusedMember.Global")] public class AdditionalTypes : BCardType { // 81-?? public enum AbsorbedSpirit : byte { ApplyEffectIfPresent = 11, ApplyEffectIfNotPresent = 12, ResistForcedMovement = 21, ResistForcedMovementNegated = 22, MagicCooldownIncreased = 31, MagicCooldownDecreased = 32 } public enum Absorption : byte { AllAttackIncreased = 11, AllAttackDecreased = 12, MeleeAttackIncreased = 21, MeleeAttacklDecreased = 22, RangedAttackIncreased = 31, RangedAttackDecreased = 32, MagicalAttackIncreased = 41, MagicalAttacksDecreased = 42 } public enum AbsorptionAndPowerSkill : byte { AddDamageToHp = 11, RemoveDamnageFromHp = 12, // Unknown = 21, Unknown2 = 22, Unknown3 = 31, Unknown4 = 32, DamageIncreasedSkill = 41, DamageDecreasedSkill = 42, CriticalIncreasedSkill = 51, CriticalDecreasedSkill = 52 } public enum AngerSkill : byte { AttackInRangeNotLocation = 11, AttackInRangeNotLocationNegated = 12, ReduceEnemyHpChance = 21, ReduceEnemyHpByDamageChance = 22, BlockGoodEffect = 31, BlockGoodEffectNegated = 32, OnlyNormalAttacks = 41, OnlyNormalAttacksNegated = 42 } public enum ArenaCamera : byte { CallParticipant1 = 11, CallParticipant2 = 12, // propably we will need to fix "Their" Mistake soo CallParticipant1 = 11 and 12, CallParticipant2 = 21 and 22 :D CallParticipant2Negated = 21, CallParticipant2NegatedNegated = 22, CallParticipant3 = 31, CallParticipant3Negated = 32, SwitchView = 41, SwitchViewNegated = 42, SeeHiddenAllies = 51, SeeHiddenAlliesNegated = 52 } public enum AttackPower : byte { AllAttacksIncreased = 11, AllAttacksDecreased = 12, MeleeAttacksIncreased = 21, MeleeAttacksDecreased = 22, RangedAttacksIncreased = 31, RangedAttacksDecreased = 32, MagicalAttacksIncreased = 41, MagicalAttacksDecreased = 42, AttackLevelIncreased = 51, AttackLevelDecreased = 52 } public enum BearSpirit : byte { IncreaseMaximumMp = 11, DecreaseMaximumMp = 12, // Unknown = 21, Unknown2 = 22, IncreaseMaximumHp = 31, DecreaseMaximumHp = 32 } public enum Block : byte { ChanceAllIncreased = 11, ChanceAllDecreased = 12, ChanceMeleeIncreased = 21, ChanceMeleeDecreased = 22, ChanceRangedIncreased = 31, ChanceRangedDecreased = 32, ChanceMagicalIncreased = 41, ChanceMagicalDecreased = 42 } public enum BossMonstersSkill : byte { InflictDamageAfter = 11, InflictDamageAfterNegated = 12 } public enum Buff : byte { ChanceCausing = 11, ChanceRemoving = 12, PreventingBadEffect = 21, PreventingBadEffectNegated = 22, NearbyObjectsAboveLevel = 31, NearbyObjectsBelowLevel = 32, EffectResistance = 41, EffectResistanceNegated = 42, CancelGroupOfEffects = 51, CounteractPoison = 52 } public enum CalculatingLevel : byte { CalculatedAttackLevel = 11, CalculatedAttackLevelNegated = 12, CalculatedDefenceLevel = 21, CalculatedDefenceLevelNegated = 22 } public enum Capture : byte { CaptureAnimal = 11, CaptureAnimalNegated = 12 } public enum Casting : byte { EffectDurationIncreased = 11, EffectDurationDecreased = 12, ManaForSkillsIncreased = 21, ManaForSkillsDecreased = 22, AttackSpeedIncreased = 31, AttackSpeedDecreased = 32, CastingSkillFailed = 41, CastingSkillFailedNegated = 42, InterruptCasting = 51, InterruptCastingNegated = 52 } public enum Count : byte { Summon = 11, SummonChance = 12 } public enum Critical : byte { InflictingIncreased = 11, InflictingReduced = 12, DamageIncreased = 21, DamageIncreasedInflictingReduced = 22, DamageIncreasingPropability = 31, DamageReducingPropability = 32, ReceivingIncreased = 41, ReceivingDecreased = 42, DamageFromCriticalIncreased = 51, DamageFromCriticalDecreased = 52 } public enum Damage : byte { DamageIncreased = 11, DamageDecreased = 12, MeleeIncreased = 21, MeleeDecreased = 22, RangedIncreased = 31, RangedDecreased = 32, MagicalIncreased = 41, MagicalDecreased = 42 } public enum DamageConvertingSkill : byte { TransferInflictedDamage = 11, TransferInflictedDamageNegated = 12, IncreaseDamageTransfered = 21, DecreaseDamageTransfered = 22, HpRecoveryIncreased = 31, HpRecoveryDecreased = 32, AdditionalDamageCombo = 41, AdditionalDamageComboNegated = 42, ReflectMaximumReceivedDamage = 51, ReflectMaximumReceivedDamageNegated = 52 } public enum DarkCloneSummon : byte { SummonDarkCloneChance = 11, SummonDarkCloneChanceNegated = 12, ConvertRecoveryToDamage = 21, ConvertRecoveryToDamageNegated = 22, ConvertDamageToHpChance = 31, ConvertDamageToHpChanceNegated = 32, IncreaseEnemyCooldownChance = 41, IncreaseEnemyCooldownChanceNegated = 42, DarkElementDamageIncreaseChance = 51, DarkElementDamageDecreaseChance = 52 } public enum DebuffResistance : byte { IncreaseBadEffectChance = 11, NeverBadEffectChance = 12, IncreaseBadGeneralEffectChance = 21, NeverBadGeneralEffectChance = 22, IncreaseBadMagicEffectChance = 31, NeverBadMagicEffectChance = 32, IncreaseBadToxicEffectChance = 41, NeverBadToxicEffectChance = 42, IncreaseBadDiseaseEffectChance = 51, NeverBadDiseaseEffectChance = 52 } public enum Defence : byte { AllIncreased = 11, AllDecreased = 12, MeleeIncreased = 21, MeleeDecreased = 22, RangedIncreased = 31, RangedDecreased = 32, MagicalIncreased = 41, MagicalDecreased = 42, DefenceLevelIncreased = 51, DefenceLevelDecreased = 52 } public enum DodgeAndDefencePercent : byte { DodgeIncreased = 11, DodgeDecreased = 12, DodgingMeleeIncreased = 21, DodgingMeleeDecreased = 22, DodgingRangedIncreased = 31, DodgingRangedDecreased = 32, DefenceIncreased = 41, DefenceReduced = 42 } public enum Drain : byte { CastDrain = 11, CastDrainNegated = 12, TransferEnemyHp = 21, TransferEnemyHpNegated = 22 } // 21-40 public enum DrainAndSteal : byte { ReceiveHpFromMp = 11, ReceiveHpFromMpNegated = 12, ReceiveMpFromHp = 21, ReceiveMpFromHpNegated = 22, GiveEnemyHp = 31, LeechEnemyHp = 32, GiveEnemyMp = 41, LeechEnemyMp = 42, ConvertEnemyMptoHp = 51, ConvertEnemyHptoMp = 52 } public enum Element : byte { FireIncreased = 11, FireDecreased = 12, WaterIncreased = 21, WaterDecreased = 22, LightIncreased = 31, LightDecreased = 32, DarkIncreased = 41, DarkDecreased = 42, AllIncreased = 51, AllDecreased = 52 } public enum ElementResistance : byte { AllIncreased = 11, AllDecreased = 12, FireIncreased = 21, FireDecreased = 22, WaterIncreased = 31, WaterDecreased = 32, LightIncreased = 41, LightDecreased = 42, DarkIncreased = 51, DarkDecreased = 52 } public enum EnemyElementResistance : byte { AllIncreased = 11, AllDecreased = 12, FireIncreased = 21, FireDecreased = 22, WaterIncreased = 31, WaterDecreased = 32, LightIncreased = 41, LightDecreased = 42, DarkIncreased = 51, DarkDecreased = 52 } public enum FairyXpIncrease : byte { TeleportToLocation = 11, TeleportToLocationNegated = 12, IncreaseFairyXpPoints = 21, IncreaseFairyXpPointsNegated = 22 } public enum FalconSkill : byte { CausingChanceLocation = 11, RemovingChanceLocation = 12, Hide = 21, HideNegated = 22, Ambush = 31, AmbushNegated = 32, FalconFollowing = 41, FalconFollowingNegated = 42, FalconFocusLowestHp = 51, FalconFocusLowestHpNegated = 52 } public enum FearSkill : byte { RestoreRemainingEnemyHp = 11, DecreaseRemainingEnemyHp = 12, TimesUsed = 21, TimesUsedNegated = 22, AttackRangedIncreased = 31, AttackRangedDecreased = 32, MoveAgainstWill = 41, MoveAgainstWillNegated = 42, ProduceWhenAmbushe = 51, ProduceWhenAmbushNegated = 52 } public enum FireCannoneerRangeBuff : byte { AoeIncreased = 11, AoeDecreased = 12, Flinch = 21, FlinchNegated = 22 } public enum FocusEnemyAttentionSkill : byte { FocusEnemyAttention = 11 // Unknown = 12, Unknown2 = 21, Unknown3 = 22, } public enum FourthGlacernonFamilyRaid : byte { AllInFieldReceiveDamage = 11, // Look nearly the same as 12 AllInFieldsReceiveDamage = 12 // Look nearly the same as 11 } public enum FrozenDebuff : byte { MovementLocked = 11, MovementLockedNegated = 12 // Unknown = 21, Unknown2 = 22 } public enum GuarantedDodgeRangedAttack : byte { AttackHitChance = 11, AttackHitChanceNegated = 12, AlwaysDodgePropability = 21, AlwaysDodgePropabilityNegated = 22, NoPenatly = 41, DistanceDamageIncreasing = 41, NoPenatlyNegated = 42, DistanceDamageIncreasingNegated = 42 } public enum HealingBurningAndCasting : byte { RestoreHp = 11, DecreaseHp = 12, RestoreMp = 21, DecreaseMp = 22, RestoreHpWhenCasting = 31, DecreaseHpWhenCasting = 32, RestoreHpWhenCastingInterrupted = 41, DecreaseHpWhenCastingInterrupted = 42, HpIncreasedByConsumingMp = 51, HpDecreasedByConsumingMp = 52 } // 61-80 /*public enum Missingno : byte { Unknown = 11, Unknown2 = 12 }*/ public enum HideBarrelSkill : byte { NoHpConsumption = 11, NoHpRecovery = 12 } public enum Hpmp : byte { RestoreDecreasedHp = 11, DecreaseRemainingHp = 12, RestoreDecreasedMp = 21, DecreaseRemainingMp = 22, HpRestored = 31, HpReduced = 32, MpRestored = 41, MpReduced = 42, ReceiveAdditionalHp = 51, ReceiveAdditionalMp = 52 } public enum HugeSnowman : byte { SnowStorm = 11, SnowStormNegated = 12, EarthQuake = 21, EarthQuakeNegated = 22 } public enum IncreaseDamage : byte { IncreasingPropability = 11, DecreasingPropability = 12, FireIncreased = 21, FireDecreased = 22, WaterIncreased = 31, WaterDecreased = 32, LightIncreased = 41, LightDecreased = 42, DarkIncreased = 51, DarkDecreased = 52 } public enum InflictSkill : byte { InflictDamageAtLocation = 11, InflictDamageAtLocationNegated = 12 } public enum Item : byte { ExpIncreased = 11, ExpIncreasedNegated = 12, AttackIncreased = 21, DefenceIncreased = 22, DropItemsWhenAttacked = 31, DropItemsWhenAttackedNegated = 32, ScrollPower = 41, ScrollPowerNegated = 42, IncreaseEarnedGold = 51, IncreaseEarnedGoldNegated = 52 } public enum JumpBackPush : byte { JumpBackChance = 11, // Unknown = 12, PushBackChance = 21, PushBackChanceNegated = 22, MeleeDurationIncreased = 31, MeleeDurationDecreased = 32, RangedDurationIncreased = 41, RangedDurationDecreased = 42, MagicalDurationIncreased = 51, MagicalDurationDecreased = 52 } public enum LeonaPassiveSkill : byte { IncreaseDamageAgainst = 11, DecreaseDamageAgainst = 12, IncreaseRecoveryItems = 21, DecreaseRecoveryItems = 22, OnSpWearCausing = 31, OnSpWearRemoving = 32, DefenceIncreasedInPvp = 41, DefenceDecreasedInPvp = 42, AttackIncreasedInPvp = 51, AttackDecreasedInPvp = 52 } public enum LightAndShadow : byte { InflictDamageToMp = 11, IncreaseMpByAbsorbedDamage = 12, RemoveBadEffects = 21, RemoveGoodEffects = 22, InflictDamageOnUndead = 31, HealUndead = 32, AdditionalDamageWhenHidden = 41, AdditionalDamageOnHiddenEnemy = 42 } public enum LordCalvinas : byte { InflictDamageAtLocation = 11, InflictDamageAtLocationNegated = 12 } public enum LordHatus : byte { InflictDamageAtLocation = 11, InflictDamageAtLocationNegated = 12 } public enum MaxHpmp : byte { MaximumHpIncreased = 11, MaximumHpDecreased = 12, MaximumMpIncreased = 21, MaximumMpDecreased = 22, IncreasesMaximumHp = 31, DecreasesMaximumHp = 32, IncreasesMaximumMp = 41, DecreasesMaximumMp = 42, MaximumHpmpIncreased = 51, MaximumHpmpDecreased = 52 } public enum MeditationSkill : byte { CausingChance = 11, RemovingChance = 12, ShortMeditation = 21, ShortMeditationNegated = 22, RegularMeditation = 31, RegularMeditationNegated = 32, LongMeditation = 41, LongMeditationNegated = 42, Sacrifice = 51, Sacrificenegated = 52 } public enum MeteoriteTeleport : byte { SummonInVisualRange = 11, SummonInVisualRangeNegated = 12, TransformTarget = 21, TransformTargetNegated = 22, TeleportForward = 31, TeleportForwardNegated = 32, CauseMeteoriteFall = 41, CauseMeteoriteFallNegated = 42, TeleportYouAndGroupToSavedLocation = 51, TeleportYouAndGroupToSavedLocationNegated = 52 } // 41-60 public enum Mode : byte { Range = 11, ReturnRange = 12, EffectNoDamage = 21, DirectDamage = 22, AttackTimeIncreased = 31, AttackTimeDecreased = 32, ModeChance = 41, ModeChanceNegated = 42, OccuringChance = 51, OccuringChanceNegated = 52 } public enum Morale : byte { MoraleIncreased = 11, MoraleDecreased = 12, MoraleDoubled = 21, MoraleHalved = 22, LockMorale = 31, LockMoraleNegated = 32, SkillCooldownIncreased = 41, SkillCooldownDecreased = 42, IgnoreEnemyMorale = 51, IgnoreEnemyMoraleNegated = 52 } public enum Move : byte { MovementImpossible = 11, MovementImpossibleNegated = 12, MoveSpeedIncreased = 21, MoveSpeedDecreased = 22, SetMovement = 31, SetMovementNegated = 32, MovementSpeedIncreased = 41, MovementSpeedDecreased = 42, TempMaximized = 51, TempMaximizedNegated = 52 } public enum MultAttack : byte { AllAttackIncreased = 11, AllAttackDecreased = 12, MeleeAttackIncreased = 21, MeleeAttackDecreased = 22, RangedAttackIncreased = 31, RangedAttackDecreased = 32, MagicalAttackIncreased = 41, MagicalAttackDecreased = 42 } public enum MultDefence : byte { AllDefenceIncreased = 11, AllDefenceDecreased = 12, MeleeDefenceIncreased = 21, MeleeDefenceDecreased = 22, RangedDefenceIncreased = 31, RangedDefenceDecreased = 32, MagicalDefenceIncreased = 41, MagicalDefenceDecreased = 42 } public enum NoCharacteristicValue : byte { AllPowersNullified = 11, AllResistancesNullified = 12, FireElementNullified = 21, FireResistanceNullified = 22, WaterElementNullified = 31, WaterResistanceNullified = 32, LightElementNullified = 41, LightResistanceNullified = 42, DarkElementNullified = 51, DarkResistanceNullified = 52 } public enum NoDefeatAndNoDamage : byte { DecreaseHpNoDeath = 11, DecreaseHpNoKill = 12, NeverReceiveDamage = 21, NeverCauseDamage = 22, TransferAttackPower = 31, TransferAttackPowerNegated = 32 } public enum Quest : byte { SummonMonsterBased = 11, SummonMonsterBasedNegated = 12 } public enum Recovery : byte { HpRecoveryIncreased = 11, HpRecoveryDecreased = 12, MpRecoveryIncreased = 21, MpRecoveryDecreased = 22 } public enum RecoveryAndDamagePercent : byte { HpRecovered = 11, HpReduced = 12, MpRecovered = 21, MpReduced = 22, DecreaseEnemyHp = 31, DecreaseSelfHp = 32 } public enum Reflection : byte { HpIncreased = 11, HpDecreased = 12, MpIncreased = 21, MpDecreased = 22, EnemyHpIncreased = 31, EnemyHpDecreased = 32, EnemyMpIncreased = 41, EnemyMpDecreased = 42 } public enum SecondSpCard : byte { PlantBomb = 11, SetBombWhenAttack = 12, // Same as 22! PlantSelfDestructionBomb = 21, PlantBombWhenAttack = 22, // Same as 12! ReduceEnemySkill = 31, ReduceEnemySkillNegated = 32, HitAttacker = 41, HitAttackerNegated = 42 } public enum SeSpecialist : byte { EnterNumberOfBuffsAndDamage = 12, EnterNumberOfBuffs = 22, MovingAura = 31, DontNeedToEnter = 32, // Same as 42 LowerHpStrongerEffect = 41, DoNotNeedToEnter = 42 // Same as 32 } public enum SniperAttack : byte { ChanceCausing = 11, ChanceRemoving = 12, AmbushRangeIncreased = 21, AmbushRangeIncreasedNegated = 22, ProduceChance = 31, ProduceChanceNegated = 32, KillerHpReducing = 41, KillerHpIncreasing = 42, ReceiveCriticalFromSniper = 51, ReceiveCriticalFromSniperNegated = 52 } public enum SpCardUpgrade : byte { LowerSpScroll = 11, LowerSpScrollNegated = 12, HigherSpScroll = 21, HigherSpScrollNegated = 22 } public enum SpecialActions : byte { PushBack = 11, PushBackNegated = 12, FocusEnemies = 21, FocusEnemiesNegated = 22, Charge = 31, ChargeNegated = 32, RunAway = 41, RunAwayNegated = 42, Hide = 51, SeeHiddenThings = 52 } // 1-20 public enum SpecialAttack : byte { NoAttack = 11, NoAttackNegated = 12, MeleeDisabled = 21, MeleeDisabledNegated = 22, RangedDisabled = 31, RangedDisabledNegated = 32, MagicDisabled = 41, MagicDisabledNegated = 42, FailIfMiss = 51, FailIfMissNegated = 52 } public enum SpecialBehaviour : byte { TeleportRandom = 11, TeleportRandomNegated = 12, JumpToEveryObject = 21, JumpToEveryObjectNegated = 22, InflictOnTeam = 31, InflictOnEnemies = 32, TransformInto = 41, TransformIntoNegated = 42 } public enum SpecialCritical : byte { AlwaysInflict = 11, AlwaysInflictNegated = 12, NeverInflict = 21, NeverInflictNegated = 22, AlwaysReceives = 31, AlwaysReceivesNegated = 32, NeverReceives = 41, NeverReceivesNegated = 42, InflictingChancePercent = 51, ReceivingChancePercent = 52 } public enum SpecialDamageAndExplosions : byte { ChanceExplosion = 11, ChanceExplosionNegated = 12, ExplosionCauses = 21, ExplosionCausesNegated = 22, SurroundingDamage = 31, SurroundingDamageNegated = 32 } public enum SpecialDefence : byte { AllDefenceNullified = 11, AllDefenceNullifiedNegated = 12, MeleeDefenceNullified = 21, MeleeDefenceNullifiedNegated = 22, RangedDefenceNullified = 31, RangedDefenceNullifiedNegated = 32, MagicDefenceNullified = 41, MagicDefenceNullifiedNegated = 42, NoDefence = 51, NoDefenceNegated = 52 } public enum SpecialEffects : byte { DecreaseKillerHp = 11, IncreaseKillerHp = 12, ToPrefferedAttack = 21, ToNonPrefferedAttack = 22, Gibberish = 31, GibberishNegated = 32, AbleToFightPvp = 41, AbleToFightPvpNegated = 42, ShadowAppears = 51, ShadowAppearsNegated = 52 } public enum SpecialEffects2 : byte { FocusEnemy = 11, RemoveEnemyAttention = 12, TeleportInRadius = 21, TeleportInRadiusNegated = 22, MainWeaponCausingChance = 31, MainWeaponCausingChanceNegated = 32, SecondaryWeaponCausingChance = 41, SecondaryWeaponCausingChanceNegated = 42, BefriendMonsters = 51, BefriendMonstersNegated = 52 } public enum SpecialisationBuffResistance : byte { IncreaseDamageAgainst = 11, ReduceDamageAgainst = 12, IncreaseCriticalAgainst = 21, ReduceCriticalAgainst = 22, ResistanceToEffect = 31, ResistanceToEffectNegated = 32, IncreaseDamageInPvp = 41, DecreaseDamageInPvp = 42, RemoveBadEffects = 52 } public enum Spsl : byte { Attack, Defense, Element, Hpmp, All } public enum StealBuff : byte { IgnoreDefenceChance = 11, IgnoreDefenceChanceNegated = 12, ReduceCriticalReceivedChance = 21, ReduceCriticalReceivedChanceNegated = 22, ChanceSummonOnyxDragon = 31, ChanceSummonOnyxDragonNegated = 32, StealGoodEffect = 41, StealGoodEffectNegated = 42 } public enum SummonAndRecoverHp : byte { ChanceSummon = 11, ChanceSummonNegated = 12, RestoreHp = 21, ReduceHp = 22 } public enum SummonedMonsterAttack : byte { CauseDamage = 11, CauseDamageNegated = 12 } public enum Summons : byte { SummonUponDeath = 11, SummonUponDeathChance = 12, Summons = 21, SummonningChance = 22, SummonTrainingDummy = 31, SummonTrainingDummyChance = 32, SummonTimedMonsters = 41, SummonTimedMonstersChance = 42, SummonGhostMp = 51, SummonGhostMpChance = 52 } public enum SummonSkill : byte { // Unknown = 11, Unknown2 = 12, Unknown3 = 21, Unknown4 = 22, Summon = 31, SummonTimed = 32 } public enum Target : byte { AllHitRateIncreased = 11, AllHitRateDecreased = 12, MeleeHitRateIncreased = 21, MeleeHitRateDecreased = 22, RangedHitRateIncreased = 31, RangedHitRateDecreased = 32, MagicalConcentrationIncreased = 41, MagicalConcentrationDecreased = 42 } public enum TauntSkill : byte { ReflectsMaximumDamageFrom = 11, ReflectsMaximumDamageFromNegated = 12, DamageInflictedIncreased = 21, DamageInflictedDecreased = 22, EffectOnKill = 31, EffectOnKillNegated = 32, TauntWhenKnockdown = 41, TauntWhenNormal = 42, ReflectBadEffect = 51, ReflectBadEffectNegated = 52 } public enum TeamArenaBuff : byte { DamageTakenIncreased = 11, DamageTakenDecreased = 12, AttackPowerIncreased = 21, AttackPowerDecreased = 22 } public enum TimeCircleSkills : byte { GatherEnergy = 11, GatherEnergyNegated = 12, DisableHpConsumption = 21, DisableHpRecovery = 22, DisableMpConsumption = 31, DisableMpRecovery = 32, CancelAllBuff = 41, CancelAllBuffNegated = 42, ItemCannotBeUsed = 51, ItemCannotBeUsedNegated = 52 } public enum VulcanoElementBuff : byte { SkillsIncreased = 11, SkillsDecreased = 12, ReducesEnemyAttack = 21, ReducesEnemyAttackNegated = 22, PullBackBuffIncreasing = 31, PullBackBuffIncreasingNegated = 32, CriticalDefence = 41, CriticalDefenceNegated = 42 } public enum Type85 : byte { PositionSwapper = 11, OnDeathIncreaseRepLost = 21, OnDeathReduceRepLost = 22, OnDeathIncreaseHxpLost = 31, OnDeathReduceHxpLost = 32, IncreaseDamageVsAngels = 41, ReduceDamageVsAngels = 42, IncreaseDamageVsDeamons = 51, ReduceDamageVsDeamons = 52 } public enum Type86 : byte { CdResetWithProb = 11, IncreaseGrovyBeachVibesProb = 21, DecreaseGrovyBeachVibesProb = 22, IncreaseDamageVsHigherLevelMonster = 31, DecreaseDamageVsHigherLevelMonster = 32, BlockAmountOfBadEffect = 41, ContagiousDebuffAroundCell = 51 } public enum Type87 : byte { IncreaseFameRecived = 11, DecreaseFameRecived = 12, IncreaseHxpRecived = 21, DecreaseHxpRecived = 22, ReciveRandomItem = 31, RemoveBuffFromEnemy = 41, Unknow = 51 } public enum Type88 : byte { MateReturnToMiniland = 11, IncreaseDamageVsHiden = 21, DecreaseDamageVsHiden = 22, IncreaseDamageFromHiden = 31, DecreaseDamageFromHiden = 32, RevealsHidenEnemy = 41, SkillResetXTimes = 51 } public enum Type89 : byte { Transform = 11, RemoveTransform = 12, Unknow = 21, NegateGoodEffect = 31, NormalAndJobExpIncreased = 41, ZhephyrMagicalArrow = 51 } public enum Type90 : byte { DamageVsSealedAndReduceFireDamage = 00, // Yeah... SubType 0 and double Effect o_O //SubType 1 didn't exist IncreaseDamageVsSealed = 21, DecreaseDamageVsSealed = 22, RainbowBattleDamageAndSpeedBoost = 31, // Another double Effect IncreaseDamageVsSealedAndGlacernonMonsters = 41, // Another double Effect DecreaseDamageVsSealedAndGlacernonMonsters = 42 } public enum Type91 : byte { AddBuff = 11, BuffSkillBooster = 21, AllowFullMoonSkill = 31, AllowLotusPowerSkill = 41, ReduceCriticalDamageRecived = 51, IncreaseCriticalDamageRecived = 52 } public enum Type92 : byte { AddBuffOnReceiveAttack = 11, ChanceToReciveOpportunityToAttack = 21, //SubType 3 didn't exist TransformEnemyDebuff = 41 } public enum Type93 : byte { IncreaseElementOnAttack = 00, DecreaseElementOnAttack = 01, IncreaseFireElement = 11, DecreaseFireElement = 12, IncreaseWaterElement = 21, DecreaseWaterElement = 22, //SubType 3 didn't exist. IncreaseLightElement ? //SubType 4 didn't exist. IncreaseDarkElement ? IncreaseAllElements = 51, DecreaseAllElements = 52 } public enum Type94 : byte { IncreaseAllElementsRes = 11, DecreaseAllElementsRes = 12, IncreaseFireRes = 21, DecreaseFireRes = 22, IncreaseWaterRes = 31, DecreaseWaterRes = 32, //SubType 4 didn't exist. IncreaseLightRes ? IncreaseDarkRes = 51, DecreaseDarkRes = 52 } public enum Type95 : byte { DropX2Chance = 11, AddBuffOnAttack = 21, //SubType 3 didn't exist. AddBuffOnDef = 41, } public enum Type96 : byte { IncreaseFairyElement = 11, DecreaseFairyElement = 12, IncreaseFairyElementOnAttack = 21, DecreaseFairyElementOnAttack = 22, IncreaseDamageToMonsters = 31, DecreaseDamageToMonsters = 32 } public enum Type97 : byte { AddBuffWithMissingHpChance = 11, IncreaseUltimatePoins = 21, DecreaseUltimatePoints = 22, AllowUltimateSkills = 31, DarkElementAddBuff = 41, IncreaseAttackAndDefenceForDebuff = 51, DecreaseAttackAndDefenceForDebuff = 52 } public enum Type98 : byte { IncreaseWaterDamage = 00, DecreaseWaterDamage = 01, IncreaseAllAttackDamageRecived = 11, DecreaseAllAttackDamageRecived = 12, IncreaseFireAttackDamage = 21, DecreaseFireAttackDamage = 22 } public enum Type99 : byte { IncreaseDamageToLowLevelPlant = 11, DecreaseDamageToLowLevelPlant = 12, IncreaseDamageToLowLevelAnimal = 21, DecreaseDamageToLowLevelAnimal = 22, IncreaseDamageToLowLevelMonster = 31, DecreaseDamageToLowLevelMonster = 32, IncreaseDamageToKovolt = 41, DecreaseDamageToKovolt = 42, IncreaseDamageToCatsie = 51, DecreaseDamageToCatsie = 52 } public enum Type100 : byte { IncreaseDamageToLowLevelSpirit = 11, DecreaseDamageToLowLevelSpirit = 12, IncreaseDamageToAngel = 21, DecreaseDamageToAngel = 22, IncreaseDamageToDemon = 31, DecreaseDamageToDemon = 32, IncreaseDamageToLowLevelUndead = 41, DecreaseDamageToLowLevelUndead = 42, IncreaseProductionPointConsume = 51, DecreaseProductionPointConsume = 52 } public enum Type101 : byte { IncreaseDamageToLODMonster = 11, DecreaseDamageToLODMonster = 12, IncreaseDamageToSealed = 21, DecreaseDamageToSealed = 22, IncreaseXpGain = 31, DecreaseXpGain = 32, IncreaseJXpGain = 41, DecreaseJXpGain = 42, IncreaseDodge = 51, DecreaseDodge = 52 } public enum Type102 : byte { IncreaseSLDamage = 11, DecreaseSLDamage = 12, IncreaseSLDefence = 21, DecreaseSLDefence = 22, IncreaseSLElement = 31, DecreaseSLElement = 32, IncreaseSLHp = 41, DecreaseSLHp = 42, IncreaseHitRate = 51, DecreaseHitRate = 52 } public enum Type103 : byte { IncreaseAllAttack = 11, DecreaseAllAttack = 12, IncreaseMeleeAttack = 21, DecreaseMeleeAttack = 22, IncreaseRangedAttack = 31, DecreaseRangedAttack = 32, IncreaseMagicAttack = 41, DecreaseMagicAttack = 42, IncreaseConcentration = 51, DecreaseConcentration = 52 } public enum Type104 : byte { ReflectOnDeff = 11, AreaDamageEachSecond = 21, SummonMonsterOnDef = 31, //SubType 4 didn't exist. AreaBuffEachSecond = 51 } public enum Type107 : byte { IncreaseMagicDamage = 11, DecreaseMagicDamage = 12, IncreaseElementResOnDef = 21, DecreaseElementResOnDef = 22, IncreaseXpGain = 31, DecreaseXpGain = 32, //SubType 4 didn't exist. IncreaseDodge = 51, DecreaseDodge = 52 } public enum Type108 : byte { ReflectCritOnDef = 11, IncreaseDodgeByMissingHp = 21, DecreaseDodgeByMissingHp = 22, IncreaseCritDamageWithCount = 31, DecreaseCritDamageWithCount = 32, TransferDamageToMp = 41, IncreaseAttackByMagicRes = 51, DecreaseAttackByMagicRes = 52 } public enum Type109 : byte { //SubType 1 didn't exist. //SubType 2 didn't exist. //SubType 3 didn't exist. ChanceToIncreaseDamage = 41, ChanceToDecreaseDamage = 42, IncreaseElementOnDebuff = 51, DecreaseElementOnDebuff = 52 } public enum Type110 : byte { RecoveryHpOnDodge = 11, DecreaseHpOnDodge = 12, BeastKingTarget = 21 } // end! } } ================================================ FILE: src/NosCore.Data/Enumerations/Buff/BCardType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Buff { public class BCardType { public enum CardType : byte { // 1-20 SpecialAttack = 1, SpecialDefence = 2, AttackPower = 3, Target = 4, Critical = 5, SpecialCritical = 6, Element = 7, IncreaseDamage = 8, Defence = 9, DodgeAndDefencePercent = 10, Block = 11, Absorption = 12, ElementResistance = 13, EnemyElementResistance = 14, Damage = 15, GuarantedDodgeRangedAttack = 16, Morale = 17, Casting = 18, Move = 19, Reflection = 20, // 21-40 DrainAndSteal = 21, HealingBurningAndCasting = 22, Hpmp = 23, SpecialisationBuffResistance = 24, Buff = 25, Summons = 26, SpecialEffects = 27, Capture = 28, SpecialDamageAndExplosions = 29, SpecialEffects2 = 30, CalculatingLevel = 31, Recovery = 32, MaxHpmp = 33, MultAttack = 34, MultDefence = 35, TimeCircleSkills = 36, RecoveryAndDamagePercent = 37, Count = 38, NoDefeatAndNoDamage = 39, SpecialActions = 40, // 41-60 Mode = 41, NoCharacteristicValue = 42, LightAndShadow = 43, Item = 44, DebuffResistance = 45, SpecialBehaviour = 46, Quest = 47, SecondSpCard = 48, SpCardUpgrade = 49, HugeSnowman = 50, Drain = 51, BossMonstersSkill = 52, LordHatus = 53, LordCalvinas = 54, SeSpecialist = 55, SummonedMonsterAttack = 56, FourthGlacernonFamilyRaid = 57, BearSpirit = 58, SummonSkill = 59, InflictSkill = 60, // 61-80 Missingno = 61, HideBarrelSkill = 62, FocusEnemyAttentionSkill = 63, TauntSkill = 64, FireCannoneerRangeBuff = 65, VulcanoElementBuff = 66, DamageConvertingSkill = 67, MeditationSkill = 68, FalconSkill = 69, AbsorptionAndPowerSkill = 70, LeonaPassiveSkill = 71, FearSkill = 72, SniperAttack = 73, FrozenDebuff = 74, JumpBackPush = 75, FairyXpIncrease = 76, SummonAndRecoverHp = 77, TeamArenaBuff = 78, ArenaCamera = 79, DarkCloneSummon = 80, // 81-100 AbsorbedSpirit = 81, AngerSkill = 82, MeteoriteTeleport = 83, StealBuff = 84, Type85 = 85, Type86 = 86, Type87 = 87, Type88 = 88, Type89 = 89, Type90 = 90, Type91 = 91, Type92 = 92, Type93 = 93, Type94 = 94, Type95 = 95, Type96 = 96, Type97 = 97, Type98 = 98, Type99 = 99, Type100 = 100, //101 - ??? Type101 = 101, Type102 = 102, Type103 = 103, Type104 = 104, Type107 = 107, Type108 = 108, Type109 = 109, Type110 = 110, Spsl = 200 } } } ================================================ FILE: src/NosCore.Data/Enumerations/Buff/BuffType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Buff { public enum BuffType : byte { Good = 0, Neutral = 1, Bad = 2 } } ================================================ FILE: src/NosCore.Data/Enumerations/Buff/MedalType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Buff { public enum MedalType : byte { None = 0, Silver = 1, Gold = 2 } } ================================================ FILE: src/NosCore.Data/Enumerations/Buff/ShellOptionType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Buff { public enum ShellOptionType { /* WEAPON OPTIONS */ // INCREASE DAMAGES IncreaseDamage = 1, SDamagePercentage = 2, // DEBUFFS MinorBleeding = 3, Bleeding = 4, SeriousBleeding = 5, Blackout = 6, Frozen = 7, DeadlyBlackout = 8, // PVE OPTIONS IncreaseDamageOnPlants = 9, IncreaseDamageOnAnimals = 10, IncreaseDamageOnDemons = 11, IncreaseDamagesOnZombies = 12, IncreaseDamagesOnSmallAnimals = 13, SDamagePercentageOnGiantMonsters = 14, // CHARACTER BONUSES IncreaseCritChance = 15, IncreaseCritDamages = 16, ProtectWandSkillInterruption = 17, IncreaseFireElement = 18, IncreaseWaterElement = 19, IncreaseLightElement = 20, IncreaseDarknessElement = 21, SIncreaseAllElements = 22, ReduceMpConsumption = 23, HpRegenerationOnKill = 24, MpRegenerationOnKill = 25, // SP BONUSES AttackSl = 26, DefenseSl = 27, ElementSl = 28, HpMpSl = 29, SGlobalSl = 30, // PVE RATES INCREASE GoldPercentage = 31, XpPercentage = 32, JobXpPercentage = 33, // PVP OPTIONS PvpDamagePercentage = 34, PvpEnemyDefenseDecreased = 35, PvpResistanceDecreasedFire = 36, PvpResistanceDecreasedWater = 37, PvpResistanceDecreasedLight = 38, PvpResistanceDecreasedDark = 39, PvpResistanceDecreasedAll = 40, PvpAlwaysHit = 41, PvpDamageProbabilityPercentage = 42, PvpWithdrawMp = 43, // R8 CHAMPION OPTIONS PvpIgnoreResistanceFire = 44, PvpIgnoreResistanceWater = 45, PvpIgnoreResistanceLight = 46, PvpIgnoreResistanceDark = 47, RegenSpecialistPointPerKill = 48, IncreasePrecision = 49, IncreaseConcentration = 50, /* ARMOR OPTIONS */ // DEFENSE INCREASE CloseCombatDefense = 51, LongRangeDefense = 52, MagicalDefense = 53, SDefenseAllPercentage = 54, // ANTI-DEBUFFS ReducedMinorBleeding = 55, ReducedSeriousBleeding = 56, ReducedAllBleeding = 57, ReducedSmallBlackout = 58, ReducedAllBlackout = 59, ReducedHandOfDeath = 60, ReducedFrozenChance = 61, ReducedBlindChance = 62, ReducedArrestationChance = 63, ReducedDefenseReduction = 64, ReducedShockChance = 65, ReducedRigidityChance = 66, SReducedAllNegative = 67, // CHARACTER BONUSES OnRestHpRecoveryPercentage = 68, NaturalHpRecoveryPercentage = 69, OnRestMpRecoveryPercentage = 70, NaturalMpRecoveryPercentage = 71, SOnAttackRecoveryPercentage = 72, ReduceCriticalChance = 73, // RESISTANCE INCREASE FireResistanceIncrease = 74, WaterResistanceIncrease = 75, LightResistanceIncrease = 76, DarkResistanceIncrease = 77, SIncreaseAllResistance = 78, // VARIOUS PVE BONUSES DignityLossReduced = 79, PointConsumptionReduced = 80, MiniGameProductionIncreased = 81, FoodHealing = 82, // PVP BONUSES PvpDefensePercentage = 83, PvpDodgeClose = 84, PvpDodgeRanged = 85, PvpDodgeMagic = 86, SPvpDodgeAll = 87, PvpMpProtect = 88, // R8 OPTIONS ChampionPvpIgnoreAttackFire = 89, ChampionPvpIgnoreAttackWater = 90, ChampionPvpIgnoreAttackLight = 91, ChampionPvpIgnoreAttackDark = 92, AbsorbDamagePercentageA = 93, AbsorbDamagePercentageB = 94, AbsorbDamagePercentageC = 95, IncreaseEvasiveness = 96 } } ================================================ FILE: src/NosCore.Data/Enumerations/Buff/StaticBonusType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Buff { public enum StaticBonusType : byte { BazaarMedalGold = 0, BazaarMedalSilver = 1, BackPack = 2, PetBasket = 3, PetBackPack = 4, InventoryTicketUpgrade = 5 } } ================================================ FILE: src/NosCore.Data/Enumerations/Character/CharacterOption.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Character { public enum CharacterOption { ExchangeBlocked = 1, FriendRequestBlocked = 2, FamilyRequestBlocked = 3, WhisperBlocked = 4, GroupRequestBlocked = 5, PetAutoRelive = 6, PartnerAutoRelive = 7, GroupSharing = 8, MouseAimLock = 9, HeroChatBlocked = 10, QuickGetUp = 11, EmoticonsBlocked = 12, HpBlocked = 13, BuffBlocked = 14, MinilandInviteBlocked = 15, HatInVisible = 16, LockInterface = 17 } } ================================================ FILE: src/NosCore.Data/Enumerations/Character/CharacterState.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Character { public enum CharacterState : byte { Active = 1, Inactive = 2 } } ================================================ FILE: src/NosCore.Data/Enumerations/Character/FactionType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Diagnostics.CodeAnalysis; namespace NosCore.Data.Enumerations.Character { [SuppressMessage("ReSharper", "UnusedMember.Global")] public enum FactionType : byte { Neutral = 0, Angel = 1, Demon = 2 } } ================================================ FILE: src/NosCore.Data/Enumerations/Character/MateType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Diagnostics.CodeAnalysis; namespace NosCore.Data.Enumerations.Character { [SuppressMessage("ReSharper", "UnusedMember.Global")] public enum MateType : byte { Partner = 0, Pet = 1 } } ================================================ FILE: src/NosCore.Data/Enumerations/Event/EventActionType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Event { public enum EventActionType { ChangeXpRate, ChangeDropRate, SendPacket, DisposeMap, UnspawnMonsters, SpawnonLastEntry, Clock, Spawnmonsters, Dropitems, NpcDialog, StartClock, SpawnPortal, ChangePortalType, Refreshmapitems, Npcseffectchangestate, Spawnbutton, Startmapclock, Stopmapclock, Stopclock, Mapclock, Registerevent, Spawnnpcs, Scriptend, Removebuttonlocker, Removemonsterlocker, Refreshraidgoal, Teleport, Throwitems, Setmonsterlockers, Setbuttonlockers, Setareaentry, Registerwave, Effect, Move, Ontarget, Controlemonsterinrange } } ================================================ FILE: src/NosCore.Data/Enumerations/Event/EventType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Diagnostics.CodeAnalysis; namespace NosCore.Data.Enumerations.Event { [SuppressMessage("ReSharper", "UnusedMember.Global")] public enum EventType { Instantbattle, Lod, MinilandRefresh, LodDh, RankingreFresh, TalentArena, MasterArena, IceBreaker, Act4Ship } } ================================================ FILE: src/NosCore.Data/Enumerations/Family/FamilyAuthority.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Diagnostics.CodeAnalysis; namespace NosCore.Data.Enumerations.Family { [SuppressMessage("ReSharper", "UnusedMember.Global")] public enum FamilyAuthority : byte { Head = 0, Assistant = 1, Manager = 2, Member = 3 } } ================================================ FILE: src/NosCore.Data/Enumerations/Family/FamilyLogType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Diagnostics.CodeAnalysis; namespace NosCore.Data.Enumerations.Family { [SuppressMessage("ReSharper", "UnusedMember.Global")] public enum FamilyLogType : byte { DailyMessage = 1, RaidWon = 2, RainbowBattle = 3, FamilyXp = 4, FamilyLevelUp = 5, LevelUp = 6, ItemUpgraded = 7, RightChanged = 8, AuthorityChanged = 9, FamilyManaged = 10, UserManaged = 11, WareHouseAdded = 12, WareHouseRemoved = 13 } } ================================================ FILE: src/NosCore.Data/Enumerations/Family/FamilyMemberRank.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Diagnostics.CodeAnalysis; namespace NosCore.Data.Enumerations.Family { [SuppressMessage("ReSharper", "UnusedMember.Global")] public enum FamilyMemberRank : byte { Nothing = 0, OldUncle = 1, OldAunt = 2, Father = 3, Mother = 4, Uncle = 5, Aunt = 6, Brother = 7, Sister = 8, Spouse = 9, Brother2 = 10, Sister2 = 11, OldSon = 12, OldDaugter = 13, MiddleSon = 14, MiddleDaughter = 15, YoungSon = 16, YoungDaugter = 17, OldLittleSon = 18, OldLittleDaughter = 19, LittleSon = 20, LittleDaughter = 21, MiddleLittleSon = 22, MiddleLittleDaugter = 23 } } ================================================ FILE: src/NosCore.Data/Enumerations/Group/GroupSharingType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Group { public enum GroupSharingType : byte { ByOrder = 0, Everyone = 1 } } ================================================ FILE: src/NosCore.Data/Enumerations/Group/GroupType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Group { public enum GroupType : byte { Group = 3, Team = 15, BigTeam = 20, GiantTeam = 40 } } ================================================ FILE: src/NosCore.Data/Enumerations/HashingType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations { public enum HashingType { Sha512, //if your care about security use Pbkdf2 (bcrypt doesn't have a approved package for c#) //PBKDF2-HMAC-SHA512-150000 Pbkdf2, BCrypt } } ================================================ FILE: src/NosCore.Data/Enumerations/I18N/LanguageKey.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Diagnostics.CodeAnalysis; namespace NosCore.Data.Enumerations.I18N { [SuppressMessage("ReSharper", "InconsistentNaming")] public enum LogLanguageKey { UNKNOWN, DONE, PARSE_ALL, PARSE_MAPS, PARSE_MAPTYPES, PARSE_ACCOUNTS, PARSE_PORTALS, PARSE_TIMESPACES, PARSE_ITEMS, PARSE_NPCMONSTERS, PARSE_NPCMONSTERDATA, PARSE_CARDS, PARSE_SKILLS, PARSE_MAPNPCS, PARSE_MONSTERS, PARSE_SHOPS, PARSE_TELEPORTERS, PARSE_SHOPITEMS, PARSE_SHOPSKILLS, PARSE_RECIPES, PARSE_QUESTS, I18N_ACTDESC_PARSED, I18N_CARD_PARSED, I18N_BCARD_PARSED, I18N_ITEM_PARSED, I18N_MAPIDDATA_PARSED, I18N_MAPPOINTDATA_PARSED, I18N_MPCMONSTER_PARSED, I18N_NPCMONSTERTALK_PARSED, I18N_QUEST_PARSED, I18N_SKILL_PARSED, AUTH_ERROR, MASTER_SERVER_PING, MASTER_SERVER_PING_FAILED, REGISTRED_ON_MASTER, AUTHENTICATED_SUCCESS, DATABASE_INITIALIZED, DATABASE_NOT_UPTODATE, CLIENT_DISCONNECTED, ERROR_CHANGE_MAP, AUTH_INCORRECT, CLIENT_ARRIVED, CORRUPTED_KEEPALIVE, INVALID_PASSWORD, INVALID_ACCOUNT, ACCOUNT_ARRIVED, SUCCESSFULLY_LOADED, MASTER_SERVER_RETRY, ENTER_PATH, AT_LEAST_ONE_FILE_MISSING, CARDS_PARSED, ITEMS_PARSED, MAPS_PARSED, PORTALS_PARSED, MAPS_LOADED, NO_MAP, MAPMONSTERS_LOADED, CORRUPT_PACKET, HANDLER_NOT_FOUND, PARSE_I18N, NPCMONSTERS_PARSED, PARSE_DROPS, MAPTYPES_PARSED, RESPAWNTYPE_PARSED, SKILLS_PARSED, NPCS_PARSED, MONSTERS_PARSED, MAPNPCS_LOADED, SAVING_ALL, ITEMS_LOADED, UNKNOWN_PICKERTYPE, POCKETTYPE_UNKNOWN, NPCMONSTERS_LOADED, VISUALTYPE_UNKNOWN, UNKNOWN_EQUIPMENTTYPE, LANGUAGE_MISSING, INVITETYPE_UNKNOWN, GROUPREQUESTTYPE_UNKNOWN, UNKWNOWN_RECEIVERTYPE, NO_SPECIAL_PROPERTIES_WEARABLE, CANNOT_TRADE_NOT_TRADABLE_ITEM, CANT_USE_ITEM_IN_SHOP, TRY_REMOVE_FAILED, USE_SP_WITHOUT_SP_ERROR, NOT_ENOUGH_GOLD, INVALID_EXCHANGE, PLAYER_IN_SHOP, USER_NOT_IN_EXCHANGE, INVALID_EXCHANGE_LIST, SHOPS_PARSED, SHOPITEMS_PARSED, SHOPITEMS_LOADED, SHOPS_LOADED, CONNECTION_LOST, CHANNEL_WILL_EXIT, CANT_MOVE_ITEM_IN_SHOP, VISUALENTITY_DOES_NOT_EXIST, ALREADY_EXCHANGE, CANT_FIND_CHARACTER, LOADING_MAPINSTANCES, PACKET_USED_WITHOUT_CHARACTER, AUTH_API_SUCCESS, FRIEND_REQUEST_DISCONNECTED, BAZAAR_DELETE_ERROR, BAZAAR_BUY_ERROR, BAZAAR_MOD_ERROR, DIRECT_ACCESS_OBJECT_DETECTED, TRY_OLD_AUTH, SHOPSKILLS_LOADED, CHUNK_FORMAT_INVALID, ITEM_NOT_FOUND, QUEST_PRIZES_PARSED, QUESTS_PARSED, ACTS_PARTS_PARSED, SCRIPTS_PARSED, PARSE_SCRIPTS, QUEST_NOT_FOUND, NPCMONSTERSTALKS_LOADED, QUESTS_LOADED, QUESTOBJECTIVES_LOADED, QUESTREWARDS_LOADED, SCRIPTS_LOADED, NPCTALKS_PARSED, WALK_CHECKSUM_INVALID, SPEED_INVALID, PACKET_USED_WHILE_IN_GAME, PACKET_USED_WHILE_NOT_ON_LOGIN, CHARACTER_SLOT_EMPTY, CHARACTER_SELECTION_FAILED, ALREADY_CONNECTED, PACKET_HANDLING_ERROR, MFA_INCORRECT, DATABASE_ERROR, SAVE_CHARACTER_FAILED, UNBOUND_ITEM_DETECTED, MAP_DONT_EXIST, CANT_CHANGE_SAME_CLASS, PUBSUB_RECONNECTING, PUBSUB_RECONNECTED, PUBSUB_CONNECTION_CLOSED, PUBSUB_CONNECTION_STARTED, PUBSUB_CONNECTION_STOPPED, UNHANDLED_REQINFO_TYPE, UNHANDLED_UPGRADE_TYPE, } [SuppressMessage("ReSharper", "InconsistentNaming")] public enum LanguageKey { SUPPORT, CHANNEL, ADMINISTRATOR, DROP_MAP_FULL, BAD_DROP_AMOUNT, FRIENDLIST_FULL, ALREADY_FRIEND, FRIEND_REQUEST_BLOCKED, FRIEND_REQUEST_SENT, FRIEND_ADDED, FRIEND_REJECTED, CANT_BLOCK_FRIEND, NOT_IN_BLACKLIST, BLACKLIST_ADDED, BLACKLIST_BLOCKED, UNABLE_TO_REQUEST_GROUP, USER_NOT_CONNECTED, ALREADY_BLACKLISTED, USER_IS_NOT_A_FRIEND, BANK_FULL, ASK_BIND, SP_NOPOINTS, REPUTATION_CHANGED, TOO_RICH_SELLER, UPDATE_GOLD, LIMIT_EXCEEDED, OBJECT_IN_BAZAAR, ITEM_GIFTED, NOT_IN_FRIENDLIST, SPEAKER } } ================================================ FILE: src/NosCore.Data/Enumerations/Interaction/Act4RaidType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Interaction { public enum Act4RaidType : byte { Morcos, Hatus, Calvina, Berios } } ================================================ FILE: src/NosCore.Data/Enumerations/Interaction/ArenaTeamType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Interaction { public enum ArenaTeamType : byte { Zenas = 1, Erenia = 2 } } ================================================ FILE: src/NosCore.Data/Enumerations/Interaction/ChatType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Interaction { public enum ChatType : byte { General = 0, Whisper = 1, Party = 2, Family = 3, Friend = 4, Speaker = 5 } } ================================================ FILE: src/NosCore.Data/Enumerations/Interaction/GeneralLogType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Interaction { public enum GeneralLogType { Connection, Promotion, Demotion } } ================================================ FILE: src/NosCore.Data/Enumerations/Interaction/InRespawnType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Interaction { public enum InRespawnType : byte { TeleportationEffect = 0, NoEffect = 1, FallingDown = 2 } } ================================================ FILE: src/NosCore.Data/Enumerations/Interaction/PenaltyType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Interaction { public enum PenaltyType : byte { Muted = 0, Banned = 1, BlockExp = 2, BlockFExp = 3, BlockRep = 4, Warning = 5 } } ================================================ FILE: src/NosCore.Data/Enumerations/Interaction/ReceiverType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Interaction { public enum ReceiverType : byte { All = 1, AllExceptMe = 2, AllInRange = 3, OnlySomeone = 4, AllNoEmoBlocked = 5, AllNoHeroBlocked = 6, Group = 7, AllExceptGroup = 8, AllExceptMeAndBlacklisted = 9 } } ================================================ FILE: src/NosCore.Data/Enumerations/Interaction/RespawnType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Diagnostics.CodeAnalysis; namespace NosCore.Data.Enumerations.Interaction { [SuppressMessage("ReSharper", "UnusedMember.Global")] public enum RespawnType : byte { DefaultAct1 = 0, ReturnAct1 = 1, DefaultAct3 = 2, DefaultAct5 = 3, ReturnAct5 = 4, DefaultAct6 = 5, DefaultAct62 = 6, DefaultOasis = 7 } } ================================================ FILE: src/NosCore.Data/Enumerations/Interaction/ScriptedInstanceType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Diagnostics.CodeAnalysis; namespace NosCore.Data.Enumerations.Interaction { [SuppressMessage("ReSharper", "UnusedMember.Global")] public enum ScriptedInstanceType : byte { TimeSpace = 0, Raid = 1, RaidAct4 = 2 } } ================================================ FILE: src/NosCore.Data/Enumerations/Interaction/TalentArenaOptionType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Diagnostics.CodeAnalysis; namespace NosCore.Data.Enumerations.Interaction { [SuppressMessage("ReSharper", "UnusedMember.Global")] public enum TalentArenaOptionType : byte { Watch = 0, Nothing = 1, Call = 2, WatchAndCall = 3 } } ================================================ FILE: src/NosCore.Data/Enumerations/Interaction/TeleporterType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Interaction { public enum TeleporterType : byte { Teleporter = 0, TeleporterOnMap = 1 } } ================================================ FILE: src/NosCore.Data/Enumerations/Items/CellonType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Items { public enum CellonType : byte { Hp, HpRecovery, Mp, MpRecovery, MpConsumption, CriticalDamageDecrease } } ================================================ FILE: src/NosCore.Data/Enumerations/Items/ItemEffectType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Items { public enum ItemEffectType : ushort { NoEffect = 0, Teleport = 1, ApplyHairDie = 10, ApplyHairStyle = 11, Speaker = 15, MarriageProposal = 34, MateCapture = 100, Undefined = 69, SpCharger = 71, DroppedSpRecharger = 150, PremiumSpRecharger = 151, CraftedSpRecharger = 152, SpecialistMedal = 204, ApplySkinPartner = 305, ChangeGender = 651, PointInitialisation = 652, SealedTarotCard = 789, TarotCard = 790, RedAmulet = 791, BlueAmulet = 792, ReinforcementAmulet = 793, Heroic = 794, RandomHeroic = 795, AttackAmulet = 932, DefenseAmulet = 933, SpeedBooster = 998, BoxEffect = 999, Vehicle = 1000, GoldNosMerchantUpgrade = 1003, SilverNosMerchantUpgrade = 1004, InventoryUpgrade = 1005, PetSpaceUpgrade = 1006, PetBasketUpgrade = 1007, PetBackpackUpgrade = 1008, InventoryTicketUpgrade = 1009, BuffPotions = 6600, MarriageSeparation = 6969 } } ================================================ FILE: src/NosCore.Data/Enumerations/Items/ItemType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Items { public enum ItemType : byte { Weapon = 0, Armor = 1, Fashion = 2, Jewelery = 3, Specialist = 4, Box = 5, Shell = 6, Main = 10, Upgrade = 11, Production = 12, Map = 13, Special = 14, Potion = 15, Event = 16, Title = 17, Quest1 = 18, Sell = 20, Food = 21, Snack = 22, Magical = 24, Part = 25, Teacher = 26, Ammo = 27, Quest2 = 28, House = 30, Garden = 31, Minigame = 32, Terrace = 33, MinilandTheme = 34 } } ================================================ FILE: src/NosCore.Data/Enumerations/Items/JewelOptionType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Items { public enum JewelOptionType : byte { MaximumAugmentationHp = 0, MaximumAugmentationMp = 1, MaximumRegenerationHp = 2, MaximumRegenerationMp = 3, MinimiseUsedMp = 4, MinimiseCriticalHit = 5 } } ================================================ FILE: src/NosCore.Data/Enumerations/Items/RarifyMode.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Diagnostics.CodeAnalysis; namespace NosCore.Data.Enumerations.Items { [SuppressMessage("ReSharper", "UnusedMember.Global")] public enum RarifyMode { Normal, Reduced, Free, Drop, Success } } ================================================ FILE: src/NosCore.Data/Enumerations/Items/RarifyProtection.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Items { public enum RarifyProtection { None, BlueAmulet, RedAmulet, Scroll } } ================================================ FILE: src/NosCore.Data/Enumerations/Items/UpgradeMode.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Items { public enum UpgradeMode { Normal, Reduced, Free } } ================================================ FILE: src/NosCore.Data/Enumerations/Items/UpgradeProtection.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Diagnostics.CodeAnalysis; namespace NosCore.Data.Enumerations.Items { [SuppressMessage("ReSharper", "UnusedMember.Global")] public enum UpgradeProtection { None, Protected } } ================================================ FILE: src/NosCore.Data/Enumerations/Map/MapInstanceEventType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Map { public enum MapInstanceEventType { Entrance } } ================================================ FILE: src/NosCore.Data/Enumerations/Map/MapInstanceType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Diagnostics.CodeAnalysis; namespace NosCore.Data.Enumerations.Map { [SuppressMessage("ReSharper", "UnusedMember.Global")] public enum MapInstanceType { BaseMapInstance, NormalInstance, LodInstance, TimeSpaceInstance, RaidInstance, FamilyRaidInstance, TalentArenaMapInstance, Act4Instance, IceBreakerInstance, RainbowBattleInstance, ArenaInstance } } ================================================ FILE: src/NosCore.Data/Enumerations/Map/MapTypeType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Map { public enum MapTypeType : short { // Act Act1 = 1, Act2 = 2, Act3 = 3, Act4 = 4, Act42 = 5, Act51 = 6, Act52 = 7, Act61 = 8, Act62 = 9, Act61A = 10, Act61D = 11, CometPlain = 12, Mine1 = 13, Mine2 = 14, MeadowOfMine = 15, SunnyPlain = 16, Fernon = 17, FernonF = 18, Cliff = 19, LandOfTheDead = 20, Act32 = 21, CleftOfDarkness = 22, CitadelAngel = 23, CitadelDemon = 24, Oasis = 25 } } ================================================ FILE: src/NosCore.Data/Enumerations/Map/MonsterType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Map { public enum MonsterType : byte { Unknown = 0, Partner = 1, Npc = 2, Well = 3, Portal = 4, Boss = 5, Elite = 6, Peapod = 7, Special = 8, GemSpaceTime = 9 } } ================================================ FILE: src/NosCore.Data/Enumerations/Miniland/WarehouseType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations.Miniland { public enum WarehouseType : byte { Warehouse = 1, FamilyWareHouse = 2, PetWarehouse = 3 } } ================================================ FILE: src/NosCore.Data/Enumerations/NoscorePocketType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Enumerations; namespace NosCore.Data.Enumerations { public enum NoscorePocketType : byte { Equipment = PocketType.Equipment, Main = PocketType.Main, Etc = PocketType.Etc, Miniland = PocketType.Miniland, Specialist = PocketType.Specialist, Costume = PocketType.Costume, Wear = 8, Mount = 9, Raid = 10, } } ================================================ FILE: src/NosCore.Data/Enumerations/Quest/QuestRewardType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Diagnostics.CodeAnalysis; namespace NosCore.Data.Enumerations.Quest { [SuppressMessage("ReSharper", "UnusedMember.Global")] public enum QuestRewardType : byte { Gold = 1, BaseGoldByAmount = 2, // Base Gold * amount Exp = 3, PercentExp = 4, // Percent xp of the player (ex: give 10%) JobExp = 5, EtcMainItem = 7, WearItem = 8, Reput = 9, CapturedGold = 10, // Give the number of capturated monsters * amount in Gold UnknowGold = 11, PercentJobExp = 12, Unknow = 13 //never used but it is in the dat file } } ================================================ FILE: src/NosCore.Data/Enumerations/SaveResult.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations { public enum SaveResult : byte { Unknown = 0, Saved = 1, Error = 3 } } ================================================ FILE: src/NosCore.Data/Enumerations/UpdateStatActionType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.Enumerations { public enum UpdateStatActionType : byte { UpdateLevel, UpdateJobLevel, UpdateHeroLevel, UpdateReputation, UpdateGold, UpdateClass } } ================================================ FILE: src/NosCore.Data/GameObjectMapper.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using System; namespace NosCore.Data { public class GameObjectMapper : IGameObjectMapper { public GameObjectMapper(Func resolve) { TypeAdapterConfig.NewConfig().ConstructUsing(_ => resolve()); } } public interface IGameObjectMapper { } } ================================================ FILE: src/NosCore.Data/NosCore.Data.csproj ================================================ net10.0 true true false Generated ..\..\build\ ..\..\build\ LocalizedResources.resx True True LocalizedResources.Designer.cs PublicResXFileCodeGenerator <_Parameter1>NosCore.Parser all runtime; build; native; contentfiles; analyzers; buildtransitive ================================================ FILE: src/NosCore.Data/Resource/LocalizedResources.Designer.cs ================================================ //------------------------------------------------------------------------------ // // This code was generated by a tool. // Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //------------------------------------------------------------------------------ namespace NosCore.Data.Resource { using System; /// /// A strongly-typed resource class, for looking up localized strings, etc. /// // This class was auto-generated by the StronglyTypedResourceBuilder // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] public class LocalizedResources { private static global::System.Resources.ResourceManager resourceMan; private static global::System.Globalization.CultureInfo resourceCulture; [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal LocalizedResources() { } /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] public static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("NosCore.Data.Resource.LocalizedResources", typeof(LocalizedResources).Assembly); resourceMan = temp; } return resourceMan; } } /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] public static global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } /// /// Looks up a localized string similar to Account with SessionId {0} has arrived.. /// public static string ACCOUNT_ARRIVED { get { return ResourceManager.GetString("ACCOUNT_ARRIVED", resourceCulture); } } /// /// Looks up a localized string similar to Administrator. /// public static string ADMINISTRATOR { get { return ResourceManager.GetString("ADMINISTRATOR", resourceCulture); } } /// /// Looks up a localized string similar to Already in blacklist!. /// public static string ALREADY_BLACKLISTED { get { return ResourceManager.GetString("ALREADY_BLACKLISTED", resourceCulture); } } /// /// Looks up a localized string similar to Do you wish to bind with this item?. /// public static string ASK_BIND { get { return ResourceManager.GetString("ASK_BIND", resourceCulture); } } /// /// Looks up a localized string similar to At least one of the required files are missing, try again when you have all the required files.. /// public static string AT_LEAST_ONE_FILE_MISSING { get { return ResourceManager.GetString("AT_LEAST_ONE_FILE_MISSING", resourceCulture); } } /// /// Looks up a localized string similar to Auth Error. /// public static string AUTH_ERROR { get { return ResourceManager.GetString("AUTH_ERROR", resourceCulture); } } /// /// Looks up a localized string similar to Incorrect Auth. /// public static string AUTH_INCORRECT { get { return ResourceManager.GetString("AUTH_INCORRECT", resourceCulture); } } /// /// Looks up a localized string similar to Client {0} : {1} authenticated successfully!. /// public static string AUTHENTICATED_SUCCESS { get { return ResourceManager.GetString("AUTHENTICATED_SUCCESS", resourceCulture); } } /// /// Looks up a localized string similar to Bad drop amount.. /// public static string BAD_DROP_AMOUNT { get { return ResourceManager.GetString("BAD_DROP_AMOUNT", resourceCulture); } } /// /// Looks up a localized string similar to Your bank account is full.. /// public static string BANK_FULL { get { return ResourceManager.GetString("BANK_FULL", resourceCulture); } } /// /// Looks up a localized string similar to You can not trade not tradable items!. /// public static string CANNOT_TRADE_NOT_TRADABLE_ITEM { get { return ResourceManager.GetString("CANNOT_TRADE_NOT_TRADABLE_ITEM", resourceCulture); } } /// /// Looks up a localized string similar to You can not change to the same class.. /// public static string CANT_CHANGE_SAME_CLASS { get { return ResourceManager.GetString("CANT_CHANGE_SAME_CLASS", resourceCulture); } } /// /// Looks up a localized string similar to Unable to find this character!. /// public static string CANT_FIND_CHARACTER { get { return ResourceManager.GetString("CANT_FIND_CHARACTER", resourceCulture); } } /// /// Looks up a localized string similar to You can't move an item in the shop !. /// public static string CANT_MOVE_ITEM_IN_SHOP { get { return ResourceManager.GetString("CANT_MOVE_ITEM_IN_SHOP", resourceCulture); } } /// /// Looks up a localized string similar to You can't use any items in the shop.. /// public static string CANT_USE_ITEM_IN_SHOP { get { return ResourceManager.GetString("CANT_USE_ITEM_IN_SHOP", resourceCulture); } } /// /// Looks up a localized string similar to {0} Cards Parsed!. /// public static string CARDS_PARSED { get { return ResourceManager.GetString("CARDS_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to Channel. /// public static string CHANNEL { get { return ResourceManager.GetString("CHANNEL", resourceCulture); } } /// /// Looks up a localized string similar to The channel will exit in brief moments.. /// public static string CHANNEL_WILL_EXIT { get { return ResourceManager.GetString("CHANNEL_WILL_EXIT", resourceCulture); } } /// /// Looks up a localized string similar to Client connected, SessionId: {0}. /// public static string CLIENT_ARRIVED { get { return ResourceManager.GetString("CLIENT_ARRIVED", resourceCulture); } } /// /// Looks up a localized string similar to Client disconnected. ClientId = {0}. /// public static string CLIENT_DISCONNECTED { get { return ResourceManager.GetString("CLIENT_DISCONNECTED", resourceCulture); } } /// /// Looks up a localized string similar to Connection lost.. /// public static string CONNECTION_LOST { get { return ResourceManager.GetString("CONNECTION_LOST", resourceCulture); } } /// /// Looks up a localized string similar to Packet with Header {0} is corrupt or PacketDefinition is invalid. Content: {1}. /// public static string CORRUPT_PACKET { get { return ResourceManager.GetString("CORRUPT_PACKET", resourceCulture); } } /// /// Looks up a localized string similar to Corrupted Keepalive on client {0}. /// public static string CORRUPTED_KEEPALIVE { get { return ResourceManager.GetString("CORRUPTED_KEEPALIVE", resourceCulture); } } /// /// Looks up a localized string similar to Database has been initialized.. /// public static string DATABASE_INITIALIZED { get { return ResourceManager.GetString("DATABASE_INITIALIZED", resourceCulture); } } /// /// Looks up a localized string similar to Database may not be up to date. Please consider updating your database.. /// public static string DATABASE_NOT_UPTODATE { get { return ResourceManager.GetString("DATABASE_NOT_UPTODATE", resourceCulture); } } /// /// Looks up a localized string similar to Parsing done!. /// public static string DONE { get { return ResourceManager.GetString("DONE", resourceCulture); } } /// /// Looks up a localized string similar to There are too many items on this map! Try again later!. /// public static string DROP_MAP_FULL { get { return ResourceManager.GetString("DROP_MAP_FULL", resourceCulture); } } /// /// Looks up a localized string similar to Please enter the directory of files to parse. /// public static string ENTER_PATH { get { return ResourceManager.GetString("ENTER_PATH", resourceCulture); } } /// /// Looks up a localized string similar to Character changed while changing map. Do not abuse Commands. {0}. /// public static string ERROR_CHANGE_MAP { get { return ResourceManager.GetString("ERROR_CHANGE_MAP", resourceCulture); } } /// /// Looks up a localized string similar to Your friend request could not be completed because the user is disconnected.. /// public static string FRIEND_REQUEST_DISCONNECTED { get { return ResourceManager.GetString("FRIEND_REQUEST_DISCONNECTED", resourceCulture); } } /// /// Looks up a localized string similar to Unknown Group request type. /// public static string GROUPREQUESTTYPE_UNKNOWN { get { return ResourceManager.GetString("GROUPREQUESTTYPE_UNKNOWN", resourceCulture); } } /// /// Looks up a localized string similar to Could not found Handler implementation for Packet with Header {0}. /// public static string HANDLER_NOT_FOUND { get { return ResourceManager.GetString("HANDLER_NOT_FOUND", resourceCulture); } } /// /// Looks up a localized string similar to {0} I18N ActDescs Parsed! Region: {1}. /// public static string I18N_ACTDESC_PARSED { get { return ResourceManager.GetString("I18N_ACTDESC_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to {0} I18N BCards Parsed! Region: {1}. /// public static string I18N_BCARD_PARSED { get { return ResourceManager.GetString("I18N_BCARD_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to {0} I18N Cards Parsed! Region: {1}. /// public static string I18N_CARD_PARSED { get { return ResourceManager.GetString("I18N_CARD_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to {0} I18N Items Parsed! Region: {1}. /// public static string I18N_ITEM_PARSED { get { return ResourceManager.GetString("I18N_ITEM_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to {0} I18N MapIdDatas Parsed! Region: {1}. /// public static string I18N_MAPIDDATA_PARSED { get { return ResourceManager.GetString("I18N_MAPIDDATA_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to {0} I18N MapPointDatas Parsed! Region: {1}. /// public static string I18N_MAPPOINTDATA_PARSED { get { return ResourceManager.GetString("I18N_MAPPOINTDATA_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to {0} I18N NpcMonsters Parsed! Region: {1}. /// public static string I18N_MPCMONSTER_PARSED { get { return ResourceManager.GetString("I18N_MPCMONSTER_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to {0} I18N NpcMonsterTalk Parsed! Region: {1}. /// public static string I18N_NPCMONSTERTALK_PARSED { get { return ResourceManager.GetString("I18N_NPCMONSTERTALK_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to {0} I18N Quests Parsed! Region: {1}. /// public static string I18N_QUEST_PARSED { get { return ResourceManager.GetString("I18N_QUEST_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to {0} I18N Skills Parsed! Region: {1}. /// public static string I18N_SKILL_PARSED { get { return ResourceManager.GetString("I18N_SKILL_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to Wrong Id!. /// public static string INVALID_ACCOUNT { get { return ResourceManager.GetString("INVALID_ACCOUNT", resourceCulture); } } /// /// Looks up a localized string similar to You can only exchange tradable items.. /// public static string INVALID_EXCHANGE { get { return ResourceManager.GetString("INVALID_EXCHANGE", resourceCulture); } } /// /// Looks up a localized string similar to Invalid exchange list.. /// public static string INVALID_EXCHANGE_LIST { get { return ResourceManager.GetString("INVALID_EXCHANGE_LIST", resourceCulture); } } /// /// Looks up a localized string similar to Wrong Password!. /// public static string INVALID_PASSWORD { get { return ResourceManager.GetString("INVALID_PASSWORD", resourceCulture); } } /// /// Looks up a localized string similar to Unknown Invite type. /// public static string INVITETYPE_UNKNOWN { get { return ResourceManager.GetString("INVITETYPE_UNKNOWN", resourceCulture); } } /// /// Looks up a localized string similar to {0} Items Loaded!. /// public static string ITEMS_LOADED { get { return ResourceManager.GetString("ITEMS_LOADED", resourceCulture); } } /// /// Looks up a localized string similar to {0} items parsed!. /// public static string ITEMS_PARSED { get { return ResourceManager.GetString("ITEMS_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to Missing language. /// public static string LANGUAGE_MISSING { get { return ResourceManager.GetString("LANGUAGE_MISSING", resourceCulture); } } /// /// Looks up a localized string similar to Loading MapInstances.... /// public static string LOADING_MAPINSTANCES { get { return ResourceManager.GetString("LOADING_MAPINSTANCES", resourceCulture); } } /// /// Looks up a localized string similar to This map does not exist!. /// public static string MAP_DONT_EXIST { get { return ResourceManager.GetString("MAP_DONT_EXIST", resourceCulture); } } /// /// Looks up a localized string similar to {0} MapMonsters Loaded!. /// public static string MAPMONSTERS_LOADED { get { return ResourceManager.GetString("MAPMONSTERS_LOADED", resourceCulture); } } /// /// Looks up a localized string similar to {0} MapNpcs Loaded!. /// public static string MAPNPCS_LOADED { get { return ResourceManager.GetString("MAPNPCS_LOADED", resourceCulture); } } /// /// Looks up a localized string similar to {0} Maps Loaded!. /// public static string MAPS_LOADED { get { return ResourceManager.GetString("MAPS_LOADED", resourceCulture); } } /// /// Looks up a localized string similar to {0} Map Parsed!. /// public static string MAPS_PARSED { get { return ResourceManager.GetString("MAPS_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to {0} MapTypes Parsed!. /// public static string MAPTYPES_PARSED { get { return ResourceManager.GetString("MAPTYPES_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to Ping to master server. /// public static string MASTER_SERVER_PING { get { return ResourceManager.GetString("MASTER_SERVER_PING", resourceCulture); } } /// /// Looks up a localized string similar to Ping to master server failed. /// public static string MASTER_SERVER_PING_FAILED { get { return ResourceManager.GetString("MASTER_SERVER_PING_FAILED", resourceCulture); } } /// /// Looks up a localized string similar to Cannot connect to Master Server! Trying again in {0} seconds.... /// public static string MASTER_SERVER_RETRY { get { return ResourceManager.GetString("MASTER_SERVER_RETRY", resourceCulture); } } /// /// Looks up a localized string similar to {0} MapMonsters Parsed!. /// public static string MONSTERS_PARSED { get { return ResourceManager.GetString("MONSTERS_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to Server need at least nosville MAP to work!. /// public static string NO_MAP { get { return ResourceManager.GetString("NO_MAP", resourceCulture); } } /// /// Looks up a localized string similar to No special properties wearable. /// public static string NO_SPECIAL_PROPERTIES_WEARABLE { get { return ResourceManager.GetString("NO_SPECIAL_PROPERTIES_WEARABLE", resourceCulture); } } /// /// Looks up a localized string similar to You don't have enough gold.. /// public static string NOT_ENOUGH_GOLD { get { return ResourceManager.GetString("NOT_ENOUGH_GOLD", resourceCulture); } } /// /// Looks up a localized string similar to This player is not on your blacklist!. /// public static string NOT_IN_BLACKLIST { get { return ResourceManager.GetString("NOT_IN_BLACKLIST", resourceCulture); } } /// /// Looks up a localized string similar to {0} NpcMonsters Loaded!. /// public static string NPCMONSTERS_LOADED { get { return ResourceManager.GetString("NPCMONSTERS_LOADED", resourceCulture); } } /// /// Looks up a localized string similar to {0} NpcMonster Parsed!. /// public static string NPCMONSTERS_PARSED { get { return ResourceManager.GetString("NPCMONSTERS_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to {0} MapNpcs Parsed!. /// public static string NPCS_PARSED { get { return ResourceManager.GetString("NPCS_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to Packet received without character being set {0}. /// public static string PACKET_USED_WITHOUT_CHARACTER { get { return ResourceManager.GetString("PACKET_USED_WITHOUT_CHARACTER", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse Accounts?. /// public static string PARSE_ACCOUNTS { get { return ResourceManager.GetString("PARSE_ACCOUNTS", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse ALL?. /// public static string PARSE_ALL { get { return ResourceManager.GetString("PARSE_ALL", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse Cards?. /// public static string PARSE_CARDS { get { return ResourceManager.GetString("PARSE_CARDS", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse Drops?. /// public static string PARSE_DROPS { get { return ResourceManager.GetString("PARSE_DROPS", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse I18N datas?. /// public static string PARSE_I18N { get { return ResourceManager.GetString("PARSE_I18N", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse Items?. /// public static string PARSE_ITEMS { get { return ResourceManager.GetString("PARSE_ITEMS", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse MapNpcs?. /// public static string PARSE_MAPNPCS { get { return ResourceManager.GetString("PARSE_MAPNPCS", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse Maps?. /// public static string PARSE_MAPS { get { return ResourceManager.GetString("PARSE_MAPS", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse MapTypes? we suggest using with MapTypeMaps. /// public static string PARSE_MAPTYPES { get { return ResourceManager.GetString("PARSE_MAPTYPES", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse NpcMonsters?. /// public static string PARSE_MONSTERS { get { return ResourceManager.GetString("PARSE_MONSTERS", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse NpcMonsterData?. /// public static string PARSE_NPCMONSTERDATA { get { return ResourceManager.GetString("PARSE_NPCMONSTERDATA", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse Npcs?. /// public static string PARSE_NPCMONSTERS { get { return ResourceManager.GetString("PARSE_NPCMONSTERS", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse Portals?. /// public static string PARSE_PORTALS { get { return ResourceManager.GetString("PARSE_PORTALS", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse Quests?. /// public static string PARSE_QUESTS { get { return ResourceManager.GetString("PARSE_QUESTS", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse Recipes?. /// public static string PARSE_RECIPES { get { return ResourceManager.GetString("PARSE_RECIPES", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse Shopitems?. /// public static string PARSE_SHOPITEMS { get { return ResourceManager.GetString("PARSE_SHOPITEMS", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse Shops?. /// public static string PARSE_SHOPS { get { return ResourceManager.GetString("PARSE_SHOPS", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse Shopskills?. /// public static string PARSE_SHOPSKILLS { get { return ResourceManager.GetString("PARSE_SHOPSKILLS", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse Skills?. /// public static string PARSE_SKILLS { get { return ResourceManager.GetString("PARSE_SKILLS", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse Teleporters?. /// public static string PARSE_TELEPORTERS { get { return ResourceManager.GetString("PARSE_TELEPORTERS", resourceCulture); } } /// /// Looks up a localized string similar to Do you want to parse TimeSpaces?. /// public static string PARSE_TIMESPACES { get { return ResourceManager.GetString("PARSE_TIMESPACES", resourceCulture); } } /// /// Looks up a localized string similar to The {0} player is in store mode.. /// public static string PLAYER_IN_SHOP { get { return ResourceManager.GetString("PLAYER_IN_SHOP", resourceCulture); } } /// /// Looks up a localized string similar to Unknown PocketType. /// public static string POCKETTYPE_UNKNOWN { get { return ResourceManager.GetString("POCKETTYPE_UNKNOWN", resourceCulture); } } /// /// Looks up a localized string similar to {0} Portal Parsed!. /// public static string PORTALS_PARSED { get { return ResourceManager.GetString("PORTALS_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to {0} Quests Parsed!. /// public static string QUESTS_PARSED { get { return ResourceManager.GetString("QUESTS_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to Registered on MasterServer. /// public static string REGISTRED_ON_MASTER { get { return ResourceManager.GetString("REGISTRED_ON_MASTER", resourceCulture); } } /// /// Looks up a localized string similar to Your reputation has changed!. /// public static string REPUTATION_CHANGED { get { return ResourceManager.GetString("REPUTATION_CHANGED", resourceCulture); } } /// /// Looks up a localized string similar to {0} RespawnTypes Parsed!. /// public static string RESPAWNTYPE_PARSED { get { return ResourceManager.GetString("RESPAWNTYPE_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to Save Character failed. SessionId: {SessionId}. /// public static string SAVE_CHARACTER_FAILED { get { return ResourceManager.GetString("SAVE_CHARACTER_FAILED", resourceCulture); } } /// /// Looks up a localized string similar to Saving all data!. /// public static string SAVING_ALL { get { return ResourceManager.GetString("SAVING_ALL", resourceCulture); } } /// /// Looks up a localized string similar to {0} ShopItems Loaded!. /// public static string SHOPITEMS_LOADED { get { return ResourceManager.GetString("SHOPITEMS_LOADED", resourceCulture); } } /// /// Looks up a localized string similar to {0} ShopItems Parsed!. /// public static string SHOPITEMS_PARSED { get { return ResourceManager.GetString("SHOPITEMS_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to {0} Shops Loaded!. /// public static string SHOPS_LOADED { get { return ResourceManager.GetString("SHOPS_LOADED", resourceCulture); } } /// /// Looks up a localized string similar to {0} Shops Parsed!. /// public static string SHOPS_PARSED { get { return ResourceManager.GetString("SHOPS_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to {0} Skills Parsed!. /// public static string SKILLS_PARSED { get { return ResourceManager.GetString("SKILLS_PARSED", resourceCulture); } } /// /// Looks up a localized string similar to You do not have sufficient SP points to transform!. /// public static string SP_NOPOINTS { get { return ResourceManager.GetString("SP_NOPOINTS", resourceCulture); } } /// /// Looks up a localized string similar to Successfully Loaded!. /// public static string SUCCESSFULLY_LOADED { get { return ResourceManager.GetString("SUCCESSFULLY_LOADED", resourceCulture); } } /// /// Looks up a localized string similar to Support. /// public static string SUPPORT { get { return ResourceManager.GetString("SUPPORT", resourceCulture); } } /// /// Looks up a localized string similar to The seller does not have sufficient space to handle your money.. /// public static string TOO_RICH_SELLER { get { return ResourceManager.GetString("TOO_RICH_SELLER", resourceCulture); } } /// /// Looks up a localized string similar to Unable to request the group. /// public static string UNABLE_TO_REQUEST_GROUP { get { return ResourceManager.GetString("UNABLE_TO_REQUEST_GROUP", resourceCulture); } } /// /// Looks up a localized string similar to Unknown Equipment type: {0}. /// public static string UNKNOWN_EQUIPMENTTYPE { get { return ResourceManager.GetString("UNKNOWN_EQUIPMENTTYPE", resourceCulture); } } /// /// Looks up a localized string similar to Unknown PicketType. /// public static string UNKNOWN_PICKERTYPE { get { return ResourceManager.GetString("UNKNOWN_PICKERTYPE", resourceCulture); } } /// /// Looks up a localized string similar to Unknown Reciever type. /// public static string UNKWNOWN_RECEIVERTYPE { get { return ResourceManager.GetString("UNKWNOWN_RECEIVERTYPE", resourceCulture); } } /// /// Looks up a localized string similar to Your gold has been updated successfully!. /// public static string UPDATE_GOLD { get { return ResourceManager.GetString("UPDATE_GOLD", resourceCulture); } } /// /// Looks up a localized string similar to Invalid SP card detected!. /// public static string USE_SP_WITHOUT_SP_ERROR { get { return ResourceManager.GetString("USE_SP_WITHOUT_SP_ERROR", resourceCulture); } } /// /// Looks up a localized string similar to User is not a friend!. /// public static string USER_IS_NOT_A_FRIEND { get { return ResourceManager.GetString("USER_IS_NOT_A_FRIEND", resourceCulture); } } /// /// Looks up a localized string similar to User is not connected. /// public static string USER_NOT_CONNECTED { get { return ResourceManager.GetString("USER_NOT_CONNECTED", resourceCulture); } } /// /// Looks up a localized string similar to The player isn't in exchange.. /// public static string USER_NOT_IN_EXCHANGE { get { return ResourceManager.GetString("USER_NOT_IN_EXCHANGE", resourceCulture); } } /// /// Looks up a localized string similar to VisualEntity does not exist: {0}. /// public static string VISUALENTITY_DOES_NOT_EXIST { get { return ResourceManager.GetString("VISUALENTITY_DOES_NOT_EXIST", resourceCulture); } } /// /// Looks up a localized string similar to Unknown VisualType: {0}. /// public static string VISUALTYPE_UNKNOWN { get { return ResourceManager.GetString("VISUALTYPE_UNKNOWN", resourceCulture); } } } } ================================================ FILE: src/NosCore.Data/Resource/LocalizedResources.cs.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Účet se SessionID {0} se připojil Administrátor Již je na Černé Listině! Chceš spojit tyto položky Nejméně jeden z požadovaných souborů chybí Přihlášení proběhlo úspěšně check Chybné Přihlášení Nesprávné přihlášení Špatné množství k vyhození! Tvůj bankovní účet je plný! Nemůžeš změnit povolání na stejné. Nemůžu najít Postavu! {0} Kart bylo Nahráno Kanál Uživatel se připojil, SessionId: {0} Klient se Odpojil Poškozený KeepAlive vna klientovi {0} Paket s hlavičkou {0} je poškozen nebo definice paketu je neplatná. Obsah: {1} Databáze byla Initializována Databáze nemusí být aktuální. Zvažte aktualizaci Parsování dokončeno Mapa je plná předmětů více jich zde nemůže být! Zadejte složku se soubory, které chcete nahrát Nastala chyba při změně mapy. Nezneužívejte příkazy. {0} Neznámý požadavek na skupinu! Nelze najít Obsluhu implementace pro balíček s hlavičkou {0} {0} I18N ActDescs Nahráno! Region: {1} {0} I18N BCards Nahráno! Region: {1} {0} I18N Cards Nahráno! Region: {1} {0} I18N Item Nahráno! Region: {1} {0} I18N MAPIDDATA Nahráno! Region: {1} {0} I18N MAPPOINTDATA Nahráno! Region: {1} {0} I18N MPCMONSTER Nahráno! Region: {1} {0} I18N NPCMONSTERTALK Nahráno! Region: {1} {0} I18N Úkoly Nahrány! Region: {1} {0} I18N Skilly Nahrány! Region: {1} Neexistující ID Špatné Heslo Neznámý typ pozvánky Předměty načteny! Bylo Nahráno {0} Itemů Chybý jazyk! {0} MAPMONSTERS načteny MAPNPC byla úspěšně nahrána! {0} Mapy Načteny {0} Mapy Nahrány {0} MapType bylo úspěšně nahráno! Mapa neexistuje Znovu připojení k Master Serveru {0} Monstra byla úspěšně nahrána! Není ve vaší černé listině Nebyly nalezeny žádné mapy. K chodu serveru potřebujete minimálně mapu Nosville. Žádné speciální vlastnosti k nošení {0} NpcMonsters Nahrána! {0} NPMonstra byla úspěšně nahrána! {0} NPC byly úspěšně nahrány! Chceš nahrát účty? Chceš nahrát vše? Chceš nahrát Karty? {0} Drop byl úspěšně nahrán! Chceš nahrát I18N Data? Chceš nahrát Itemy? Chceš nahrát MapNPC? Chceš nahrát Mapy? Chceš nahrát MapType? Doporučuji použít s MapTypeMap Chceš nahrát Monstra? Chceš nahrát NPCMonsterData? Chceš nahrát NPCMonsters? Chceš nahrát Portály? Chceš nahrát Úkoly? Chceš nahrát Recepty? Chceš nahrát Itemy v Obchodech? Chceš nahrát Obchody? Chceš nahrát Skilly do Obchodu? Chceš nahrát Skilly? Chceš nahrát Teleporty? Chceš nahrát Časoprostory Chceš nahrát Skripty? Nesnámý PocketType {0} Portály Nahrány Registrováno na Master Serveru check Tvá pověst byla změněna! {0} RespawnType bylo úspěšně nahráno! Ukládání všeho! {0} Útoky byly úspěšně nahrány! Nemáš dostatek SP Bodů pro změnu. Úspeštně načtena! Podpora Obchodník má příliš mnoho zlata pro to aby mohl vzít další od tebe- Nemožné požádat o skupinu Neznámý EquipmentType Neznámý PickerType Neznámý ReceiverType Tvé zlato bylo změněno! Uživatel není Kamarád Uživatel není připojen Neznámý VisualType Neznámý Nepodařilo se odebrat položku z inventáře. Již jste ve výměně. Autentizační API úspěšné. Nepodařilo se smazat položku bazaru. Failed to buy bazaar item. Failed to modify bazaar item. Direct access object detected. Trying old authentication method. {0} Shop Skills loaded. Invalid chunk format. Item not found. {0} Quest Prizes Parsed! {0} Acts Parts Parsed! {0} Scripts Parsed! Quest not found. {0} NPC Monster Talks loaded. {0} Quests loaded. {0} Quest Objectives loaded. {0} Quest Rewards loaded. {0} Scripts loaded. {0} NPC Talks Parsed! Invalid walk checksum. Invalid speed detected. Packet used while in game: {0} Packet used while not on login: {0} Character slot is empty. Character selection failed. Account already connected. Error handling packet. MFA verification incorrect. Database error occurred. Unbound item detected. Připojení PubSub ztraceno, opětovné připojování... PubSub znovu připojen. Připojení PubSub uzavřeno. Připojení PubSub zahájeno. Připojení PubSub zastaveno. Neznámý typ req_info: {0} Neznámý typ vylepšení: {0} ================================================ FILE: src/NosCore.Data/Resource/LocalizedResources.de.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Account mit SessionId {0} ist angekommen. Es wurden {0} Teile des Akts geparsed. Administrator Bereits in der Blacklist. Möchtest du dieses Item an dich binden? Mindestens eine der erforderlichen Dateien fehlen Authentifizierung erfolgreich! check Authentifikation-API erfolgreich Authentifizierungs Fehler Ungültige Authentifizierung Ungültige Abwurfmenge Deine Bank ist voll Dein Item wurde leider nicht gekauft aufgrund eines Fehlers. Dein Item wurde aufgrund eines Fehlers nicht gelöscht. Du kannst ein nicht Tauschbares Item tauschen! Du kannst nicht zur gleichen Klasse wechseln Kann den Charakter nicht finden! Du kannst ein Item im Shop nicht bewegen! Du kannst ein Item nicht im Shop benutzen! {0} Karten geladen! Channel Der Kanal wird gleich schließen. Das Chunkformat ist falsch. Client verbunden, SessionId: {0} Verbindung geschlossen! Verbindung verloren! Beschädigtes Keepalive auf dem Client {0} Paket mit Header {0} ist beschädigt oder besitzt eine ungültige PaketDefinition. Content: {1} Packet with Header {0} is corrupt or PacketDefinition is invalid. Content: {1} Datenbank wurde initialisiert. Datenbank befindet sich nicht auf dem neusten Stand. Direkter Objekt Zugriff erkannt. Laden abgeschlossen! Es befinden sich zu viele Items auf der Karte! Versuch es später nocheinmal! Bitte gib das Verzeichnis mit den Dateien zum laden an. Charakter während des Kartenwechseln geändert. Missbrauche keine Befehle.{0} Deine Freundschaftsanfrage wurde nicht gesendet, da der Spieler nicht Online ist. Unbekannter Gruppeneinladungs Typ {0} insert missing type data Konnte keine Handler implementierung für das Paket mit dem Header {0} finden {0} I18N ActDescs geladen! Region: {1} {0} I18N BCards geladen! Region: {1} {0} I18N Cards geladen! Region: {1} {0} I18N Items geladen! Region: {1} {0} I18N MapIdDatas geladen! Region: {1} {0} I18N MapPointDatas geladen! Region: {1} {0} I18N NpcMonsters geladen! Region: {1} {0} I18N NpcMonsterTalk geladen! Region: {1} {0} I18N Quests geladen! Region: {1} {0} I18N Skills geladen! Region: {1} Falsche ID! Ungültiger Tausch. Ungültige Tausch Liste. Falsches Password! Unbekannter Einladungs typ {0}. insert missing type data {0} Items geladen! {0} items geladen! {0} Item's wurde Verschenkt. Item wurde nicht gefunden! Fehlende Sprache/Übersetzung {0} ! insert missing type data Lade MapInstanzen {0} MapMonsters geladen! {0} MapNpcs geladen! {0} Maps geladen! {0} Map geladen! {0} MapTypes geladen! Die Map existiert nicht! Ping zum Master Server Ping zum Master Server fehlgeschlagen! Keine Verbindung zum MasterServer! Versuche erneut in {0} sekunden... {0} MapMonsters Parsed! Nicht genügend Gold Dieser Spieler ist nicht auf deiner Blacklist. Nutzer ist nicht in der Freundschaftsliste! Server benötigt mindestens die nosville Karte um zu funktionieren! Keine tragbare spezielle Eigenschaften {0} NpcMonsters geladen! {0} NpcMonster geladen! {0} MapNpcs geladen! Packet erhalten ohne dass ein Charakter gesetzt ist {0} Packet received without character being set {0} Möchtest du die Accounts laden? Möchtest du alles laden? Möchtest du die Karten laden? Möchtest du die Belohnungen laden? Möchtest du die I18N Daten laden? Möchtest du die Items laden? Möchtest du die MapNpc's laden? Möchtest du die Map laden? Möchtest du die MapTypen laden? Wir empfehlen MapTypeMaps zu verwenden. Do you want to parse MapTypes? we suggest using with MapTypeMaps Möchtest du die NpcMonster laden? Möchtest du die NpcMonsterDaten laden? Möchtest du die Npc's laden? Möchtest du die Portale laden? Möchtest du die Missionen laden? Möchtest du die Rezepte laden? Möchtest du die ShopsItems laden? Möchtest du die Shops laden? Möchtest du die ShopSkills laden? Möchtest du die Skills laden? Möchtest du die Teleporter laden? Möchtest du die TimeSpaces laden? Möchtest du die Skripte laden? {0} befindet sich im Shop. Unbekannter PocketTyp {0} Portale geladen! {0} Quests wurden geparsed. Es wurden {0} Quest Preise geparsed. Angemeldet auf MasterServer check Dein Ruf hat sich geändert! {0} RespawnTypes geladen! Speichere alle Dateien! {0} ShopItems geladen! {0} ShopItems geparsed! Es wurden {0} Shopskills geladen. {0} Shops geladen! {0} Shops geparsed! {0} Skills geladen! Servernachricht Du hast nicht genügend SP Punkte um dich zu verwandeln! Erfolgreich geladen! Supporter Der Verkäufer besitzt zu viel Gold! Alte Authentikation versuchen Das Entfernen ist fehlgeschlagen. Die Gruppe kann nicht erriecht werden Unbekannt check Unbekannter Ausrüstungs typ: {0} Unbekannter PicketTyp Unbekannter Empfänger typ: {0} insert missing type data Dein Gold wurde erfolgreich geändert! Benutzer ist kein Freund! Benutzer ist nicht verbunden! Benutzer ist nicht am tauschen! Ungültige SP Karte entdeckt! VisualEntity existiert nicht: {0} Unbekannter VisualType: {0} PubSub-Verbindung verloren, Wiederverbindung... PubSub wiederverbunden. PubSub-Verbindung geschlossen. PubSub-Verbindung gestartet. PubSub-Verbindung beendet. Nicht behandelter req_info Typ: {0} Unbekannter Aufrüstungstyp: {0} ================================================ FILE: src/NosCore.Data/Resource/LocalizedResources.es.resx ================================================ text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Cuenta con SessionId {0} ha llegado. Administrador Ya está en lista negra. ¿Deseas vincular este objeto? Al menos uno de los archivos necesarios no esta presente. ¡Autentificado exitoso! Error de autentificación. Autentificación incorrecta. La cantidad de items soltados es erronea. No puedes cambiarte a la misma clase. ¡No se ha podido encontrar a este personaje! ¡{0} Cards (Tarjetas de Especialista/SP) Analizadas! Canal El canal se cerrará en breves momentos. Cliente ha llegado con SessionId = {0} Conexión cerrada. Conexión perdida. "KeepAlive" corrupto en el cliente: {0} Paquete con "cabezera" (Handler) {0} es corrupto o "la definición del paquete" (PaketDefinition) es invalida. Contenido: {1} La base de datos ha sido inicializada. La base de datos puede ser que no este actualizada. Por favor, considere actualizarla. ¡Análisis terminado! ¡Hay demasiados objetos en este mapa! Intentelo de nuevo más tarde. Por favor, introduzca el directorio de los archivos para comenzar el análisis. El personaje cambio mientras se estaba cambiando el mapa. No abuse de los comandos. {0} GroupRequestType desconocida insert missing type data No se pudo encontrar la implementación del "controlador" (Handler) para el paquete con cabezera: {0} ¡{0} I18N ActDescs Analizadas! Región: {1} ¡{0} I18N BCards Analizadas! Región: {1} ¡{0} I18N Cards (Tarjetas de Especialista/SP) Analizadas! Región: {1} ¡{0} I18N Items Analizadas! Región: {1} ¡{0} I18N MapIdDatas (Datos de las Ids de los Mapas) Analizadas! Región: {1} ¡{0} I18N MapPointDatas (Datos de los puntos del mapa) Analizadas! Región: {1} ¡{0} I18N NpcMonsters (NPCs Monstruos) Analizadas! Región: {1} ¡{0} I18N NpcMonsterTalk (Monólogos de los NPCs Monstruos) Analizadas! Región: {1} ¡{0} I18N Quests (Misiones) Analizadas! Región: {1} ¡{0} I18N Skills (Habilidades) Analizadas! Región: {1} ¡Id incorrecta! ¡Contraseña incorrecta! InviteType desconocida insert missing type data ¡{0} Items Cargados! ¡{0} Items Analizados! Lenguaje faltante insert missing type data ¡{0} MapMonsters (Monstruos de los Mapas) Cargados! ¡{0} MapNpcs (NPCs de los Mapas) Cargados! ¡{0} Maps (Mapas) Cargados! ¡{0} Maps (Mapas) Analizados! ¡{0} MapTypes (Tipos de Mapas) Analizados! ¡Este mapa no existe! Comprobando el estado del Servidor Maestro... ¡No se obtuvo respuesta del Servidor Maestro! ¡No se pudo conectar al Servidor Maestro! Reintentando en {0} segundos... ¡{0} MapMonsters (Monstruos de los Mapas) Analizados! ¡Este jugador no está en tu lista negra! ¡El servidor necesita al menos el Mapa (MAP) de Nosville para funcionar! Ningunas propiedades especiales equipables. {0} NpcMonsters Cargados! ¡{0} NpcMonster (NPCs Monstruos) Analizados! ¡{0} MapNpcs (NPCs de los Mapas) Analizados! ¿Quieres analizar las Cuentas? ¿Quieres analizarlo TODO? ¿Quieres analizar las Tarjetas de Especialista (Cards/SP)? ¿Quieres analizar los Objetos del suelo (Drops)? ¿Quieres analizar los Datos del I18N? ¿Quieres analizar los Items? ¿Quieres analizar los NPCs de los Mapas (MapNPCs)? ¿Quieres analizar los Mapas? ¿Quieres analizar los Tipos de Mapas (MapTypes)? (Recomendamos utilizar con MapTypeMaps) ¿Quieres analizar los Monstruos? ¿Quieres analizar los Datos de los NPCs Monstruos (NPCMonsterData)? ¿Quieres analizar los NPCs Monstruos (NPCsMonsters)? ¿Quieres analizar los Portales? ¿Quieres analizar las Misiones? ¿Quieres analizar las Recetas? ¿Quieres analizar las Tiendas de Items (ShopItems)? ¿Quieres analizar las Tiendas? ¿Quieres analizar las Tiendas de Habilidades (ShopSkills)? ¿Quieres analizar los Habilidades? ¿Quieres analizar los Teletransportadores? ¿Quieres analizar los TimeSpaces? ¿Quieres analizar los Scripts? PocketType desconocido ¡{0} Portales Analizados! Registrado en el Servidor Maestro. ¡Tu reptuación ha cambiado! ¡{0} RespawnTypes Analizados! ¡Guardando todos los datos! ¡{0} ShopItems Cargados! ¡{0} ShopItems Analizados! ¡{0} Shops Cargadas! ¡{0} Shops Analizadas! ¡{0} Skills Analizadas! ¡No tienes suficientes puntos de SP para transformarte! ¡Cargado exitosamente! El vendedor no tiene suficiente espacio para recibir tus oros. Incapaz de enviar la petición de grupo. EquipmentType desconocido: {0} PicketType desconocido ReceiverType desconocido insert missing type data ¡El usuario no es un amigo! ¡El usuario no está conectado! ¡Tarjeta SP invalida detectada! VisualEntity no existe: {0} VisualType desconocido: {0} Desconocido Conexión PubSub perdida, reconectando... PubSub reconectado. Conexión PubSub cerrada. Conexión PubSub iniciada. Conexión PubSub detenida. Tipo req_info no manejado: {0} Tipo de mejora no manejado: {0} ================================================ FILE: src/NosCore.Data/Resource/LocalizedResources.fr.resx ================================================ text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Au moins un fichier est manquant. Vérifiez que tout soit bien présent. {0} Cartes analysées ! La base de données a été initialisée ! L'analyse des fichiers est terminée ! Entre le répertoire des fichiers pour commencer l'importation {0} Objets ont été analysés avec succès ! Vous-vous analyser les comptes ? Voulez-vous tout analyser ? Voulez-vous analysé les Bcard ? Voulez-vous analyser les objets ? Voulez-vous analyser les cartes-pnj ? Voulez-vous analyser les cartes ? Voulez-vous anlysez les types de cartes ? Voulez-vous analyser les monstres ? Voulez-vous analyser NpcMonsterData ? Voulez-vous analyser les pnj ? Voulez-vous analyser les portails ? Voulez-vous analyser les quêtes ? Voulez-vous analyser les recettes ? Voulez-vous analyser les magasins d'objets ? Voulez-vous analyser les magasins ? Voulez-vous analyser les magasins de compétences ? Voulez-vous analyser les compétences ? Voulez-vous analyser les téléporteurs ? Voulez-vous analyser les espaces temps ? Voulez-vous analyser les scripts ? L'émulateur a bien été chargé. Enregistré sur MasterServer. Authentification avec succès. La base de données n'est pas à jour. Client déconnecté. Erreur lors d'un passage à une map. Authentification incorrecte. Erreur d'authentification. Client arrivé. Keepalive corrompu. Mot de passe invalide. Identifiant invalide. Tentative de reconnexion au serveur master dans {0} secondes. Aucune Map n'a été trouvée. Les monstres ont été chargés avec succès ! Le compte {0} s'est connecté. Gestionnaire introuvable. Les maps ont été chargées avec succès ! Paquet corrompu. {0} i18n ActDesc parser. Region : {1} {0} i18n BCards parser. Region : {1} {0} i18n cartes parser. Region : {1} {0} i18n items parser. Region : {1} {0} i18n MapIdData parser. Region : {1} {0} i18n MapPointData parser. Region : {1} {0} i18n NpcMonster parser. Region : {1} {0} i18n NpcMonsterTalk parser. Region : {1} {0} i18n quêtes parser. Region : {1} {0} i18n skills parser. Region : {1} {0} Maps ont été analysées avec succès ! Voulez-vous importer i18n ? {0} Portails ont été analysés avec succès ! Support {0} MapsType ont été analysées avec succès ! {0} Monstres ont été analysés avec succès ! {0} MonsterPNJ ont été analysés avec succès ! {0} PNJ ont été analysés avec succès ! {0} Drops ont été analysés avec succès ! {0} RespawnType ont été analysés avec succès ! {0} Sorts ont été analysés ! Administrateur Canal Les PNJ ont été chargés avec succès ! Valeur d'objet incorrect. Impossible de trouver ce personnage. Impossible de jeter, il y a trop d'objet au sol. Les objets ont été chargés avec succès ! Pas présent dans votre liste noire. Sauvegarde de toutes les données ! Le joueur est déjà dans ta liste noire. La carte selectionnée n'existe pas. {0} PNJ chargés. Type d'inventaire non reconnu. Le joueur ne peut pas être invité en groupe. La méthode de ramassage est inconnue. L'utilisateur n'est pas dans ta liste d'ami. Type de groupe Type d'invitation inconnue. Pack de langue manquant Pas de propriété speciale sur l'équipement. Type d'équipement inconnu. Type de destinataire inconnu. Type Visuel inconnu. Fermeture du serveur dans {0} secondes. La connexion au serveur a été perdue. Ping vers le master server. Ping échoué, aucune réponse du serveur master. Désirez vous lier cet item à votre personnage ? Vous avez déjà changé de classe, vous ne pouvez donc plus le refaire. Votre réputation a changée. {0} ShopItem chargés. {0} ShopItems parsés. {0} Shops chargés. {0} Shops parsés. Impossible de porter la SP, car vous n'avez plus de points. Impossible d'acheter l'objet car le propiétaire ne peut pas collecter tout l'or. Une carte SP invalide a été détéctée. la visualentity n'existe pas. Ton compte en banque est déjà remplit. Vous ne pouvez pas échanger des objets liés a votre compte. Impossible de mettre l'objet dans le magasin car il est non échangeable Tu ne peux pas utiliser d'objet dans la boutique. Impossible de conclure l'échange, il esciste des objets invendable dans l'échange. Liste d'échange invalide. Pas assez d'or pour acheter cet objet. Le joueur {0} est en mode magasin privé. L'échange {0} contenant {1} à échoué. La quantité d'or en inventaire a été mise à jour. {0} a annulé l'échange. Ta demande d'ami n'a pu être aboutie car l'utilisateur est déconnecté. Chargement des instances de cartes. Paquet reçu sans que le caractère ne soit spécifié {0}. Ce joueur n'est pas connecté. Autorisation d'API réussie. Erreur d'achat dans le NosBazaar. Erreur lors de la suppression de NosBazaar. Erreur lors du changement de lot dans le NosBazaar. Format de bloc invalide. Un accès direct à l'objet a été détecté: {0} - {1}. Cadeaux envoyés: {0} pcs. L'utilisateur n'est pas dans la liste d'amis. {0} ShopSkills chargés ! Essayez d'utiliser l'ancienne méthode d'autorisation {0}. Inconnu Connexion PubSub perdue, reconnexion... PubSub reconnecté. Connexion PubSub fermée. Connexion PubSub démarrée. Connexion PubSub arrêtée. Type req_info non géré: {0} Type d'amélioration non géré: {0} ================================================ FILE: src/NosCore.Data/Resource/LocalizedResources.it.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 L'account con il SessionId {0} ha loggato. {0} Parti degli atti aggiunti ! Amministratore Già nella lista nera! Vuoi usare questo oggetto? Non potrai più commerciarlo Manca almeno un file richiesto Autentificazione avvennuta con successo! Autorizzazione API riuscita. Auth Error Auth non corretto Quantità di drop errata. Il tuo conto corrente è pieno. Errore durante l'acquisto nel NosBazaar. Errore durante la rimozione nel NosBazaar. Errore durante la modifica nel NosBazaar. Non puoi commerciare questo oggetto! Hai già questa classe, non puoi cambiare. Impossibile trovare questo personaggio! Non puoi muovere gli oggetto! Non puoi usare nessun oggetto nella bottega. {0} Bcard Sincronizzate! Canale Il canale chiuderà per un momento breve. Formato blocco non valido. Client connesso, SessionId: {0} Client disconesso. Connessione persa. Keepalive corrotto nel client {0} Il pacchetto con l'intestazione {0} è danneggiato o PacketDefinition non è valido. Contenuto: {1} Il Database è stato avviato! Il database non sembra aggiornato. Per favore considera di aggiornare il tuo database. È stato rilevato l'accesso diretto all'oggetto: {0} - {1}. Parsing Completato! Ci sono troppi oggetti in mappa! Prova più tardi Immetti la directory dei file da sincronizzare Personaggio cambiato durante la modifica della mappa. Non abusare dei comandi. Non è stato possibile trovare il giocatore online. Richiesta annullata Tipo di richiesta gruppo sconosciuto insert missing type data Non si può gestire il pacchetto con Intestazione: {0} {0} I18N ActDescs Sincronizzati! Regione: {1} {0} I18N BCards Sincronizzate! Regione: {1} {0} I18N Cards Sincronizzate! Regione: {1} {0} I18N Items Sincronizzati! Regione: {1} {0} I18N MapIdDatas Sincronizzati! Regione: {1} {0} I18N MapPointDatas Sincronizzati! Regione: {1} {0} I18N NpcMonsters Sincronizzati! Regione: {1} {0} I18N NpcMonsterTalk Sincronizzati! Regione: {1} {0} I18N Quests Sincronizzate! Regione: {1} {0} I18N Skills Sincronizzate! Regione: {1} L'ID è errato! Non puoi commerciare questo oggetto. Commercio non valido. la password è errata! Tipo di invito sconosciuto insert missing type data {0} Item caricati. {0} Items sincronizzati! Hai invitato {0} item. Non è stato trovato alcun item. Lingua mancante insert missing type data Caricamento MapInstances... {0} MappeMostri caricate! {0} MapNpcs caricati. {0} Mappe caricate. {0} Mappe Sincronizzate! {0} MapTypes Sincronizzati! Questa mappa non esiste! Ping a MasterServer Ping a MasterServer fallito Impossibile connettersi al MasterServer! Provando ancora tra {0} secondi... {0} MapMonsters Sincronizzati! Non hai abbastanza oro. Questo giocatore non è nella tua lista nera! L'utente non è nella lista degli amici. Il server ha bisogno almeno della mappa di NosVille per poter funzionare! Nessuna proprietà speciale indossabile {0} Dialoghi deigli NpcMonster caricati ! {0} NpcMonsters Caricati. {0} NpcMonster Sincronizzati! {0} MapNpcs Sincronizzati! {0} Dialoghi degli NpcMonster caricati ! Packet received without character being set {0} Vuoi sincronizzare gli Account? Vuoi sincronizzare TUTTO? Vuoi sincronizzare le Bcard? Vuoi sincronizzare i Drops? Vuoi sincronizzare i dati I18N? Vuoi sincronizzare gli Items? Vuoi sincronizzare gli NPC nella Mappa? Vuoi sincronizzare le Mappe? Vuoi sincronizzare i Tipi-Mappe delle mappe? Vuoi sincronizzare le entità Mostri? Vuoi sincronizzare i dati delle entità Npc-Mostri? Vuoi sinronizzare le entità Npc? Vuoi sincronizzare Portals? Vuoi sincronizzare le Quest? Vuoi sincronizzare le Ricette? Vuoi aggiungere gli scripts? Vuoi sincronizzare ShopItems? Vuoi sincronizzare Shops? Vuoi sincronizzare ShopSkills? Vuoi sincronizzare le Skills? Vuoi sincronizzare i Teleporters? Vuoi sincronizzare TimeSpaces? The {0} player is in store mode. PocketType sconosciuto insert missing type data {0} Portali Sincronizzati! {0} Obbiettivi delle Quest caricati ! {0} Ricompense delle Quest caricate ! {0} Quest caricate ! {0} Quests sincronizzate! Impossibile trovare la Quest. {0} Premi delle Quest aggiunti ! Registrato sul MasterServer revisionare La reputazione è cambiata! {0} RespawnTypes Caricati! Sto salvando i dati! {0} Script caricati ! {0} Script aggiunti ! {0} ShopItems caricati! {0} ShopItems caricati! {0} ShopSkills caricate ! {0} Shops caricati! {0} Shops caricati! {0} Skills Sincronizzate! Altoparlante Non hai abbastanza punti SP per trasformarti! Caricato con successo! Supporter Il negoziante non ha abbastanza spazio per ricevere il tuo oro. Ha provato ad utilizzare il vecchio metodo di autorizzazione {0}. Lo scambio {0} contenente {1} non è riuscito. Impossibile richiedere il gruppo Sconosciuto Tipo di equipaggiamento sconosciuto: {0} PicketType sconosciuto insert missing type data Tipo di destinatario sconosciuto insert missing type data Il tuo oro è stato aggiornato con successo! L'utente non è un amico! L'utente non è connesso L'utente non sta commerciando. Specialista non valido trovato! VisualEntity non esiste: {0} VisualType sconosciuto: {0} Connessione PubSub persa, riconnessione... PubSub riconnesso. Connessione PubSub chiusa. Connessione PubSub avviata. Connessione PubSub arrestata. Tipo req_info non gestito: {0} Tipo di potenziamento non gestito: {0} ================================================ FILE: src/NosCore.Data/Resource/LocalizedResources.pl.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Połączono konto z SessionId {0}. Administrator Już na czarnej liście! Czy chcesz powiązać z tym przedmiotem? Brakuje co najmniej jednego z wymaganych plików, spróbuj ponownie, gdy masz wszystkie wymagane pliki. Klient: {1} pomyślnie uwierzytelnienio! Błąd: Auth Niepoprawne uwierzytelnienie. Zła ilość do wyrzucenia. Nie możesz zmienić na tę samą klasę. Nie można znaleźć tej postaci! Wprowadzono: {0} Cards! Kanał Kanał zamknie się w krótkim czasie. Klient podłączony. SessionId: {0} Klient rozłączony. ClientId = {0} Utracono połączenie Uszkodzone Keepalive na kliencie: {0} Pakiet z Header {0} jest uszkodzony lub PacketDefinition jest nieprawidłowy. Zawartość: {1} Baza danych została zainicjowana. Baza danych może nie być aktualna. Rozważ aktualizację bazy danych. Gotowe! Na mapie jest zbyt wiele przedmiotów! Spróbuj ponownie później! Wprowadź katalog plików do wprowadzenia: Postać zmieniona podczas zmiany mapy. Nie nadużywaj poleceń. {0} Typ nieznanego żądania grupy Nie można znaleźć Handler wdrożenie dla Packet z Header {0} {0} I18N ActDescs wprowadzono! Region: {1} {0} I18N BCards wprowadzono! Region: {1} {0} I18N Cards wprowadzono! Region: {1} {0} I18N Items wprowadzono! Region: {1} {0} I18N MapIdDatas wprowadzono! Region: {1} {0} I18N MapPointDatas wprowadzono! Region: {1} {0} I18N NpcMonsters wprowadzono! Region: {1} {0} I18N NpcMonsterTalk wprowadzono! Region: {1} {0} I18N Quests wprowadzono! Region: {1} {0} I18N Skills wprowadzono! Region: {1} Niepoprawna nazwa konta Niepoprawne hasło! Nieznany typ zaproszenia Załadowano: {0} Items! {0} items wprowadzono! Brakujący język Załadowano: {0} MapMonsters! Załadowano: {0} MapNpc! Załadowano: {0} Map! {0} Map wprowadzono! {0} MapTypes wprowadzono! Ta mapa nie istnieje! Ping do Master Server Ping do Master Server nie powiodło się Nie można połączyć się z serwerem głównym! Ponowna próba za {0} sekund... {0} MapMonsters wprowadzono! Ten gracz nie jest na Twojej czarnej liście! Serwer potrzebuje przynajmniej mapy NosVille do poprawnego działania! Brak specjalnych właściwości do noszenia Załadowano: {0} NpcMonsters! {0} NpcMonster wprowadzono! {0} MapNpcs wprowadzono! Czy chcesz wprowadzić wszystkie konta? Czy chcesz wprowadzić wszystko? Czy chcesz wprowadzić Cards? Czy chcesz wprowadzić Drops? Czy chcesz wprowadzić dane I18N? Czy chcesz wprowadzić Items? Czy chcesz wprowadzić MapNpcs? Czy chcesz wprowadzić Maps? Czy chcesz wprowadzić MapTypes? Sugerujemy użyć: MapTypeMaps Czy chcesz wprowadzić NpcMonsters? Czy chcesz wprowadzić NpcMonsterData? Czy chcesz wprowadzić Npcs? Czy chcesz wprowadzić Portals? Czy chcesz wprowadzić Quests? Czy chcesz wprowadzić Recipes? Czy chcesz wprowadzić Shopitems? Czy chcesz wprowadzić Shops? Czy chcesz wprowadzić Shopskills? Czy chcesz wprowadzić Skills? Czy chcesz wprowadzić Teleporters? Czy chcesz wprowadzić TimeSpaces? Czy chcesz wprowadzić Scripts? Nieznany PocketType {0} Portal wprowadzono! Zarejestrowano na MasterServer Your reputation została zmieniona! {0} RespawnTypes wprowadzono! Zapisywanie wszystkich danych! Załadowano: {0} ShopItems! {0} ShopItems wprowadzono! Załadowano: {0} Shops! {0} Shops wprowadzono! {0} Skills wprowadzono! Nie masz wystarczającej liczby punktów SP do transformacji! Pomyślnie załadowano! Sprzedający nie ma wystarczającej ilości miejsca do trzymania Twoich pieniędzy. Nie można zażądać grupy Nieznany Equipment type: {0} Nieznany PicketType Nieznany Reciever type Wykryto nieprawidłową Kartę Specjalisty! Użytkownik nie jest przyjacielem! Użytkownik nie jest podłączony VisualEntity nie istnieje: {0} Nieznany VisualType: {0} Nie możesz handlować przedmiotami, których nie można handlować! Ładowanie MapInstances... Wsparcie Twoje złoto zostało pomyślnie zaktualizowane! Odebrano pakiet bez postaci: {0} Nieznany Nie udało się usunąć przedmiotu z ekwipunku. Już jesteś w wymianie. Pomyślna autoryzacja API. Nie udało się usunąć przedmiotu z bazaru. Połączenie PubSub utracone, ponowne łączenie... PubSub ponownie połączony. Połączenie PubSub zamknięte. Połączenie PubSub uruchomione. Połączenie PubSub zatrzymane. Nieobsługiwany typ req_info: {0} Nieobsługiwany typ ulepszenia: {0} ================================================ FILE: src/NosCore.Data/Resource/LocalizedResources.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Account with SessionId {0} has arrived. Administrator Already in blacklist! Do you wish to bind with this item? At least one of the required files are missing, try again when you have all the required files. Client {0} : {1} authenticated successfully! check Auth Error Incorrect Auth Bad drop amount. You can not change to the same class. Unable to find this character! {0} Cards Parsed! Channel The channel will exit in brief moments. Client connected, SessionId: {0} Client disconnected. ClientId = {0} Connection lost. Corrupted Keepalive on client {0} Packet with Header {0} is corrupt or PacketDefinition is invalid. Content: {1} Database has been initialized. Database may not be up to date. Please consider updating your database. Parsing done! There are too many items on this map! Try again later! Please enter the directory of files to parse Character changed while changing map. Do not abuse Commands. {0} Unknown Group request type insert missing type data Could not found Handler implementation for Packet with Header {0} {0} I18N ActDescs Parsed! Region: {1} {0} I18N BCards Parsed! Region: {1} {0} I18N Cards Parsed! Region: {1} {0} I18N Items Parsed! Region: {1} {0} I18N MapIdDatas Parsed! Region: {1} {0} I18N MapPointDatas Parsed! Region: {1} {0} I18N NpcMonsters Parsed! Region: {1} {0} I18N NpcMonsterTalk Parsed! Region: {1} {0} I18N Quests Parsed! Region: {1} {0} I18N Skills Parsed! Region: {1} Wrong Id! Wrong Password! Unknown Invite type insert missing type data {0} Items Loaded! {0} items parsed! Missing language insert missing type data {0} MapMonsters Loaded! {0} MapNpcs Loaded! {0} Maps Loaded! {0} Map Parsed! {0} MapTypes Parsed! This map does not exist! Ping to master server Ping to master server failed Cannot connect to Master Server! Trying again in {0} seconds... {0} MapMonsters Parsed! This player is not on your blacklist! Server need at least nosville MAP to work! No special properties wearable {0} NpcMonsters Loaded! {0} NpcMonster Parsed! {0} MapNpcs Parsed! Do you want to parse Accounts? Do you want to parse ALL? Do you want to parse Cards? Do you want to parse Drops? Do you want to parse I18N datas? Do you want to parse Items? Do you want to parse MapNpcs? Do you want to parse Maps? Do you want to parse MapTypes? we suggest using with MapTypeMaps Do you want to parse NpcMonsters? Do you want to parse NpcMonsterData? Do you want to parse Npcs? Do you want to parse Portals? Do you want to parse Quests? Do you want to parse Recipes? Do you want to parse Shopitems? Do you want to parse Shops? Do you want to parse Shopskills? Do you want to parse Skills? Do you want to parse Teleporters? Do you want to parse TimeSpaces? Do you want to parse Scripts? Unknown PocketType {0} Portal Parsed! Registered on MasterServer check Your reputation has changed! {0} RespawnTypes Parsed! Saving all data! {0} ShopItems Loaded! {0} ShopItems Parsed! {0} Shops Loaded! {0} Shops Parsed! {0} Skills Parsed! You do not have sufficient SP points to transform! Successfully Loaded! The seller does not have sufficient space to handle your money. Unable to request the group Unknown Equipment type: {0} Unknown PicketType Unknown Reciever type insert missing type data Invalid SP card detected! User is not a friend! User is not connected VisualEntity does not exist: {0} Unknown VisualType: {0} You can not trade not tradable items! Check Loading MapInstances... Support Your gold has been updated successfully! Packet received without character being set {0} Your bank account is full. You can't move an item in the shop ! You can't use any items in the shop. Your friend request could not be completed because the user is disconnected. You can only exchange tradable items. Invalid exchange list. You don't have enough gold. The {0} player is in store mode. The player isn't in exchange. {0} Quests Parsed! Save Character failed. SessionId: {SessionId} Unknown Failed to remove item from inventory. You are already in an exchange. Authentication API succeeded. Failed to delete bazaar item. Failed to buy bazaar item. Failed to modify bazaar item. Direct access object detected. Trying old authentication method. {0} Shop Skills loaded. Invalid chunk format. Item not found. {0} Quest Prizes Parsed! {0} Acts Parts Parsed! {0} Scripts Parsed! Quest not found. {0} NPC Monster Talks loaded. {0} Quests loaded. {0} Quest Objectives loaded. {0} Quest Rewards loaded. {0} Scripts loaded. {0} NPC Talks Parsed! Invalid walk checksum. Invalid speed detected. Packet used while in game: {0} Packet used while not on login: {0} Character slot is empty. Character selection failed. Account already connected. Error handling packet. MFA verification incorrect. Database error occurred. Unbound item detected. PubSub connection lost, reconnecting... PubSub reconnected. PubSub connection closed. PubSub connection started. PubSub connection stopped. Unhandled req_info type: {0} Unhandled upgrade type: {0} ================================================ FILE: src/NosCore.Data/Resource/LocalizedResources.ru.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Аккаунт с SessionId {0} подключен. Импортировано {0} частей актов. Администратор Уже в черном списке! Ты хочешь привязать этот предмет? О чем идет речь? Пока не ясно. Уточним. Как минимум один обязательный файл отсутствует. Попробуйте ещё раз, когда у вас будут все необходимые файлы. Пользователь {1} успешно авторизован! check Успешная авторизация API. Ошибка авторизации Некорректная авторизация Возможно, необходимо перефразировать (maybe need to check context) Неверное количество дропа. Перефразировать обязательно Ваш банковский счет переполнен Не заполнен, а ... Ошибка покупки в НосБазаре. Ошибка удаления из НосБазара. Ошибка изменения лота в НосБазаре. Ты не можешь обменяться предметом, который запрещен к обмену! Необходимо протестировать контекст в игре Нельзя изменить класс на текущий! Невозможно найти этого персонажа! Ты не можешь перемещать предмет который выставлен на продажу! Нужно уточнение Ты не можешь воспользоваться предметом который выставлен на продажу! Импортировано {0} карт специалиста! Канал Работа канала скоро будет завершена. Клиент прибыл на сервер, SessionId: {0} Проверить контекст, возможно, нужно использователь "Пользователь" Клиент отключился. ClientId = {0} Проверить контекст, возможно, нужно использователь "Пользователь" Соединение потеряно. Поврежденный пакет Keepalive на клиенте {0} Пакет с заголовком {0} поврежден либо PacketDefinition неверен. Контент: {1} База данных инициализирована. База данных могла устареть. Пожалуйста, проверьте обновления для БД. Обнаружен прямой доступ к объекту: {0} - {1} Импорт файлов завершен! Слишком много предметов на локации! Пожалуйста, попробуйте позже! Пожалуйста, введите адрес директории с файлами для импорта Персонаж изменен во время перехода на карту. Не злоупотребляйте командами. {0} Запрос в друзья не может быть отправлен, так как игрок вышел из игры. Неизвестный тип запроса группы insert missing type data / какой-то корявый перевод Не удается найти реализацию обработчика для пакета с заголовком {0} Импортировано {0} I18N ActDescs! Регион: {1} Пока не уверен, что именно в данном контексте подразумевается под "регионом". Импортировано {0} I18N BCards! Регион: {1} Импортировано {0} I18N Cards! Регион: {1} Импортировано {0} I18N Items! Регион: {1} Импортировано {0} I18N MapIdDatas! Регион: {1} Импортировано {0} I18N MapPointDatas! Регион: {1} Импортировано {0} I18N NpcMonsters! Регион: {1} Импортировано {0} I18N NpcMonsterTalk! Регион: {1} Импортировано {0} I18N Quests! Регион: {1} Импортировано {0} I18N Skills! Регион: {1} Неверный ID! Некорректный обмен. Некорректный список обмена. Неверный пароль! Неизвестный тип приглашения insert missing type data Загружено {0} предметов! Импортировано {0} предметов! Подарков отправлено: {0} шт. Предмет не найден {0} {1} Перевод отсутствует insert missing type data Загрузка MapInstances... Загружено {0} MapMonsters! Загружено {0} MapNpcs! Загружено {0} Maps! Загружено {0} Map! Загружено {0} MapTypes! Локация не существует! Отправляем пинг-запрос на Master сервер "Пингуем" звучит отвратно. Не удалось получить ответ на пинг Master сервера Не удалось подключиться к Master серверу! Повторная попытка через {0} секунд... Импортировано {0} MapMonsters! Недостаточно золота. Игрок уже удален из Черного Списка. Игрок не является твоим другом. Для работы сервера необходимо установить хотя бы карту НосВилля. SP пригодные к экипировке отсутствуют Что-то невнятное. Надо уточнить о чем вообще идет речь. Загружено {0} NpcMonsters! Загружено {0} NpcMonster! Импортировано {0} MapNpcs! Пакет получен без выбранного персонажа {0} Импортировать аккаунты? Импортировать все? Импортировать карты специалистов? Импортировать Drops? Импортировать I18N? Импортировать предметы? Импортировать MapNpcs? Импортировать локации? Импортировать MapTypes? Рекомендовано использование с MapTypeMaps Импортировать NpcMonsters? Импортировать NpcMonsterData? Импортировать НПС? Импортировать порталы? Импортировать квесты? Импортировать рецепты? Импортировать товары? Импортировать магазины? Импортировать Shopskills? Импортировать навыки? Импортировать телепорты? Импортировать пространственно-временные порталы? Импортировать скрипты? {0} в магазине. Неизвестный PocketType Импортировано {0} Portal! Импортировано {0} квест(ов). Импортировано {0} квестовых наград. Зарегистрирован на Master сервере check Твоя репутация изменилась! Импортировано {0} RespawnTypes! Сохраняем всю инфомацию! Загружено {0} товаров! Импортировано {0} товаров! Загружено {0} ShopSkills! Загружено {0} магазин(ов)! Импортировано {0} магазин(ов)! Импортировано {0} навык(ов)! Недостаточно ОС для трансформации! Загрузка завершена успешно! Поддержка У продавца слишком много денег. Попробуйте использователь старый метод аутентификации {0} Попытка удаления завершилась неудачей: {0} Невозможно отправить приглашение в группу Неизвестно Неизвестный тип экипировки: {0} Неизвестный PickerType Втф? Неизвестный Reciever type insert missing type data Золото было обновлено! Игрок не является твоим другом! Игрок не в сети! Игрок не в режиме обмена. Карта специалиста не обнаружена! VisualEntity не существует: {0} Неизвестный VisualType: {0} Соединение PubSub потеряно, переподключение... PubSub переподключен. Соединение PubSub закрыто. Соединение PubSub установлено. Соединение PubSub остановлено. Неизвестный тип req_info: {0} Неизвестный тип улучшения: {0} ================================================ FILE: src/NosCore.Data/Resource/LocalizedResources.tr.resx ================================================  text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 {0} ID'li kullanıcı sunucuya giriş yaptı. Yetkili Zaten karalistede! Bu eşyayı bağlamak istiyor musun? Bir veya daha fazla gerekli dosya eksik, tüm dosyaları tamamladıktan sonra tekrar deneyiniz. İstemci : {1} başarıyla doğrulandı. Kimlik doğrulama başarısız. Geçersiz kimlik bilgileri. Bu eşya düşürülemez. Zaten aynı meslektesin! Kullanıcı bulunamadı. {0} Kart işlendi. Kanal Bu kanal bir kaç saniye içinde kapatılacak. İstemci bağlandı, ID {0} İstemci bağlantısı koptu. tId = {0} Bağlantı koptu. {0} Id'li İstemci hatalı şekilde devam ediyor. {0} Bu paket hatalı veya paketin konumu geçersiz. İçerik: {1} Veritabanı başarıyla yüklendi. Veritabanı güncel olmayabilir. Lütfen sağlayıcıyla konuşun. Birleştirme işlemi bitti. Bu haritada çok fazla eşya var. Lütfen daha sonra tekrar deneyiniz. Lütfen parse etmek (işlemek) istediğiniz dosyaların konumunu giriniz. Harita değiştirilirken karakter de değişti. Komutları kötüye kullanmayınız. {0} Bilinmeyen grup daveti türü. {0} paketi için işleyici bulunamadı. {0} I18N Act dosyaları işlendi! Bölge: {1} {0} I18N BKartları işlendi! Bölge: {1} {0} I18N Kart işlendi! Bölge: {1} {0} I18N Eşya işlendi! Bölge: {1} {0} I18N Harita bilgisi işlendi! Bölge: {1} {0} I18N Harita noktası işlendi! Bölge: {1} {0} I18N NPC/Canavar işlendi! Bölge: {1} {0} I18N NPC/Canavar diyaloğu işlendi! Bölge: {1} {0} I18N Görev işlendi! Bölge: {1} {0} I18N Büyü/Beceri işlendi! Bölge: {1} Hatalı kullanıcı adı! Parola hatalı! Bilinmeyen davet türü. {0} Eşya yüklendi. {0} Eşya işlendi. Eksik dil dosyaları var: {0} {0} Harita canavarları yüklendi! {0} Harita NPC'leri yüklendi! {0} Harita yüklendi! {0} Harita işlendi! {0} Harita türü işlendi! Böyle bir harita yok! Ana Sunucu'ya ping gönder. Ping gönderme işlemi başarısız. Ana Sunucu'ya bağlanılamadı. {0} saniye içerisinde tekrar denenecek. {0} Harita canavarları işlendi! Bu kullanıcı karalistende değil! Harita yok. Sunucunun çalışması için en azından NosVille olmalı! Giyilebilir özellik yok! {0} Harita canavarları yüklendi! {0} Harita canavarları işlendi! {0} Harita NPC'leri işlendi Hesapları işlemek (aktarmak) istiyor musun? Herşeyi işlemek (aktarmak) istiyor musun? Kartları işlemek (aktarmak) istiyor musun? Dropları işlemek (aktarmak) istiyor musun? I18N'leri işlemek (aktarmak) istiyor musun? Eşyaları işlemek (aktarmak) istiyor musun? Harita NPC'lerini işlemek (aktarmak) istiyor musun? Haritaları işlemek (aktarmak) istiyor musun? Harita türlerini işlemek (aktarmak) istiyor musun? Canavarları işlemek (aktarmak) istiyor musun? NPC/Canavar bilgilerini işlemek (aktarmak) istiyor musun? NPC'leri işlemek (aktarmak) istiyor musun? Portalları işlemek (aktarmak) istiyor musun? Görevleri işlemek (aktarmak) istiyor musun? Üretim ve Tarifleri işlemek (aktarmak) istiyor musun? Market eşyalarını işlemek (aktarmak) istiyor musun? Marketleri işlemek (aktarmak) istiyor musun? Market büyülerini (Calvin vb.) işlemek (aktarmak) istiyor musun? Büyüleri işlemek (aktarmak) istiyor musun? Işınlayıcıları işlemek (aktarmak) istiyor musun? Uzay-Zaman taşlarını işlemek (aktarmak) istiyor musun? Bilinmeyen cep türü. {0} Portal işlendi! Ana Sunucu'ya bağlanıldı. İtibarın değişti! {0} RespawnTypes Parsed! Tüm bilgiler kaydediliyor! {0} Market eşyaları yüklendi! {0} Market eşyaları işlendi! {0} Market yüklendi! {0} Market işlendi! {0} Büyü işlendi! Dönüşüm için yeterli uzmanlık puanın yok. Başarıyla yüklendi! Satıcı iade işlemi için yeterli alana sahip değil. Grup daveti gönderilemedi! Bilinmeyen ekipman türü: {0} Bilinmiyor! Bilinmeyen üretme türü. Geçersiz Uzmanlık Kartı! Kullanıcı arkadaşın değil! Kullanıcı aktif değil! Sanal değer geçersiz! {0} Bilinmeyen sanal tip! {0} Bu eşyayı değiştiremezsin! Harita durumları yükleniyor. Destek Altının güncellendi! {0} Paketi karakter olmadan kullanılmaya çalışılıyor! Banka hesabın dolu! Marketteki eşyaları hareket ettiremezsin. Marketteki eşyaları kullanamazsın. Arkadaşlık isteğin gönderilemedi. Kullanıcı çevrimdışı. Sadece değiştirilebilir eşyaları takas edebilirsin. Geçersiz takas listesi. Yeterli altının yok! {0} isimli kullanıcı alışverişte. Kullanıcı takasta değil! {0} Görev işlendi! {0} Script yüklendi! {0} Görev ödülü yüklendi! {0} Görev hedefi yüklendi! {0} Görev yüklendi! {0} NPC-Canavar diyaloğu yüklendi! {0} NPC diyaloğu işlendi! {0} Script işlendi! {0} Act bölümleri işlendi! {0} Görev ödülleri işlendi! {0} Hediye edildi. Arkadaşın değil. Hoparlör Silme işlemi gerçekleştirilemedi. {0} Market becerileri yüklendi! Eşya bulunamadı. Scriptleri işlemek (aktarmak)istiyor musun? Görev bulunamadı. Bilinmiyor PubSub bağlantısı kesildi, yeniden bağlanılıyor... PubSub yeniden bağlandı. PubSub bağlantısı kapatıldı. PubSub bağlantısı başlatıldı. PubSub bağlantısı durduruldu. Bilinmeyen req_info türü: {0} Bilinmeyen yükseltme türü: {0} ================================================ FILE: src/NosCore.Data/WebApi/AuthIntent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.WebApi { public class AuthIntent { public long SessionId { get; set; } public string AccountName { get; set; } = null!; } } ================================================ FILE: src/NosCore.Data/WebApi/BazaarLink.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; namespace NosCore.Data.WebApi { public class BazaarLink { public BazaarItemDto? BazaarItem { get; set; } //todo move this to a generic ItemInstance with a converter public ItemInstanceDto? ItemInstance { get; set; } public string? SellerName { get; set; } } } ================================================ FILE: src/NosCore.Data/WebApi/BazaarRequest.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; namespace NosCore.Data.WebApi { public class BazaarRequest { public Guid ItemInstanceId { get; set; } public long CharacterId { get; set; } public string? CharacterName { get; set; } public bool HasMedal { get; set; } public long Price { get; set; } public bool IsPackage { get; set; } public short Duration { get; set; } public short Amount { get; set; } } } ================================================ FILE: src/NosCore.Data/WebApi/BlacklistRequest.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.ClientPackets.Relations; namespace NosCore.Data.WebApi { public class BlacklistRequest { public long CharacterId { get; set; } public BlInsPacket? BlInsPacket { get; set; } } } ================================================ FILE: src/NosCore.Data/WebApi/Character.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Data.WebApi { public class Character { public string? Name { get; set; } public long Id { get; set; } public bool FriendRequestBlocked { get; set; } } } ================================================ FILE: src/NosCore.Data/WebApi/CharacterRelationStatus.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Enumerations; using System; namespace NosCore.Data.WebApi { public class CharacterRelationStatus { public Guid CharacterRelationId { get; set; } public CharacterRelationType RelationType { get; set; } public long CharacterId { get; set; } public string? CharacterName { get; set; } public bool IsConnected { get; set; } } } ================================================ FILE: src/NosCore.Data/WebApi/FriendShipRequest.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.ClientPackets.Relations; namespace NosCore.Data.WebApi { public class FriendShipRequest { public long CharacterId { get; set; } public FinsPacket? FinsPacket { get; set; } } } ================================================ FILE: src/NosCore.Data/WebApi/MailRequest.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using System.ComponentModel.DataAnnotations; namespace NosCore.Data.WebApi { public class MailRequest { [Required] public MailDto? Mail { get; set; } public short? VNum { get; set; } public short? Amount { get; set; } public sbyte? Rare { get; set; } public byte? Upgrade { get; set; } } } ================================================ FILE: src/NosCore.Data/WebApi/Subscriber.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Enumerations; namespace NosCore.Data.WebApi { public class Subscriber { public string? Name { get; set; } public RegionType Language { get; set; } public long ChannelId { get; set; } public Character? ConnectedCharacter { get; set; } public long Id { get; set; } } } ================================================ FILE: src/NosCore.Data/WebApi/WareHouseDepositRequest.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using NosCore.Data.Enumerations.Miniland; namespace NosCore.Data.WebApi { public class WareHouseDepositRequest { public long OwnerId { get; set; } public WarehouseType WarehouseType { get; set; } public ItemInstanceDto? ItemInstance { get; set; } public short Slot { get; set; } } } ================================================ FILE: src/NosCore.Data/WebApi/WarehouseLink.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; namespace NosCore.Data.WebApi { public class WarehouseLink { public WarehouseDto? Warehouse { get; set; } public short Slot { get; set; } //todo move this to a generic ItemInstance with a converter public ItemInstanceDto? ItemInstance { get; set; } } } ================================================ FILE: src/NosCore.Database/DesignTimeDbContextFactory.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; using Microsoft.Extensions.Configuration; using NosCore.Shared.Configuration; namespace NosCore.Database { public class DesignTimeDbContextFactory : IDesignTimeDbContextFactory { public NosCoreContext CreateDbContext(string[] args) { var databaseConfiguration = new SqlConnectionConfiguration(); ConfiguratorBuilder.InitializeConfiguration(args, new[] { "database.yml" }).Bind(databaseConfiguration); var optionsBuilder = new DbContextOptionsBuilder(); optionsBuilder.UseNpgsql(databaseConfiguration.ConnectionString, options => { options.UseNodaTime(); }); return new NosCoreContext(optionsBuilder.Options); } } } ================================================ FILE: src/NosCore.Database/Entities/Account.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using NosCore.Shared.Enumerations; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class Account : IEntity { public Account() { Character = new HashSet(); PenaltyLog = new HashSet(); } [Key] [Required] public long AccountId { get; set; } [Required] public AuthorityType Authority { get; set; } public virtual ICollection Character { get; set; } [MaxLength(255)] public string? Email { get; set; } [Required] [MaxLength(255)] public required string Name { get; set; } [MaxLength(255)] public string? Password { get; set; } [MaxLength(255)] public string? NewAuthPassword { get; set; } [MaxLength(255)] public string? NewAuthSalt { get; set; } public virtual ICollection PenaltyLog { get; set; } [MaxLength(45)] public string? RegistrationIp { get; set; } [MaxLength(32)] public string? VerificationToken { get; set; } public RegionType Language { get; set; } public long BankMoney { get; set; } public long ItemShopMoney { get; set; } [MaxLength(255)] public string? MfaSecret { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Act.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace NosCore.Database.Entities { public class Act : IStaticEntity { public Act() { ActParts = new HashSet(); } [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public byte ActId { get; set; } [Required] [MaxLength(255)] [I18NString(typeof(I18NQuest))] public required string Title { get; set; } public virtual HashSet ActParts { get; set; } public byte Scene { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/ActPart.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace NosCore.Database.Entities { public class ActPart : IStaticEntity { public ActPart() { CharacterActParts = new HashSet(); } [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public byte ActPartId { get; set; } public byte ActPartNumber { get; set; } public byte ActId { get; set; } public virtual Act Act { get; set; } = null!; public byte MaxTs { get; set; } public virtual HashSet CharacterActParts { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/AuditLog.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Data.Enumerations.Audit; using System; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class AuditLog { [Key] public Guid AuditId { get; set; } [Required] [MaxLength(80)] public required string TargetId { get; set; } [Required] [MaxLength(32)] public required string TargetType { get; set; } public Instant Time { get; set; } public AuditLogType AuditLogType { get; set; } [Required] [MaxLength(255)] public required string Value { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/BCard.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class BCard : IStaticEntity { [Key] public short BCardId { get; set; } public byte SubType { get; set; } public byte Type { get; set; } public int FirstData { get; set; } public int SecondData { get; set; } public virtual Card? Card { get; set; } public virtual Item? Item { get; set; } public virtual Skill? Skill { get; set; } public virtual NpcMonster? NpcMonster { get; set; } public short? CardId { get; set; } public short? ItemVNum { get; set; } public short? SkillVNum { get; set; } public short? NpcMonsterVNum { get; set; } public byte CastType { get; set; } public int ThirdData { get; set; } public bool IsLevelScaled { get; set; } public bool IsLevelDivided { get; set; } public byte Slot { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Base/I18NStringAttribute.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; namespace NosCore.Database.Entities.Base { public class I18NStringAttribute(Type type) : Attribute { public Type Type { get; set; } = type; } } ================================================ FILE: src/NosCore.Database/Entities/Base/IEntity.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Database.Entities.Base { public interface IEntity { } } ================================================ FILE: src/NosCore.Database/Entities/Base/IStaticEntity.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Database.Entities.Base { public interface IStaticEntity : IEntity { } } ================================================ FILE: src/NosCore.Database/Entities/Base/SynchronizableBaseEntity.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace NosCore.Database.Entities.Base { public abstract class SynchronizableBaseEntity : IEntity { [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public Guid Id { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/BazaarItem.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Database.Entities.Base; using System; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class BazaarItem : IEntity { public virtual Character Seller { get; set; } = null!; public short Amount { get; set; } [Key] public long BazaarItemId { get; set; } public Instant DateStart { get; set; } public short Duration { get; set; } public bool IsPackage { get; set; } public virtual ItemInstance ItemInstance { get; set; } = null!; public Guid ItemInstanceId { get; set; } public bool MedalUsed { get; set; } public long Price { get; set; } public long SellerId { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/BoxInstance.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Database.Entities { public class BoxInstance : SpecialistInstance { public short? HoldingVNum { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Card.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using static NosCore.Data.Enumerations.Buff.BCardType; namespace NosCore.Database.Entities { public class Card : IStaticEntity { public Card() { BCards = new HashSet(); StaticBuff = new HashSet(); } [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public short CardId { get; set; } public int Duration { get; set; } public int EffectId { get; set; } public byte Level { get; set; } [Required] [MaxLength(255)] [I18NString(typeof(I18NBCard))] public required string Name { get; set; } public int Delay { get; set; } public short TimeoutBuff { get; set; } public byte TimeoutBuffChance { get; set; } public CardType BuffType { get; set; } public byte Propability { get; set; } public virtual ICollection BCards { get; set; } public virtual ICollection StaticBuff { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Character.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.Character; using NosCore.Database.Entities.Base; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class Character : IEntity { public Character() { CharacterSkill = new HashSet(); CharacterRelation1 = new HashSet(); CharacterRelation2 = new HashSet(); StaticBonus = new HashSet(); Title = new HashSet(); StaticBuff = new HashSet<StaticBuff>(); BazaarItem = new HashSet<BazaarItem>(); Inventory = new HashSet<InventoryItemInstance>(); CharacterActParts = new HashSet<CharacterActPart>(); QuicklistEntry = new HashSet<QuicklistEntry>(); Respawn = new HashSet<Respawn>(); Mail = new HashSet<Mail>(); Mail1 = new HashSet<Mail>(); Mate = new HashSet<Mate>(); CharacterQuest = new HashSet<CharacterQuest>(); Miniland = new HashSet<Miniland>(); Warehouses = new HashSet<Warehouse>(); FamilyCharacter = new HashSet<FamilyCharacter>(); } public virtual Account Account { get; set; } = null!; public byte ServerId { get; set; } public long AccountId { get; set; } public int Act4Dead { get; set; } public int Act4Kill { get; set; } public int Act4Points { get; set; } public int ArenaWinner { get; set; } public Guid? CurrentScriptId { get; set; } public virtual Script? Script { get; set; } public virtual ICollection<BazaarItem> BazaarItem { get; set; } public virtual ICollection<Miniland> Miniland { get; set; } public virtual ICollection<CharacterActPart> CharacterActParts { get; set; } [MaxLength(255)] public string? Biography { get; set; } public bool BuffBlocked { get; set; } [Key] public long CharacterId { get; set; } public virtual ICollection<CharacterRelation> CharacterRelation1 { get; set; } public virtual ICollection<CharacterRelation> CharacterRelation2 { get; set; } public virtual ICollection<CharacterSkill> CharacterSkill { get; set; } public CharacterClassType Class { get; set; } public short Compliment { get; set; } public short Dignity { get; set; } public int Elo { get; set; } public bool EmoticonsBlocked { get; set; } public bool ExchangeBlocked { get; set; } public bool ShouldRename { get; set; } public byte Faction { get; set; } public virtual ICollection<FamilyCharacter> FamilyCharacter { get; set; } public bool FamilyRequestBlocked { get; set; } public bool FriendRequestBlocked { get; set; } public GenderType Gender { get; set; } public long Gold { get; set; } public bool GroupRequestBlocked { get; set; } public HairColorType HairColor { get; set; } public HairStyleType HairStyle { get; set; } public bool HeroChatBlocked { get; set; } public byte HeroLevel { get; set; } public long HeroXp { get; set; } public int Hp { get; set; } public bool HpBlocked { get; set; } public virtual ICollection<InventoryItemInstance> Inventory { get; set; } public byte JobLevel { get; set; } public long JobLevelXp { get; set; } public byte Level { get; set; } public long LevelXp { get; set; } public virtual ICollection<Mail> Mail { get; set; } public virtual ICollection<Mail> Mail1 { get; set; } public virtual Map Map { get; set; } = null!; public short MapId { get; set; } public short MapX { get; set; } public short MapY { get; set; } public int MasterPoints { get; set; } public int MasterTicket { get; set; } public virtual ICollection<CharacterQuest> CharacterQuest { get; set; } public virtual ICollection<Mate> Mate { get; set; } public byte MaxMateCount { get; set; } public bool MinilandInviteBlocked { get; set; } public bool MouseAimLock { get; set; } public int Mp { get; set; } [MaxLength(25)] public string? Prefix { get; set; } [Required] [MaxLength(255)] public required string Name { get; set; } public bool QuickGetUp { get; set; } public virtual ICollection<QuicklistEntry> QuicklistEntry { get; set; } public long RagePoint { get; set; } public long Reput { get; set; } public virtual ICollection<Respawn> Respawn { get; set; } public byte Slot { get; set; } public int SpAdditionPoint { get; set; } public int SpPoint { get; set; } public CharacterState State { get; set; } public virtual ICollection<StaticBonus> StaticBonus { get; set; } public virtual ICollection<Title> Title { get; set; } public virtual ICollection<StaticBuff> StaticBuff { get; set; } public int TalentLose { get; set; } public int TalentSurrender { get; set; } public int TalentWin { get; set; } public bool WhisperBlocked { get; set; } public virtual ICollection<Warehouse> Warehouses { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/CharacterActPart.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; namespace NosCore.Database.Entities { public class CharacterActPart : SynchronizableBaseEntity { public long CharacterId { get; set; } public virtual Character Character { get; set; } = null!; public byte ActPartId { get; set; } public virtual ActPart ActPart { get; set; } = null!; public byte CurrentTs; } } ================================================ FILE: src/NosCore.Database/Entities/CharacterQuest.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Database.Entities.Base; using System.Collections.Generic; namespace NosCore.Database.Entities { public class CharacterQuest : SynchronizableBaseEntity { public CharacterQuest() { CharacterQuestObjective = new HashSet<CharacterQuestObjective>(); } public virtual Character Character { get; set; } = null!; public long CharacterId { get; set; } public virtual Quest Quest { get; set; } = null!; public short QuestId { get; set; } public Instant? CompletedOn { get; set; } public virtual ICollection<CharacterQuestObjective> CharacterQuestObjective { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/CharacterQuestObjective.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System; namespace NosCore.Database.Entities { public class CharacterQuestObjective : SynchronizableBaseEntity { public virtual CharacterQuest CharacterQuest { get; set; } = null!; public Guid CharacterQuestId { get; set; } public virtual QuestObjective QuestObjective { get; set; } = null!; public Guid QuestObjectiveId { get; set; } public int Count { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/CharacterRelation.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using NosCore.Packets.Enumerations; using System; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class CharacterRelation : IEntity { public virtual Character Character1 { get; set; } = null!; public virtual Character Character2 { get; set; } = null!; public long CharacterId { get; set; } [Key] public Guid CharacterRelationId { get; set; } public long RelatedCharacterId { get; set; } public CharacterRelationType RelationType { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Characterskill.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; namespace NosCore.Database.Entities { public class CharacterSkill : SynchronizableBaseEntity { public virtual Character Character { get; set; } = null!; public long CharacterId { get; set; } public virtual Skill Skill { get; set; } = null!; public short SkillVNum { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Combo.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class Combo : IStaticEntity { public short Animation { get; set; } [Key] public int ComboId { get; set; } public short Effect { get; set; } public short Hit { get; set; } public virtual Skill Skill { get; set; } = null!; public short SkillVNum { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Drop.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class Drop : IStaticEntity { public int Amount { get; set; } public int DropChance { get; set; } [Key] public short DropId { get; set; } public virtual Item Item { get; set; } = null!; public short VNum { get; set; } public virtual MapType? MapType { get; set; } public short? MapTypeId { get; set; } public short? MonsterVNum { get; set; } public virtual NpcMonster? NpcMonster { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/EquipmentOption.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System; using System.ComponentModel.DataAnnotations.Schema; namespace NosCore.Database.Entities { public class EquipmentOption : SynchronizableBaseEntity { public byte Level { get; set; } public byte Type { get; set; } public int Value { get; set; } [ForeignKey(nameof(WearableInstanceId))] public virtual WearableInstance WearableInstance { get; set; } = null!; public Guid WearableInstanceId { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Family.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using NosCore.Packets.Enumerations; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class Family : IEntity { public Family() { FamilyCharacters = new HashSet<FamilyCharacter>(); FamilyLogs = new HashSet<FamilyLog>(); Warehouses = new HashSet<Warehouse>(); } public virtual ICollection<FamilyCharacter> FamilyCharacters { get; set; } public int FamilyExperience { get; set; } public GenderType FamilyHeadGender { get; set; } [Key] public long FamilyId { get; set; } public byte FamilyLevel { get; set; } public byte FamilyFaction { get; set; } public virtual ICollection<FamilyLog> FamilyLogs { get; set; } [MaxLength(255)] public string? FamilyMessage { get; set; } public FamilyAuthorityType ManagerAuthorityType { get; set; } public bool ManagerCanGetHistory { get; set; } public bool ManagerCanInvite { get; set; } public bool ManagerCanNotice { get; set; } public bool ManagerCanShout { get; set; } public byte MaxSize { get; set; } public FamilyAuthorityType MemberAuthorityType { get; set; } public bool MemberCanGetHistory { get; set; } [Required] [MaxLength(255)] public required string Name { get; set; } public byte WarehouseSize { get; set; } public virtual ICollection<Warehouse> Warehouses { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/FamilyCharacter.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.Family; using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class FamilyCharacter : IEntity { public FamilyAuthority Authority { get; set; } public virtual Character Character { get; set; } = null!; public long CharacterId { get; set; } [MaxLength(255)] public string? DailyMessage { get; set; } public int Experience { get; set; } public virtual Family Family { get; set; } = null!; [Key] public long FamilyCharacterId { get; set; } public long FamilyId { get; set; } public FamilyMemberRank Rank { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/FamilyLog.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Data.Enumerations.Family; using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class FamilyLog : IEntity { public virtual Family Family { get; set; } = null!; public long FamilyId { get; set; } [MaxLength(255)] public string? FamilyLogData { get; set; } [Key] public long FamilyLogId { get; set; } public FamilyLogType FamilyLogType { get; set; } public Instant Timestamp { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/I18NActDesc.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using NosCore.Shared.Enumerations; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class I18NActDesc : IEntity { [Key] public int I18NActDescId { get; set; } [Required] public required string Key { get; set; } public RegionType RegionType { get; set; } [Required] public required string Text { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/I18NBCard.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using NosCore.Shared.Enumerations; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class I18NBCard : IEntity { [Key] public int I18NbCardId { get; set; } [Required] public required string Key { get; set; } public RegionType RegionType { get; set; } [Required] public required string Text { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/I18NCard.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using NosCore.Shared.Enumerations; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class I18NCard : IEntity { [Key] public int I18NCardId { get; set; } [Required] public required string Key { get; set; } public RegionType RegionType { get; set; } [Required] public required string Text { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/I18NItem.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using NosCore.Shared.Enumerations; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class I18NItem : IEntity { [Key] public int I18NItemId { get; set; } [Required] public required string Key { get; set; } public RegionType RegionType { get; set; } [Required] public required string Text { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/I18NMapIdData.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using NosCore.Shared.Enumerations; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class I18NMapIdData : IEntity { [Key] public int I18NMapIdDataId { get; set; } [Required] public required string Key { get; set; } public RegionType RegionType { get; set; } [Required] public required string Text { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/I18NMapPointData.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using NosCore.Shared.Enumerations; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class I18NMapPointData : IEntity { [Key] public int I18NMapPointDataId { get; set; } [Required] public required string Key { get; set; } public RegionType RegionType { get; set; } [Required] public required string Text { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/I18NNpcMonster.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using NosCore.Shared.Enumerations; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class I18NNpcMonster : IEntity { [Key] public int I18NNpcMonsterId { get; set; } [Required] public required string Key { get; set; } public RegionType RegionType { get; set; } [Required] public required string Text { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/I18NNpcMonsterTalk.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using NosCore.Shared.Enumerations; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class I18NNpcMonsterTalk : IEntity { [Key] public int I18NNpcMonsterTalkId { get; set; } [Required] public required string Key { get; set; } public RegionType RegionType { get; set; } [Required] public required string Text { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/I18NQuest.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using NosCore.Shared.Enumerations; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class I18NQuest : IEntity { [Key] public int I18NQuestId { get; set; } [Required] public required string Key { get; set; } public RegionType RegionType { get; set; } [Required] public required string Text { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/I18NSkill.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using NosCore.Shared.Enumerations; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class I18NSkill : IEntity { [Key] public int I18NSkillId { get; set; } [Required] public required string Key { get; set; } public RegionType RegionType { get; set; } [Required] public required string Text { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/InventoryItemInstance.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations; using NosCore.Database.Entities.Base; using System; using System.Collections.Generic; namespace NosCore.Database.Entities { public class InventoryItemInstance : SynchronizableBaseEntity { public InventoryItemInstance() { MinilandObject = new HashSet<MinilandObject>(); } public virtual Character Character { get; set; } = null!; public long CharacterId { get; set; } public virtual ItemInstance ItemInstance { get; set; } = null!; public Guid ItemInstanceId { get; set; } public virtual ICollection<MinilandObject> MinilandObject { get; set; } public short Slot { get; set; } public NoscorePocketType Type { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Item.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.DataAttributes; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Items; using NosCore.Database.Entities.Base; using NosCore.Packets.Enumerations; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace NosCore.Database.Entities { [StaticMetaData(LoadedMessage = LogLanguageKey.ITEMS_LOADED)] public class Item : IStaticEntity { public Item() { Drop = new HashSet<Drop>(); Recipe = new HashSet<Recipe>(); RollGeneratedItem = new HashSet<RollGeneratedItem>(); RollGeneratedItem2 = new HashSet<RollGeneratedItem>(); RecipeItem = new HashSet<RecipeItem>(); ShopItem = new HashSet<ShopItem>(); BCards = new HashSet<BCard>(); ItemInstances = new HashSet<ItemInstance>(); } public byte BasicUpgrade { get; set; } public bool Flag1 { get; set; } public bool Flag2 { get; set; } public bool Flag3 { get; set; } public bool Flag4 { get; set; } public bool RequireBinding { get; set; } public bool Flag6 { get; set; } public bool Flag7 { get; set; } public bool Flag8 { get; set; } public byte CellonLvl { get; set; } public byte Class { get; set; } public short CloseDefence { get; set; } public byte Color { get; set; } public short Concentrate { get; set; } public byte CriticalLuckRate { get; set; } public short CriticalRate { get; set; } public short DamageMaximum { get; set; } public short DamageMinimum { get; set; } public byte DarkElement { get; set; } public short DarkResistance { get; set; } public short DefenceDodge { get; set; } public short DistanceDefence { get; set; } public short DistanceDefenceDodge { get; set; } public virtual ICollection<Drop> Drop { get; set; } public ItemEffectType Effect { get; set; } public int EffectValue { get; set; } public ElementType Element { get; set; } public short ElementRate { get; set; } public EquipmentType EquipmentSlot { get; set; } public byte FireElement { get; set; } public short FireResistance { get; set; } public byte Height { get; set; } public short HitRate { get; set; } public short Hp { get; set; } public short HpRegeneration { get; set; } public bool IsMinilandActionable { get; set; } public bool IsColored { get; set; } public bool IsConsumable { get; set; } public bool IsDroppable { get; set; } public bool IsHeroic { get; set; } public bool Flag9 { get; set; } public bool IsWarehouse { get; set; } public bool IsSoldable { get; set; } public bool IsTradable { get; set; } public virtual ICollection<BCard> BCards { get; set; } public virtual ICollection<ItemInstance> ItemInstances { get; set; } public byte ItemSubType { get; set; } public ItemType ItemType { get; set; } public long ItemValidTime { get; set; } public byte LevelJobMinimum { get; set; } public byte LevelMinimum { get; set; } public byte LightElement { get; set; } public short LightResistance { get; set; } public short MagicDefence { get; set; } public virtual ICollection<RollGeneratedItem> RollGeneratedItem { get; set; } public virtual ICollection<RollGeneratedItem> RollGeneratedItem2 { get; set; } public byte MaxCellon { get; set; } public byte MaxCellonLvl { get; set; } public short MaxElementRate { get; set; } public byte MaximumAmmo { get; set; } public int MinilandObjectPoint { get; set; } public short MoreHp { get; set; } public short MoreMp { get; set; } public short Morph { get; set; } public short SecondMorph { get; set; } public short Mp { get; set; } public short MpRegeneration { get; set; } [Required] [MaxLength(255)] [I18NString(typeof(I18NItem))] public required string Name { get; set; } public long Price { get; set; } public short PvpDefence { get; set; } public byte PvpStrength { get; set; } public virtual ICollection<Recipe> Recipe { get; set; } public virtual ICollection<RecipeItem> RecipeItem { get; set; } public short ReduceOposantResistance { get; set; } public byte ReputationMinimum { get; set; } public long ReputPrice { get; set; } public ElementType SecondaryElement { get; set; } public byte Sex { get; set; } public virtual ICollection<ShopItem> ShopItem { get; set; } public byte Speed { get; set; } public byte SpType { get; set; } public NoscorePocketType Type { get; set; } [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public short VNum { get; set; } public short WaitDelay { get; set; } public byte WaterElement { get; set; } public short WaterResistance { get; set; } public byte Width { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/ItemInstance.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Database.Entities.Base; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; namespace NosCore.Database.Entities { public class ItemInstance : SynchronizableBaseEntity { public ItemInstance() { BazaarItem = new HashSet<BazaarItem>(); InventoryItemInstance = new HashSet<InventoryItemInstance>(); Mail = new HashSet<Mail>(); WarehouseItems = new HashSet<WarehouseItem>(); } public short Amount { get; set; } public virtual ICollection<BazaarItem> BazaarItem { get; set; } public virtual ICollection<Mail> Mail { get; set; } public virtual ICollection<WarehouseItem> WarehouseItems { get; } [ForeignKey(nameof(BoundCharacterId))] public virtual Character? BoundCharacter { get; set; } public long? BoundCharacterId { get; set; } public long CharacterId { get; set; } public short Design { get; set; } public int DurabilityPoint { get; set; } public virtual Item Item { get; set; } = null!; public Instant? ItemDeleteTime { get; set; } public short ItemVNum { get; set; } public virtual ICollection<InventoryItemInstance> InventoryItemInstance { get; set; } public byte Upgrade { get; set; } public short Rare { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Mail.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Database.Entities.Base; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; using System; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class Mail : IEntity { public short? Hat { get; set; } public short? Armor { get; set; } public short? MainWeapon { get; set; } public short? SecondaryWeapon { get; set; } public short? Mask { get; set; } public short? Fairy { get; set; } public short? CostumeSuit { get; set; } public short? CostumeHat { get; set; } public short? WeaponSkin { get; set; } public short? WingSkin { get; set; } public Instant Date { get; set; } public bool IsOpened { get; set; } public bool IsSenderCopy { get; set; } public virtual ItemInstance? ItemInstance { get; set; } public Guid? ItemInstanceId { get; set; } [Key] public long MailId { get; set; } [Required] [MaxLength(255)] public required string Message { get; set; } public virtual Character Receiver { get; set; } = null!; public long ReceiverId { get; set; } public virtual Character? Sender { get; set; } public long? SenderId { get; set; } public CharacterClassType? SenderCharacterClass { get; set; } public GenderType? SenderGender { get; set; } public HairColorType? SenderHairColor { get; set; } public HairStyleType? SenderHairStyle { get; set; } public short? SenderMorphId { get; set; } [Required] [MaxLength(255)] public required string Title { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Map.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.DataAttributes; using NosCore.Data.Enumerations.I18N; using NosCore.Database.Entities.Base; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace NosCore.Database.Entities { [StaticMetaData(LoadedMessage = LogLanguageKey.MAPS_LOADED, EmptyMessage = LogLanguageKey.NO_MAP)] public class Map : IStaticEntity { public Map() { Character = new HashSet<Character>(); MapMonster = new HashSet<MapMonster>(); MapNpc = new HashSet<MapNpc>(); Portal = new HashSet<Portal>(); Portal1 = new HashSet<Portal>(); ScriptedInstance = new HashSet<ScriptedInstance>(); Teleporter = new HashSet<Teleporter>(); MapTypeMap = new HashSet<MapTypeMap>(); Respawn = new HashSet<Respawn>(); RespawnMapType = new HashSet<RespawnMapType>(); } public virtual ICollection<Character> Character { get; set; } public byte[] Data { get; set; } = null!; [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public short MapId { get; set; } public virtual ICollection<MapMonster> MapMonster { get; set; } public virtual ICollection<MapNpc> MapNpc { get; set; } public virtual ICollection<MapTypeMap> MapTypeMap { get; set; } public int Music { get; set; } [Required] [MaxLength(255)] [I18NString(typeof(I18NMapIdData))] public required string Name { get; set; } public virtual ICollection<Portal> Portal { get; set; } public virtual ICollection<Portal> Portal1 { get; set; } public virtual ICollection<Respawn> Respawn { get; set; } public virtual ICollection<RespawnMapType> RespawnMapType { get; set; } public virtual ICollection<ScriptedInstance> ScriptedInstance { get; set; } public bool ShopAllowed { get; set; } public virtual ICollection<Teleporter> Teleporter { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/MapMonster.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.DataAttributes; using NosCore.Data.Enumerations.I18N; using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace NosCore.Database.Entities { [StaticMetaData(LoadedMessage = LogLanguageKey.MAPMONSTERS_LOADED)] public class MapMonster : IEntity { public bool IsDisabled { get; set; } public virtual Map Map { get; set; } = null!; public short MapId { get; set; } [DatabaseGenerated(DatabaseGeneratedOption.None)] [Key] public int MapMonsterId { get; set; } public short MapX { get; set; } public short MapY { get; set; } public short VNum { get; set; } public virtual NpcMonster NpcMonster { get; set; } = null!; public byte Direction { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/MapNpc.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.DataAttributes; using NosCore.Data.Enumerations.I18N; using NosCore.Database.Entities.Base; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace NosCore.Database.Entities { [StaticMetaData(LoadedMessage = LogLanguageKey.MAPNPCS_LOADED)] public class MapNpc : IEntity { public MapNpc() { Recipe = new HashSet<Recipe>(); Shop = new HashSet<Shop>(); Teleporter = new HashSet<Teleporter>(); } public short? Dialog { get; set; } public short Effect { get; set; } public short EffectDelay { get; set; } public bool IsDisabled { get; set; } public bool IsMoving { get; set; } public bool IsSitting { get; set; } public virtual Map Map { get; set; } = null!; public short MapId { get; set; } [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int MapNpcId { get; set; } public short MapX { get; set; } public short MapY { get; set; } public virtual NpcMonster NpcMonster { get; set; } = null!; public short VNum { get; set; } public byte Direction { get; set; } public virtual ICollection<Recipe> Recipe { get; set; } public virtual ICollection<Shop> Shop { get; set; } public virtual ICollection<Teleporter> Teleporter { get; set; } public virtual NpcTalk? NpcTalk { get; set; } = null!; } } ================================================ FILE: src/NosCore.Database/Entities/MapType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace NosCore.Database.Entities { public class MapType : IStaticEntity { public MapType() { MapTypeMap = new HashSet<MapTypeMap>(); Drops = new HashSet<Drop>(); } public virtual ICollection<Drop> Drops { get; set; } [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public short MapTypeId { get; set; } public virtual ICollection<MapTypeMap> MapTypeMap { get; set; } [Required] public required string MapTypeName { get; set; } public short PotionDelay { get; set; } public virtual RespawnMapType? RespawnMapType { get; set; } public long? RespawnMapTypeId { get; set; } public virtual RespawnMapType? ReturnMapType { get; set; } public long? ReturnMapTypeId { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/MapTypeMap.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class MapTypeMap : IStaticEntity { [Key] public short MapTypeMapId { get; set; } public virtual Map Map { get; set; } = null!; public short MapId { get; set; } public virtual MapType MapType { get; set; } = null!; public short MapTypeId { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Mate.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.Character; using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class Mate : IEntity { public byte Attack { get; set; } public bool CanPickUp { get; set; } public virtual Character Character { get; set; } = null!; public long CharacterId { get; set; } public byte Defence { get; set; } public byte Direction { get; set; } public long Experience { get; set; } public int Hp { get; set; } public bool IsSummonable { get; set; } public bool IsTeamMember { get; set; } public byte Level { get; set; } public short Loyalty { get; set; } public short MapX { get; set; } public short MapY { get; set; } [Key] public long MateId { get; set; } public MateType MateType { get; set; } public int Mp { get; set; } [MaxLength(255)] public string? Name { get; set; } public virtual NpcMonster NpcMonster { get; set; } = null!; public short VNum { get; set; } public short Skin { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Miniland.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using NosCore.Packets.Enumerations; using System; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class Miniland : IEntity { [MaxLength(255)] public string? MinilandMessage { get; set; } = ((short)Game18NConstString.Welcome).ToString(); public long MinilandPoint { get; set; } public virtual Character Owner { get; set; } = null!; [Key] public Guid MinilandId { get; set; } public MinilandState State { get; set; } public long OwnerId { get; set; } public int DailyVisitCount { get; set; } public int VisitCount { get; set; } public short WelcomeMusicInfo { get; set; } = 3800; } } ================================================ FILE: src/NosCore.Database/Entities/MinilandObject.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class MinilandObject : IEntity { public virtual InventoryItemInstance? InventoryItemInstance { get; set; } public Guid? InventoryItemInstanceId { get; set; } public byte Level1BoxAmount { get; set; } public byte Level2BoxAmount { get; set; } public byte Level3BoxAmount { get; set; } public byte Level4BoxAmount { get; set; } public byte Level5BoxAmount { get; set; } public short MapX { get; set; } public short MapY { get; set; } [Key] public Guid MinilandObjectId { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/NpcMonster.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.DataAttributes; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Map; using NosCore.Database.Entities.Base; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace NosCore.Database.Entities { [StaticMetaData(LoadedMessage = LogLanguageKey.NPCMONSTERS_LOADED)] public class NpcMonster : IStaticEntity { public NpcMonster() { Drop = new HashSet<Drop>(); MapMonster = new HashSet<MapMonster>(); MapNpc = new HashSet<MapNpc>(); NpcMonsterSkill = new HashSet<NpcMonsterSkill>(); Mate = new HashSet<Mate>(); BCards = new HashSet<BCard>(); MonsterType = MonsterType.Unknown; } public byte AmountRequired { get; set; } public byte AttackClass { get; set; } public bool CanWalk { get; set; } public bool CanCollect { get; set; } public bool CantDebuff { get; set; } public bool CanCatch { get; set; } public bool DisappearAfterSeconds { get; set; } public bool DisappearAfterHitting { get; set; } public bool HasMode { get; set; } public bool DisappearAfterSecondsMana { get; set; } public bool OnDefenseOnlyOnce { get; set; } public bool HasDash { get; set; } public bool RegenerateHpOverTime { get; set; } public bool CantVoke { get; set; } public bool DontDrainHpAfterSeconds { get; set; } public bool CantTargetInfo { get; set; } public bool AlwaysActive { get; set; } public byte Limiter { get; set; } public short HpThreshold { get; set; } public short RangeThreshold { get; set; } public short CModeVNum { get; set; } public byte CellMinRange { get; set; } public int Midgard { get; set; } public byte AttackUpgrade { get; set; } public byte BasicArea { get; set; } public short BasicCooldown { get; set; } public byte BasicRange { get; set; } public short BasicSkill { get; set; } public short CloseDefence { get; set; } public short Concentrate { get; set; } public byte CriticalChance { get; set; } public short CriticalRate { get; set; } public short DamageMaximum { get; set; } public short DamageMinimum { get; set; } public short DarkResistance { get; set; } public short DefenceDodge { get; set; } public byte DefenceUpgrade { get; set; } public short DistanceDefence { get; set; } public short DistanceDefenceDodge { get; set; } public virtual ICollection<Drop> Drop { get; set; } public byte Element { get; set; } public short ElementRate { get; set; } public short FireResistance { get; set; } public byte HeroLevel { get; set; } public int HeroXp { get; set; } public bool IsHostile { get; set; } public int JobXp { get; set; } public byte Level { get; set; } public short LightResistance { get; set; } public short MagicDefence { get; set; } public virtual ICollection<MapMonster> MapMonster { get; set; } public virtual ICollection<MapNpc> MapNpc { get; set; } public virtual ICollection<Mate> Mate { get; set; } public int MaxHp { get; set; } public int MaxMp { get; set; } public MonsterType MonsterType { get; set; } [Required] [MaxLength(255)] [I18NString(typeof(I18NNpcMonster))] public required string Name { get; set; } public bool NoAggresiveIcon { get; set; } public byte NoticeRange { get; set; } public virtual ICollection<NpcMonsterSkill> NpcMonsterSkill { get; set; } [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public short NpcMonsterVNum { get; set; } public byte Race { get; set; } public byte RaceType { get; set; } public int RespawnTime { get; set; } public byte Speed { get; set; } public short VNumRequired { get; set; } public short WaterResistance { get; set; } public int Xp { get; set; } public bool IsPercent { get; set; } public int TakeDamages { get; set; } public int GiveDamagePercentage { get; set; } public bool IsPercentileDmg { get; set; } public bool CanOnlyBeDmgedByJajamaruLastSkill { get; set; } public bool VisibleOnMinimapAsGreenDot { get; set; } public bool IsValhallaPartner { get; set; } public short EffectIdConstantly { get; set; } public short EffectIdOnDeath { get; set; } public int PetInfoVal1 { get; set; } public int PetInfoVal2 { get; set; } public int PetInfoVal3 { get; set; } public int PetInfoVal4 { get; set; } public short IconId { get; set; } public int SpawnMobOrColor { get; set; } public sbyte SpriteSize { get; set; } public byte CellSize { get; set; } public byte GroupAttack { get; set; } public byte BasicHitChance { get; set; } public byte DashSpeed { get; set; } public virtual ICollection<BCard> BCards { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/NpcMonsterskill.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class NpcMonsterSkill : IStaticEntity { public virtual NpcMonster NpcMonster { get; set; } = null!; [Key] public long NpcMonsterSkillId { get; set; } public short NpcMonsterVNum { get; set; } public short Rate { get; set; } public virtual Skill Skill { get; set; } = null!; public short SkillVNum { get; set; } public byte Force { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/NpcTalk.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.DataAttributes; using NosCore.Data.Enumerations.I18N; using NosCore.Database.Entities.Base; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { [StaticMetaData(LoadedMessage = LogLanguageKey.NPCMONSTERSTALKS_LOADED)] public class NpcTalk : IStaticEntity { public NpcTalk() { MapNpc = new HashSet<MapNpc>(); } [Key] public short DialogId { get; set; } [Required] [MaxLength(255)] [I18NString(typeof(I18NNpcMonsterTalk))] public required string Name { get; set; } public virtual ICollection<MapNpc> MapNpc { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/PenaltyLog.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Data.Enumerations.Interaction; using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class PenaltyLog : IEntity { public virtual Account Account { get; set; } = null!; public long AccountId { get; set; } [Required] public required string AdminName { get; set; } public Instant DateEnd { get; set; } public Instant DateStart { get; set; } public PenaltyType Penalty { get; set; } [Key] public int PenaltyLogId { get; set; } [Required] [MaxLength(255)] public required string Reason { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Portal.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using NosCore.Packets.Enumerations; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class Portal : IStaticEntity { public short DestinationMapId { get; set; } public short DestinationX { get; set; } public short DestinationY { get; set; } public bool IsDisabled { get; set; } public virtual Map Map { get; set; } = null!; public virtual Map Map1 { get; set; } = null!; [Key] public int PortalId { get; set; } public short SourceMapId { get; set; } public short SourceX { get; set; } public short SourceY { get; set; } public PortalType Type { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Quest.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.DataAttributes; using NosCore.Data.Enumerations.I18N; using NosCore.Database.Entities.Base; using NosCore.Packets.Enumerations; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace NosCore.Database.Entities { [StaticMetaData(LoadedMessage = LogLanguageKey.QUESTS_LOADED)] public class Quest : IStaticEntity { public Quest() { QuestObjective = new HashSet<QuestObjective>(); CharacterQuest = new HashSet<CharacterQuest>(); QuestQuestReward = new HashSet<QuestQuestReward>(); } [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public short QuestId { get; set; } public QuestType QuestType { get; set; } public virtual ICollection<CharacterQuest> CharacterQuest { get; set; } public virtual ICollection<QuestQuestReward> QuestQuestReward { get; set; } public byte LevelMin { get; set; } public byte LevelMax { get; set; } public int? StartDialogId { get; set; } public int? EndDialogId { get; set; } public virtual ICollection<QuestObjective> QuestObjective { get; set; } public short? TargetMap { get; set; } public short? TargetX { get; set; } public short? TargetY { get; set; } //this would create circular reference if it was FK public short? NextQuestId { get; set; } public bool IsDaily { get; set; } public bool AutoFinish { get; set; } public bool IsSecondary { get; set; } public int? SpecialData { get; set; } //this would create circular reference if it was FK public short? RequiredQuestId { get; set; } [Required] [MaxLength(255)] [I18NString(typeof(I18NQuest))] public required string Title { get; set; } [Required] [MaxLength(255)] [I18NString(typeof(I18NQuest))] public required string Desc { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/QuestObjective.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.DataAttributes; using NosCore.Data.Enumerations.I18N; using NosCore.Database.Entities.Base; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { [StaticMetaData(LoadedMessage = LogLanguageKey.QUESTOBJECTIVES_LOADED)] public class QuestObjective : IStaticEntity { public QuestObjective() { CharacterQuestObjective = new HashSet<CharacterQuestObjective>(); } [Key] public Guid QuestObjectiveId { get; set; } public int FirstData { get; set; } public int? SecondData { get; set; } public int? ThirdData { get; set; } public int? FourthData { get; set; } public short QuestId { get; set; } public virtual Quest Quest { get; set; } = null!; public virtual ICollection<CharacterQuestObjective> CharacterQuestObjective { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/QuestQuestReward.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace NosCore.Database.Entities { public class QuestQuestReward : IStaticEntity { [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public Guid Id { get; set; } [Required] public short QuestRewardId { get; set; } [Required] public virtual QuestReward QuestReward { get; set; } = null!; [Required] public short QuestId { get; set; } [Required] public virtual Quest Quest { get; set; } = null!; } } ================================================ FILE: src/NosCore.Database/Entities/QuestReward.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.DataAttributes; using NosCore.Data.Enumerations.I18N; using NosCore.Database.Entities.Base; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { [StaticMetaData(LoadedMessage = LogLanguageKey.QUESTREWARDS_LOADED)] public class QuestReward : IStaticEntity { public QuestReward() { QuestQuestReward = new HashSet<QuestQuestReward>(); } [Key] public short QuestRewardId { get; set; } public byte RewardType { get; set; } public int Data { get; set; } public byte Design { get; set; } public byte Rarity { get; set; } public byte Upgrade { get; set; } public int Amount { get; set; } public virtual ICollection<QuestQuestReward> QuestQuestReward { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/QuicklistEntry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; namespace NosCore.Database.Entities { public class QuicklistEntry : SynchronizableBaseEntity { public virtual Character Character { get; set; } = null!; public long CharacterId { get; set; } public short Morph { get; set; } public short IconVNum { get; set; } public short QuickListIndex { get; set; } public short Slot { get; set; } public short IconType { get; set; } public short Type { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Recipe.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class Recipe : IStaticEntity { public Recipe() { RecipeItem = new HashSet<RecipeItem>(); } public byte Amount { get; set; } public virtual Item Item { get; set; } = null!; public short ItemVNum { get; set; } public virtual MapNpc MapNpc { get; set; } = null!; public int MapNpcId { get; set; } [Key] public short RecipeId { get; set; } public virtual ICollection<RecipeItem> RecipeItem { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/RecipeItem.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class RecipeItem : IEntity { public short Amount { get; set; } public virtual Item Item { get; set; } = null!; public short ItemVNum { get; set; } public virtual Recipe Recipe { get; set; } = null!; public short RecipeId { get; set; } [Key] public short RecipeItemId { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Respawn.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class Respawn : IEntity { public virtual Character Character { get; set; } = null!; public long CharacterId { get; set; } public virtual Map Map { get; set; } = null!; public short MapId { get; set; } [Key] public long RespawnId { get; set; } public virtual RespawnMapType RespawnMapType { get; set; } = null!; public long RespawnMapTypeId { get; set; } public short X { get; set; } public short Y { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/RespawnMapType.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace NosCore.Database.Entities { public class RespawnMapType : IStaticEntity { public RespawnMapType() { Respawn = new HashSet<Respawn>(); MapTypes = new HashSet<MapType>(); MapTypes1 = new HashSet<MapType>(); } public short MapId { get; set; } public short DefaultX { get; set; } public short DefaultY { get; set; } public virtual Map Map { get; set; } = null!; public virtual ICollection<MapType> MapTypes { get; set; } public virtual ICollection<MapType> MapTypes1 { get; set; } [MaxLength(255)] public string? Name { get; set; } public virtual ICollection<Respawn> Respawn { get; set; } [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public long RespawnMapTypeId { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/RollGeneratedItem.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class RollGeneratedItem : IEntity { [Key] public short RollGeneratedItemId { get; set; } public short OriginalItemDesign { get; set; } public virtual Item OriginalItem { get; set; } = null!; public short OriginalItemVNum { get; set; } public short Probability { get; set; } public byte ItemGeneratedAmount { get; set; } public short ItemGeneratedVNum { get; set; } public byte ItemGeneratedUpgrade { get; set; } public bool IsRareRandom { get; set; } public short MinimumOriginalItemRare { get; set; } public short MaximumOriginalItemRare { get; set; } public virtual Item ItemGenerated { get; set; } = null!; public bool IsSuperReward { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Script.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.DataAttributes; using NosCore.Data.Enumerations.I18N; using NosCore.Database.Entities.Base; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { [StaticMetaData(LoadedMessage = LogLanguageKey.SCRIPTS_LOADED)] public class Script : SynchronizableBaseEntity, IStaticEntity { public Script() { Characters = new HashSet<Character>(); } public virtual ICollection<Character> Characters { get; set; } public byte ScriptId { get; set; } public short ScriptStepId { get; set; } [Required] public string StepType { get; set; } = null!; public string? StringArgument { get; set; } public short? Argument1 { get; set; } public short? Argument2 { get; set; } public short? Argument3 { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/ScriptedInstance.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.Interaction; using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class ScriptedInstance : IEntity { public virtual Map Map { get; set; } = null!; public short MapId { get; set; } public short PositionX { get; set; } public short PositionY { get; set; } public string? Label { get; set; } [MaxLength(int.MaxValue)] public string? Script { get; set; } [Key] public short ScriptedInstanceId { get; set; } public ScriptedInstanceType Type { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Shop.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.DataAttributes; using NosCore.Data.Enumerations.I18N; using NosCore.Database.Entities.Base; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { [StaticMetaData(LoadedMessage = LogLanguageKey.SHOPS_LOADED)] public class Shop : IStaticEntity { public Shop() { ShopItem = new HashSet<ShopItem>(); ShopSkill = new HashSet<ShopSkill>(); } public virtual MapNpc MapNpc { get; set; } = null!; public int MapNpcId { get; set; } public byte MenuType { get; set; } [Key] public int ShopId { get; set; } public virtual ICollection<ShopItem> ShopItem { get; set; } public virtual ICollection<ShopSkill> ShopSkill { get; set; } public byte ShopType { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/ShopItem.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.DataAttributes; using NosCore.Data.Enumerations.I18N; using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { [StaticMetaData(LoadedMessage = LogLanguageKey.SHOPITEMS_LOADED)] public class ShopItem : IStaticEntity { public byte Color { get; set; } public virtual Item Item { get; set; } = null!; public short ItemVNum { get; set; } public short Rare { get; set; } public virtual Shop Shop { get; set; } = null!; public int ShopId { get; set; } [Key] public int ShopItemId { get; set; } public byte Slot { get; set; } public byte Type { get; set; } public byte Upgrade { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Shopskill.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.DataAttributes; using NosCore.Data.Enumerations.I18N; using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { [StaticMetaData(LoadedMessage = LogLanguageKey.SHOPSKILLS_LOADED)] public class ShopSkill : IStaticEntity { public virtual Shop Shop { get; set; } = null!; public int ShopId { get; set; } [Key] public int ShopSkillId { get; set; } public virtual Skill Skill { get; set; } = null!; public short SkillVNum { get; set; } public byte Slot { get; set; } public byte Type { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Skill.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace NosCore.Database.Entities { public class Skill : IStaticEntity { public Skill() { CharacterSkill = new HashSet<CharacterSkill>(); Combo = new HashSet<Combo>(); ShopSkill = new HashSet<ShopSkill>(); NpcMonsterSkill = new HashSet<NpcMonsterSkill>(); BCards = new HashSet<BCard>(); } public short AttackAnimation { get; set; } public short CastAnimation { get; set; } public short CastEffect { get; set; } public short CastId { get; set; } public short CastTime { get; set; } public virtual ICollection<CharacterSkill> CharacterSkill { get; set; } public byte Class { get; set; } public virtual ICollection<Combo> Combo { get; set; } public short Cooldown { get; set; } public byte CpCost { get; set; } public short Duration { get; set; } public short Effect { get; set; } public byte Element { get; set; } public byte HitType { get; set; } public short ItemVNum { get; set; } public byte Level { get; set; } public byte LevelMinimum { get; set; } public byte MinimumAdventurerLevel { get; set; } public byte MinimumArcherLevel { get; set; } public byte MinimumMagicianLevel { get; set; } public byte MinimumSwordmanLevel { get; set; } public short MpCost { get; set; } [Required] [MaxLength(255)] [I18NString(typeof(I18NSkill))] public required string Name { get; set; } public virtual ICollection<NpcMonsterSkill> NpcMonsterSkill { get; set; } public int Price { get; set; } public byte Range { get; set; } public virtual ICollection<ShopSkill> ShopSkill { get; set; } public byte SkillType { get; set; } [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public short SkillVNum { get; set; } public byte TargetRange { get; set; } public byte TargetType { get; set; } public byte Type { get; set; } public short UpgradeSkill { get; set; } public short UpgradeType { get; set; } public virtual ICollection<BCard> BCards { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/SpecialistInstance.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Database.Entities { public class SpecialistInstance : WearableInstance { public short SlDamage { get; set; } public short SlDefence { get; set; } public short SlElement { get; set; } public short SlHp { get; set; } public byte SpDamage { get; set; } public byte SpDark { get; set; } public byte SpDefence { get; set; } public byte SpElement { get; set; } public byte SpFire { get; set; } public byte SpHp { get; set; } public byte SpLevel { get; set; } public byte SpLight { get; set; } public byte SpStoneUpgrade { get; set; } public byte SpWater { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/StaticBonus.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Data.Enumerations.Buff; using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class StaticBonus : IEntity { public virtual Character Character { get; set; } = null!; public long CharacterId { get; set; } public Instant? DateEnd { get; set; } [Key] public long StaticBonusId { get; set; } public StaticBonusType StaticBonusType { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/StaticBuff.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class StaticBuff : IEntity { public virtual Character Character { get; set; } = null!; public long CharacterId { get; set; } public virtual Card Card { get; set; } = null!; public short CardId { get; set; } public int RemainingTime { get; set; } [Key] public long StaticBuffId { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Teleporter.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.Interaction; using NosCore.Database.Entities.Base; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class Teleporter : IStaticEntity { public short Index { get; set; } public TeleporterType Type { get; set; } public virtual Map Map { get; set; } = null!; public short MapId { get; set; } public virtual MapNpc MapNpc { get; set; } = null!; public int MapNpcId { get; set; } public short MapX { get; set; } public short MapY { get; set; } [Key] public short TeleporterId { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Title.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; namespace NosCore.Database.Entities { public class Title : SynchronizableBaseEntity { public virtual Character Character { get; set; } = null!; public long CharacterId { get; set; } public bool Active { get; set; } public bool Visible { get; set; } public short TitleType { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/UsableInstance.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Database.Entities { public class UsableInstance : ItemInstance { public short? Hp { get; set; } public short? Mp { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/Warehouse.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.Miniland; using NosCore.Database.Entities.Base; using System.Collections.Generic; namespace NosCore.Database.Entities { public class Warehouse : SynchronizableBaseEntity { public Warehouse() { WarehouseItems = new HashSet<WarehouseItem>(); } public virtual Character? Character { get; set; } public long? CharacterId { get; set; } public virtual Family? Family { get; set; } public long? FamilyId { get; set; } public virtual ICollection<WarehouseItem> WarehouseItems { get; set; } public WarehouseType Type { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/WarehouseItem.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Database.Entities.Base; using System; using System.ComponentModel.DataAnnotations; namespace NosCore.Database.Entities { public class WarehouseItem : SynchronizableBaseEntity { [Required] public virtual Warehouse Warehouse { get; set; } = null!; [Required] public Guid WarehouseId { get; set; } [Required] public virtual ItemInstance ItemInstance { get; set; } = null!; [Required] public Guid ItemInstanceId { get; set; } [Required] public short Slot { get; set; } } } ================================================ FILE: src/NosCore.Database/Entities/WearableInstance.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Database.Entities { public class WearableInstance : ItemInstance { public byte? Ammo { get; set; } public byte? Cellon { get; set; } public short? CloseDefence { get; set; } public short? Concentrate { get; set; } public short? CriticalDodge { get; set; } public byte? CriticalLuckRate { get; set; } public short? CriticalRate { get; set; } public short? DamageMaximum { get; set; } public short? DamageMinimum { get; set; } public byte? DarkElement { get; set; } public short? DarkResistance { get; set; } public short? DefenceDodge { get; set; } public short? DistanceDefence { get; set; } public short? DistanceDefenceDodge { get; set; } public short? ElementRate { get; set; } public byte? FireElement { get; set; } public short? FireResistance { get; set; } public short? HitRate { get; set; } public short? Hp { get; set; } public bool? IsEmpty { get; set; } public bool? IsFixed { get; set; } public byte? LightElement { get; set; } public short? LightResistance { get; set; } public short? MagicDefence { get; set; } public short? MaxElementRate { get; set; } public short? Mp { get; set; } public byte? ShellRarity { get; set; } public byte? WaterElement { get; set; } public short? WaterResistance { get; set; } public long? Xp { get; set; } } } ================================================ FILE: src/NosCore.Database/Hosting/PersistenceModule.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Threading.Tasks; using Autofac; using FastMember; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using NosCore.Dao; using NosCore.Dao.Interfaces; using NosCore.Data; using NosCore.Data.DataAttributes; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Database.Entities; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; namespace NosCore.Database.Hosting; public sealed class PersistenceModule : Autofac.Module { private readonly Action<ContainerBuilder, Type>? _onDtoTypeRegistered; public PersistenceModule(Action<ContainerBuilder, Type>? onDtoTypeRegistered = null) { _onDtoTypeRegistered = onDtoTypeRegistered; } protected override void Load(ContainerBuilder builder) { builder.RegisterType<NosCoreContext>().As<DbContext>(); builder.Register(c => c.Resolve<IEnumerable<IDao<IDto>>>().OfType<IDao<II18NDto>>().ToDictionary( x => x.GetType().GetGenericArguments()[1], y => y.LoadAll().GroupBy(x => x.Key ?? "") .ToDictionary(x => x.Key, x => x.ToList().ToDictionary(o => o.RegionType, o => o)))) .AsImplementedInterfaces() .SingleInstance() .AutoActivate(); if (_onDtoTypeRegistered != null) { foreach (var t in typeof(IStaticDto).Assembly.GetTypes() .Where(p => typeof(IDto).IsAssignableFrom(p) && p.IsClass)) { _onDtoTypeRegistered(builder, t); } } var registerMethod = typeof(PersistenceModule).GetMethod(nameof(RegisterDatabaseObject), BindingFlags.Public | BindingFlags.Static)!; foreach (var mapping in DiscoverDaoMappings()) { registerMethod.MakeGenericMethod(mapping.DtoType, mapping.DbType, mapping.PkType) .Invoke(null, new[] { builder, (object)mapping.IsStatic }); } builder.RegisterType<Dao<ItemInstance, IItemInstanceDto?, Guid>>() .As<IDao<IItemInstanceDto?, Guid>>().SingleInstance(); } // Mirror the DAO + DbContext registrations into IServiceCollection so frameworks that // inspect IServiceCollection at startup (Wolverine code-gen, ASP.NET Core's analyzer, // health-check scopes, etc.) can plan handler construction. The runtime IServiceProvider // is still backed by Autofac via AutofacServiceProviderFactory, so resolution semantics // are unchanged — this is a visibility shim, not a second source of truth. // // Note: we deliberately do NOT mirror the open IDao<IDto> facet here. PersistenceModule.Load // registers each Dao<TDb,TDto,TPk> as both IDao<IDto> and IDao<TDto,TPk> in Autofac. If we // mirror the IDao<IDto> facet too, Populate(services) reflows it into Autofac as a SECOND // registration, and Resolve<IEnumerable<IDao<IDto>>>().ToDictionary(by DTO type) blows up // with "An item with the same key has already been added" when the i18n dictionary is // built. Wolverine handlers want typed IDao<TDto,TPk>, not the IDto aggregation, so the // typed registration alone is sufficient for code-gen visibility. public static void MirrorTo(IServiceCollection services) { services.AddTransient<DbContext, NosCoreContext>(); foreach (var mapping in DiscoverDaoMappings()) { var daoType = typeof(Dao<,,>).MakeGenericType(mapping.DbType, mapping.DtoType, mapping.PkType); var idaoType = typeof(IDao<,>).MakeGenericType(mapping.DtoType, mapping.PkType); services.AddSingleton(idaoType, daoType); if (mapping.IsStatic) { var listType = typeof(List<>).MakeGenericType(mapping.DtoType); // The runtime IServiceProvider is Autofac-backed and has the populated list; // forwarding here lets Wolverine's planner see the type without duplicating // the load-all + i18n-injection logic. services.AddSingleton(listType, sp => sp.GetRequiredService(listType)); } } services.AddSingleton<IDao<IItemInstanceDto?, Guid>, Dao<ItemInstance, IItemInstanceDto?, Guid>>(); } public static IEnumerable<DaoMapping> DiscoverDaoMappings() { var assemblyDto = typeof(IStaticDto).Assembly.GetTypes(); var assemblyDb = typeof(Account).Assembly.GetTypes(); var optionsBuilder = new DbContextOptionsBuilder<NosCoreContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()); foreach (var dto in assemblyDto.Where(p => typeof(IDto).IsAssignableFrom(p) && (!p.Name.Contains("InstanceDto") || p.Name.Contains("Inventory")) && p.IsClass)) { var db = assemblyDb.FirstOrDefault(tgo => string.Compare(dto.Name, $"{tgo.Name}Dto", StringComparison.OrdinalIgnoreCase) == 0); if (db == null) { continue; } var pk = db.GetProperties() .FirstOrDefault(s => new NosCoreContext(optionsBuilder.Options).Model.FindEntityType(db)? .FindPrimaryKey()?.Properties.Select(x => x.Name) .Contains(s.Name) ?? false); if (pk == null) { continue; } yield return new DaoMapping(dto, db, pk.PropertyType, typeof(IStaticDto).IsAssignableFrom(dto)); } } public static void RegisterDatabaseObject<TDto, TDb, TPk>(ContainerBuilder builder, bool isStatic) where TDb : class where TPk : struct { builder.RegisterType<Dao<TDb, TDto, TPk>>().As<IDao<IDto>>().As<IDao<TDto, TPk>>().SingleInstance(); if (!isStatic) { return; } var staticMetaDataAttribute = typeof(TDb).GetCustomAttribute<StaticMetaDataAttribute>(); builder.Register(c => { var dic = c.Resolve<IDictionary<Type, Dictionary<string, Dictionary<RegionType, II18NDto>>>>(); var items = c.Resolve<IDao<TDto, TPk>>().LoadAll().ToList(); var props = StaticDtoExtension.GetI18NProperties(typeof(TDto)); if (props.Count > 0) { var regions = Enum.GetValues(typeof(RegionType)); var accessors = TypeAccessor.Create(typeof(TDto)); Parallel.ForEach(items, s => ((IStaticDto)s!).InjectI18N(props, dic, regions, accessors)); } if (items.Count != 0 || staticMetaDataAttribute == null || staticMetaDataAttribute.EmptyMessage == LogLanguageKey.UNKNOWN) { if (staticMetaDataAttribute != null && staticMetaDataAttribute.LoadedMessage != LogLanguageKey.UNKNOWN) { c.Resolve<ILogger<PersistenceModule>>().LogInformation( c.Resolve<ILogLanguageLocalizer<LogLanguageKey>>()[staticMetaDataAttribute.LoadedMessage], items.Count); } } else { c.Resolve<ILogger<PersistenceModule>>().LogError( c.Resolve<ILogLanguageLocalizer<LogLanguageKey>>()[staticMetaDataAttribute.EmptyMessage]); } return items; }) .As<List<TDto>>() .SingleInstance() .AutoActivate(); } public sealed record DaoMapping(Type DtoType, Type DbType, Type PkType, bool IsStatic); } ================================================ FILE: src/NosCore.Database/Migrations/20220103074410_FirstMigration.Designer.cs ================================================ // <auto-generated /> using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using NodaTime; using NosCore.Database; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace NosCore.Database.Migrations { [DbContext(typeof(NosCoreContext))] [Migration("20220103074410_FirstMigration")] partial class FirstMigration { protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "6.0.1") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "audit_log_type", new[] { "account_creation", "character_creation", "email_update" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "authority_type", new[] { "user", "moderator", "game_master", "administrator", "root", "closed", "banned", "unconfirmed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_class_type", new[] { "adventurer", "swordsman", "archer", "mage", "martial_artist" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_relation_type", new[] { "friend", "hidden_spouse", "spouse", "blocked" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_state", new[] { "active", "inactive" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_type", new[] { "neutral", "fire", "water", "light", "dark" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "equipment_type", new[] { "main_weapon", "armor", "hat", "gloves", "boots", "secondary_weapon", "necklace", "ring", "bracelet", "mask", "fairy", "amulet", "sp", "costume_suit", "costume_hat", "weapon_skin", "wing_skin" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority", new[] { "head", "assistant", "manager", "member" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority_type", new[] { "none", "put", "all" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_log_type", new[] { "daily_message", "raid_won", "rainbow_battle", "family_xp", "family_level_up", "level_up", "item_upgraded", "right_changed", "authority_changed", "family_managed", "user_managed", "ware_house_added", "ware_house_removed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_member_rank", new[] { "nothing", "old_uncle", "old_aunt", "father", "mother", "uncle", "aunt", "brother", "sister", "spouse", "brother2", "sister2", "old_son", "old_daugter", "middle_son", "middle_daughter", "young_son", "young_daugter", "old_little_son", "old_little_daughter", "little_son", "little_daughter", "middle_little_son", "middle_little_daugter" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "gender_type", new[] { "male", "female" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_color_type", new[] { "dark_purple", "yellow", "blue", "purple", "orange", "brown", "green", "dark_grey", "light_blue", "pink_red", "light_yellow", "light_pink", "light_green", "light_grey", "sky_blue", "black", "dark_orange", "dark_orange_variant2", "dark_orange_variant3", "dark_orange_variant4", "dark_orange_variant5", "dark_orange_variant6", "light_orange", "light_light_orange", "light_light_light_orange", "light_light_light_light_orange", "super_light_orange", "dark_yellow", "light_light_yellow", "kaki_yellow", "super_light_yellow", "super_light_yellow2", "super_light_yellow3", "little_dark_yellow", "yellow_variant", "yellow_variant1", "yellow_variant2", "yellow_variant3", "yellow_variant4", "yellow_variant5", "yellow_variant6", "yellow_variant7", "yellow_variant8", "yellow_variant9", "green_variant", "green_variant1", "dark_green_variant", "green_more_dark_variant", "green_variant2", "green_variant3", "green_variant4", "green_variant5", "green_variant6", "green_variant7", "green_variant8", "green_variant9", "green_variant10", "green_variant11", "green_variant12", "green_variant13", "green_variant14", "green_variant15", "green_variant16", "green_variant17", "green_variant18", "green_variant19", "green_variant20", "light_blue_variant1", "light_blue_variant2", "light_blue_variant3", "light_blue_variant4", "light_blue_variant5", "light_blue_variant6", "light_blue_variant7", "light_blue_variant8", "light_blue_variant9", "light_blue_variant10", "light_blue_variant11", "light_blue_variant12", "light_blue_variant13", "dark_black", "light_blue_variant14", "light_blue_variant15", "light_blue_variant16", "light_blue_variant17", "blue_variant", "blue_variant_dark", "blue_variant_dark_dark", "blue_variant_dark_dark2", "flash_blue", "flash_blue_dark", "flash_blue_dark2", "flash_blue_dark3", "flash_blue_dark4", "flash_blue_dark5", "flash_blue_dark6", "flash_blue_dark7", "flash_blue_dark8", "flash_blue_dark9", "white", "flash_blue_dark10", "flash_blue1", "flash_blue2", "flash_blue3", "flash_blue4", "flash_blue5", "flash_purple", "flash_light_purple", "flash_light_purple2", "flash_light_purple3", "flash_light_purple4", "flash_light_purple5", "light_purple", "purple_variant1", "purple_variant2", "purple_variant3", "purple_variant4", "purple_variant5", "purple_variant6", "purple_variant7", "purple_variant8", "purple_variant9", "purple_variant10", "purple_variant11", "purple_variant12", "purple_variant13", "purple_variant14", "purple_variant15" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_style_type", new[] { "hair_style_a", "hair_style_b", "hair_style_c", "hair_style_d", "no_hair" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_effect_type", new[] { "no_effect", "teleport", "apply_hair_die", "speaker", "marriage_proposal", "undefined", "sp_charger", "dropped_sp_recharger", "premium_sp_recharger", "crafted_sp_recharger", "specialist_medal", "apply_skin_partner", "change_gender", "point_initialisation", "sealed_tarot_card", "tarot_card", "red_amulet", "blue_amulet", "reinforcement_amulet", "heroic", "random_heroic", "attack_amulet", "defense_amulet", "speed_booster", "box_effect", "vehicle", "gold_nos_merchant_upgrade", "silver_nos_merchant_upgrade", "inventory_upgrade", "pet_space_upgrade", "pet_basket_upgrade", "pet_backpack_upgrade", "inventory_ticket_upgrade", "buff_potions", "marriage_separation" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_type", new[] { "weapon", "armor", "fashion", "jewelery", "specialist", "box", "shell", "main", "upgrade", "production", "map", "special", "potion", "event", "title", "quest1", "sell", "food", "snack", "magical", "part", "teacher", "ammo", "quest2", "house", "garden", "minigame", "terrace", "miniland_theme" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "mate_type", new[] { "partner", "pet" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "miniland_state", new[] { "open", "private", "lock" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "monster_type", new[] { "unknown", "partner", "npc", "well", "portal", "boss", "elite", "peapod", "special", "gem_space_time" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "noscore_pocket_type", new[] { "equipment", "main", "etc", "miniland", "specialist", "costume", "wear" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "penalty_type", new[] { "muted", "banned", "block_exp", "block_f_exp", "block_rep", "warning" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "portal_type", new[] { "ts_normal", "closed", "open", "miniland", "ts_end", "ts_end_closed", "exit", "exit_closed", "raid", "effect", "blue_raid", "dark_raid", "time_space", "shop_teleport", "map_portal" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "quest_type", new[] { "hunt", "special_collect", "collect_in_raid", "brings", "capture_without_getting_the_monster", "capture", "times_space", "product", "number_of_kill", "target_reput", "ts_point", "dialog1", "collect_in_ts", "required", "wear", "needed", "collect", "transmit_gold", "go_to", "collect_map_entity", "use", "dialog2", "un_know", "inspect", "win_raid", "flower_quest" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "region_type", new[] { "en", "de", "fr", "it", "pl", "es", "ru", "cs", "tr" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "scripted_instance_type", new[] { "time_space", "raid", "raid_act4" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "static_bonus_type", new[] { "bazaar_medal_gold", "bazaar_medal_silver", "back_pack", "pet_basket", "pet_back_pack", "inventory_ticket_upgrade" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "teleporter_type", new[] { "teleporter", "teleporter_on_map" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "warehouse_type", new[] { "warehouse", "family_ware_house", "pet_warehouse" }); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Property<long>("AccountId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("AccountId")); b.Property<short>("Authority") .HasColumnType("smallint"); b.Property<long>("BankMoney") .HasColumnType("bigint"); b.Property<string>("Email") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ItemShopMoney") .HasColumnType("bigint"); b.Property<int>("Language") .HasColumnType("integer"); b.Property<string>("MfaSecret") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthPassword") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthSalt") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Password") .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("RegistrationIp") .HasMaxLength(45) .HasColumnType("character varying(45)"); b.Property<string>("VerificationToken") .HasMaxLength(32) .HasColumnType("character varying(32)"); b.HasKey("AccountId"); b.HasIndex("Name") .IsUnique(); b.ToTable("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("Scene") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("ActId"); b.ToTable("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("ActPartNumber") .HasColumnType("smallint"); b.Property<byte>("MaxTs") .HasColumnType("smallint"); b.HasKey("ActPartId"); b.HasIndex("ActId"); b.ToTable("ActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.AuditLog", b => { b.Property<Guid>("AuditId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("AuditLogType") .HasColumnType("integer"); b.Property<string>("TargetId") .IsRequired() .HasMaxLength(80) .HasColumnType("character varying(80)"); b.Property<string>("TargetType") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)"); b.Property<Instant>("Time") .HasColumnType("timestamp with time zone"); b.Property<string>("Value") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("AuditId"); b.ToTable("AuditLog"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.Property<long>("BazaarItemId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("BazaarItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<bool>("IsPackage") .HasColumnType("boolean"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<bool>("MedalUsed") .HasColumnType("boolean"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<long>("SellerId") .HasColumnType("bigint"); b.HasKey("BazaarItemId"); b.HasIndex("ItemInstanceId"); b.HasIndex("SellerId"); b.ToTable("BazaarItem"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.Property<short>("BCardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("BCardId")); b.Property<short?>("CardId") .HasColumnType("smallint"); b.Property<byte>("CastType") .HasColumnType("smallint"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<bool>("IsLevelDivided") .HasColumnType("boolean"); b.Property<bool>("IsLevelScaled") .HasColumnType("boolean"); b.Property<short?>("ItemVNum") .HasColumnType("smallint"); b.Property<short?>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<int>("SecondData") .HasColumnType("integer"); b.Property<short?>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("SubType") .HasColumnType("smallint"); b.Property<int>("ThirdData") .HasColumnType("integer"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("BCardId"); b.HasIndex("CardId"); b.HasIndex("ItemVNum"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("BCard"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<byte>("BuffType") .HasColumnType("smallint"); b.Property<int>("Delay") .HasColumnType("integer"); b.Property<int>("Duration") .HasColumnType("integer"); b.Property<int>("EffectId") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("Propability") .HasColumnType("smallint"); b.Property<short>("TimeoutBuff") .HasColumnType("smallint"); b.Property<byte>("TimeoutBuffChance") .HasColumnType("smallint"); b.HasKey("CardId"); b.ToTable("Card"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Property<long>("CharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("CharacterId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<int>("Act4Dead") .HasColumnType("integer"); b.Property<int>("Act4Kill") .HasColumnType("integer"); b.Property<int>("Act4Points") .HasColumnType("integer"); b.Property<int>("ArenaWinner") .HasColumnType("integer"); b.Property<string>("Biography") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("BuffBlocked") .HasColumnType("boolean"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Compliment") .HasColumnType("smallint"); b.Property<Guid?>("CurrentScriptId") .HasColumnType("uuid"); b.Property<short>("Dignity") .HasColumnType("smallint"); b.Property<int>("Elo") .HasColumnType("integer"); b.Property<bool>("EmoticonsBlocked") .HasColumnType("boolean"); b.Property<bool>("ExchangeBlocked") .HasColumnType("boolean"); b.Property<byte>("Faction") .HasColumnType("smallint"); b.Property<bool>("FamilyRequestBlocked") .HasColumnType("boolean"); b.Property<bool>("FriendRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("Gender") .HasColumnType("smallint"); b.Property<long>("Gold") .HasColumnType("bigint"); b.Property<bool>("GroupRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("HairColor") .HasColumnType("smallint"); b.Property<byte>("HairStyle") .HasColumnType("smallint"); b.Property<bool>("HeroChatBlocked") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<long>("HeroXp") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("HpBlocked") .HasColumnType("boolean"); b.Property<byte>("JobLevel") .HasColumnType("smallint"); b.Property<long>("JobLevelXp") .HasColumnType("bigint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<long>("LevelXp") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<int>("MasterPoints") .HasColumnType("integer"); b.Property<int>("MasterTicket") .HasColumnType("integer"); b.Property<byte>("MaxMateCount") .HasColumnType("smallint"); b.Property<bool>("MinilandInviteBlocked") .HasColumnType("boolean"); b.Property<bool>("MouseAimLock") .HasColumnType("boolean"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("Prefix") .HasMaxLength(25) .HasColumnType("character varying(25)"); b.Property<bool>("QuickGetUp") .HasColumnType("boolean"); b.Property<long>("RagePoint") .HasColumnType("bigint"); b.Property<long>("Reput") .HasColumnType("bigint"); b.Property<byte>("ServerId") .HasColumnType("smallint"); b.Property<bool>("ShouldRename") .HasColumnType("boolean"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<int>("SpAdditionPoint") .HasColumnType("integer"); b.Property<int>("SpPoint") .HasColumnType("integer"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("TalentLose") .HasColumnType("integer"); b.Property<int>("TalentSurrender") .HasColumnType("integer"); b.Property<int>("TalentWin") .HasColumnType("integer"); b.Property<bool>("WhisperBlocked") .HasColumnType("boolean"); b.HasKey("CharacterId"); b.HasIndex("AccountId"); b.HasIndex("CurrentScriptId"); b.HasIndex("MapId"); b.ToTable("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.HasKey("Id"); b.HasIndex("ActPartId"); b.HasIndex("CharacterId"); b.ToTable("CharacterActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("CompletedOn") .HasColumnType("timestamp with time zone"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("QuestId"); b.ToTable("CharacterQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.Property<Guid>("CharacterRelationId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<long>("RelatedCharacterId") .HasColumnType("bigint"); b.Property<short>("RelationType") .HasColumnType("smallint"); b.HasKey("CharacterRelationId"); b.HasIndex("CharacterId"); b.HasIndex("RelatedCharacterId"); b.ToTable("CharacterRelation"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("SkillVNum"); b.ToTable("CharacterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.Property<int>("ComboId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ComboId")); b.Property<short>("Animation") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("Hit") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("ComboId"); b.HasIndex("SkillVNum"); b.ToTable("Combo"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.Property<short>("DropId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DropId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("DropChance") .HasColumnType("integer"); b.Property<short?>("MapTypeId") .HasColumnType("smallint"); b.Property<short?>("MonsterVNum") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("DropId"); b.HasIndex("MapTypeId"); b.HasIndex("MonsterVNum"); b.HasIndex("VNum"); b.ToTable("Drop"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<int>("Value") .HasColumnType("integer"); b.Property<Guid>("WearableInstanceId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("WearableInstanceId"); b.ToTable("EquipmentOption"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Property<long>("FamilyId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyId")); b.Property<int>("FamilyExperience") .HasColumnType("integer"); b.Property<byte>("FamilyFaction") .HasColumnType("smallint"); b.Property<byte>("FamilyHeadGender") .HasColumnType("smallint"); b.Property<byte>("FamilyLevel") .HasColumnType("smallint"); b.Property<string>("FamilyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("ManagerAuthorityType") .HasColumnType("integer"); b.Property<bool>("ManagerCanGetHistory") .HasColumnType("boolean"); b.Property<bool>("ManagerCanInvite") .HasColumnType("boolean"); b.Property<bool>("ManagerCanNotice") .HasColumnType("boolean"); b.Property<bool>("ManagerCanShout") .HasColumnType("boolean"); b.Property<byte>("MaxSize") .HasColumnType("smallint"); b.Property<int>("MemberAuthorityType") .HasColumnType("integer"); b.Property<bool>("MemberCanGetHistory") .HasColumnType("boolean"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("WarehouseSize") .HasColumnType("smallint"); b.HasKey("FamilyId"); b.ToTable("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.Property<long>("FamilyCharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyCharacterId")); b.Property<byte>("Authority") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<string>("DailyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Experience") .HasColumnType("integer"); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Rank") .HasColumnType("smallint"); b.HasKey("FamilyCharacterId"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("FamilyCharacter"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.Property<long>("FamilyLogId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyLogId")); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<string>("FamilyLogData") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("FamilyLogType") .HasColumnType("smallint"); b.Property<Instant>("Timestamp") .HasColumnType("timestamp with time zone"); b.HasKey("FamilyLogId"); b.HasIndex("FamilyId"); b.ToTable("FamilyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NActDesc", b => { b.Property<int>("I18NActDescId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NActDescId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NActDescId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NActDesc"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NBCard", b => { b.Property<int>("I18NbCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NbCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NbCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NBCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NCard", b => { b.Property<int>("I18NCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NItem", b => { b.Property<int>("I18NItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NItemId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NItemId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NItem"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapIdData", b => { b.Property<int>("I18NMapIdDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapIdDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapIdDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapIdData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapPointData", b => { b.Property<int>("I18NMapPointDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapPointDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapPointDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapPointData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonster", b => { b.Property<int>("I18NNpcMonsterId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonsterTalk", b => { b.Property<int>("I18NNpcMonsterTalkId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterTalkId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterTalkId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonsterTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NQuest", b => { b.Property<int>("I18NQuestId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NQuestId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NQuestId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NSkill", b => { b.Property<int>("I18NSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NSkillId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NSkillId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("CharacterId", "Slot", "Type") .IsUnique(); b.ToTable("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Property<short>("VNum") .HasColumnType("smallint"); b.Property<byte>("BasicUpgrade") .HasColumnType("smallint"); b.Property<byte>("CellonLvl") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte>("DarkElement") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<int>("Effect") .HasColumnType("integer"); b.Property<int>("EffectValue") .HasColumnType("integer"); b.Property<int>("Element") .HasColumnType("integer"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<byte>("EquipmentSlot") .HasColumnType("smallint"); b.Property<byte>("FireElement") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<bool>("Flag1") .HasColumnType("boolean"); b.Property<bool>("Flag2") .HasColumnType("boolean"); b.Property<bool>("Flag3") .HasColumnType("boolean"); b.Property<bool>("Flag4") .HasColumnType("boolean"); b.Property<bool>("Flag6") .HasColumnType("boolean"); b.Property<bool>("Flag7") .HasColumnType("boolean"); b.Property<bool>("Flag8") .HasColumnType("boolean"); b.Property<bool>("Flag9") .HasColumnType("boolean"); b.Property<byte>("Height") .HasColumnType("smallint"); b.Property<short>("HitRate") .HasColumnType("smallint"); b.Property<short>("Hp") .HasColumnType("smallint"); b.Property<short>("HpRegeneration") .HasColumnType("smallint"); b.Property<bool>("IsColored") .HasColumnType("boolean"); b.Property<bool>("IsConsumable") .HasColumnType("boolean"); b.Property<bool>("IsDroppable") .HasColumnType("boolean"); b.Property<bool>("IsHeroic") .HasColumnType("boolean"); b.Property<bool>("IsMinilandActionable") .HasColumnType("boolean"); b.Property<bool>("IsSoldable") .HasColumnType("boolean"); b.Property<bool>("IsTradable") .HasColumnType("boolean"); b.Property<bool>("IsWarehouse") .HasColumnType("boolean"); b.Property<byte>("ItemSubType") .HasColumnType("smallint"); b.Property<byte>("ItemType") .HasColumnType("smallint"); b.Property<long>("ItemValidTime") .HasColumnType("bigint"); b.Property<byte>("LevelJobMinimum") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("LightElement") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<byte>("MaxCellon") .HasColumnType("smallint"); b.Property<byte>("MaxCellonLvl") .HasColumnType("smallint"); b.Property<short>("MaxElementRate") .HasColumnType("smallint"); b.Property<byte>("MaximumAmmo") .HasColumnType("smallint"); b.Property<int>("MinilandObjectPoint") .HasColumnType("integer"); b.Property<short>("MoreHp") .HasColumnType("smallint"); b.Property<short>("MoreMp") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("Mp") .HasColumnType("smallint"); b.Property<short>("MpRegeneration") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<short>("PvpDefence") .HasColumnType("smallint"); b.Property<byte>("PvpStrength") .HasColumnType("smallint"); b.Property<short>("ReduceOposantResistance") .HasColumnType("smallint"); b.Property<long>("ReputPrice") .HasColumnType("bigint"); b.Property<byte>("ReputationMinimum") .HasColumnType("smallint"); b.Property<bool>("RequireBinding") .HasColumnType("boolean"); b.Property<short>("SecondMorph") .HasColumnType("smallint"); b.Property<int>("SecondaryElement") .HasColumnType("integer"); b.Property<byte>("Sex") .HasColumnType("smallint"); b.Property<byte>("SpType") .HasColumnType("smallint"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("WaitDelay") .HasColumnType("smallint"); b.Property<byte>("WaterElement") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<byte>("Width") .HasColumnType("smallint"); b.HasKey("VNum"); b.ToTable("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<long?>("BoundCharacterId") .HasColumnType("bigint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("Design") .HasColumnType("smallint"); b.Property<string>("Discriminator") .IsRequired() .HasColumnType("text"); b.Property<int>("DurabilityPoint") .HasColumnType("integer"); b.Property<Instant?>("ItemDeleteTime") .HasColumnType("timestamp with time zone"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("BoundCharacterId"); b.HasIndex("ItemVNum"); b.ToTable("ItemInstance"); b.HasDiscriminator<string>("Discriminator").HasValue("ItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.Property<long>("MailId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MailId")); b.Property<short?>("Armor") .HasColumnType("smallint"); b.Property<short?>("CostumeHat") .HasColumnType("smallint"); b.Property<short?>("CostumeSuit") .HasColumnType("smallint"); b.Property<Instant>("Date") .HasColumnType("timestamp with time zone"); b.Property<short?>("Fairy") .HasColumnType("smallint"); b.Property<short?>("Hat") .HasColumnType("smallint"); b.Property<bool>("IsOpened") .HasColumnType("boolean"); b.Property<bool>("IsSenderCopy") .HasColumnType("boolean"); b.Property<Guid?>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short?>("MainWeapon") .HasColumnType("smallint"); b.Property<short?>("Mask") .HasColumnType("smallint"); b.Property<string>("Message") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ReceiverId") .HasColumnType("bigint"); b.Property<short?>("SecondaryWeapon") .HasColumnType("smallint"); b.Property<byte?>("SenderCharacterClass") .HasColumnType("smallint"); b.Property<byte?>("SenderGender") .HasColumnType("smallint"); b.Property<byte?>("SenderHairColor") .HasColumnType("smallint"); b.Property<byte?>("SenderHairStyle") .HasColumnType("smallint"); b.Property<long?>("SenderId") .HasColumnType("bigint"); b.Property<short?>("SenderMorphId") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short?>("WeaponSkin") .HasColumnType("smallint"); b.Property<short?>("WingSkin") .HasColumnType("smallint"); b.HasKey("MailId"); b.HasIndex("ItemInstanceId"); b.HasIndex("ReceiverId"); b.HasIndex("SenderId"); b.ToTable("Mail"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<byte[]>("Data") .IsRequired() .HasColumnType("bytea"); b.Property<int>("Music") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("ShopAllowed") .HasColumnType("boolean"); b.HasKey("MapId"); b.ToTable("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.Property<int>("MapMonsterId") .HasColumnType("integer"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapMonsterId"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short?>("Dialog") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("EffectDelay") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<bool>("IsSitting") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapNpcId"); b.HasIndex("Dialog"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.Property<string>("MapTypeName") .IsRequired() .HasColumnType("text"); b.Property<short>("PotionDelay") .HasColumnType("smallint"); b.Property<long?>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<long?>("ReturnMapTypeId") .HasColumnType("bigint"); b.HasKey("MapTypeId"); b.HasIndex("RespawnMapTypeId"); b.HasIndex("ReturnMapTypeId"); b.ToTable("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.Property<short>("MapTypeMapId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("MapTypeMapId")); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.HasKey("MapTypeMapId"); b.HasIndex("MapTypeId"); b.HasIndex("MapId", "MapTypeId") .IsUnique(); b.ToTable("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.Property<long>("MateId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MateId")); b.Property<byte>("Attack") .HasColumnType("smallint"); b.Property<bool>("CanPickUp") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<byte>("Defence") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<long>("Experience") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("IsSummonable") .HasColumnType("boolean"); b.Property<bool>("IsTeamMember") .HasColumnType("boolean"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("Loyalty") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("MateType") .HasColumnType("smallint"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short>("Skin") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MateId"); b.HasIndex("CharacterId"); b.HasIndex("VNum"); b.ToTable("Mate"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.Property<Guid>("MinilandId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("DailyVisitCount") .HasColumnType("integer"); b.Property<string>("MinilandMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("MinilandPoint") .HasColumnType("bigint"); b.Property<long>("OwnerId") .HasColumnType("bigint"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("VisitCount") .HasColumnType("integer"); b.Property<short>("WelcomeMusicInfo") .HasColumnType("smallint"); b.HasKey("MinilandId"); b.HasIndex("OwnerId"); b.ToTable("Miniland"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.Property<Guid>("MinilandObjectId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<Guid?>("InventoryItemInstanceId") .HasColumnType("uuid"); b.Property<byte>("Level1BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level2BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level3BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level4BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level5BoxAmount") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.HasKey("MinilandObjectId"); b.HasIndex("InventoryItemInstanceId"); b.ToTable("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<byte>("AmountRequired") .HasColumnType("smallint"); b.Property<byte>("AttackClass") .HasColumnType("smallint"); b.Property<byte>("AttackUpgrade") .HasColumnType("smallint"); b.Property<byte>("BasicArea") .HasColumnType("smallint"); b.Property<short>("BasicCooldown") .HasColumnType("smallint"); b.Property<byte>("BasicRange") .HasColumnType("smallint"); b.Property<short>("BasicSkill") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalChance") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<byte>("DefenceUpgrade") .HasColumnType("smallint"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<int>("GiveDamagePercentage") .HasColumnType("integer"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<int>("HeroXp") .HasColumnType("integer"); b.Property<bool>("IsHostile") .HasColumnType("boolean"); b.Property<bool>("IsPercent") .HasColumnType("boolean"); b.Property<int>("JobXp") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<int>("MaxHp") .HasColumnType("integer"); b.Property<int>("MaxMp") .HasColumnType("integer"); b.Property<byte>("MonsterType") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("NoAggresiveIcon") .HasColumnType("boolean"); b.Property<byte>("NoticeRange") .HasColumnType("smallint"); b.Property<byte>("Race") .HasColumnType("smallint"); b.Property<byte>("RaceType") .HasColumnType("smallint"); b.Property<int>("RespawnTime") .HasColumnType("integer"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<int>("TakeDamages") .HasColumnType("integer"); b.Property<short>("VNumRequired") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<int>("Xp") .HasColumnType("integer"); b.HasKey("NpcMonsterVNum"); b.ToTable("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.Property<long>("NpcMonsterSkillId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("NpcMonsterSkillId")); b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<short>("Rate") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("NpcMonsterSkillId"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Property<short>("DialogId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DialogId")); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("DialogId"); b.ToTable("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.Property<int>("PenaltyLogId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PenaltyLogId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<string>("AdminName") .IsRequired() .HasColumnType("text"); b.Property<Instant>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<byte>("Penalty") .HasColumnType("smallint"); b.Property<string>("Reason") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("PenaltyLogId"); b.HasIndex("AccountId"); b.ToTable("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.Property<int>("PortalId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PortalId")); b.Property<short>("DestinationMapId") .HasColumnType("smallint"); b.Property<short>("DestinationX") .HasColumnType("smallint"); b.Property<short>("DestinationY") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<short>("SourceMapId") .HasColumnType("smallint"); b.Property<short>("SourceX") .HasColumnType("smallint"); b.Property<short>("SourceY") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("PortalId"); b.HasIndex("DestinationMapId"); b.HasIndex("SourceMapId"); b.ToTable("Portal"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<bool>("AutoFinish") .HasColumnType("boolean"); b.Property<string>("Desc") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int?>("EndDialogId") .HasColumnType("integer"); b.Property<bool>("IsDaily") .HasColumnType("boolean"); b.Property<bool>("IsSecondary") .HasColumnType("boolean"); b.Property<byte>("LevelMax") .HasColumnType("smallint"); b.Property<byte>("LevelMin") .HasColumnType("smallint"); b.Property<short?>("NextQuestId") .HasColumnType("smallint"); b.Property<short>("QuestType") .HasColumnType("smallint"); b.Property<short?>("RequiredQuestId") .HasColumnType("smallint"); b.Property<int?>("SpecialData") .HasColumnType("integer"); b.Property<int?>("StartDialogId") .HasColumnType("integer"); b.Property<short?>("TargetMap") .HasColumnType("smallint"); b.Property<short?>("TargetX") .HasColumnType("smallint"); b.Property<short?>("TargetY") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("QuestId"); b.ToTable("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Property<Guid>("QuestObjectiveId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<int?>("FourthData") .HasColumnType("integer"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<int?>("SecondData") .HasColumnType("integer"); b.Property<int?>("ThirdData") .HasColumnType("integer"); b.HasKey("QuestObjectiveId"); b.HasIndex("QuestId"); b.ToTable("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<short>("QuestRewardId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("QuestId"); b.HasIndex("QuestRewardId"); b.ToTable("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Property<short>("QuestRewardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("QuestRewardId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("Data") .HasColumnType("integer"); b.Property<byte>("Design") .HasColumnType("smallint"); b.Property<byte>("Rarity") .HasColumnType("smallint"); b.Property<byte>("RewardType") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("QuestRewardId"); b.ToTable("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("IconType") .HasColumnType("smallint"); b.Property<short>("IconVNum") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("QuickListIndex") .HasColumnType("smallint"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.ToTable("QuicklistEntry"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Property<short>("RecipeId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeId")); b.Property<byte>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.HasKey("RecipeId"); b.HasIndex("ItemVNum"); b.HasIndex("MapNpcId"); b.ToTable("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.Property<short>("RecipeItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("RecipeId") .HasColumnType("smallint"); b.HasKey("RecipeItemId"); b.HasIndex("ItemVNum"); b.HasIndex("RecipeId"); b.ToTable("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.Property<long>("RespawnId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("RespawnId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("X") .HasColumnType("smallint"); b.Property<short>("Y") .HasColumnType("smallint"); b.HasKey("RespawnId"); b.HasIndex("CharacterId"); b.HasIndex("MapId"); b.HasIndex("RespawnMapTypeId"); b.ToTable("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("DefaultX") .HasColumnType("smallint"); b.Property<short>("DefaultY") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("RespawnMapTypeId"); b.HasIndex("MapId"); b.ToTable("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.Property<short>("RollGeneratedItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RollGeneratedItemId")); b.Property<bool>("IsRareRandom") .HasColumnType("boolean"); b.Property<bool>("IsSuperReward") .HasColumnType("boolean"); b.Property<byte>("ItemGeneratedAmount") .HasColumnType("smallint"); b.Property<byte>("ItemGeneratedUpgrade") .HasColumnType("smallint"); b.Property<short>("ItemGeneratedVNum") .HasColumnType("smallint"); b.Property<short>("MaximumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("MinimumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("OriginalItemDesign") .HasColumnType("smallint"); b.Property<short>("OriginalItemVNum") .HasColumnType("smallint"); b.Property<short>("Probability") .HasColumnType("smallint"); b.HasKey("RollGeneratedItemId"); b.HasIndex("ItemGeneratedVNum"); b.HasIndex("OriginalItemVNum"); b.ToTable("RollGeneratedItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short?>("Argument1") .HasColumnType("smallint"); b.Property<short?>("Argument2") .HasColumnType("smallint"); b.Property<short?>("Argument3") .HasColumnType("smallint"); b.Property<byte>("ScriptId") .HasColumnType("smallint"); b.Property<short>("ScriptStepId") .HasColumnType("smallint"); b.Property<string>("StepType") .IsRequired() .HasColumnType("text"); b.Property<string>("StringArgument") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("ScriptId", "ScriptStepId") .IsUnique(); b.ToTable("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.Property<short>("ScriptedInstanceId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("ScriptedInstanceId")); b.Property<string>("Label") .HasColumnType("text"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("PositionX") .HasColumnType("smallint"); b.Property<short>("PositionY") .HasColumnType("smallint"); b.Property<string>("Script") .HasMaxLength(2147483647) .HasColumnType("text"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ScriptedInstanceId"); b.HasIndex("MapId"); b.ToTable("ScriptedInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Property<int>("ShopId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopId")); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<byte>("MenuType") .HasColumnType("smallint"); b.Property<byte>("ShopType") .HasColumnType("smallint"); b.HasKey("ShopId"); b.HasIndex("MapNpcId"); b.ToTable("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.Property<int>("ShopItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopItemId")); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("ShopItemId"); b.HasIndex("ItemVNum"); b.HasIndex("ShopId"); b.ToTable("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.Property<int>("ShopSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopSkillId")); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ShopSkillId"); b.HasIndex("ShopId"); b.HasIndex("SkillVNum"); b.ToTable("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<short>("AttackAnimation") .HasColumnType("smallint"); b.Property<short>("CastAnimation") .HasColumnType("smallint"); b.Property<short>("CastEffect") .HasColumnType("smallint"); b.Property<short>("CastId") .HasColumnType("smallint"); b.Property<short>("CastTime") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Cooldown") .HasColumnType("smallint"); b.Property<byte>("CpCost") .HasColumnType("smallint"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<byte>("HitType") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("MinimumAdventurerLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumArcherLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumMagicianLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumSwordmanLevel") .HasColumnType("smallint"); b.Property<short>("MpCost") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Price") .HasColumnType("integer"); b.Property<byte>("Range") .HasColumnType("smallint"); b.Property<byte>("SkillType") .HasColumnType("smallint"); b.Property<byte>("TargetRange") .HasColumnType("smallint"); b.Property<byte>("TargetType") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("UpgradeSkill") .HasColumnType("smallint"); b.Property<short>("UpgradeType") .HasColumnType("smallint"); b.HasKey("SkillVNum"); b.ToTable("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.Property<long>("StaticBonusId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBonusId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<byte>("StaticBonusType") .HasColumnType("smallint"); b.HasKey("StaticBonusId"); b.HasIndex("CharacterId"); b.ToTable("StaticBonus"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.Property<long>("StaticBuffId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBuffId")); b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<int>("RemainingTime") .HasColumnType("integer"); b.HasKey("StaticBuffId"); b.HasIndex("CardId"); b.HasIndex("CharacterId"); b.ToTable("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.Property<short>("TeleporterId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("TeleporterId")); b.Property<short>("Index") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("TeleporterId"); b.HasIndex("MapId"); b.HasIndex("MapNpcId"); b.ToTable("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<bool>("Active") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("TitleType") .HasColumnType("smallint"); b.Property<bool>("Visible") .HasColumnType("boolean"); b.HasKey("Id"); b.HasIndex("CharacterId", "TitleType") .IsUnique(); b.ToTable("Title"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long?>("CharacterId") .HasColumnType("bigint"); b.Property<long?>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<Guid>("WarehouseId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("WarehouseId"); b.ToTable("WarehouseItem"); }); modelBuilder.Entity("NosCore.Database.Entities.UsableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("UsableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.WearableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<byte?>("Ammo") .HasColumnType("smallint"); b.Property<byte?>("Cellon") .HasColumnType("smallint"); b.Property<short?>("CloseDefence") .HasColumnType("smallint"); b.Property<short?>("Concentrate") .HasColumnType("smallint"); b.Property<short?>("CriticalDodge") .HasColumnType("smallint"); b.Property<byte?>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short?>("CriticalRate") .HasColumnType("smallint"); b.Property<short?>("DamageMaximum") .HasColumnType("smallint"); b.Property<short?>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte?>("DarkElement") .HasColumnType("smallint"); b.Property<short?>("DarkResistance") .HasColumnType("smallint"); b.Property<short?>("DefenceDodge") .HasColumnType("smallint"); b.Property<short?>("DistanceDefence") .HasColumnType("smallint"); b.Property<short?>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<short?>("ElementRate") .HasColumnType("smallint"); b.Property<byte?>("FireElement") .HasColumnType("smallint"); b.Property<short?>("FireResistance") .HasColumnType("smallint"); b.Property<short?>("HitRate") .HasColumnType("smallint"); b.Property<short?>("Hp") .HasColumnType("smallint") .HasColumnName("WearableInstance_Hp"); b.Property<bool?>("IsEmpty") .HasColumnType("boolean"); b.Property<bool?>("IsFixed") .HasColumnType("boolean"); b.Property<byte?>("LightElement") .HasColumnType("smallint"); b.Property<short?>("LightResistance") .HasColumnType("smallint"); b.Property<short?>("MagicDefence") .HasColumnType("smallint"); b.Property<short?>("MaxElementRate") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint") .HasColumnName("WearableInstance_Mp"); b.Property<byte?>("ShellRarity") .HasColumnType("smallint"); b.Property<byte?>("WaterElement") .HasColumnType("smallint"); b.Property<short?>("WaterResistance") .HasColumnType("smallint"); b.Property<long?>("Xp") .HasColumnType("bigint"); b.HasDiscriminator().HasValue("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.SpecialistInstance", b => { b.HasBaseType("NosCore.Database.Entities.WearableInstance"); b.Property<short>("SlDamage") .HasColumnType("smallint"); b.Property<short>("SlDefence") .HasColumnType("smallint"); b.Property<short>("SlElement") .HasColumnType("smallint"); b.Property<short>("SlHp") .HasColumnType("smallint"); b.Property<byte>("SpDamage") .HasColumnType("smallint"); b.Property<byte>("SpDark") .HasColumnType("smallint"); b.Property<byte>("SpDefence") .HasColumnType("smallint"); b.Property<byte>("SpElement") .HasColumnType("smallint"); b.Property<byte>("SpFire") .HasColumnType("smallint"); b.Property<byte>("SpHp") .HasColumnType("smallint"); b.Property<byte>("SpLevel") .HasColumnType("smallint"); b.Property<byte>("SpLight") .HasColumnType("smallint"); b.Property<byte>("SpStoneUpgrade") .HasColumnType("smallint"); b.Property<byte>("SpWater") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("SpecialistInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.BoxInstance", b => { b.HasBaseType("NosCore.Database.Entities.SpecialistInstance"); b.Property<short?>("HoldingVNum") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("BoxInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.HasOne("NosCore.Database.Entities.Act", "Act") .WithMany("ActParts") .HasForeignKey("ActId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("BazaarItem") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Seller") .WithMany("BazaarItem") .HasForeignKey("SellerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Seller"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("BCards") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("BCards") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("BCards") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("BCards") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Card"); b.Navigation("Item"); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("Character") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Script", "Script") .WithMany("Characters") .HasForeignKey("CurrentScriptId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Character") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); b.Navigation("Map"); b.Navigation("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.HasOne("NosCore.Database.Entities.ActPart", "ActPart") .WithMany("CharacterActParts") .HasForeignKey("ActPartId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterActParts") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ActPart"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterQuest") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("CharacterQuest") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.HasOne("NosCore.Database.Entities.Character", "Character1") .WithMany("CharacterRelation1") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character2") .WithMany("CharacterRelation2") .HasForeignKey("RelatedCharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character1"); b.Navigation("Character2"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterSkill") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("CharacterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("Combo") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("Drops") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Drop") .HasForeignKey("MonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Drop") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapType"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.HasOne("NosCore.Database.Entities.WearableInstance", "WearableInstance") .WithMany() .HasForeignKey("WearableInstanceId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("FamilyCharacter") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyCharacters") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyLogs") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Inventory") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("InventoryItemInstance") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("ItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "BoundCharacter") .WithMany() .HasForeignKey("BoundCharacterId"); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ItemInstances") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("BoundCharacter"); b.Navigation("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("Mail") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Character", "Receiver") .WithMany("Mail1") .HasForeignKey("ReceiverId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Sender") .WithMany("Mail") .HasForeignKey("SenderId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("ItemInstance"); b.Navigation("Receiver"); b.Navigation("Sender"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapMonster") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapMonster") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.HasOne("NosCore.Database.Entities.NpcTalk", "NpcTalk") .WithMany("MapNpc") .HasForeignKey("Dialog") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapNpc") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapNpc") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); b.Navigation("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("MapTypes") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.RespawnMapType", "ReturnMapType") .WithMany("MapTypes1") .HasForeignKey("ReturnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("RespawnMapType"); b.Navigation("ReturnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapTypeMap") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("MapTypeMap") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Mate") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Mate") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.HasOne("NosCore.Database.Entities.Character", "Owner") .WithMany("Miniland") .HasForeignKey("OwnerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Owner"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.HasOne("NosCore.Database.Entities.InventoryItemInstance", "InventoryItemInstance") .WithMany("MinilandObject") .HasForeignKey("InventoryItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("NpcMonsterSkill") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("NpcMonsterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("PenaltyLog") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Portal") .HasForeignKey("DestinationMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map1") .WithMany("Portal1") .HasForeignKey("SourceMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("Map1"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestObjective") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestQuestReward") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestReward", "QuestReward") .WithMany("QuestQuestReward") .HasForeignKey("QuestRewardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); b.Navigation("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("QuicklistEntry") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Recipe") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Recipe") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("RecipeItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Recipe", "Recipe") .WithMany("RecipeItem") .HasForeignKey("RecipeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Respawn") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Respawn") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("Respawn") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Map"); b.Navigation("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("RespawnMapType") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.HasOne("NosCore.Database.Entities.Item", "ItemGenerated") .WithMany("RollGeneratedItem2") .HasForeignKey("ItemGeneratedVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Item", "OriginalItem") .WithMany("RollGeneratedItem") .HasForeignKey("OriginalItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemGenerated"); b.Navigation("OriginalItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("ScriptedInstance") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Shop") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ShopItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopItem") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopSkill") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("ShopSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Shop"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBonus") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("StaticBuff") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBuff") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Card"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Teleporter") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Teleporter") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Title") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Warehouses") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("Warehouses") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("WarehouseItems") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Warehouse", "Warehouse") .WithMany("WarehouseItems") .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Navigation("Character"); b.Navigation("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Navigation("ActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Navigation("CharacterActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Navigation("BCards"); b.Navigation("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Navigation("BazaarItem"); b.Navigation("CharacterActParts"); b.Navigation("CharacterQuest"); b.Navigation("CharacterRelation1"); b.Navigation("CharacterRelation2"); b.Navigation("CharacterSkill"); b.Navigation("FamilyCharacter"); b.Navigation("Inventory"); b.Navigation("Mail"); b.Navigation("Mail1"); b.Navigation("Mate"); b.Navigation("Miniland"); b.Navigation("QuicklistEntry"); b.Navigation("Respawn"); b.Navigation("StaticBonus"); b.Navigation("StaticBuff"); b.Navigation("Title"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Navigation("FamilyCharacters"); b.Navigation("FamilyLogs"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Navigation("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("ItemInstances"); b.Navigation("Recipe"); b.Navigation("RecipeItem"); b.Navigation("RollGeneratedItem"); b.Navigation("RollGeneratedItem2"); b.Navigation("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Navigation("BazaarItem"); b.Navigation("InventoryItemInstance"); b.Navigation("Mail"); b.Navigation("WarehouseItems"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Navigation("Character"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("MapTypeMap"); b.Navigation("Portal"); b.Navigation("Portal1"); b.Navigation("Respawn"); b.Navigation("RespawnMapType"); b.Navigation("ScriptedInstance"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Navigation("Recipe"); b.Navigation("Shop"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Navigation("Drops"); b.Navigation("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("Mate"); b.Navigation("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Navigation("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Navigation("MapTypes"); b.Navigation("MapTypes1"); b.Navigation("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Navigation("Characters"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Navigation("ShopItem"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Navigation("BCards"); b.Navigation("CharacterSkill"); b.Navigation("Combo"); b.Navigation("NpcMonsterSkill"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Navigation("WarehouseItems"); }); #pragma warning restore 612, 618 } } } ================================================ FILE: src/NosCore.Database/Migrations/20220103074410_FirstMigration.cs ================================================ using Microsoft.EntityFrameworkCore.Migrations; using NodaTime; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; using System; #nullable disable namespace NosCore.Database.Migrations { public partial class FirstMigration : Migration { protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AlterDatabase() .Annotation("Npgsql:Enum:audit_log_type", "account_creation,character_creation,email_update") .Annotation("Npgsql:Enum:authority_type", "user,moderator,game_master,administrator,root,closed,banned,unconfirmed") .Annotation("Npgsql:Enum:character_class_type", "adventurer,swordsman,archer,mage,martial_artist") .Annotation("Npgsql:Enum:character_relation_type", "friend,hidden_spouse,spouse,blocked") .Annotation("Npgsql:Enum:character_state", "active,inactive") .Annotation("Npgsql:Enum:element_type", "neutral,fire,water,light,dark") .Annotation("Npgsql:Enum:equipment_type", "main_weapon,armor,hat,gloves,boots,secondary_weapon,necklace,ring,bracelet,mask,fairy,amulet,sp,costume_suit,costume_hat,weapon_skin,wing_skin") .Annotation("Npgsql:Enum:family_authority", "head,assistant,manager,member") .Annotation("Npgsql:Enum:family_authority_type", "none,put,all") .Annotation("Npgsql:Enum:family_log_type", "daily_message,raid_won,rainbow_battle,family_xp,family_level_up,level_up,item_upgraded,right_changed,authority_changed,family_managed,user_managed,ware_house_added,ware_house_removed") .Annotation("Npgsql:Enum:family_member_rank", "nothing,old_uncle,old_aunt,father,mother,uncle,aunt,brother,sister,spouse,brother2,sister2,old_son,old_daugter,middle_son,middle_daughter,young_son,young_daugter,old_little_son,old_little_daughter,little_son,little_daughter,middle_little_son,middle_little_daugter") .Annotation("Npgsql:Enum:gender_type", "male,female") .Annotation("Npgsql:Enum:hair_color_type", "dark_purple,yellow,blue,purple,orange,brown,green,dark_grey,light_blue,pink_red,light_yellow,light_pink,light_green,light_grey,sky_blue,black,dark_orange,dark_orange_variant2,dark_orange_variant3,dark_orange_variant4,dark_orange_variant5,dark_orange_variant6,light_orange,light_light_orange,light_light_light_orange,light_light_light_light_orange,super_light_orange,dark_yellow,light_light_yellow,kaki_yellow,super_light_yellow,super_light_yellow2,super_light_yellow3,little_dark_yellow,yellow_variant,yellow_variant1,yellow_variant2,yellow_variant3,yellow_variant4,yellow_variant5,yellow_variant6,yellow_variant7,yellow_variant8,yellow_variant9,green_variant,green_variant1,dark_green_variant,green_more_dark_variant,green_variant2,green_variant3,green_variant4,green_variant5,green_variant6,green_variant7,green_variant8,green_variant9,green_variant10,green_variant11,green_variant12,green_variant13,green_variant14,green_variant15,green_variant16,green_variant17,green_variant18,green_variant19,green_variant20,light_blue_variant1,light_blue_variant2,light_blue_variant3,light_blue_variant4,light_blue_variant5,light_blue_variant6,light_blue_variant7,light_blue_variant8,light_blue_variant9,light_blue_variant10,light_blue_variant11,light_blue_variant12,light_blue_variant13,dark_black,light_blue_variant14,light_blue_variant15,light_blue_variant16,light_blue_variant17,blue_variant,blue_variant_dark,blue_variant_dark_dark,blue_variant_dark_dark2,flash_blue,flash_blue_dark,flash_blue_dark2,flash_blue_dark3,flash_blue_dark4,flash_blue_dark5,flash_blue_dark6,flash_blue_dark7,flash_blue_dark8,flash_blue_dark9,white,flash_blue_dark10,flash_blue1,flash_blue2,flash_blue3,flash_blue4,flash_blue5,flash_purple,flash_light_purple,flash_light_purple2,flash_light_purple3,flash_light_purple4,flash_light_purple5,light_purple,purple_variant1,purple_variant2,purple_variant3,purple_variant4,purple_variant5,purple_variant6,purple_variant7,purple_variant8,purple_variant9,purple_variant10,purple_variant11,purple_variant12,purple_variant13,purple_variant14,purple_variant15") .Annotation("Npgsql:Enum:hair_style_type", "hair_style_a,hair_style_b,hair_style_c,hair_style_d,no_hair") .Annotation("Npgsql:Enum:item_effect_type", "no_effect,teleport,apply_hair_die,speaker,marriage_proposal,undefined,sp_charger,dropped_sp_recharger,premium_sp_recharger,crafted_sp_recharger,specialist_medal,apply_skin_partner,change_gender,point_initialisation,sealed_tarot_card,tarot_card,red_amulet,blue_amulet,reinforcement_amulet,heroic,random_heroic,attack_amulet,defense_amulet,speed_booster,box_effect,vehicle,gold_nos_merchant_upgrade,silver_nos_merchant_upgrade,inventory_upgrade,pet_space_upgrade,pet_basket_upgrade,pet_backpack_upgrade,inventory_ticket_upgrade,buff_potions,marriage_separation") .Annotation("Npgsql:Enum:item_type", "weapon,armor,fashion,jewelery,specialist,box,shell,main,upgrade,production,map,special,potion,event,title,quest1,sell,food,snack,magical,part,teacher,ammo,quest2,house,garden,minigame,terrace,miniland_theme") .Annotation("Npgsql:Enum:mate_type", "partner,pet") .Annotation("Npgsql:Enum:miniland_state", "open,private,lock") .Annotation("Npgsql:Enum:monster_type", "unknown,partner,npc,well,portal,boss,elite,peapod,special,gem_space_time") .Annotation("Npgsql:Enum:noscore_pocket_type", "equipment,main,etc,miniland,specialist,costume,wear") .Annotation("Npgsql:Enum:penalty_type", "muted,banned,block_exp,block_f_exp,block_rep,warning") .Annotation("Npgsql:Enum:portal_type", "ts_normal,closed,open,miniland,ts_end,ts_end_closed,exit,exit_closed,raid,effect,blue_raid,dark_raid,time_space,shop_teleport,map_portal") .Annotation("Npgsql:Enum:quest_type", "hunt,special_collect,collect_in_raid,brings,capture_without_getting_the_monster,capture,times_space,product,number_of_kill,target_reput,ts_point,dialog1,collect_in_ts,required,wear,needed,collect,transmit_gold,go_to,collect_map_entity,use,dialog2,un_know,inspect,win_raid,flower_quest") .Annotation("Npgsql:Enum:region_type", "en,de,fr,it,pl,es,ru,cs,tr") .Annotation("Npgsql:Enum:scripted_instance_type", "time_space,raid,raid_act4") .Annotation("Npgsql:Enum:static_bonus_type", "bazaar_medal_gold,bazaar_medal_silver,back_pack,pet_basket,pet_back_pack,inventory_ticket_upgrade") .Annotation("Npgsql:Enum:teleporter_type", "teleporter,teleporter_on_map") .Annotation("Npgsql:Enum:warehouse_type", "warehouse,family_ware_house,pet_warehouse"); migrationBuilder.CreateTable( name: "Account", columns: table => new { AccountId = table.Column<long>(type: "bigint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Authority = table.Column<short>(type: "smallint", nullable: false), Email = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true), Name = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false), Password = table.Column<string>(type: "character varying(255)", unicode: false, maxLength: 255, nullable: true), NewAuthPassword = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true), NewAuthSalt = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true), RegistrationIp = table.Column<string>(type: "character varying(45)", maxLength: 45, nullable: true), VerificationToken = table.Column<string>(type: "character varying(32)", maxLength: 32, nullable: true), Language = table.Column<int>(type: "integer", nullable: false), BankMoney = table.Column<long>(type: "bigint", nullable: false), ItemShopMoney = table.Column<long>(type: "bigint", nullable: false), MfaSecret = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true) }, constraints: table => { table.PrimaryKey("PK_Account", x => x.AccountId); }); migrationBuilder.CreateTable( name: "Act", columns: table => new { ActId = table.Column<byte>(type: "smallint", nullable: false), Title = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false), Scene = table.Column<byte>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Act", x => x.ActId); }); migrationBuilder.CreateTable( name: "AuditLog", columns: table => new { AuditId = table.Column<Guid>(type: "uuid", nullable: false), TargetId = table.Column<string>(type: "character varying(80)", maxLength: 80, nullable: false), TargetType = table.Column<string>(type: "character varying(32)", maxLength: 32, nullable: false), Time = table.Column<Instant>(type: "timestamp with time zone", nullable: false), AuditLogType = table.Column<int>(type: "integer", nullable: false), Value = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false) }, constraints: table => { table.PrimaryKey("PK_AuditLog", x => x.AuditId); }); migrationBuilder.CreateTable( name: "Card", columns: table => new { CardId = table.Column<short>(type: "smallint", nullable: false), Duration = table.Column<int>(type: "integer", nullable: false), EffectId = table.Column<int>(type: "integer", nullable: false), Level = table.Column<byte>(type: "smallint", nullable: false), Name = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false), Delay = table.Column<int>(type: "integer", nullable: false), TimeoutBuff = table.Column<short>(type: "smallint", nullable: false), TimeoutBuffChance = table.Column<byte>(type: "smallint", nullable: false), BuffType = table.Column<byte>(type: "smallint", nullable: false), Propability = table.Column<byte>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Card", x => x.CardId); }); migrationBuilder.CreateTable( name: "Family", columns: table => new { FamilyId = table.Column<long>(type: "bigint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), FamilyExperience = table.Column<int>(type: "integer", nullable: false), FamilyHeadGender = table.Column<byte>(type: "smallint", nullable: false), FamilyLevel = table.Column<byte>(type: "smallint", nullable: false), FamilyFaction = table.Column<byte>(type: "smallint", nullable: false), FamilyMessage = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true), ManagerAuthorityType = table.Column<int>(type: "integer", nullable: false), ManagerCanGetHistory = table.Column<bool>(type: "boolean", nullable: false), ManagerCanInvite = table.Column<bool>(type: "boolean", nullable: false), ManagerCanNotice = table.Column<bool>(type: "boolean", nullable: false), ManagerCanShout = table.Column<bool>(type: "boolean", nullable: false), MaxSize = table.Column<byte>(type: "smallint", nullable: false), MemberAuthorityType = table.Column<int>(type: "integer", nullable: false), MemberCanGetHistory = table.Column<bool>(type: "boolean", nullable: false), Name = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false), WarehouseSize = table.Column<byte>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Family", x => x.FamilyId); }); migrationBuilder.CreateTable( name: "I18NActDesc", columns: table => new { I18NActDescId = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Key = table.Column<string>(type: "text", nullable: false), RegionType = table.Column<int>(type: "integer", nullable: false), Text = table.Column<string>(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_I18NActDesc", x => x.I18NActDescId); }); migrationBuilder.CreateTable( name: "I18NBCard", columns: table => new { I18NbCardId = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Key = table.Column<string>(type: "text", nullable: false), RegionType = table.Column<int>(type: "integer", nullable: false), Text = table.Column<string>(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_I18NBCard", x => x.I18NbCardId); }); migrationBuilder.CreateTable( name: "I18NCard", columns: table => new { I18NCardId = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Key = table.Column<string>(type: "text", nullable: false), RegionType = table.Column<int>(type: "integer", nullable: false), Text = table.Column<string>(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_I18NCard", x => x.I18NCardId); }); migrationBuilder.CreateTable( name: "I18NItem", columns: table => new { I18NItemId = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Key = table.Column<string>(type: "text", nullable: false), RegionType = table.Column<int>(type: "integer", nullable: false), Text = table.Column<string>(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_I18NItem", x => x.I18NItemId); }); migrationBuilder.CreateTable( name: "I18NMapIdData", columns: table => new { I18NMapIdDataId = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Key = table.Column<string>(type: "text", nullable: false), RegionType = table.Column<int>(type: "integer", nullable: false), Text = table.Column<string>(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_I18NMapIdData", x => x.I18NMapIdDataId); }); migrationBuilder.CreateTable( name: "I18NMapPointData", columns: table => new { I18NMapPointDataId = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Key = table.Column<string>(type: "text", nullable: false), RegionType = table.Column<int>(type: "integer", nullable: false), Text = table.Column<string>(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_I18NMapPointData", x => x.I18NMapPointDataId); }); migrationBuilder.CreateTable( name: "I18NNpcMonster", columns: table => new { I18NNpcMonsterId = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Key = table.Column<string>(type: "text", nullable: false), RegionType = table.Column<int>(type: "integer", nullable: false), Text = table.Column<string>(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_I18NNpcMonster", x => x.I18NNpcMonsterId); }); migrationBuilder.CreateTable( name: "I18NNpcMonsterTalk", columns: table => new { I18NNpcMonsterTalkId = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Key = table.Column<string>(type: "text", nullable: false), RegionType = table.Column<int>(type: "integer", nullable: false), Text = table.Column<string>(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_I18NNpcMonsterTalk", x => x.I18NNpcMonsterTalkId); }); migrationBuilder.CreateTable( name: "I18NQuest", columns: table => new { I18NQuestId = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Key = table.Column<string>(type: "text", nullable: false), RegionType = table.Column<int>(type: "integer", nullable: false), Text = table.Column<string>(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_I18NQuest", x => x.I18NQuestId); }); migrationBuilder.CreateTable( name: "I18NSkill", columns: table => new { I18NSkillId = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Key = table.Column<string>(type: "text", nullable: false), RegionType = table.Column<int>(type: "integer", nullable: false), Text = table.Column<string>(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_I18NSkill", x => x.I18NSkillId); }); migrationBuilder.CreateTable( name: "Item", columns: table => new { VNum = table.Column<short>(type: "smallint", nullable: false), BasicUpgrade = table.Column<byte>(type: "smallint", nullable: false), Flag1 = table.Column<bool>(type: "boolean", nullable: false), Flag2 = table.Column<bool>(type: "boolean", nullable: false), Flag3 = table.Column<bool>(type: "boolean", nullable: false), Flag4 = table.Column<bool>(type: "boolean", nullable: false), RequireBinding = table.Column<bool>(type: "boolean", nullable: false), Flag6 = table.Column<bool>(type: "boolean", nullable: false), Flag7 = table.Column<bool>(type: "boolean", nullable: false), Flag8 = table.Column<bool>(type: "boolean", nullable: false), CellonLvl = table.Column<byte>(type: "smallint", nullable: false), Class = table.Column<byte>(type: "smallint", nullable: false), CloseDefence = table.Column<short>(type: "smallint", nullable: false), Color = table.Column<byte>(type: "smallint", nullable: false), Concentrate = table.Column<short>(type: "smallint", nullable: false), CriticalLuckRate = table.Column<byte>(type: "smallint", nullable: false), CriticalRate = table.Column<short>(type: "smallint", nullable: false), DamageMaximum = table.Column<short>(type: "smallint", nullable: false), DamageMinimum = table.Column<short>(type: "smallint", nullable: false), DarkElement = table.Column<byte>(type: "smallint", nullable: false), DarkResistance = table.Column<short>(type: "smallint", nullable: false), DefenceDodge = table.Column<short>(type: "smallint", nullable: false), DistanceDefence = table.Column<short>(type: "smallint", nullable: false), DistanceDefenceDodge = table.Column<short>(type: "smallint", nullable: false), Effect = table.Column<int>(type: "integer", nullable: false), EffectValue = table.Column<int>(type: "integer", nullable: false), Element = table.Column<int>(type: "integer", nullable: false), ElementRate = table.Column<short>(type: "smallint", nullable: false), EquipmentSlot = table.Column<byte>(type: "smallint", nullable: false), FireElement = table.Column<byte>(type: "smallint", nullable: false), FireResistance = table.Column<short>(type: "smallint", nullable: false), Height = table.Column<byte>(type: "smallint", nullable: false), HitRate = table.Column<short>(type: "smallint", nullable: false), Hp = table.Column<short>(type: "smallint", nullable: false), HpRegeneration = table.Column<short>(type: "smallint", nullable: false), IsMinilandActionable = table.Column<bool>(type: "boolean", nullable: false), IsColored = table.Column<bool>(type: "boolean", nullable: false), IsConsumable = table.Column<bool>(type: "boolean", nullable: false), IsDroppable = table.Column<bool>(type: "boolean", nullable: false), IsHeroic = table.Column<bool>(type: "boolean", nullable: false), Flag9 = table.Column<bool>(type: "boolean", nullable: false), IsWarehouse = table.Column<bool>(type: "boolean", nullable: false), IsSoldable = table.Column<bool>(type: "boolean", nullable: false), IsTradable = table.Column<bool>(type: "boolean", nullable: false), ItemSubType = table.Column<byte>(type: "smallint", nullable: false), ItemType = table.Column<byte>(type: "smallint", nullable: false), ItemValidTime = table.Column<long>(type: "bigint", nullable: false), LevelJobMinimum = table.Column<byte>(type: "smallint", nullable: false), LevelMinimum = table.Column<byte>(type: "smallint", nullable: false), LightElement = table.Column<byte>(type: "smallint", nullable: false), LightResistance = table.Column<short>(type: "smallint", nullable: false), MagicDefence = table.Column<short>(type: "smallint", nullable: false), MaxCellon = table.Column<byte>(type: "smallint", nullable: false), MaxCellonLvl = table.Column<byte>(type: "smallint", nullable: false), MaxElementRate = table.Column<short>(type: "smallint", nullable: false), MaximumAmmo = table.Column<byte>(type: "smallint", nullable: false), MinilandObjectPoint = table.Column<int>(type: "integer", nullable: false), MoreHp = table.Column<short>(type: "smallint", nullable: false), MoreMp = table.Column<short>(type: "smallint", nullable: false), Morph = table.Column<short>(type: "smallint", nullable: false), SecondMorph = table.Column<short>(type: "smallint", nullable: false), Mp = table.Column<short>(type: "smallint", nullable: false), MpRegeneration = table.Column<short>(type: "smallint", nullable: false), Name = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false), Price = table.Column<long>(type: "bigint", nullable: false), PvpDefence = table.Column<short>(type: "smallint", nullable: false), PvpStrength = table.Column<byte>(type: "smallint", nullable: false), ReduceOposantResistance = table.Column<short>(type: "smallint", nullable: false), ReputationMinimum = table.Column<byte>(type: "smallint", nullable: false), ReputPrice = table.Column<long>(type: "bigint", nullable: false), SecondaryElement = table.Column<int>(type: "integer", nullable: false), Sex = table.Column<byte>(type: "smallint", nullable: false), Speed = table.Column<byte>(type: "smallint", nullable: false), SpType = table.Column<byte>(type: "smallint", nullable: false), Type = table.Column<byte>(type: "smallint", nullable: false), WaitDelay = table.Column<short>(type: "smallint", nullable: false), WaterElement = table.Column<byte>(type: "smallint", nullable: false), WaterResistance = table.Column<short>(type: "smallint", nullable: false), Width = table.Column<byte>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Item", x => x.VNum); }); migrationBuilder.CreateTable( name: "Map", columns: table => new { MapId = table.Column<short>(type: "smallint", nullable: false), Data = table.Column<byte[]>(type: "bytea", nullable: false), Music = table.Column<int>(type: "integer", nullable: false), Name = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false), ShopAllowed = table.Column<bool>(type: "boolean", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Map", x => x.MapId); }); migrationBuilder.CreateTable( name: "NpcMonster", columns: table => new { NpcMonsterVNum = table.Column<short>(type: "smallint", nullable: false), AmountRequired = table.Column<byte>(type: "smallint", nullable: false), AttackClass = table.Column<byte>(type: "smallint", nullable: false), AttackUpgrade = table.Column<byte>(type: "smallint", nullable: false), BasicArea = table.Column<byte>(type: "smallint", nullable: false), BasicCooldown = table.Column<short>(type: "smallint", nullable: false), BasicRange = table.Column<byte>(type: "smallint", nullable: false), BasicSkill = table.Column<short>(type: "smallint", nullable: false), CloseDefence = table.Column<short>(type: "smallint", nullable: false), Concentrate = table.Column<short>(type: "smallint", nullable: false), CriticalChance = table.Column<byte>(type: "smallint", nullable: false), CriticalRate = table.Column<short>(type: "smallint", nullable: false), DamageMaximum = table.Column<short>(type: "smallint", nullable: false), DamageMinimum = table.Column<short>(type: "smallint", nullable: false), DarkResistance = table.Column<short>(type: "smallint", nullable: false), DefenceDodge = table.Column<short>(type: "smallint", nullable: false), DefenceUpgrade = table.Column<byte>(type: "smallint", nullable: false), DistanceDefence = table.Column<short>(type: "smallint", nullable: false), DistanceDefenceDodge = table.Column<short>(type: "smallint", nullable: false), Element = table.Column<byte>(type: "smallint", nullable: false), ElementRate = table.Column<short>(type: "smallint", nullable: false), FireResistance = table.Column<short>(type: "smallint", nullable: false), HeroLevel = table.Column<byte>(type: "smallint", nullable: false), HeroXp = table.Column<int>(type: "integer", nullable: false), IsHostile = table.Column<bool>(type: "boolean", nullable: false), JobXp = table.Column<int>(type: "integer", nullable: false), Level = table.Column<byte>(type: "smallint", nullable: false), LightResistance = table.Column<short>(type: "smallint", nullable: false), MagicDefence = table.Column<short>(type: "smallint", nullable: false), MaxHp = table.Column<int>(type: "integer", nullable: false), MaxMp = table.Column<int>(type: "integer", nullable: false), MonsterType = table.Column<byte>(type: "smallint", nullable: false), Name = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false), NoAggresiveIcon = table.Column<bool>(type: "boolean", nullable: false), NoticeRange = table.Column<byte>(type: "smallint", nullable: false), Race = table.Column<byte>(type: "smallint", nullable: false), RaceType = table.Column<byte>(type: "smallint", nullable: false), RespawnTime = table.Column<int>(type: "integer", nullable: false), Speed = table.Column<byte>(type: "smallint", nullable: false), VNumRequired = table.Column<short>(type: "smallint", nullable: false), WaterResistance = table.Column<short>(type: "smallint", nullable: false), Xp = table.Column<int>(type: "integer", nullable: false), IsPercent = table.Column<bool>(type: "boolean", nullable: false), TakeDamages = table.Column<int>(type: "integer", nullable: false), GiveDamagePercentage = table.Column<int>(type: "integer", nullable: false) }, constraints: table => { table.PrimaryKey("PK_NpcMonster", x => x.NpcMonsterVNum); }); migrationBuilder.CreateTable( name: "NpcTalk", columns: table => new { DialogId = table.Column<short>(type: "smallint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Name = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false) }, constraints: table => { table.PrimaryKey("PK_NpcTalk", x => x.DialogId); }); migrationBuilder.CreateTable( name: "Quest", columns: table => new { QuestId = table.Column<short>(type: "smallint", nullable: false), QuestType = table.Column<short>(type: "smallint", nullable: false), LevelMin = table.Column<byte>(type: "smallint", nullable: false), LevelMax = table.Column<byte>(type: "smallint", nullable: false), StartDialogId = table.Column<int>(type: "integer", nullable: true), EndDialogId = table.Column<int>(type: "integer", nullable: true), TargetMap = table.Column<short>(type: "smallint", nullable: true), TargetX = table.Column<short>(type: "smallint", nullable: true), TargetY = table.Column<short>(type: "smallint", nullable: true), NextQuestId = table.Column<short>(type: "smallint", nullable: true), IsDaily = table.Column<bool>(type: "boolean", nullable: false), AutoFinish = table.Column<bool>(type: "boolean", nullable: false), IsSecondary = table.Column<bool>(type: "boolean", nullable: false), SpecialData = table.Column<int>(type: "integer", nullable: true), RequiredQuestId = table.Column<short>(type: "smallint", nullable: true), Title = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false), Desc = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false) }, constraints: table => { table.PrimaryKey("PK_Quest", x => x.QuestId); }); migrationBuilder.CreateTable( name: "QuestReward", columns: table => new { QuestRewardId = table.Column<short>(type: "smallint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), RewardType = table.Column<byte>(type: "smallint", nullable: false), Data = table.Column<int>(type: "integer", nullable: false), Design = table.Column<byte>(type: "smallint", nullable: false), Rarity = table.Column<byte>(type: "smallint", nullable: false), Upgrade = table.Column<byte>(type: "smallint", nullable: false), Amount = table.Column<int>(type: "integer", nullable: false) }, constraints: table => { table.PrimaryKey("PK_QuestReward", x => x.QuestRewardId); }); migrationBuilder.CreateTable( name: "Script", columns: table => new { Id = table.Column<Guid>(type: "uuid", nullable: false), ScriptId = table.Column<byte>(type: "smallint", nullable: false), ScriptStepId = table.Column<short>(type: "smallint", nullable: false), StepType = table.Column<string>(type: "text", nullable: false), StringArgument = table.Column<string>(type: "text", nullable: true), Argument1 = table.Column<short>(type: "smallint", nullable: true), Argument2 = table.Column<short>(type: "smallint", nullable: true), Argument3 = table.Column<short>(type: "smallint", nullable: true) }, constraints: table => { table.PrimaryKey("PK_Script", x => x.Id); }); migrationBuilder.CreateTable( name: "Skill", columns: table => new { SkillVNum = table.Column<short>(type: "smallint", nullable: false), AttackAnimation = table.Column<short>(type: "smallint", nullable: false), CastAnimation = table.Column<short>(type: "smallint", nullable: false), CastEffect = table.Column<short>(type: "smallint", nullable: false), CastId = table.Column<short>(type: "smallint", nullable: false), CastTime = table.Column<short>(type: "smallint", nullable: false), Class = table.Column<byte>(type: "smallint", nullable: false), Cooldown = table.Column<short>(type: "smallint", nullable: false), CpCost = table.Column<byte>(type: "smallint", nullable: false), Duration = table.Column<short>(type: "smallint", nullable: false), Effect = table.Column<short>(type: "smallint", nullable: false), Element = table.Column<byte>(type: "smallint", nullable: false), HitType = table.Column<byte>(type: "smallint", nullable: false), ItemVNum = table.Column<short>(type: "smallint", nullable: false), Level = table.Column<byte>(type: "smallint", nullable: false), LevelMinimum = table.Column<byte>(type: "smallint", nullable: false), MinimumAdventurerLevel = table.Column<byte>(type: "smallint", nullable: false), MinimumArcherLevel = table.Column<byte>(type: "smallint", nullable: false), MinimumMagicianLevel = table.Column<byte>(type: "smallint", nullable: false), MinimumSwordmanLevel = table.Column<byte>(type: "smallint", nullable: false), MpCost = table.Column<short>(type: "smallint", nullable: false), Name = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false), Price = table.Column<int>(type: "integer", nullable: false), Range = table.Column<byte>(type: "smallint", nullable: false), SkillType = table.Column<byte>(type: "smallint", nullable: false), TargetRange = table.Column<byte>(type: "smallint", nullable: false), TargetType = table.Column<byte>(type: "smallint", nullable: false), Type = table.Column<byte>(type: "smallint", nullable: false), UpgradeSkill = table.Column<short>(type: "smallint", nullable: false), UpgradeType = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Skill", x => x.SkillVNum); }); migrationBuilder.CreateTable( name: "PenaltyLog", columns: table => new { PenaltyLogId = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), AccountId = table.Column<long>(type: "bigint", nullable: false), AdminName = table.Column<string>(type: "text", nullable: false), DateEnd = table.Column<Instant>(type: "timestamp with time zone", nullable: false), DateStart = table.Column<Instant>(type: "timestamp with time zone", nullable: false), Penalty = table.Column<byte>(type: "smallint", nullable: false), Reason = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false) }, constraints: table => { table.PrimaryKey("PK_PenaltyLog", x => x.PenaltyLogId); table.ForeignKey( name: "FK_PenaltyLog_Account_AccountId", column: x => x.AccountId, principalTable: "Account", principalColumn: "AccountId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "ActPart", columns: table => new { ActPartId = table.Column<byte>(type: "smallint", nullable: false), ActPartNumber = table.Column<byte>(type: "smallint", nullable: false), ActId = table.Column<byte>(type: "smallint", nullable: false), MaxTs = table.Column<byte>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ActPart", x => x.ActPartId); table.ForeignKey( name: "FK_ActPart_Act_ActId", column: x => x.ActId, principalTable: "Act", principalColumn: "ActId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "FamilyLog", columns: table => new { FamilyLogId = table.Column<long>(type: "bigint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), FamilyId = table.Column<long>(type: "bigint", nullable: false), FamilyLogData = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true), FamilyLogType = table.Column<byte>(type: "smallint", nullable: false), Timestamp = table.Column<Instant>(type: "timestamp with time zone", nullable: false) }, constraints: table => { table.PrimaryKey("PK_FamilyLog", x => x.FamilyLogId); table.ForeignKey( name: "FK_FamilyLog_Family_FamilyId", column: x => x.FamilyId, principalTable: "Family", principalColumn: "FamilyId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "RollGeneratedItem", columns: table => new { RollGeneratedItemId = table.Column<short>(type: "smallint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), OriginalItemDesign = table.Column<short>(type: "smallint", nullable: false), OriginalItemVNum = table.Column<short>(type: "smallint", nullable: false), Probability = table.Column<short>(type: "smallint", nullable: false), ItemGeneratedAmount = table.Column<byte>(type: "smallint", nullable: false), ItemGeneratedVNum = table.Column<short>(type: "smallint", nullable: false), ItemGeneratedUpgrade = table.Column<byte>(type: "smallint", nullable: false), IsRareRandom = table.Column<bool>(type: "boolean", nullable: false), MinimumOriginalItemRare = table.Column<short>(type: "smallint", nullable: false), MaximumOriginalItemRare = table.Column<short>(type: "smallint", nullable: false), IsSuperReward = table.Column<bool>(type: "boolean", nullable: false) }, constraints: table => { table.PrimaryKey("PK_RollGeneratedItem", x => x.RollGeneratedItemId); table.ForeignKey( name: "FK_RollGeneratedItem_Item_ItemGeneratedVNum", column: x => x.ItemGeneratedVNum, principalTable: "Item", principalColumn: "VNum", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_RollGeneratedItem_Item_OriginalItemVNum", column: x => x.OriginalItemVNum, principalTable: "Item", principalColumn: "VNum", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Portal", columns: table => new { PortalId = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), DestinationMapId = table.Column<short>(type: "smallint", nullable: false), DestinationX = table.Column<short>(type: "smallint", nullable: false), DestinationY = table.Column<short>(type: "smallint", nullable: false), IsDisabled = table.Column<bool>(type: "boolean", nullable: false), SourceMapId = table.Column<short>(type: "smallint", nullable: false), SourceX = table.Column<short>(type: "smallint", nullable: false), SourceY = table.Column<short>(type: "smallint", nullable: false), Type = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Portal", x => x.PortalId); table.ForeignKey( name: "FK_Portal_Map_DestinationMapId", column: x => x.DestinationMapId, principalTable: "Map", principalColumn: "MapId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Portal_Map_SourceMapId", column: x => x.SourceMapId, principalTable: "Map", principalColumn: "MapId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "RespawnMapType", columns: table => new { RespawnMapTypeId = table.Column<long>(type: "bigint", nullable: false), MapId = table.Column<short>(type: "smallint", nullable: false), DefaultX = table.Column<short>(type: "smallint", nullable: false), DefaultY = table.Column<short>(type: "smallint", nullable: false), Name = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true) }, constraints: table => { table.PrimaryKey("PK_RespawnMapType", x => x.RespawnMapTypeId); table.ForeignKey( name: "FK_RespawnMapType_Map_MapId", column: x => x.MapId, principalTable: "Map", principalColumn: "MapId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "ScriptedInstance", columns: table => new { ScriptedInstanceId = table.Column<short>(type: "smallint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), MapId = table.Column<short>(type: "smallint", nullable: false), PositionX = table.Column<short>(type: "smallint", nullable: false), PositionY = table.Column<short>(type: "smallint", nullable: false), Label = table.Column<string>(type: "text", nullable: true), Script = table.Column<string>(type: "text", maxLength: 2147483647, nullable: true), Type = table.Column<byte>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ScriptedInstance", x => x.ScriptedInstanceId); table.ForeignKey( name: "FK_ScriptedInstance_Map_MapId", column: x => x.MapId, principalTable: "Map", principalColumn: "MapId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "MapMonster", columns: table => new { MapMonsterId = table.Column<int>(type: "integer", nullable: false), IsDisabled = table.Column<bool>(type: "boolean", nullable: false), IsMoving = table.Column<bool>(type: "boolean", nullable: false), MapId = table.Column<short>(type: "smallint", nullable: false), MapX = table.Column<short>(type: "smallint", nullable: false), MapY = table.Column<short>(type: "smallint", nullable: false), VNum = table.Column<short>(type: "smallint", nullable: false), Direction = table.Column<byte>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_MapMonster", x => x.MapMonsterId); table.ForeignKey( name: "FK_MapMonster_Map_MapId", column: x => x.MapId, principalTable: "Map", principalColumn: "MapId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_MapMonster_NpcMonster_VNum", column: x => x.VNum, principalTable: "NpcMonster", principalColumn: "NpcMonsterVNum", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "MapNpc", columns: table => new { MapNpcId = table.Column<int>(type: "integer", nullable: false), Dialog = table.Column<short>(type: "smallint", nullable: true), Effect = table.Column<short>(type: "smallint", nullable: false), EffectDelay = table.Column<short>(type: "smallint", nullable: false), IsDisabled = table.Column<bool>(type: "boolean", nullable: false), IsMoving = table.Column<bool>(type: "boolean", nullable: false), IsSitting = table.Column<bool>(type: "boolean", nullable: false), MapId = table.Column<short>(type: "smallint", nullable: false), MapX = table.Column<short>(type: "smallint", nullable: false), MapY = table.Column<short>(type: "smallint", nullable: false), VNum = table.Column<short>(type: "smallint", nullable: false), Direction = table.Column<byte>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_MapNpc", x => x.MapNpcId); table.ForeignKey( name: "FK_MapNpc_Map_MapId", column: x => x.MapId, principalTable: "Map", principalColumn: "MapId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_MapNpc_NpcMonster_VNum", column: x => x.VNum, principalTable: "NpcMonster", principalColumn: "NpcMonsterVNum", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_MapNpc_NpcTalk_Dialog", column: x => x.Dialog, principalTable: "NpcTalk", principalColumn: "DialogId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "QuestObjective", columns: table => new { QuestObjectiveId = table.Column<Guid>(type: "uuid", nullable: false), FirstData = table.Column<int>(type: "integer", nullable: false), SecondData = table.Column<int>(type: "integer", nullable: true), ThirdData = table.Column<int>(type: "integer", nullable: true), FourthData = table.Column<int>(type: "integer", nullable: true), QuestId = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_QuestObjective", x => x.QuestObjectiveId); table.ForeignKey( name: "FK_QuestObjective_Quest_QuestId", column: x => x.QuestId, principalTable: "Quest", principalColumn: "QuestId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "QuestQuestReward", columns: table => new { Id = table.Column<Guid>(type: "uuid", nullable: false), QuestRewardId = table.Column<short>(type: "smallint", nullable: false), QuestId = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_QuestQuestReward", x => x.Id); table.ForeignKey( name: "FK_QuestQuestReward_Quest_QuestId", column: x => x.QuestId, principalTable: "Quest", principalColumn: "QuestId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_QuestQuestReward_QuestReward_QuestRewardId", column: x => x.QuestRewardId, principalTable: "QuestReward", principalColumn: "QuestRewardId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Character", columns: table => new { CharacterId = table.Column<long>(type: "bigint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), ServerId = table.Column<byte>(type: "smallint", nullable: false), AccountId = table.Column<long>(type: "bigint", nullable: false), Act4Dead = table.Column<int>(type: "integer", nullable: false), Act4Kill = table.Column<int>(type: "integer", nullable: false), Act4Points = table.Column<int>(type: "integer", nullable: false), ArenaWinner = table.Column<int>(type: "integer", nullable: false), CurrentScriptId = table.Column<Guid>(type: "uuid", nullable: true), Biography = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true), BuffBlocked = table.Column<bool>(type: "boolean", nullable: false), Class = table.Column<byte>(type: "smallint", nullable: false), Compliment = table.Column<short>(type: "smallint", nullable: false), Dignity = table.Column<short>(type: "smallint", nullable: false), Elo = table.Column<int>(type: "integer", nullable: false), EmoticonsBlocked = table.Column<bool>(type: "boolean", nullable: false), ExchangeBlocked = table.Column<bool>(type: "boolean", nullable: false), ShouldRename = table.Column<bool>(type: "boolean", nullable: false), Faction = table.Column<byte>(type: "smallint", nullable: false), FamilyRequestBlocked = table.Column<bool>(type: "boolean", nullable: false), FriendRequestBlocked = table.Column<bool>(type: "boolean", nullable: false), Gender = table.Column<byte>(type: "smallint", nullable: false), Gold = table.Column<long>(type: "bigint", nullable: false), GroupRequestBlocked = table.Column<bool>(type: "boolean", nullable: false), HairColor = table.Column<byte>(type: "smallint", nullable: false), HairStyle = table.Column<byte>(type: "smallint", nullable: false), HeroChatBlocked = table.Column<bool>(type: "boolean", nullable: false), HeroLevel = table.Column<byte>(type: "smallint", nullable: false), HeroXp = table.Column<long>(type: "bigint", nullable: false), Hp = table.Column<int>(type: "integer", nullable: false), HpBlocked = table.Column<bool>(type: "boolean", nullable: false), JobLevel = table.Column<byte>(type: "smallint", nullable: false), JobLevelXp = table.Column<long>(type: "bigint", nullable: false), Level = table.Column<byte>(type: "smallint", nullable: false), LevelXp = table.Column<long>(type: "bigint", nullable: false), MapId = table.Column<short>(type: "smallint", nullable: false), MapX = table.Column<short>(type: "smallint", nullable: false), MapY = table.Column<short>(type: "smallint", nullable: false), MasterPoints = table.Column<int>(type: "integer", nullable: false), MasterTicket = table.Column<int>(type: "integer", nullable: false), MaxMateCount = table.Column<byte>(type: "smallint", nullable: false), MinilandInviteBlocked = table.Column<bool>(type: "boolean", nullable: false), MouseAimLock = table.Column<bool>(type: "boolean", nullable: false), Mp = table.Column<int>(type: "integer", nullable: false), Prefix = table.Column<string>(type: "character varying(25)", maxLength: 25, nullable: true), Name = table.Column<string>(type: "character varying(255)", unicode: false, maxLength: 255, nullable: false), QuickGetUp = table.Column<bool>(type: "boolean", nullable: false), RagePoint = table.Column<long>(type: "bigint", nullable: false), Reput = table.Column<long>(type: "bigint", nullable: false), Slot = table.Column<byte>(type: "smallint", nullable: false), SpAdditionPoint = table.Column<int>(type: "integer", nullable: false), SpPoint = table.Column<int>(type: "integer", nullable: false), State = table.Column<byte>(type: "smallint", nullable: false), TalentLose = table.Column<int>(type: "integer", nullable: false), TalentSurrender = table.Column<int>(type: "integer", nullable: false), TalentWin = table.Column<int>(type: "integer", nullable: false), WhisperBlocked = table.Column<bool>(type: "boolean", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Character", x => x.CharacterId); table.ForeignKey( name: "FK_Character_Account_AccountId", column: x => x.AccountId, principalTable: "Account", principalColumn: "AccountId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Character_Map_MapId", column: x => x.MapId, principalTable: "Map", principalColumn: "MapId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Character_Script_CurrentScriptId", column: x => x.CurrentScriptId, principalTable: "Script", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "BCard", columns: table => new { BCardId = table.Column<short>(type: "smallint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), SubType = table.Column<byte>(type: "smallint", nullable: false), Type = table.Column<byte>(type: "smallint", nullable: false), FirstData = table.Column<int>(type: "integer", nullable: false), SecondData = table.Column<int>(type: "integer", nullable: false), CardId = table.Column<short>(type: "smallint", nullable: true), ItemVNum = table.Column<short>(type: "smallint", nullable: true), SkillVNum = table.Column<short>(type: "smallint", nullable: true), NpcMonsterVNum = table.Column<short>(type: "smallint", nullable: true), CastType = table.Column<byte>(type: "smallint", nullable: false), ThirdData = table.Column<int>(type: "integer", nullable: false), IsLevelScaled = table.Column<bool>(type: "boolean", nullable: false), IsLevelDivided = table.Column<bool>(type: "boolean", nullable: false) }, constraints: table => { table.PrimaryKey("PK_BCard", x => x.BCardId); table.ForeignKey( name: "FK_BCard_Card_CardId", column: x => x.CardId, principalTable: "Card", principalColumn: "CardId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_BCard_Item_ItemVNum", column: x => x.ItemVNum, principalTable: "Item", principalColumn: "VNum", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_BCard_NpcMonster_NpcMonsterVNum", column: x => x.NpcMonsterVNum, principalTable: "NpcMonster", principalColumn: "NpcMonsterVNum", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_BCard_Skill_SkillVNum", column: x => x.SkillVNum, principalTable: "Skill", principalColumn: "SkillVNum", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Combo", columns: table => new { ComboId = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Animation = table.Column<short>(type: "smallint", nullable: false), Effect = table.Column<short>(type: "smallint", nullable: false), Hit = table.Column<short>(type: "smallint", nullable: false), SkillVNum = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Combo", x => x.ComboId); table.ForeignKey( name: "FK_Combo_Skill_SkillVNum", column: x => x.SkillVNum, principalTable: "Skill", principalColumn: "SkillVNum", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "NpcMonsterSkill", columns: table => new { NpcMonsterSkillId = table.Column<long>(type: "bigint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), NpcMonsterVNum = table.Column<short>(type: "smallint", nullable: false), Rate = table.Column<short>(type: "smallint", nullable: false), SkillVNum = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_NpcMonsterSkill", x => x.NpcMonsterSkillId); table.ForeignKey( name: "FK_NpcMonsterSkill_NpcMonster_NpcMonsterVNum", column: x => x.NpcMonsterVNum, principalTable: "NpcMonster", principalColumn: "NpcMonsterVNum", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_NpcMonsterSkill_Skill_SkillVNum", column: x => x.SkillVNum, principalTable: "Skill", principalColumn: "SkillVNum", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "MapType", columns: table => new { MapTypeId = table.Column<short>(type: "smallint", nullable: false), MapTypeName = table.Column<string>(type: "text", nullable: false), PotionDelay = table.Column<short>(type: "smallint", nullable: false), RespawnMapTypeId = table.Column<long>(type: "bigint", nullable: true), ReturnMapTypeId = table.Column<long>(type: "bigint", nullable: true) }, constraints: table => { table.PrimaryKey("PK_MapType", x => x.MapTypeId); table.ForeignKey( name: "FK_MapType_RespawnMapType_RespawnMapTypeId", column: x => x.RespawnMapTypeId, principalTable: "RespawnMapType", principalColumn: "RespawnMapTypeId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_MapType_RespawnMapType_ReturnMapTypeId", column: x => x.ReturnMapTypeId, principalTable: "RespawnMapType", principalColumn: "RespawnMapTypeId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Recipe", columns: table => new { RecipeId = table.Column<short>(type: "smallint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Amount = table.Column<byte>(type: "smallint", nullable: false), ItemVNum = table.Column<short>(type: "smallint", nullable: false), MapNpcId = table.Column<int>(type: "integer", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Recipe", x => x.RecipeId); table.ForeignKey( name: "FK_Recipe_Item_ItemVNum", column: x => x.ItemVNum, principalTable: "Item", principalColumn: "VNum", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Recipe_MapNpc_MapNpcId", column: x => x.MapNpcId, principalTable: "MapNpc", principalColumn: "MapNpcId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Shop", columns: table => new { ShopId = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), MapNpcId = table.Column<int>(type: "integer", nullable: false), MenuType = table.Column<byte>(type: "smallint", nullable: false), ShopType = table.Column<byte>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Shop", x => x.ShopId); table.ForeignKey( name: "FK_Shop_MapNpc_MapNpcId", column: x => x.MapNpcId, principalTable: "MapNpc", principalColumn: "MapNpcId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Teleporter", columns: table => new { TeleporterId = table.Column<short>(type: "smallint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Index = table.Column<short>(type: "smallint", nullable: false), Type = table.Column<byte>(type: "smallint", nullable: false), MapId = table.Column<short>(type: "smallint", nullable: false), MapNpcId = table.Column<int>(type: "integer", nullable: false), MapX = table.Column<short>(type: "smallint", nullable: false), MapY = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Teleporter", x => x.TeleporterId); table.ForeignKey( name: "FK_Teleporter_Map_MapId", column: x => x.MapId, principalTable: "Map", principalColumn: "MapId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Teleporter_MapNpc_MapNpcId", column: x => x.MapNpcId, principalTable: "MapNpc", principalColumn: "MapNpcId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "CharacterActPart", columns: table => new { Id = table.Column<Guid>(type: "uuid", nullable: false), CharacterId = table.Column<long>(type: "bigint", nullable: false), ActPartId = table.Column<byte>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_CharacterActPart", x => x.Id); table.ForeignKey( name: "FK_CharacterActPart_ActPart_ActPartId", column: x => x.ActPartId, principalTable: "ActPart", principalColumn: "ActPartId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_CharacterActPart_Character_CharacterId", column: x => x.CharacterId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "CharacterQuest", columns: table => new { Id = table.Column<Guid>(type: "uuid", nullable: false), CharacterId = table.Column<long>(type: "bigint", nullable: false), QuestId = table.Column<short>(type: "smallint", nullable: false), CompletedOn = table.Column<Instant>(type: "timestamp with time zone", nullable: true) }, constraints: table => { table.PrimaryKey("PK_CharacterQuest", x => x.Id); table.ForeignKey( name: "FK_CharacterQuest_Character_CharacterId", column: x => x.CharacterId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_CharacterQuest_Quest_QuestId", column: x => x.QuestId, principalTable: "Quest", principalColumn: "QuestId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "CharacterRelation", columns: table => new { CharacterRelationId = table.Column<Guid>(type: "uuid", nullable: false), CharacterId = table.Column<long>(type: "bigint", nullable: false), RelatedCharacterId = table.Column<long>(type: "bigint", nullable: false), RelationType = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_CharacterRelation", x => x.CharacterRelationId); table.ForeignKey( name: "FK_CharacterRelation_Character_CharacterId", column: x => x.CharacterId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_CharacterRelation_Character_RelatedCharacterId", column: x => x.RelatedCharacterId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "CharacterSkill", columns: table => new { Id = table.Column<Guid>(type: "uuid", nullable: false), CharacterId = table.Column<long>(type: "bigint", nullable: false), SkillVNum = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_CharacterSkill", x => x.Id); table.ForeignKey( name: "FK_CharacterSkill_Character_CharacterId", column: x => x.CharacterId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_CharacterSkill_Skill_SkillVNum", column: x => x.SkillVNum, principalTable: "Skill", principalColumn: "SkillVNum", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "FamilyCharacter", columns: table => new { FamilyCharacterId = table.Column<long>(type: "bigint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Authority = table.Column<byte>(type: "smallint", nullable: false), CharacterId = table.Column<long>(type: "bigint", nullable: false), DailyMessage = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true), Experience = table.Column<int>(type: "integer", nullable: false), FamilyId = table.Column<long>(type: "bigint", nullable: false), Rank = table.Column<byte>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_FamilyCharacter", x => x.FamilyCharacterId); table.ForeignKey( name: "FK_FamilyCharacter_Character_CharacterId", column: x => x.CharacterId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_FamilyCharacter_Family_FamilyId", column: x => x.FamilyId, principalTable: "Family", principalColumn: "FamilyId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "ItemInstance", columns: table => new { Id = table.Column<Guid>(type: "uuid", nullable: false), Amount = table.Column<short>(type: "smallint", nullable: false), BoundCharacterId = table.Column<long>(type: "bigint", nullable: true), CharacterId = table.Column<long>(type: "bigint", nullable: false), Design = table.Column<short>(type: "smallint", nullable: false), DurabilityPoint = table.Column<int>(type: "integer", nullable: false), ItemDeleteTime = table.Column<Instant>(type: "timestamp with time zone", nullable: true), ItemVNum = table.Column<short>(type: "smallint", nullable: false), Upgrade = table.Column<byte>(type: "smallint", nullable: false), Rare = table.Column<short>(type: "smallint", nullable: false), Discriminator = table.Column<string>(type: "text", nullable: false), Hp = table.Column<short>(type: "smallint", nullable: true), Mp = table.Column<short>(type: "smallint", nullable: true), Ammo = table.Column<byte>(type: "smallint", nullable: true), Cellon = table.Column<byte>(type: "smallint", nullable: true), CloseDefence = table.Column<short>(type: "smallint", nullable: true), Concentrate = table.Column<short>(type: "smallint", nullable: true), CriticalDodge = table.Column<short>(type: "smallint", nullable: true), CriticalLuckRate = table.Column<byte>(type: "smallint", nullable: true), CriticalRate = table.Column<short>(type: "smallint", nullable: true), DamageMaximum = table.Column<short>(type: "smallint", nullable: true), DamageMinimum = table.Column<short>(type: "smallint", nullable: true), DarkElement = table.Column<byte>(type: "smallint", nullable: true), DarkResistance = table.Column<short>(type: "smallint", nullable: true), DefenceDodge = table.Column<short>(type: "smallint", nullable: true), DistanceDefence = table.Column<short>(type: "smallint", nullable: true), DistanceDefenceDodge = table.Column<short>(type: "smallint", nullable: true), ElementRate = table.Column<short>(type: "smallint", nullable: true), FireElement = table.Column<byte>(type: "smallint", nullable: true), FireResistance = table.Column<short>(type: "smallint", nullable: true), HitRate = table.Column<short>(type: "smallint", nullable: true), WearableInstance_Hp = table.Column<short>(type: "smallint", nullable: true), IsEmpty = table.Column<bool>(type: "boolean", nullable: true), IsFixed = table.Column<bool>(type: "boolean", nullable: true), LightElement = table.Column<byte>(type: "smallint", nullable: true), LightResistance = table.Column<short>(type: "smallint", nullable: true), MagicDefence = table.Column<short>(type: "smallint", nullable: true), MaxElementRate = table.Column<short>(type: "smallint", nullable: true), WearableInstance_Mp = table.Column<short>(type: "smallint", nullable: true), ShellRarity = table.Column<byte>(type: "smallint", nullable: true), WaterElement = table.Column<byte>(type: "smallint", nullable: true), WaterResistance = table.Column<short>(type: "smallint", nullable: true), Xp = table.Column<long>(type: "bigint", nullable: true), SlDamage = table.Column<short>(type: "smallint", nullable: true), SlDefence = table.Column<short>(type: "smallint", nullable: true), SlElement = table.Column<short>(type: "smallint", nullable: true), SlHp = table.Column<short>(type: "smallint", nullable: true), SpDamage = table.Column<byte>(type: "smallint", nullable: true), SpDark = table.Column<byte>(type: "smallint", nullable: true), SpDefence = table.Column<byte>(type: "smallint", nullable: true), SpElement = table.Column<byte>(type: "smallint", nullable: true), SpFire = table.Column<byte>(type: "smallint", nullable: true), SpHp = table.Column<byte>(type: "smallint", nullable: true), SpLevel = table.Column<byte>(type: "smallint", nullable: true), SpLight = table.Column<byte>(type: "smallint", nullable: true), SpStoneUpgrade = table.Column<byte>(type: "smallint", nullable: true), SpWater = table.Column<byte>(type: "smallint", nullable: true), HoldingVNum = table.Column<short>(type: "smallint", nullable: true) }, constraints: table => { table.PrimaryKey("PK_ItemInstance", x => x.Id); table.ForeignKey( name: "FK_ItemInstance_Character_BoundCharacterId", column: x => x.BoundCharacterId, principalTable: "Character", principalColumn: "CharacterId"); table.ForeignKey( name: "FK_ItemInstance_Item_ItemVNum", column: x => x.ItemVNum, principalTable: "Item", principalColumn: "VNum", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Mate", columns: table => new { MateId = table.Column<long>(type: "bigint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Attack = table.Column<byte>(type: "smallint", nullable: false), CanPickUp = table.Column<bool>(type: "boolean", nullable: false), CharacterId = table.Column<long>(type: "bigint", nullable: false), Defence = table.Column<byte>(type: "smallint", nullable: false), Direction = table.Column<byte>(type: "smallint", nullable: false), Experience = table.Column<long>(type: "bigint", nullable: false), Hp = table.Column<int>(type: "integer", nullable: false), IsSummonable = table.Column<bool>(type: "boolean", nullable: false), IsTeamMember = table.Column<bool>(type: "boolean", nullable: false), Level = table.Column<byte>(type: "smallint", nullable: false), Loyalty = table.Column<short>(type: "smallint", nullable: false), MapX = table.Column<short>(type: "smallint", nullable: false), MapY = table.Column<short>(type: "smallint", nullable: false), MateType = table.Column<byte>(type: "smallint", nullable: false), Mp = table.Column<int>(type: "integer", nullable: false), Name = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true), VNum = table.Column<short>(type: "smallint", nullable: false), Skin = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Mate", x => x.MateId); table.ForeignKey( name: "FK_Mate_Character_CharacterId", column: x => x.CharacterId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Mate_NpcMonster_VNum", column: x => x.VNum, principalTable: "NpcMonster", principalColumn: "NpcMonsterVNum", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Miniland", columns: table => new { MinilandId = table.Column<Guid>(type: "uuid", nullable: false), MinilandMessage = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true), MinilandPoint = table.Column<long>(type: "bigint", nullable: false), State = table.Column<byte>(type: "smallint", nullable: false), OwnerId = table.Column<long>(type: "bigint", nullable: false), DailyVisitCount = table.Column<int>(type: "integer", nullable: false), VisitCount = table.Column<int>(type: "integer", nullable: false), WelcomeMusicInfo = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Miniland", x => x.MinilandId); table.ForeignKey( name: "FK_Miniland_Character_OwnerId", column: x => x.OwnerId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "QuicklistEntry", columns: table => new { Id = table.Column<Guid>(type: "uuid", nullable: false), CharacterId = table.Column<long>(type: "bigint", nullable: false), Morph = table.Column<short>(type: "smallint", nullable: false), IconVNum = table.Column<short>(type: "smallint", nullable: false), QuickListIndex = table.Column<short>(type: "smallint", nullable: false), Slot = table.Column<short>(type: "smallint", nullable: false), IconType = table.Column<short>(type: "smallint", nullable: false), Type = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_QuicklistEntry", x => x.Id); table.ForeignKey( name: "FK_QuicklistEntry_Character_CharacterId", column: x => x.CharacterId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Respawn", columns: table => new { RespawnId = table.Column<long>(type: "bigint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), CharacterId = table.Column<long>(type: "bigint", nullable: false), MapId = table.Column<short>(type: "smallint", nullable: false), RespawnMapTypeId = table.Column<long>(type: "bigint", nullable: false), X = table.Column<short>(type: "smallint", nullable: false), Y = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Respawn", x => x.RespawnId); table.ForeignKey( name: "FK_Respawn_Character_CharacterId", column: x => x.CharacterId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Respawn_Map_MapId", column: x => x.MapId, principalTable: "Map", principalColumn: "MapId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Respawn_RespawnMapType_RespawnMapTypeId", column: x => x.RespawnMapTypeId, principalTable: "RespawnMapType", principalColumn: "RespawnMapTypeId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "StaticBonus", columns: table => new { StaticBonusId = table.Column<long>(type: "bigint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), CharacterId = table.Column<long>(type: "bigint", nullable: false), DateEnd = table.Column<Instant>(type: "timestamp with time zone", nullable: true), StaticBonusType = table.Column<byte>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_StaticBonus", x => x.StaticBonusId); table.ForeignKey( name: "FK_StaticBonus_Character_CharacterId", column: x => x.CharacterId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "StaticBuff", columns: table => new { StaticBuffId = table.Column<long>(type: "bigint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), CharacterId = table.Column<long>(type: "bigint", nullable: false), CardId = table.Column<short>(type: "smallint", nullable: false), RemainingTime = table.Column<int>(type: "integer", nullable: false) }, constraints: table => { table.PrimaryKey("PK_StaticBuff", x => x.StaticBuffId); table.ForeignKey( name: "FK_StaticBuff_Card_CardId", column: x => x.CardId, principalTable: "Card", principalColumn: "CardId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_StaticBuff_Character_CharacterId", column: x => x.CharacterId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Title", columns: table => new { Id = table.Column<Guid>(type: "uuid", nullable: false), CharacterId = table.Column<long>(type: "bigint", nullable: false), Active = table.Column<bool>(type: "boolean", nullable: false), Visible = table.Column<bool>(type: "boolean", nullable: false), TitleType = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Title", x => x.Id); table.ForeignKey( name: "FK_Title_Character_CharacterId", column: x => x.CharacterId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Warehouse", columns: table => new { Id = table.Column<Guid>(type: "uuid", nullable: false), CharacterId = table.Column<long>(type: "bigint", nullable: true), FamilyId = table.Column<long>(type: "bigint", nullable: true), Type = table.Column<byte>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Warehouse", x => x.Id); table.ForeignKey( name: "FK_Warehouse_Character_CharacterId", column: x => x.CharacterId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Warehouse_Family_FamilyId", column: x => x.FamilyId, principalTable: "Family", principalColumn: "FamilyId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Drop", columns: table => new { DropId = table.Column<short>(type: "smallint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Amount = table.Column<int>(type: "integer", nullable: false), DropChance = table.Column<int>(type: "integer", nullable: false), VNum = table.Column<short>(type: "smallint", nullable: false), MapTypeId = table.Column<short>(type: "smallint", nullable: true), MonsterVNum = table.Column<short>(type: "smallint", nullable: true) }, constraints: table => { table.PrimaryKey("PK_Drop", x => x.DropId); table.ForeignKey( name: "FK_Drop_Item_VNum", column: x => x.VNum, principalTable: "Item", principalColumn: "VNum", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Drop_MapType_MapTypeId", column: x => x.MapTypeId, principalTable: "MapType", principalColumn: "MapTypeId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Drop_NpcMonster_MonsterVNum", column: x => x.MonsterVNum, principalTable: "NpcMonster", principalColumn: "NpcMonsterVNum", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "MapTypeMap", columns: table => new { MapTypeMapId = table.Column<short>(type: "smallint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), MapId = table.Column<short>(type: "smallint", nullable: false), MapTypeId = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_MapTypeMap", x => x.MapTypeMapId); table.ForeignKey( name: "FK_MapTypeMap_Map_MapId", column: x => x.MapId, principalTable: "Map", principalColumn: "MapId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_MapTypeMap_MapType_MapTypeId", column: x => x.MapTypeId, principalTable: "MapType", principalColumn: "MapTypeId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "RecipeItem", columns: table => new { RecipeItemId = table.Column<short>(type: "smallint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Amount = table.Column<short>(type: "smallint", nullable: false), ItemVNum = table.Column<short>(type: "smallint", nullable: false), RecipeId = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_RecipeItem", x => x.RecipeItemId); table.ForeignKey( name: "FK_RecipeItem_Item_ItemVNum", column: x => x.ItemVNum, principalTable: "Item", principalColumn: "VNum", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_RecipeItem_Recipe_RecipeId", column: x => x.RecipeId, principalTable: "Recipe", principalColumn: "RecipeId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "ShopItem", columns: table => new { ShopItemId = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Color = table.Column<byte>(type: "smallint", nullable: false), ItemVNum = table.Column<short>(type: "smallint", nullable: false), Rare = table.Column<short>(type: "smallint", nullable: false), ShopId = table.Column<int>(type: "integer", nullable: false), Slot = table.Column<byte>(type: "smallint", nullable: false), Type = table.Column<byte>(type: "smallint", nullable: false), Upgrade = table.Column<byte>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ShopItem", x => x.ShopItemId); table.ForeignKey( name: "FK_ShopItem_Item_ItemVNum", column: x => x.ItemVNum, principalTable: "Item", principalColumn: "VNum", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_ShopItem_Shop_ShopId", column: x => x.ShopId, principalTable: "Shop", principalColumn: "ShopId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "ShopSkill", columns: table => new { ShopSkillId = table.Column<int>(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), ShopId = table.Column<int>(type: "integer", nullable: false), SkillVNum = table.Column<short>(type: "smallint", nullable: false), Slot = table.Column<byte>(type: "smallint", nullable: false), Type = table.Column<byte>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ShopSkill", x => x.ShopSkillId); table.ForeignKey( name: "FK_ShopSkill_Shop_ShopId", column: x => x.ShopId, principalTable: "Shop", principalColumn: "ShopId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_ShopSkill_Skill_SkillVNum", column: x => x.SkillVNum, principalTable: "Skill", principalColumn: "SkillVNum", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "BazaarItem", columns: table => new { BazaarItemId = table.Column<long>(type: "bigint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Amount = table.Column<short>(type: "smallint", nullable: false), DateStart = table.Column<Instant>(type: "timestamp with time zone", nullable: false), Duration = table.Column<short>(type: "smallint", nullable: false), IsPackage = table.Column<bool>(type: "boolean", nullable: false), ItemInstanceId = table.Column<Guid>(type: "uuid", nullable: false), MedalUsed = table.Column<bool>(type: "boolean", nullable: false), Price = table.Column<long>(type: "bigint", nullable: false), SellerId = table.Column<long>(type: "bigint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_BazaarItem", x => x.BazaarItemId); table.ForeignKey( name: "FK_BazaarItem_Character_SellerId", column: x => x.SellerId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_BazaarItem_ItemInstance_ItemInstanceId", column: x => x.ItemInstanceId, principalTable: "ItemInstance", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "EquipmentOption", columns: table => new { Id = table.Column<Guid>(type: "uuid", nullable: false), Level = table.Column<byte>(type: "smallint", nullable: false), Type = table.Column<byte>(type: "smallint", nullable: false), Value = table.Column<int>(type: "integer", nullable: false), WearableInstanceId = table.Column<Guid>(type: "uuid", nullable: false) }, constraints: table => { table.PrimaryKey("PK_EquipmentOption", x => x.Id); table.ForeignKey( name: "FK_EquipmentOption_ItemInstance_WearableInstanceId", column: x => x.WearableInstanceId, principalTable: "ItemInstance", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "InventoryItemInstance", columns: table => new { Id = table.Column<Guid>(type: "uuid", nullable: false), CharacterId = table.Column<long>(type: "bigint", nullable: false), ItemInstanceId = table.Column<Guid>(type: "uuid", nullable: false), Slot = table.Column<short>(type: "smallint", nullable: false), Type = table.Column<byte>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_InventoryItemInstance", x => x.Id); table.ForeignKey( name: "FK_InventoryItemInstance_Character_CharacterId", column: x => x.CharacterId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_InventoryItemInstance_ItemInstance_ItemInstanceId", column: x => x.ItemInstanceId, principalTable: "ItemInstance", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Mail", columns: table => new { MailId = table.Column<long>(type: "bigint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Hat = table.Column<short>(type: "smallint", nullable: true), Armor = table.Column<short>(type: "smallint", nullable: true), MainWeapon = table.Column<short>(type: "smallint", nullable: true), SecondaryWeapon = table.Column<short>(type: "smallint", nullable: true), Mask = table.Column<short>(type: "smallint", nullable: true), Fairy = table.Column<short>(type: "smallint", nullable: true), CostumeSuit = table.Column<short>(type: "smallint", nullable: true), CostumeHat = table.Column<short>(type: "smallint", nullable: true), WeaponSkin = table.Column<short>(type: "smallint", nullable: true), WingSkin = table.Column<short>(type: "smallint", nullable: true), Date = table.Column<Instant>(type: "timestamp with time zone", nullable: false), IsOpened = table.Column<bool>(type: "boolean", nullable: false), IsSenderCopy = table.Column<bool>(type: "boolean", nullable: false), ItemInstanceId = table.Column<Guid>(type: "uuid", nullable: true), Message = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false), ReceiverId = table.Column<long>(type: "bigint", nullable: false), SenderId = table.Column<long>(type: "bigint", nullable: true), SenderCharacterClass = table.Column<byte>(type: "smallint", nullable: true), SenderGender = table.Column<byte>(type: "smallint", nullable: true), SenderHairColor = table.Column<byte>(type: "smallint", nullable: true), SenderHairStyle = table.Column<byte>(type: "smallint", nullable: true), SenderMorphId = table.Column<short>(type: "smallint", nullable: true), Title = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false) }, constraints: table => { table.PrimaryKey("PK_Mail", x => x.MailId); table.ForeignKey( name: "FK_Mail_Character_ReceiverId", column: x => x.ReceiverId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Mail_Character_SenderId", column: x => x.SenderId, principalTable: "Character", principalColumn: "CharacterId", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Mail_ItemInstance_ItemInstanceId", column: x => x.ItemInstanceId, principalTable: "ItemInstance", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "WarehouseItem", columns: table => new { Id = table.Column<Guid>(type: "uuid", nullable: false), WarehouseId = table.Column<Guid>(type: "uuid", nullable: false), ItemInstanceId = table.Column<Guid>(type: "uuid", nullable: false), Slot = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_WarehouseItem", x => x.Id); table.ForeignKey( name: "FK_WarehouseItem_ItemInstance_ItemInstanceId", column: x => x.ItemInstanceId, principalTable: "ItemInstance", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_WarehouseItem_Warehouse_WarehouseId", column: x => x.WarehouseId, principalTable: "Warehouse", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "MinilandObject", columns: table => new { MinilandObjectId = table.Column<Guid>(type: "uuid", nullable: false), InventoryItemInstanceId = table.Column<Guid>(type: "uuid", nullable: true), Level1BoxAmount = table.Column<byte>(type: "smallint", nullable: false), Level2BoxAmount = table.Column<byte>(type: "smallint", nullable: false), Level3BoxAmount = table.Column<byte>(type: "smallint", nullable: false), Level4BoxAmount = table.Column<byte>(type: "smallint", nullable: false), Level5BoxAmount = table.Column<byte>(type: "smallint", nullable: false), MapX = table.Column<short>(type: "smallint", nullable: false), MapY = table.Column<short>(type: "smallint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_MinilandObject", x => x.MinilandObjectId); table.ForeignKey( name: "FK_MinilandObject_InventoryItemInstance_InventoryItemInstanceId", column: x => x.InventoryItemInstanceId, principalTable: "InventoryItemInstance", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateIndex( name: "IX_Account_Name", table: "Account", column: "Name", unique: true); migrationBuilder.CreateIndex( name: "IX_ActPart_ActId", table: "ActPart", column: "ActId"); migrationBuilder.CreateIndex( name: "IX_BazaarItem_ItemInstanceId", table: "BazaarItem", column: "ItemInstanceId"); migrationBuilder.CreateIndex( name: "IX_BazaarItem_SellerId", table: "BazaarItem", column: "SellerId"); migrationBuilder.CreateIndex( name: "IX_BCard_CardId", table: "BCard", column: "CardId"); migrationBuilder.CreateIndex( name: "IX_BCard_ItemVNum", table: "BCard", column: "ItemVNum"); migrationBuilder.CreateIndex( name: "IX_BCard_NpcMonsterVNum", table: "BCard", column: "NpcMonsterVNum"); migrationBuilder.CreateIndex( name: "IX_BCard_SkillVNum", table: "BCard", column: "SkillVNum"); migrationBuilder.CreateIndex( name: "IX_Character_AccountId", table: "Character", column: "AccountId"); migrationBuilder.CreateIndex( name: "IX_Character_CurrentScriptId", table: "Character", column: "CurrentScriptId"); migrationBuilder.CreateIndex( name: "IX_Character_MapId", table: "Character", column: "MapId"); migrationBuilder.CreateIndex( name: "IX_CharacterActPart_ActPartId", table: "CharacterActPart", column: "ActPartId"); migrationBuilder.CreateIndex( name: "IX_CharacterActPart_CharacterId", table: "CharacterActPart", column: "CharacterId"); migrationBuilder.CreateIndex( name: "IX_CharacterQuest_CharacterId", table: "CharacterQuest", column: "CharacterId"); migrationBuilder.CreateIndex( name: "IX_CharacterQuest_QuestId", table: "CharacterQuest", column: "QuestId"); migrationBuilder.CreateIndex( name: "IX_CharacterRelation_CharacterId", table: "CharacterRelation", column: "CharacterId"); migrationBuilder.CreateIndex( name: "IX_CharacterRelation_RelatedCharacterId", table: "CharacterRelation", column: "RelatedCharacterId"); migrationBuilder.CreateIndex( name: "IX_CharacterSkill_CharacterId", table: "CharacterSkill", column: "CharacterId"); migrationBuilder.CreateIndex( name: "IX_CharacterSkill_SkillVNum", table: "CharacterSkill", column: "SkillVNum"); migrationBuilder.CreateIndex( name: "IX_Combo_SkillVNum", table: "Combo", column: "SkillVNum"); migrationBuilder.CreateIndex( name: "IX_Drop_MapTypeId", table: "Drop", column: "MapTypeId"); migrationBuilder.CreateIndex( name: "IX_Drop_MonsterVNum", table: "Drop", column: "MonsterVNum"); migrationBuilder.CreateIndex( name: "IX_Drop_VNum", table: "Drop", column: "VNum"); migrationBuilder.CreateIndex( name: "IX_EquipmentOption_WearableInstanceId", table: "EquipmentOption", column: "WearableInstanceId"); migrationBuilder.CreateIndex( name: "IX_FamilyCharacter_CharacterId", table: "FamilyCharacter", column: "CharacterId"); migrationBuilder.CreateIndex( name: "IX_FamilyCharacter_FamilyId", table: "FamilyCharacter", column: "FamilyId"); migrationBuilder.CreateIndex( name: "IX_FamilyLog_FamilyId", table: "FamilyLog", column: "FamilyId"); migrationBuilder.CreateIndex( name: "IX_I18NActDesc_Key_RegionType", table: "I18NActDesc", columns: new[] { "Key", "RegionType" }, unique: true); migrationBuilder.CreateIndex( name: "IX_I18NBCard_Key_RegionType", table: "I18NBCard", columns: new[] { "Key", "RegionType" }, unique: true); migrationBuilder.CreateIndex( name: "IX_I18NCard_Key_RegionType", table: "I18NCard", columns: new[] { "Key", "RegionType" }, unique: true); migrationBuilder.CreateIndex( name: "IX_I18NItem_Key_RegionType", table: "I18NItem", columns: new[] { "Key", "RegionType" }, unique: true); migrationBuilder.CreateIndex( name: "IX_I18NMapIdData_Key_RegionType", table: "I18NMapIdData", columns: new[] { "Key", "RegionType" }, unique: true); migrationBuilder.CreateIndex( name: "IX_I18NMapPointData_Key_RegionType", table: "I18NMapPointData", columns: new[] { "Key", "RegionType" }, unique: true); migrationBuilder.CreateIndex( name: "IX_I18NNpcMonster_Key_RegionType", table: "I18NNpcMonster", columns: new[] { "Key", "RegionType" }, unique: true); migrationBuilder.CreateIndex( name: "IX_I18NNpcMonsterTalk_Key_RegionType", table: "I18NNpcMonsterTalk", columns: new[] { "Key", "RegionType" }, unique: true); migrationBuilder.CreateIndex( name: "IX_I18NQuest_Key_RegionType", table: "I18NQuest", columns: new[] { "Key", "RegionType" }, unique: true); migrationBuilder.CreateIndex( name: "IX_I18NSkill_Key_RegionType", table: "I18NSkill", columns: new[] { "Key", "RegionType" }, unique: true); migrationBuilder.CreateIndex( name: "IX_InventoryItemInstance_CharacterId_Slot_Type", table: "InventoryItemInstance", columns: new[] { "CharacterId", "Slot", "Type" }, unique: true); migrationBuilder.CreateIndex( name: "IX_InventoryItemInstance_ItemInstanceId", table: "InventoryItemInstance", column: "ItemInstanceId"); migrationBuilder.CreateIndex( name: "IX_ItemInstance_BoundCharacterId", table: "ItemInstance", column: "BoundCharacterId"); migrationBuilder.CreateIndex( name: "IX_ItemInstance_ItemVNum", table: "ItemInstance", column: "ItemVNum"); migrationBuilder.CreateIndex( name: "IX_Mail_ItemInstanceId", table: "Mail", column: "ItemInstanceId"); migrationBuilder.CreateIndex( name: "IX_Mail_ReceiverId", table: "Mail", column: "ReceiverId"); migrationBuilder.CreateIndex( name: "IX_Mail_SenderId", table: "Mail", column: "SenderId"); migrationBuilder.CreateIndex( name: "IX_MapMonster_MapId", table: "MapMonster", column: "MapId"); migrationBuilder.CreateIndex( name: "IX_MapMonster_VNum", table: "MapMonster", column: "VNum"); migrationBuilder.CreateIndex( name: "IX_MapNpc_Dialog", table: "MapNpc", column: "Dialog"); migrationBuilder.CreateIndex( name: "IX_MapNpc_MapId", table: "MapNpc", column: "MapId"); migrationBuilder.CreateIndex( name: "IX_MapNpc_VNum", table: "MapNpc", column: "VNum"); migrationBuilder.CreateIndex( name: "IX_MapType_RespawnMapTypeId", table: "MapType", column: "RespawnMapTypeId"); migrationBuilder.CreateIndex( name: "IX_MapType_ReturnMapTypeId", table: "MapType", column: "ReturnMapTypeId"); migrationBuilder.CreateIndex( name: "IX_MapTypeMap_MapId_MapTypeId", table: "MapTypeMap", columns: new[] { "MapId", "MapTypeId" }, unique: true); migrationBuilder.CreateIndex( name: "IX_MapTypeMap_MapTypeId", table: "MapTypeMap", column: "MapTypeId"); migrationBuilder.CreateIndex( name: "IX_Mate_CharacterId", table: "Mate", column: "CharacterId"); migrationBuilder.CreateIndex( name: "IX_Mate_VNum", table: "Mate", column: "VNum"); migrationBuilder.CreateIndex( name: "IX_Miniland_OwnerId", table: "Miniland", column: "OwnerId"); migrationBuilder.CreateIndex( name: "IX_MinilandObject_InventoryItemInstanceId", table: "MinilandObject", column: "InventoryItemInstanceId"); migrationBuilder.CreateIndex( name: "IX_NpcMonsterSkill_NpcMonsterVNum", table: "NpcMonsterSkill", column: "NpcMonsterVNum"); migrationBuilder.CreateIndex( name: "IX_NpcMonsterSkill_SkillVNum", table: "NpcMonsterSkill", column: "SkillVNum"); migrationBuilder.CreateIndex( name: "IX_PenaltyLog_AccountId", table: "PenaltyLog", column: "AccountId"); migrationBuilder.CreateIndex( name: "IX_Portal_DestinationMapId", table: "Portal", column: "DestinationMapId"); migrationBuilder.CreateIndex( name: "IX_Portal_SourceMapId", table: "Portal", column: "SourceMapId"); migrationBuilder.CreateIndex( name: "IX_QuestObjective_QuestId", table: "QuestObjective", column: "QuestId"); migrationBuilder.CreateIndex( name: "IX_QuestQuestReward_QuestId", table: "QuestQuestReward", column: "QuestId"); migrationBuilder.CreateIndex( name: "IX_QuestQuestReward_QuestRewardId", table: "QuestQuestReward", column: "QuestRewardId"); migrationBuilder.CreateIndex( name: "IX_QuicklistEntry_CharacterId", table: "QuicklistEntry", column: "CharacterId"); migrationBuilder.CreateIndex( name: "IX_Recipe_ItemVNum", table: "Recipe", column: "ItemVNum"); migrationBuilder.CreateIndex( name: "IX_Recipe_MapNpcId", table: "Recipe", column: "MapNpcId"); migrationBuilder.CreateIndex( name: "IX_RecipeItem_ItemVNum", table: "RecipeItem", column: "ItemVNum"); migrationBuilder.CreateIndex( name: "IX_RecipeItem_RecipeId", table: "RecipeItem", column: "RecipeId"); migrationBuilder.CreateIndex( name: "IX_Respawn_CharacterId", table: "Respawn", column: "CharacterId"); migrationBuilder.CreateIndex( name: "IX_Respawn_MapId", table: "Respawn", column: "MapId"); migrationBuilder.CreateIndex( name: "IX_Respawn_RespawnMapTypeId", table: "Respawn", column: "RespawnMapTypeId"); migrationBuilder.CreateIndex( name: "IX_RespawnMapType_MapId", table: "RespawnMapType", column: "MapId"); migrationBuilder.CreateIndex( name: "IX_RollGeneratedItem_ItemGeneratedVNum", table: "RollGeneratedItem", column: "ItemGeneratedVNum"); migrationBuilder.CreateIndex( name: "IX_RollGeneratedItem_OriginalItemVNum", table: "RollGeneratedItem", column: "OriginalItemVNum"); migrationBuilder.CreateIndex( name: "IX_Script_ScriptId_ScriptStepId", table: "Script", columns: new[] { "ScriptId", "ScriptStepId" }, unique: true); migrationBuilder.CreateIndex( name: "IX_ScriptedInstance_MapId", table: "ScriptedInstance", column: "MapId"); migrationBuilder.CreateIndex( name: "IX_Shop_MapNpcId", table: "Shop", column: "MapNpcId"); migrationBuilder.CreateIndex( name: "IX_ShopItem_ItemVNum", table: "ShopItem", column: "ItemVNum"); migrationBuilder.CreateIndex( name: "IX_ShopItem_ShopId", table: "ShopItem", column: "ShopId"); migrationBuilder.CreateIndex( name: "IX_ShopSkill_ShopId", table: "ShopSkill", column: "ShopId"); migrationBuilder.CreateIndex( name: "IX_ShopSkill_SkillVNum", table: "ShopSkill", column: "SkillVNum"); migrationBuilder.CreateIndex( name: "IX_StaticBonus_CharacterId", table: "StaticBonus", column: "CharacterId"); migrationBuilder.CreateIndex( name: "IX_StaticBuff_CardId", table: "StaticBuff", column: "CardId"); migrationBuilder.CreateIndex( name: "IX_StaticBuff_CharacterId", table: "StaticBuff", column: "CharacterId"); migrationBuilder.CreateIndex( name: "IX_Teleporter_MapId", table: "Teleporter", column: "MapId"); migrationBuilder.CreateIndex( name: "IX_Teleporter_MapNpcId", table: "Teleporter", column: "MapNpcId"); migrationBuilder.CreateIndex( name: "IX_Title_CharacterId_TitleType", table: "Title", columns: new[] { "CharacterId", "TitleType" }, unique: true); migrationBuilder.CreateIndex( name: "IX_Warehouse_CharacterId", table: "Warehouse", column: "CharacterId"); migrationBuilder.CreateIndex( name: "IX_Warehouse_FamilyId", table: "Warehouse", column: "FamilyId"); migrationBuilder.CreateIndex( name: "IX_WarehouseItem_ItemInstanceId", table: "WarehouseItem", column: "ItemInstanceId"); migrationBuilder.CreateIndex( name: "IX_WarehouseItem_WarehouseId", table: "WarehouseItem", column: "WarehouseId"); } protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "AuditLog"); migrationBuilder.DropTable( name: "BazaarItem"); migrationBuilder.DropTable( name: "BCard"); migrationBuilder.DropTable( name: "CharacterActPart"); migrationBuilder.DropTable( name: "CharacterQuest"); migrationBuilder.DropTable( name: "CharacterRelation"); migrationBuilder.DropTable( name: "CharacterSkill"); migrationBuilder.DropTable( name: "Combo"); migrationBuilder.DropTable( name: "Drop"); migrationBuilder.DropTable( name: "EquipmentOption"); migrationBuilder.DropTable( name: "FamilyCharacter"); migrationBuilder.DropTable( name: "FamilyLog"); migrationBuilder.DropTable( name: "I18NActDesc"); migrationBuilder.DropTable( name: "I18NBCard"); migrationBuilder.DropTable( name: "I18NCard"); migrationBuilder.DropTable( name: "I18NItem"); migrationBuilder.DropTable( name: "I18NMapIdData"); migrationBuilder.DropTable( name: "I18NMapPointData"); migrationBuilder.DropTable( name: "I18NNpcMonster"); migrationBuilder.DropTable( name: "I18NNpcMonsterTalk"); migrationBuilder.DropTable( name: "I18NQuest"); migrationBuilder.DropTable( name: "I18NSkill"); migrationBuilder.DropTable( name: "Mail"); migrationBuilder.DropTable( name: "MapMonster"); migrationBuilder.DropTable( name: "MapTypeMap"); migrationBuilder.DropTable( name: "Mate"); migrationBuilder.DropTable( name: "Miniland"); migrationBuilder.DropTable( name: "MinilandObject"); migrationBuilder.DropTable( name: "NpcMonsterSkill"); migrationBuilder.DropTable( name: "PenaltyLog"); migrationBuilder.DropTable( name: "Portal"); migrationBuilder.DropTable( name: "QuestObjective"); migrationBuilder.DropTable( name: "QuestQuestReward"); migrationBuilder.DropTable( name: "QuicklistEntry"); migrationBuilder.DropTable( name: "RecipeItem"); migrationBuilder.DropTable( name: "Respawn"); migrationBuilder.DropTable( name: "RollGeneratedItem"); migrationBuilder.DropTable( name: "ScriptedInstance"); migrationBuilder.DropTable( name: "ShopItem"); migrationBuilder.DropTable( name: "ShopSkill"); migrationBuilder.DropTable( name: "StaticBonus"); migrationBuilder.DropTable( name: "StaticBuff"); migrationBuilder.DropTable( name: "Teleporter"); migrationBuilder.DropTable( name: "Title"); migrationBuilder.DropTable( name: "WarehouseItem"); migrationBuilder.DropTable( name: "ActPart"); migrationBuilder.DropTable( name: "MapType"); migrationBuilder.DropTable( name: "InventoryItemInstance"); migrationBuilder.DropTable( name: "Quest"); migrationBuilder.DropTable( name: "QuestReward"); migrationBuilder.DropTable( name: "Recipe"); migrationBuilder.DropTable( name: "Shop"); migrationBuilder.DropTable( name: "Skill"); migrationBuilder.DropTable( name: "Card"); migrationBuilder.DropTable( name: "Warehouse"); migrationBuilder.DropTable( name: "Act"); migrationBuilder.DropTable( name: "RespawnMapType"); migrationBuilder.DropTable( name: "ItemInstance"); migrationBuilder.DropTable( name: "MapNpc"); migrationBuilder.DropTable( name: "Family"); migrationBuilder.DropTable( name: "Character"); migrationBuilder.DropTable( name: "Item"); migrationBuilder.DropTable( name: "NpcMonster"); migrationBuilder.DropTable( name: "NpcTalk"); migrationBuilder.DropTable( name: "Account"); migrationBuilder.DropTable( name: "Map"); migrationBuilder.DropTable( name: "Script"); } } } ================================================ FILE: src/NosCore.Database/Migrations/20231125092440_BumpToEf8.Designer.cs ================================================ // <auto-generated /> using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using NodaTime; using NosCore.Database; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace NosCore.Database.Migrations { [DbContext(typeof(NosCoreContext))] [Migration("20231125092440_BumpToEf8")] partial class BumpToEf8 { /// <inheritdoc /> protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "8.0.0") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "audit_log_type", new[] { "account_creation", "character_creation", "email_update" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "authority_type", new[] { "user", "moderator", "game_master", "administrator", "root", "closed", "banned", "unconfirmed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_class_type", new[] { "adventurer", "swordsman", "archer", "mage", "martial_artist" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_relation_type", new[] { "friend", "hidden_spouse", "spouse", "blocked" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_state", new[] { "active", "inactive" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_type", new[] { "neutral", "fire", "water", "light", "dark" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "equipment_type", new[] { "main_weapon", "armor", "hat", "gloves", "boots", "secondary_weapon", "necklace", "ring", "bracelet", "mask", "fairy", "amulet", "sp", "costume_suit", "costume_hat", "weapon_skin", "wing_skin" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority", new[] { "head", "assistant", "manager", "member" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority_type", new[] { "none", "put", "all" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_log_type", new[] { "daily_message", "raid_won", "rainbow_battle", "family_xp", "family_level_up", "level_up", "item_upgraded", "right_changed", "authority_changed", "family_managed", "user_managed", "ware_house_added", "ware_house_removed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_member_rank", new[] { "nothing", "old_uncle", "old_aunt", "father", "mother", "uncle", "aunt", "brother", "sister", "spouse", "brother2", "sister2", "old_son", "old_daugter", "middle_son", "middle_daughter", "young_son", "young_daugter", "old_little_son", "old_little_daughter", "little_son", "little_daughter", "middle_little_son", "middle_little_daugter" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "gender_type", new[] { "male", "female" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_color_type", new[] { "dark_purple", "yellow", "blue", "purple", "orange", "brown", "green", "dark_grey", "light_blue", "pink_red", "light_yellow", "light_pink", "light_green", "light_grey", "sky_blue", "black", "dark_orange", "dark_orange_variant2", "dark_orange_variant3", "dark_orange_variant4", "dark_orange_variant5", "dark_orange_variant6", "light_orange", "light_light_orange", "light_light_light_orange", "light_light_light_light_orange", "super_light_orange", "dark_yellow", "light_light_yellow", "kaki_yellow", "super_light_yellow", "super_light_yellow2", "super_light_yellow3", "little_dark_yellow", "yellow_variant", "yellow_variant1", "yellow_variant2", "yellow_variant3", "yellow_variant4", "yellow_variant5", "yellow_variant6", "yellow_variant7", "yellow_variant8", "yellow_variant9", "green_variant", "green_variant1", "dark_green_variant", "green_more_dark_variant", "green_variant2", "green_variant3", "green_variant4", "green_variant5", "green_variant6", "green_variant7", "green_variant8", "green_variant9", "green_variant10", "green_variant11", "green_variant12", "green_variant13", "green_variant14", "green_variant15", "green_variant16", "green_variant17", "green_variant18", "green_variant19", "green_variant20", "light_blue_variant1", "light_blue_variant2", "light_blue_variant3", "light_blue_variant4", "light_blue_variant5", "light_blue_variant6", "light_blue_variant7", "light_blue_variant8", "light_blue_variant9", "light_blue_variant10", "light_blue_variant11", "light_blue_variant12", "light_blue_variant13", "dark_black", "light_blue_variant14", "light_blue_variant15", "light_blue_variant16", "light_blue_variant17", "blue_variant", "blue_variant_dark", "blue_variant_dark_dark", "blue_variant_dark_dark2", "flash_blue", "flash_blue_dark", "flash_blue_dark2", "flash_blue_dark3", "flash_blue_dark4", "flash_blue_dark5", "flash_blue_dark6", "flash_blue_dark7", "flash_blue_dark8", "flash_blue_dark9", "white", "flash_blue_dark10", "flash_blue1", "flash_blue2", "flash_blue3", "flash_blue4", "flash_blue5", "flash_purple", "flash_light_purple", "flash_light_purple2", "flash_light_purple3", "flash_light_purple4", "flash_light_purple5", "light_purple", "purple_variant1", "purple_variant2", "purple_variant3", "purple_variant4", "purple_variant5", "purple_variant6", "purple_variant7", "purple_variant8", "purple_variant9", "purple_variant10", "purple_variant11", "purple_variant12", "purple_variant13", "purple_variant14", "purple_variant15" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_style_type", new[] { "hair_style_a", "hair_style_b", "hair_style_c", "hair_style_d", "no_hair" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_effect_type", new[] { "no_effect", "teleport", "apply_hair_die", "speaker", "marriage_proposal", "undefined", "sp_charger", "dropped_sp_recharger", "premium_sp_recharger", "crafted_sp_recharger", "specialist_medal", "apply_skin_partner", "change_gender", "point_initialisation", "sealed_tarot_card", "tarot_card", "red_amulet", "blue_amulet", "reinforcement_amulet", "heroic", "random_heroic", "attack_amulet", "defense_amulet", "speed_booster", "box_effect", "vehicle", "gold_nos_merchant_upgrade", "silver_nos_merchant_upgrade", "inventory_upgrade", "pet_space_upgrade", "pet_basket_upgrade", "pet_backpack_upgrade", "inventory_ticket_upgrade", "buff_potions", "marriage_separation" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_type", new[] { "weapon", "armor", "fashion", "jewelery", "specialist", "box", "shell", "main", "upgrade", "production", "map", "special", "potion", "event", "title", "quest1", "sell", "food", "snack", "magical", "part", "teacher", "ammo", "quest2", "house", "garden", "minigame", "terrace", "miniland_theme" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "mate_type", new[] { "partner", "pet" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "miniland_state", new[] { "open", "private", "lock" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "monster_type", new[] { "unknown", "partner", "npc", "well", "portal", "boss", "elite", "peapod", "special", "gem_space_time" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "noscore_pocket_type", new[] { "equipment", "main", "etc", "miniland", "specialist", "costume", "wear" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "penalty_type", new[] { "muted", "banned", "block_exp", "block_f_exp", "block_rep", "warning" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "portal_type", new[] { "ts_normal", "closed", "open", "miniland", "ts_end", "ts_end_closed", "exit", "exit_closed", "raid", "effect", "blue_raid", "dark_raid", "time_space", "shop_teleport", "map_portal" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "quest_type", new[] { "hunt", "special_collect", "collect_in_raid", "brings", "capture_without_getting_the_monster", "capture", "times_space", "product", "number_of_kill", "target_reput", "ts_point", "dialog1", "collect_in_ts", "required", "wear", "needed", "collect", "transmit_gold", "go_to", "collect_map_entity", "use", "dialog2", "un_know", "inspect", "win_raid", "flower_quest" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "region_type", new[] { "en", "de", "fr", "it", "pl", "es", "ru", "cs", "tr" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "scripted_instance_type", new[] { "time_space", "raid", "raid_act4" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "static_bonus_type", new[] { "bazaar_medal_gold", "bazaar_medal_silver", "back_pack", "pet_basket", "pet_back_pack", "inventory_ticket_upgrade" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "teleporter_type", new[] { "teleporter", "teleporter_on_map" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "warehouse_type", new[] { "warehouse", "family_ware_house", "pet_warehouse" }); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Property<long>("AccountId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("AccountId")); b.Property<short>("Authority") .HasColumnType("smallint"); b.Property<long>("BankMoney") .HasColumnType("bigint"); b.Property<string>("Email") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ItemShopMoney") .HasColumnType("bigint"); b.Property<int>("Language") .HasColumnType("integer"); b.Property<string>("MfaSecret") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthPassword") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthSalt") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Password") .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("RegistrationIp") .HasMaxLength(45) .HasColumnType("character varying(45)"); b.Property<string>("VerificationToken") .HasMaxLength(32) .HasColumnType("character varying(32)"); b.HasKey("AccountId"); b.HasIndex("Name") .IsUnique(); b.ToTable("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("Scene") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("ActId"); b.ToTable("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("ActPartNumber") .HasColumnType("smallint"); b.Property<byte>("MaxTs") .HasColumnType("smallint"); b.HasKey("ActPartId"); b.HasIndex("ActId"); b.ToTable("ActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.AuditLog", b => { b.Property<Guid>("AuditId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("AuditLogType") .HasColumnType("integer"); b.Property<string>("TargetId") .IsRequired() .HasMaxLength(80) .HasColumnType("character varying(80)"); b.Property<string>("TargetType") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)"); b.Property<Instant>("Time") .HasColumnType("timestamp with time zone"); b.Property<string>("Value") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("AuditId"); b.ToTable("AuditLog"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.Property<short>("BCardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("BCardId")); b.Property<short?>("CardId") .HasColumnType("smallint"); b.Property<byte>("CastType") .HasColumnType("smallint"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<bool>("IsLevelDivided") .HasColumnType("boolean"); b.Property<bool>("IsLevelScaled") .HasColumnType("boolean"); b.Property<short?>("ItemVNum") .HasColumnType("smallint"); b.Property<short?>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<int>("SecondData") .HasColumnType("integer"); b.Property<short?>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("SubType") .HasColumnType("smallint"); b.Property<int>("ThirdData") .HasColumnType("integer"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("BCardId"); b.HasIndex("CardId"); b.HasIndex("ItemVNum"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("BCard"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.Property<long>("BazaarItemId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("BazaarItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<bool>("IsPackage") .HasColumnType("boolean"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<bool>("MedalUsed") .HasColumnType("boolean"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<long>("SellerId") .HasColumnType("bigint"); b.HasKey("BazaarItemId"); b.HasIndex("ItemInstanceId"); b.HasIndex("SellerId"); b.ToTable("BazaarItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<byte>("BuffType") .HasColumnType("smallint"); b.Property<int>("Delay") .HasColumnType("integer"); b.Property<int>("Duration") .HasColumnType("integer"); b.Property<int>("EffectId") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("Propability") .HasColumnType("smallint"); b.Property<short>("TimeoutBuff") .HasColumnType("smallint"); b.Property<byte>("TimeoutBuffChance") .HasColumnType("smallint"); b.HasKey("CardId"); b.ToTable("Card"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Property<long>("CharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("CharacterId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<int>("Act4Dead") .HasColumnType("integer"); b.Property<int>("Act4Kill") .HasColumnType("integer"); b.Property<int>("Act4Points") .HasColumnType("integer"); b.Property<int>("ArenaWinner") .HasColumnType("integer"); b.Property<string>("Biography") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("BuffBlocked") .HasColumnType("boolean"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Compliment") .HasColumnType("smallint"); b.Property<Guid?>("CurrentScriptId") .HasColumnType("uuid"); b.Property<short>("Dignity") .HasColumnType("smallint"); b.Property<int>("Elo") .HasColumnType("integer"); b.Property<bool>("EmoticonsBlocked") .HasColumnType("boolean"); b.Property<bool>("ExchangeBlocked") .HasColumnType("boolean"); b.Property<byte>("Faction") .HasColumnType("smallint"); b.Property<bool>("FamilyRequestBlocked") .HasColumnType("boolean"); b.Property<bool>("FriendRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("Gender") .HasColumnType("smallint"); b.Property<long>("Gold") .HasColumnType("bigint"); b.Property<bool>("GroupRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("HairColor") .HasColumnType("smallint"); b.Property<byte>("HairStyle") .HasColumnType("smallint"); b.Property<bool>("HeroChatBlocked") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<long>("HeroXp") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("HpBlocked") .HasColumnType("boolean"); b.Property<byte>("JobLevel") .HasColumnType("smallint"); b.Property<long>("JobLevelXp") .HasColumnType("bigint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<long>("LevelXp") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<int>("MasterPoints") .HasColumnType("integer"); b.Property<int>("MasterTicket") .HasColumnType("integer"); b.Property<byte>("MaxMateCount") .HasColumnType("smallint"); b.Property<bool>("MinilandInviteBlocked") .HasColumnType("boolean"); b.Property<bool>("MouseAimLock") .HasColumnType("boolean"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("Prefix") .HasMaxLength(25) .HasColumnType("character varying(25)"); b.Property<bool>("QuickGetUp") .HasColumnType("boolean"); b.Property<long>("RagePoint") .HasColumnType("bigint"); b.Property<long>("Reput") .HasColumnType("bigint"); b.Property<byte>("ServerId") .HasColumnType("smallint"); b.Property<bool>("ShouldRename") .HasColumnType("boolean"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<int>("SpAdditionPoint") .HasColumnType("integer"); b.Property<int>("SpPoint") .HasColumnType("integer"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("TalentLose") .HasColumnType("integer"); b.Property<int>("TalentSurrender") .HasColumnType("integer"); b.Property<int>("TalentWin") .HasColumnType("integer"); b.Property<bool>("WhisperBlocked") .HasColumnType("boolean"); b.HasKey("CharacterId"); b.HasIndex("AccountId"); b.HasIndex("CurrentScriptId"); b.HasIndex("MapId"); b.ToTable("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.HasKey("Id"); b.HasIndex("ActPartId"); b.HasIndex("CharacterId"); b.ToTable("CharacterActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("CompletedOn") .HasColumnType("timestamp with time zone"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("QuestId"); b.ToTable("CharacterQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.Property<Guid>("CharacterRelationId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<long>("RelatedCharacterId") .HasColumnType("bigint"); b.Property<short>("RelationType") .HasColumnType("smallint"); b.HasKey("CharacterRelationId"); b.HasIndex("CharacterId"); b.HasIndex("RelatedCharacterId"); b.ToTable("CharacterRelation"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("SkillVNum"); b.ToTable("CharacterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.Property<int>("ComboId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ComboId")); b.Property<short>("Animation") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("Hit") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("ComboId"); b.HasIndex("SkillVNum"); b.ToTable("Combo"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.Property<short>("DropId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DropId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("DropChance") .HasColumnType("integer"); b.Property<short?>("MapTypeId") .HasColumnType("smallint"); b.Property<short?>("MonsterVNum") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("DropId"); b.HasIndex("MapTypeId"); b.HasIndex("MonsterVNum"); b.HasIndex("VNum"); b.ToTable("Drop"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<int>("Value") .HasColumnType("integer"); b.Property<Guid>("WearableInstanceId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("WearableInstanceId"); b.ToTable("EquipmentOption"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Property<long>("FamilyId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyId")); b.Property<int>("FamilyExperience") .HasColumnType("integer"); b.Property<byte>("FamilyFaction") .HasColumnType("smallint"); b.Property<byte>("FamilyHeadGender") .HasColumnType("smallint"); b.Property<byte>("FamilyLevel") .HasColumnType("smallint"); b.Property<string>("FamilyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("ManagerAuthorityType") .HasColumnType("integer"); b.Property<bool>("ManagerCanGetHistory") .HasColumnType("boolean"); b.Property<bool>("ManagerCanInvite") .HasColumnType("boolean"); b.Property<bool>("ManagerCanNotice") .HasColumnType("boolean"); b.Property<bool>("ManagerCanShout") .HasColumnType("boolean"); b.Property<byte>("MaxSize") .HasColumnType("smallint"); b.Property<int>("MemberAuthorityType") .HasColumnType("integer"); b.Property<bool>("MemberCanGetHistory") .HasColumnType("boolean"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("WarehouseSize") .HasColumnType("smallint"); b.HasKey("FamilyId"); b.ToTable("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.Property<long>("FamilyCharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyCharacterId")); b.Property<byte>("Authority") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<string>("DailyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Experience") .HasColumnType("integer"); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Rank") .HasColumnType("smallint"); b.HasKey("FamilyCharacterId"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("FamilyCharacter"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.Property<long>("FamilyLogId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyLogId")); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<string>("FamilyLogData") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("FamilyLogType") .HasColumnType("smallint"); b.Property<Instant>("Timestamp") .HasColumnType("timestamp with time zone"); b.HasKey("FamilyLogId"); b.HasIndex("FamilyId"); b.ToTable("FamilyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NActDesc", b => { b.Property<int>("I18NActDescId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NActDescId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NActDescId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NActDesc"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NBCard", b => { b.Property<int>("I18NbCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NbCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NbCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NBCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NCard", b => { b.Property<int>("I18NCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NItem", b => { b.Property<int>("I18NItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NItemId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NItemId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NItem"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapIdData", b => { b.Property<int>("I18NMapIdDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapIdDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapIdDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapIdData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapPointData", b => { b.Property<int>("I18NMapPointDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapPointDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapPointDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapPointData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonster", b => { b.Property<int>("I18NNpcMonsterId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonsterTalk", b => { b.Property<int>("I18NNpcMonsterTalkId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterTalkId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterTalkId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonsterTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NQuest", b => { b.Property<int>("I18NQuestId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NQuestId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NQuestId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NSkill", b => { b.Property<int>("I18NSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NSkillId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NSkillId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("CharacterId", "Slot", "Type") .IsUnique(); b.ToTable("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Property<short>("VNum") .HasColumnType("smallint"); b.Property<byte>("BasicUpgrade") .HasColumnType("smallint"); b.Property<byte>("CellonLvl") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte>("DarkElement") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<int>("Effect") .HasColumnType("integer"); b.Property<int>("EffectValue") .HasColumnType("integer"); b.Property<int>("Element") .HasColumnType("integer"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<byte>("EquipmentSlot") .HasColumnType("smallint"); b.Property<byte>("FireElement") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<bool>("Flag1") .HasColumnType("boolean"); b.Property<bool>("Flag2") .HasColumnType("boolean"); b.Property<bool>("Flag3") .HasColumnType("boolean"); b.Property<bool>("Flag4") .HasColumnType("boolean"); b.Property<bool>("Flag6") .HasColumnType("boolean"); b.Property<bool>("Flag7") .HasColumnType("boolean"); b.Property<bool>("Flag8") .HasColumnType("boolean"); b.Property<bool>("Flag9") .HasColumnType("boolean"); b.Property<byte>("Height") .HasColumnType("smallint"); b.Property<short>("HitRate") .HasColumnType("smallint"); b.Property<short>("Hp") .HasColumnType("smallint"); b.Property<short>("HpRegeneration") .HasColumnType("smallint"); b.Property<bool>("IsColored") .HasColumnType("boolean"); b.Property<bool>("IsConsumable") .HasColumnType("boolean"); b.Property<bool>("IsDroppable") .HasColumnType("boolean"); b.Property<bool>("IsHeroic") .HasColumnType("boolean"); b.Property<bool>("IsMinilandActionable") .HasColumnType("boolean"); b.Property<bool>("IsSoldable") .HasColumnType("boolean"); b.Property<bool>("IsTradable") .HasColumnType("boolean"); b.Property<bool>("IsWarehouse") .HasColumnType("boolean"); b.Property<byte>("ItemSubType") .HasColumnType("smallint"); b.Property<byte>("ItemType") .HasColumnType("smallint"); b.Property<long>("ItemValidTime") .HasColumnType("bigint"); b.Property<byte>("LevelJobMinimum") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("LightElement") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<byte>("MaxCellon") .HasColumnType("smallint"); b.Property<byte>("MaxCellonLvl") .HasColumnType("smallint"); b.Property<short>("MaxElementRate") .HasColumnType("smallint"); b.Property<byte>("MaximumAmmo") .HasColumnType("smallint"); b.Property<int>("MinilandObjectPoint") .HasColumnType("integer"); b.Property<short>("MoreHp") .HasColumnType("smallint"); b.Property<short>("MoreMp") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("Mp") .HasColumnType("smallint"); b.Property<short>("MpRegeneration") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<short>("PvpDefence") .HasColumnType("smallint"); b.Property<byte>("PvpStrength") .HasColumnType("smallint"); b.Property<short>("ReduceOposantResistance") .HasColumnType("smallint"); b.Property<long>("ReputPrice") .HasColumnType("bigint"); b.Property<byte>("ReputationMinimum") .HasColumnType("smallint"); b.Property<bool>("RequireBinding") .HasColumnType("boolean"); b.Property<short>("SecondMorph") .HasColumnType("smallint"); b.Property<int>("SecondaryElement") .HasColumnType("integer"); b.Property<byte>("Sex") .HasColumnType("smallint"); b.Property<byte>("SpType") .HasColumnType("smallint"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("WaitDelay") .HasColumnType("smallint"); b.Property<byte>("WaterElement") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<byte>("Width") .HasColumnType("smallint"); b.HasKey("VNum"); b.ToTable("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<long?>("BoundCharacterId") .HasColumnType("bigint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("Design") .HasColumnType("smallint"); b.Property<string>("Discriminator") .IsRequired() .HasMaxLength(21) .HasColumnType("character varying(21)"); b.Property<int>("DurabilityPoint") .HasColumnType("integer"); b.Property<Instant?>("ItemDeleteTime") .HasColumnType("timestamp with time zone"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("BoundCharacterId"); b.HasIndex("ItemVNum"); b.ToTable("ItemInstance"); b.HasDiscriminator<string>("Discriminator").HasValue("ItemInstance"); b.UseTphMappingStrategy(); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.Property<long>("MailId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MailId")); b.Property<short?>("Armor") .HasColumnType("smallint"); b.Property<short?>("CostumeHat") .HasColumnType("smallint"); b.Property<short?>("CostumeSuit") .HasColumnType("smallint"); b.Property<Instant>("Date") .HasColumnType("timestamp with time zone"); b.Property<short?>("Fairy") .HasColumnType("smallint"); b.Property<short?>("Hat") .HasColumnType("smallint"); b.Property<bool>("IsOpened") .HasColumnType("boolean"); b.Property<bool>("IsSenderCopy") .HasColumnType("boolean"); b.Property<Guid?>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short?>("MainWeapon") .HasColumnType("smallint"); b.Property<short?>("Mask") .HasColumnType("smallint"); b.Property<string>("Message") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ReceiverId") .HasColumnType("bigint"); b.Property<short?>("SecondaryWeapon") .HasColumnType("smallint"); b.Property<byte?>("SenderCharacterClass") .HasColumnType("smallint"); b.Property<byte?>("SenderGender") .HasColumnType("smallint"); b.Property<byte?>("SenderHairColor") .HasColumnType("smallint"); b.Property<byte?>("SenderHairStyle") .HasColumnType("smallint"); b.Property<long?>("SenderId") .HasColumnType("bigint"); b.Property<short?>("SenderMorphId") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short?>("WeaponSkin") .HasColumnType("smallint"); b.Property<short?>("WingSkin") .HasColumnType("smallint"); b.HasKey("MailId"); b.HasIndex("ItemInstanceId"); b.HasIndex("ReceiverId"); b.HasIndex("SenderId"); b.ToTable("Mail"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<byte[]>("Data") .IsRequired() .HasColumnType("bytea"); b.Property<int>("Music") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("ShopAllowed") .HasColumnType("boolean"); b.HasKey("MapId"); b.ToTable("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.Property<int>("MapMonsterId") .HasColumnType("integer"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapMonsterId"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short?>("Dialog") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("EffectDelay") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<bool>("IsSitting") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapNpcId"); b.HasIndex("Dialog"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.Property<string>("MapTypeName") .IsRequired() .HasColumnType("text"); b.Property<short>("PotionDelay") .HasColumnType("smallint"); b.Property<long?>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<long?>("ReturnMapTypeId") .HasColumnType("bigint"); b.HasKey("MapTypeId"); b.HasIndex("RespawnMapTypeId"); b.HasIndex("ReturnMapTypeId"); b.ToTable("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.Property<short>("MapTypeMapId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("MapTypeMapId")); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.HasKey("MapTypeMapId"); b.HasIndex("MapTypeId"); b.HasIndex("MapId", "MapTypeId") .IsUnique(); b.ToTable("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.Property<long>("MateId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MateId")); b.Property<byte>("Attack") .HasColumnType("smallint"); b.Property<bool>("CanPickUp") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<byte>("Defence") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<long>("Experience") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("IsSummonable") .HasColumnType("boolean"); b.Property<bool>("IsTeamMember") .HasColumnType("boolean"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("Loyalty") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("MateType") .HasColumnType("smallint"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short>("Skin") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MateId"); b.HasIndex("CharacterId"); b.HasIndex("VNum"); b.ToTable("Mate"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.Property<Guid>("MinilandId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("DailyVisitCount") .HasColumnType("integer"); b.Property<string>("MinilandMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("MinilandPoint") .HasColumnType("bigint"); b.Property<long>("OwnerId") .HasColumnType("bigint"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("VisitCount") .HasColumnType("integer"); b.Property<short>("WelcomeMusicInfo") .HasColumnType("smallint"); b.HasKey("MinilandId"); b.HasIndex("OwnerId"); b.ToTable("Miniland"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.Property<Guid>("MinilandObjectId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<Guid?>("InventoryItemInstanceId") .HasColumnType("uuid"); b.Property<byte>("Level1BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level2BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level3BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level4BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level5BoxAmount") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.HasKey("MinilandObjectId"); b.HasIndex("InventoryItemInstanceId"); b.ToTable("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<byte>("AmountRequired") .HasColumnType("smallint"); b.Property<byte>("AttackClass") .HasColumnType("smallint"); b.Property<byte>("AttackUpgrade") .HasColumnType("smallint"); b.Property<byte>("BasicArea") .HasColumnType("smallint"); b.Property<short>("BasicCooldown") .HasColumnType("smallint"); b.Property<byte>("BasicRange") .HasColumnType("smallint"); b.Property<short>("BasicSkill") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalChance") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<byte>("DefenceUpgrade") .HasColumnType("smallint"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<int>("GiveDamagePercentage") .HasColumnType("integer"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<int>("HeroXp") .HasColumnType("integer"); b.Property<bool>("IsHostile") .HasColumnType("boolean"); b.Property<bool>("IsPercent") .HasColumnType("boolean"); b.Property<int>("JobXp") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<int>("MaxHp") .HasColumnType("integer"); b.Property<int>("MaxMp") .HasColumnType("integer"); b.Property<byte>("MonsterType") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("NoAggresiveIcon") .HasColumnType("boolean"); b.Property<byte>("NoticeRange") .HasColumnType("smallint"); b.Property<byte>("Race") .HasColumnType("smallint"); b.Property<byte>("RaceType") .HasColumnType("smallint"); b.Property<int>("RespawnTime") .HasColumnType("integer"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<int>("TakeDamages") .HasColumnType("integer"); b.Property<short>("VNumRequired") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<int>("Xp") .HasColumnType("integer"); b.HasKey("NpcMonsterVNum"); b.ToTable("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.Property<long>("NpcMonsterSkillId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("NpcMonsterSkillId")); b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<short>("Rate") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("NpcMonsterSkillId"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Property<short>("DialogId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DialogId")); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("DialogId"); b.ToTable("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.Property<int>("PenaltyLogId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PenaltyLogId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<string>("AdminName") .IsRequired() .HasColumnType("text"); b.Property<Instant>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<byte>("Penalty") .HasColumnType("smallint"); b.Property<string>("Reason") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("PenaltyLogId"); b.HasIndex("AccountId"); b.ToTable("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.Property<int>("PortalId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PortalId")); b.Property<short>("DestinationMapId") .HasColumnType("smallint"); b.Property<short>("DestinationX") .HasColumnType("smallint"); b.Property<short>("DestinationY") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<short>("SourceMapId") .HasColumnType("smallint"); b.Property<short>("SourceX") .HasColumnType("smallint"); b.Property<short>("SourceY") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("PortalId"); b.HasIndex("DestinationMapId"); b.HasIndex("SourceMapId"); b.ToTable("Portal"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<bool>("AutoFinish") .HasColumnType("boolean"); b.Property<string>("Desc") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int?>("EndDialogId") .HasColumnType("integer"); b.Property<bool>("IsDaily") .HasColumnType("boolean"); b.Property<bool>("IsSecondary") .HasColumnType("boolean"); b.Property<byte>("LevelMax") .HasColumnType("smallint"); b.Property<byte>("LevelMin") .HasColumnType("smallint"); b.Property<short?>("NextQuestId") .HasColumnType("smallint"); b.Property<short>("QuestType") .HasColumnType("smallint"); b.Property<short?>("RequiredQuestId") .HasColumnType("smallint"); b.Property<int?>("SpecialData") .HasColumnType("integer"); b.Property<int?>("StartDialogId") .HasColumnType("integer"); b.Property<short?>("TargetMap") .HasColumnType("smallint"); b.Property<short?>("TargetX") .HasColumnType("smallint"); b.Property<short?>("TargetY") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("QuestId"); b.ToTable("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Property<Guid>("QuestObjectiveId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<int?>("FourthData") .HasColumnType("integer"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<int?>("SecondData") .HasColumnType("integer"); b.Property<int?>("ThirdData") .HasColumnType("integer"); b.HasKey("QuestObjectiveId"); b.HasIndex("QuestId"); b.ToTable("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<short>("QuestRewardId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("QuestId"); b.HasIndex("QuestRewardId"); b.ToTable("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Property<short>("QuestRewardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("QuestRewardId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("Data") .HasColumnType("integer"); b.Property<byte>("Design") .HasColumnType("smallint"); b.Property<byte>("Rarity") .HasColumnType("smallint"); b.Property<byte>("RewardType") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("QuestRewardId"); b.ToTable("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("IconType") .HasColumnType("smallint"); b.Property<short>("IconVNum") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("QuickListIndex") .HasColumnType("smallint"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.ToTable("QuicklistEntry"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Property<short>("RecipeId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeId")); b.Property<byte>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.HasKey("RecipeId"); b.HasIndex("ItemVNum"); b.HasIndex("MapNpcId"); b.ToTable("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.Property<short>("RecipeItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("RecipeId") .HasColumnType("smallint"); b.HasKey("RecipeItemId"); b.HasIndex("ItemVNum"); b.HasIndex("RecipeId"); b.ToTable("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.Property<long>("RespawnId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("RespawnId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("X") .HasColumnType("smallint"); b.Property<short>("Y") .HasColumnType("smallint"); b.HasKey("RespawnId"); b.HasIndex("CharacterId"); b.HasIndex("MapId"); b.HasIndex("RespawnMapTypeId"); b.ToTable("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("DefaultX") .HasColumnType("smallint"); b.Property<short>("DefaultY") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("RespawnMapTypeId"); b.HasIndex("MapId"); b.ToTable("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.Property<short>("RollGeneratedItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RollGeneratedItemId")); b.Property<bool>("IsRareRandom") .HasColumnType("boolean"); b.Property<bool>("IsSuperReward") .HasColumnType("boolean"); b.Property<byte>("ItemGeneratedAmount") .HasColumnType("smallint"); b.Property<byte>("ItemGeneratedUpgrade") .HasColumnType("smallint"); b.Property<short>("ItemGeneratedVNum") .HasColumnType("smallint"); b.Property<short>("MaximumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("MinimumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("OriginalItemDesign") .HasColumnType("smallint"); b.Property<short>("OriginalItemVNum") .HasColumnType("smallint"); b.Property<short>("Probability") .HasColumnType("smallint"); b.HasKey("RollGeneratedItemId"); b.HasIndex("ItemGeneratedVNum"); b.HasIndex("OriginalItemVNum"); b.ToTable("RollGeneratedItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short?>("Argument1") .HasColumnType("smallint"); b.Property<short?>("Argument2") .HasColumnType("smallint"); b.Property<short?>("Argument3") .HasColumnType("smallint"); b.Property<byte>("ScriptId") .HasColumnType("smallint"); b.Property<short>("ScriptStepId") .HasColumnType("smallint"); b.Property<string>("StepType") .IsRequired() .HasColumnType("text"); b.Property<string>("StringArgument") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("ScriptId", "ScriptStepId") .IsUnique(); b.ToTable("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.Property<short>("ScriptedInstanceId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("ScriptedInstanceId")); b.Property<string>("Label") .HasColumnType("text"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("PositionX") .HasColumnType("smallint"); b.Property<short>("PositionY") .HasColumnType("smallint"); b.Property<string>("Script") .HasMaxLength(2147483647) .HasColumnType("text"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ScriptedInstanceId"); b.HasIndex("MapId"); b.ToTable("ScriptedInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Property<int>("ShopId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopId")); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<byte>("MenuType") .HasColumnType("smallint"); b.Property<byte>("ShopType") .HasColumnType("smallint"); b.HasKey("ShopId"); b.HasIndex("MapNpcId"); b.ToTable("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.Property<int>("ShopItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopItemId")); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("ShopItemId"); b.HasIndex("ItemVNum"); b.HasIndex("ShopId"); b.ToTable("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.Property<int>("ShopSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopSkillId")); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ShopSkillId"); b.HasIndex("ShopId"); b.HasIndex("SkillVNum"); b.ToTable("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<short>("AttackAnimation") .HasColumnType("smallint"); b.Property<short>("CastAnimation") .HasColumnType("smallint"); b.Property<short>("CastEffect") .HasColumnType("smallint"); b.Property<short>("CastId") .HasColumnType("smallint"); b.Property<short>("CastTime") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Cooldown") .HasColumnType("smallint"); b.Property<byte>("CpCost") .HasColumnType("smallint"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<byte>("HitType") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("MinimumAdventurerLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumArcherLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumMagicianLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumSwordmanLevel") .HasColumnType("smallint"); b.Property<short>("MpCost") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Price") .HasColumnType("integer"); b.Property<byte>("Range") .HasColumnType("smallint"); b.Property<byte>("SkillType") .HasColumnType("smallint"); b.Property<byte>("TargetRange") .HasColumnType("smallint"); b.Property<byte>("TargetType") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("UpgradeSkill") .HasColumnType("smallint"); b.Property<short>("UpgradeType") .HasColumnType("smallint"); b.HasKey("SkillVNum"); b.ToTable("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.Property<long>("StaticBonusId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBonusId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<byte>("StaticBonusType") .HasColumnType("smallint"); b.HasKey("StaticBonusId"); b.HasIndex("CharacterId"); b.ToTable("StaticBonus"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.Property<long>("StaticBuffId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBuffId")); b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<int>("RemainingTime") .HasColumnType("integer"); b.HasKey("StaticBuffId"); b.HasIndex("CardId"); b.HasIndex("CharacterId"); b.ToTable("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.Property<short>("TeleporterId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("TeleporterId")); b.Property<short>("Index") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("TeleporterId"); b.HasIndex("MapId"); b.HasIndex("MapNpcId"); b.ToTable("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<bool>("Active") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("TitleType") .HasColumnType("smallint"); b.Property<bool>("Visible") .HasColumnType("boolean"); b.HasKey("Id"); b.HasIndex("CharacterId", "TitleType") .IsUnique(); b.ToTable("Title"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long?>("CharacterId") .HasColumnType("bigint"); b.Property<long?>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<Guid>("WarehouseId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("WarehouseId"); b.ToTable("WarehouseItem"); }); modelBuilder.Entity("NosCore.Database.Entities.UsableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.ToTable("ItemInstance", t => { t.Property("Hp") .HasColumnName("UsableInstance_Hp"); t.Property("Mp") .HasColumnName("UsableInstance_Mp"); }); b.HasDiscriminator().HasValue("UsableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.WearableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<byte?>("Ammo") .HasColumnType("smallint"); b.Property<byte?>("Cellon") .HasColumnType("smallint"); b.Property<short?>("CloseDefence") .HasColumnType("smallint"); b.Property<short?>("Concentrate") .HasColumnType("smallint"); b.Property<short?>("CriticalDodge") .HasColumnType("smallint"); b.Property<byte?>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short?>("CriticalRate") .HasColumnType("smallint"); b.Property<short?>("DamageMaximum") .HasColumnType("smallint"); b.Property<short?>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte?>("DarkElement") .HasColumnType("smallint"); b.Property<short?>("DarkResistance") .HasColumnType("smallint"); b.Property<short?>("DefenceDodge") .HasColumnType("smallint"); b.Property<short?>("DistanceDefence") .HasColumnType("smallint"); b.Property<short?>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<short?>("ElementRate") .HasColumnType("smallint"); b.Property<byte?>("FireElement") .HasColumnType("smallint"); b.Property<short?>("FireResistance") .HasColumnType("smallint"); b.Property<short?>("HitRate") .HasColumnType("smallint"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<bool?>("IsEmpty") .HasColumnType("boolean"); b.Property<bool?>("IsFixed") .HasColumnType("boolean"); b.Property<byte?>("LightElement") .HasColumnType("smallint"); b.Property<short?>("LightResistance") .HasColumnType("smallint"); b.Property<short?>("MagicDefence") .HasColumnType("smallint"); b.Property<short?>("MaxElementRate") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.Property<byte?>("ShellRarity") .HasColumnType("smallint"); b.Property<byte?>("WaterElement") .HasColumnType("smallint"); b.Property<short?>("WaterResistance") .HasColumnType("smallint"); b.Property<long?>("Xp") .HasColumnType("bigint"); b.HasDiscriminator().HasValue("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.SpecialistInstance", b => { b.HasBaseType("NosCore.Database.Entities.WearableInstance"); b.Property<short>("SlDamage") .HasColumnType("smallint"); b.Property<short>("SlDefence") .HasColumnType("smallint"); b.Property<short>("SlElement") .HasColumnType("smallint"); b.Property<short>("SlHp") .HasColumnType("smallint"); b.Property<byte>("SpDamage") .HasColumnType("smallint"); b.Property<byte>("SpDark") .HasColumnType("smallint"); b.Property<byte>("SpDefence") .HasColumnType("smallint"); b.Property<byte>("SpElement") .HasColumnType("smallint"); b.Property<byte>("SpFire") .HasColumnType("smallint"); b.Property<byte>("SpHp") .HasColumnType("smallint"); b.Property<byte>("SpLevel") .HasColumnType("smallint"); b.Property<byte>("SpLight") .HasColumnType("smallint"); b.Property<byte>("SpStoneUpgrade") .HasColumnType("smallint"); b.Property<byte>("SpWater") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("SpecialistInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.BoxInstance", b => { b.HasBaseType("NosCore.Database.Entities.SpecialistInstance"); b.Property<short?>("HoldingVNum") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("BoxInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.HasOne("NosCore.Database.Entities.Act", "Act") .WithMany("ActParts") .HasForeignKey("ActId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("BCards") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("BCards") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("BCards") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("BCards") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Card"); b.Navigation("Item"); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("BazaarItem") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Seller") .WithMany("BazaarItem") .HasForeignKey("SellerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Seller"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("Character") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Script", "Script") .WithMany("Characters") .HasForeignKey("CurrentScriptId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Character") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); b.Navigation("Map"); b.Navigation("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.HasOne("NosCore.Database.Entities.ActPart", "ActPart") .WithMany("CharacterActParts") .HasForeignKey("ActPartId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterActParts") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ActPart"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterQuest") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("CharacterQuest") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.HasOne("NosCore.Database.Entities.Character", "Character1") .WithMany("CharacterRelation1") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character2") .WithMany("CharacterRelation2") .HasForeignKey("RelatedCharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character1"); b.Navigation("Character2"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterSkill") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("CharacterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("Combo") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("Drops") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Drop") .HasForeignKey("MonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Drop") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapType"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.HasOne("NosCore.Database.Entities.WearableInstance", "WearableInstance") .WithMany() .HasForeignKey("WearableInstanceId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("FamilyCharacter") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyCharacters") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyLogs") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Inventory") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("InventoryItemInstance") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("ItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "BoundCharacter") .WithMany() .HasForeignKey("BoundCharacterId"); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ItemInstances") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("BoundCharacter"); b.Navigation("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("Mail") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Character", "Receiver") .WithMany("Mail1") .HasForeignKey("ReceiverId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Sender") .WithMany("Mail") .HasForeignKey("SenderId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("ItemInstance"); b.Navigation("Receiver"); b.Navigation("Sender"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapMonster") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapMonster") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.HasOne("NosCore.Database.Entities.NpcTalk", "NpcTalk") .WithMany("MapNpc") .HasForeignKey("Dialog") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapNpc") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapNpc") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); b.Navigation("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("MapTypes") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.RespawnMapType", "ReturnMapType") .WithMany("MapTypes1") .HasForeignKey("ReturnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("RespawnMapType"); b.Navigation("ReturnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapTypeMap") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("MapTypeMap") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Mate") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Mate") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.HasOne("NosCore.Database.Entities.Character", "Owner") .WithMany("Miniland") .HasForeignKey("OwnerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Owner"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.HasOne("NosCore.Database.Entities.InventoryItemInstance", "InventoryItemInstance") .WithMany("MinilandObject") .HasForeignKey("InventoryItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("NpcMonsterSkill") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("NpcMonsterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("PenaltyLog") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Portal") .HasForeignKey("DestinationMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map1") .WithMany("Portal1") .HasForeignKey("SourceMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("Map1"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestObjective") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestQuestReward") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestReward", "QuestReward") .WithMany("QuestQuestReward") .HasForeignKey("QuestRewardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); b.Navigation("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("QuicklistEntry") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Recipe") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Recipe") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("RecipeItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Recipe", "Recipe") .WithMany("RecipeItem") .HasForeignKey("RecipeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Respawn") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Respawn") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("Respawn") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Map"); b.Navigation("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("RespawnMapType") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.HasOne("NosCore.Database.Entities.Item", "ItemGenerated") .WithMany("RollGeneratedItem2") .HasForeignKey("ItemGeneratedVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Item", "OriginalItem") .WithMany("RollGeneratedItem") .HasForeignKey("OriginalItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemGenerated"); b.Navigation("OriginalItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("ScriptedInstance") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Shop") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ShopItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopItem") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopSkill") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("ShopSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Shop"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBonus") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("StaticBuff") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBuff") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Card"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Teleporter") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Teleporter") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Title") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Warehouses") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("Warehouses") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("WarehouseItems") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Warehouse", "Warehouse") .WithMany("WarehouseItems") .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Navigation("Character"); b.Navigation("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Navigation("ActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Navigation("CharacterActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Navigation("BCards"); b.Navigation("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Navigation("BazaarItem"); b.Navigation("CharacterActParts"); b.Navigation("CharacterQuest"); b.Navigation("CharacterRelation1"); b.Navigation("CharacterRelation2"); b.Navigation("CharacterSkill"); b.Navigation("FamilyCharacter"); b.Navigation("Inventory"); b.Navigation("Mail"); b.Navigation("Mail1"); b.Navigation("Mate"); b.Navigation("Miniland"); b.Navigation("QuicklistEntry"); b.Navigation("Respawn"); b.Navigation("StaticBonus"); b.Navigation("StaticBuff"); b.Navigation("Title"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Navigation("FamilyCharacters"); b.Navigation("FamilyLogs"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Navigation("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("ItemInstances"); b.Navigation("Recipe"); b.Navigation("RecipeItem"); b.Navigation("RollGeneratedItem"); b.Navigation("RollGeneratedItem2"); b.Navigation("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Navigation("BazaarItem"); b.Navigation("InventoryItemInstance"); b.Navigation("Mail"); b.Navigation("WarehouseItems"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Navigation("Character"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("MapTypeMap"); b.Navigation("Portal"); b.Navigation("Portal1"); b.Navigation("Respawn"); b.Navigation("RespawnMapType"); b.Navigation("ScriptedInstance"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Navigation("Recipe"); b.Navigation("Shop"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Navigation("Drops"); b.Navigation("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("Mate"); b.Navigation("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Navigation("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Navigation("MapTypes"); b.Navigation("MapTypes1"); b.Navigation("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Navigation("Characters"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Navigation("ShopItem"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Navigation("BCards"); b.Navigation("CharacterSkill"); b.Navigation("Combo"); b.Navigation("NpcMonsterSkill"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Navigation("WarehouseItems"); }); #pragma warning restore 612, 618 } } } ================================================ FILE: src/NosCore.Database/Migrations/20231125092440_BumpToEf8.cs ================================================ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace NosCore.Database.Migrations { /// <inheritdoc /> public partial class BumpToEf8 : Migration { /// <inheritdoc /> protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.RenameColumn( name: "WearableInstance_Mp", table: "ItemInstance", newName: "UsableInstance_Mp"); migrationBuilder.RenameColumn( name: "WearableInstance_Hp", table: "ItemInstance", newName: "UsableInstance_Hp"); migrationBuilder.AlterColumn<string>( name: "Discriminator", table: "ItemInstance", type: "character varying(21)", maxLength: 21, nullable: false, oldClrType: typeof(string), oldType: "text"); } /// <inheritdoc /> protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.RenameColumn( name: "UsableInstance_Mp", table: "ItemInstance", newName: "WearableInstance_Mp"); migrationBuilder.RenameColumn( name: "UsableInstance_Hp", table: "ItemInstance", newName: "WearableInstance_Hp"); migrationBuilder.AlterColumn<string>( name: "Discriminator", table: "ItemInstance", type: "text", nullable: false, oldClrType: typeof(string), oldType: "character varying(21)", oldMaxLength: 21); } } } ================================================ FILE: src/NosCore.Database/Migrations/20260420121955_AddCharacterQuestObjective.Designer.cs ================================================ // <auto-generated /> using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using NodaTime; using NosCore.Database; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace NosCore.Database.Migrations { [DbContext(typeof(NosCoreContext))] [Migration("20260420121955_AddCharacterQuestObjective")] partial class AddCharacterQuestObjective { /// <inheritdoc /> protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "10.0.6") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "audit_log_type", new[] { "account_creation", "character_creation", "email_update" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "authority_type", new[] { "user", "moderator", "game_master", "administrator", "root", "closed", "banned", "unconfirmed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_class_type", new[] { "adventurer", "swordsman", "archer", "mage", "martial_artist" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_relation_type", new[] { "friend", "hidden_spouse", "spouse", "blocked" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_state", new[] { "active", "inactive" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_type", new[] { "neutral", "fire", "water", "light", "dark" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "equipment_type", new[] { "main_weapon", "armor", "hat", "gloves", "boots", "secondary_weapon", "necklace", "ring", "bracelet", "mask", "fairy", "amulet", "sp", "costume_suit", "costume_hat", "weapon_skin", "wing_skin" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority", new[] { "head", "assistant", "manager", "member" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority_type", new[] { "none", "put", "all" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_log_type", new[] { "daily_message", "raid_won", "rainbow_battle", "family_xp", "family_level_up", "level_up", "item_upgraded", "right_changed", "authority_changed", "family_managed", "user_managed", "ware_house_added", "ware_house_removed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_member_rank", new[] { "nothing", "old_uncle", "old_aunt", "father", "mother", "uncle", "aunt", "brother", "sister", "spouse", "brother2", "sister2", "old_son", "old_daugter", "middle_son", "middle_daughter", "young_son", "young_daugter", "old_little_son", "old_little_daughter", "little_son", "little_daughter", "middle_little_son", "middle_little_daugter" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "gender_type", new[] { "male", "female" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_color_type", new[] { "dark_purple", "yellow", "blue", "purple", "orange", "brown", "green", "dark_grey", "light_blue", "pink_red", "light_yellow", "light_pink", "light_green", "light_grey", "sky_blue", "black", "dark_orange", "dark_orange_variant2", "dark_orange_variant3", "dark_orange_variant4", "dark_orange_variant5", "dark_orange_variant6", "light_orange", "light_light_orange", "light_light_light_orange", "light_light_light_light_orange", "super_light_orange", "dark_yellow", "light_light_yellow", "kaki_yellow", "super_light_yellow", "super_light_yellow2", "super_light_yellow3", "little_dark_yellow", "yellow_variant", "yellow_variant1", "yellow_variant2", "yellow_variant3", "yellow_variant4", "yellow_variant5", "yellow_variant6", "yellow_variant7", "yellow_variant8", "yellow_variant9", "green_variant", "green_variant1", "dark_green_variant", "green_more_dark_variant", "green_variant2", "green_variant3", "green_variant4", "green_variant5", "green_variant6", "green_variant7", "green_variant8", "green_variant9", "green_variant10", "green_variant11", "green_variant12", "green_variant13", "green_variant14", "green_variant15", "green_variant16", "green_variant17", "green_variant18", "green_variant19", "green_variant20", "light_blue_variant1", "light_blue_variant2", "light_blue_variant3", "light_blue_variant4", "light_blue_variant5", "light_blue_variant6", "light_blue_variant7", "light_blue_variant8", "light_blue_variant9", "light_blue_variant10", "light_blue_variant11", "light_blue_variant12", "light_blue_variant13", "dark_black", "light_blue_variant14", "light_blue_variant15", "light_blue_variant16", "light_blue_variant17", "blue_variant", "blue_variant_dark", "blue_variant_dark_dark", "blue_variant_dark_dark2", "flash_blue", "flash_blue_dark", "flash_blue_dark2", "flash_blue_dark3", "flash_blue_dark4", "flash_blue_dark5", "flash_blue_dark6", "flash_blue_dark7", "flash_blue_dark8", "flash_blue_dark9", "white", "flash_blue_dark10", "flash_blue1", "flash_blue2", "flash_blue3", "flash_blue4", "flash_blue5", "flash_purple", "flash_light_purple", "flash_light_purple2", "flash_light_purple3", "flash_light_purple4", "flash_light_purple5", "light_purple", "purple_variant1", "purple_variant2", "purple_variant3", "purple_variant4", "purple_variant5", "purple_variant6", "purple_variant7", "purple_variant8", "purple_variant9", "purple_variant10", "purple_variant11", "purple_variant12", "purple_variant13", "purple_variant14", "purple_variant15" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_style_type", new[] { "hair_style_a", "hair_style_b", "hair_style_c", "hair_style_d", "no_hair" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_effect_type", new[] { "no_effect", "teleport", "apply_hair_die", "speaker", "marriage_proposal", "undefined", "sp_charger", "dropped_sp_recharger", "premium_sp_recharger", "crafted_sp_recharger", "specialist_medal", "apply_skin_partner", "change_gender", "point_initialisation", "sealed_tarot_card", "tarot_card", "red_amulet", "blue_amulet", "reinforcement_amulet", "heroic", "random_heroic", "attack_amulet", "defense_amulet", "speed_booster", "box_effect", "vehicle", "gold_nos_merchant_upgrade", "silver_nos_merchant_upgrade", "inventory_upgrade", "pet_space_upgrade", "pet_basket_upgrade", "pet_backpack_upgrade", "inventory_ticket_upgrade", "buff_potions", "marriage_separation" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_type", new[] { "weapon", "armor", "fashion", "jewelery", "specialist", "box", "shell", "main", "upgrade", "production", "map", "special", "potion", "event", "title", "quest1", "sell", "food", "snack", "magical", "part", "teacher", "ammo", "quest2", "house", "garden", "minigame", "terrace", "miniland_theme" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "mate_type", new[] { "partner", "pet" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "miniland_state", new[] { "open", "private", "lock" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "monster_type", new[] { "unknown", "partner", "npc", "well", "portal", "boss", "elite", "peapod", "special", "gem_space_time" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "noscore_pocket_type", new[] { "equipment", "main", "etc", "miniland", "specialist", "costume", "wear" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "penalty_type", new[] { "muted", "banned", "block_exp", "block_f_exp", "block_rep", "warning" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "portal_type", new[] { "ts_normal", "closed", "open", "miniland", "ts_end", "ts_end_closed", "exit", "exit_closed", "raid", "effect", "blue_raid", "dark_raid", "time_space", "shop_teleport", "map_portal" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "quest_type", new[] { "hunt", "special_collect", "collect_in_raid", "brings", "capture_without_getting_the_monster", "capture", "times_space", "product", "number_of_kill", "target_reput", "ts_point", "dialog1", "collect_in_ts", "required", "wear", "needed", "collect", "transmit_gold", "go_to", "collect_map_entity", "use", "dialog2", "un_know", "inspect", "win_raid", "flower_quest" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "region_type", new[] { "en", "de", "fr", "it", "pl", "es", "ru", "cs", "tr" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "scripted_instance_type", new[] { "time_space", "raid", "raid_act4" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "static_bonus_type", new[] { "bazaar_medal_gold", "bazaar_medal_silver", "back_pack", "pet_basket", "pet_back_pack", "inventory_ticket_upgrade" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "teleporter_type", new[] { "teleporter", "teleporter_on_map" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "warehouse_type", new[] { "warehouse", "family_ware_house", "pet_warehouse" }); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Property<long>("AccountId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("AccountId")); b.Property<short>("Authority") .HasColumnType("smallint"); b.Property<long>("BankMoney") .HasColumnType("bigint"); b.Property<string>("Email") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ItemShopMoney") .HasColumnType("bigint"); b.Property<int>("Language") .HasColumnType("integer"); b.Property<string>("MfaSecret") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthPassword") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthSalt") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Password") .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("RegistrationIp") .HasMaxLength(45) .HasColumnType("character varying(45)"); b.Property<string>("VerificationToken") .HasMaxLength(32) .HasColumnType("character varying(32)"); b.HasKey("AccountId"); b.HasIndex("Name") .IsUnique(); b.ToTable("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("Scene") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("ActId"); b.ToTable("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("ActPartNumber") .HasColumnType("smallint"); b.Property<byte>("MaxTs") .HasColumnType("smallint"); b.HasKey("ActPartId"); b.HasIndex("ActId"); b.ToTable("ActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.AuditLog", b => { b.Property<Guid>("AuditId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("AuditLogType") .HasColumnType("integer"); b.Property<string>("TargetId") .IsRequired() .HasMaxLength(80) .HasColumnType("character varying(80)"); b.Property<string>("TargetType") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)"); b.Property<Instant>("Time") .HasColumnType("timestamp with time zone"); b.Property<string>("Value") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("AuditId"); b.ToTable("AuditLog"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.Property<short>("BCardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("BCardId")); b.Property<short?>("CardId") .HasColumnType("smallint"); b.Property<byte>("CastType") .HasColumnType("smallint"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<bool>("IsLevelDivided") .HasColumnType("boolean"); b.Property<bool>("IsLevelScaled") .HasColumnType("boolean"); b.Property<short?>("ItemVNum") .HasColumnType("smallint"); b.Property<short?>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<int>("SecondData") .HasColumnType("integer"); b.Property<short?>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("SubType") .HasColumnType("smallint"); b.Property<int>("ThirdData") .HasColumnType("integer"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("BCardId"); b.HasIndex("CardId"); b.HasIndex("ItemVNum"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("BCard"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.Property<long>("BazaarItemId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("BazaarItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<bool>("IsPackage") .HasColumnType("boolean"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<bool>("MedalUsed") .HasColumnType("boolean"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<long>("SellerId") .HasColumnType("bigint"); b.HasKey("BazaarItemId"); b.HasIndex("ItemInstanceId"); b.HasIndex("SellerId"); b.ToTable("BazaarItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<byte>("BuffType") .HasColumnType("smallint"); b.Property<int>("Delay") .HasColumnType("integer"); b.Property<int>("Duration") .HasColumnType("integer"); b.Property<int>("EffectId") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("Propability") .HasColumnType("smallint"); b.Property<short>("TimeoutBuff") .HasColumnType("smallint"); b.Property<byte>("TimeoutBuffChance") .HasColumnType("smallint"); b.HasKey("CardId"); b.ToTable("Card"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Property<long>("CharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("CharacterId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<int>("Act4Dead") .HasColumnType("integer"); b.Property<int>("Act4Kill") .HasColumnType("integer"); b.Property<int>("Act4Points") .HasColumnType("integer"); b.Property<int>("ArenaWinner") .HasColumnType("integer"); b.Property<string>("Biography") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("BuffBlocked") .HasColumnType("boolean"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Compliment") .HasColumnType("smallint"); b.Property<Guid?>("CurrentScriptId") .HasColumnType("uuid"); b.Property<short>("Dignity") .HasColumnType("smallint"); b.Property<int>("Elo") .HasColumnType("integer"); b.Property<bool>("EmoticonsBlocked") .HasColumnType("boolean"); b.Property<bool>("ExchangeBlocked") .HasColumnType("boolean"); b.Property<byte>("Faction") .HasColumnType("smallint"); b.Property<bool>("FamilyRequestBlocked") .HasColumnType("boolean"); b.Property<bool>("FriendRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("Gender") .HasColumnType("smallint"); b.Property<long>("Gold") .HasColumnType("bigint"); b.Property<bool>("GroupRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("HairColor") .HasColumnType("smallint"); b.Property<byte>("HairStyle") .HasColumnType("smallint"); b.Property<bool>("HeroChatBlocked") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<long>("HeroXp") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("HpBlocked") .HasColumnType("boolean"); b.Property<byte>("JobLevel") .HasColumnType("smallint"); b.Property<long>("JobLevelXp") .HasColumnType("bigint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<long>("LevelXp") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<int>("MasterPoints") .HasColumnType("integer"); b.Property<int>("MasterTicket") .HasColumnType("integer"); b.Property<byte>("MaxMateCount") .HasColumnType("smallint"); b.Property<bool>("MinilandInviteBlocked") .HasColumnType("boolean"); b.Property<bool>("MouseAimLock") .HasColumnType("boolean"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("Prefix") .HasMaxLength(25) .HasColumnType("character varying(25)"); b.Property<bool>("QuickGetUp") .HasColumnType("boolean"); b.Property<long>("RagePoint") .HasColumnType("bigint"); b.Property<long>("Reput") .HasColumnType("bigint"); b.Property<byte>("ServerId") .HasColumnType("smallint"); b.Property<bool>("ShouldRename") .HasColumnType("boolean"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<int>("SpAdditionPoint") .HasColumnType("integer"); b.Property<int>("SpPoint") .HasColumnType("integer"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("TalentLose") .HasColumnType("integer"); b.Property<int>("TalentSurrender") .HasColumnType("integer"); b.Property<int>("TalentWin") .HasColumnType("integer"); b.Property<bool>("WhisperBlocked") .HasColumnType("boolean"); b.HasKey("CharacterId"); b.HasIndex("AccountId"); b.HasIndex("CurrentScriptId"); b.HasIndex("MapId"); b.ToTable("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.HasKey("Id"); b.HasIndex("ActPartId"); b.HasIndex("CharacterId"); b.ToTable("CharacterActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("CompletedOn") .HasColumnType("timestamp with time zone"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("QuestId"); b.ToTable("CharacterQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("CharacterQuestId") .HasColumnType("uuid"); b.Property<int>("Count") .HasColumnType("integer"); b.Property<Guid>("QuestObjectiveId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("QuestObjectiveId"); b.HasIndex("CharacterQuestId", "QuestObjectiveId") .IsUnique(); b.ToTable("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.Property<Guid>("CharacterRelationId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<long>("RelatedCharacterId") .HasColumnType("bigint"); b.Property<short>("RelationType") .HasColumnType("smallint"); b.HasKey("CharacterRelationId"); b.HasIndex("CharacterId"); b.HasIndex("RelatedCharacterId"); b.ToTable("CharacterRelation"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("SkillVNum"); b.ToTable("CharacterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.Property<int>("ComboId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ComboId")); b.Property<short>("Animation") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("Hit") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("ComboId"); b.HasIndex("SkillVNum"); b.ToTable("Combo"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.Property<short>("DropId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DropId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("DropChance") .HasColumnType("integer"); b.Property<short?>("MapTypeId") .HasColumnType("smallint"); b.Property<short?>("MonsterVNum") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("DropId"); b.HasIndex("MapTypeId"); b.HasIndex("MonsterVNum"); b.HasIndex("VNum"); b.ToTable("Drop"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<int>("Value") .HasColumnType("integer"); b.Property<Guid>("WearableInstanceId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("WearableInstanceId"); b.ToTable("EquipmentOption"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Property<long>("FamilyId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyId")); b.Property<int>("FamilyExperience") .HasColumnType("integer"); b.Property<byte>("FamilyFaction") .HasColumnType("smallint"); b.Property<byte>("FamilyHeadGender") .HasColumnType("smallint"); b.Property<byte>("FamilyLevel") .HasColumnType("smallint"); b.Property<string>("FamilyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("ManagerAuthorityType") .HasColumnType("integer"); b.Property<bool>("ManagerCanGetHistory") .HasColumnType("boolean"); b.Property<bool>("ManagerCanInvite") .HasColumnType("boolean"); b.Property<bool>("ManagerCanNotice") .HasColumnType("boolean"); b.Property<bool>("ManagerCanShout") .HasColumnType("boolean"); b.Property<byte>("MaxSize") .HasColumnType("smallint"); b.Property<int>("MemberAuthorityType") .HasColumnType("integer"); b.Property<bool>("MemberCanGetHistory") .HasColumnType("boolean"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("WarehouseSize") .HasColumnType("smallint"); b.HasKey("FamilyId"); b.ToTable("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.Property<long>("FamilyCharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyCharacterId")); b.Property<byte>("Authority") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<string>("DailyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Experience") .HasColumnType("integer"); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Rank") .HasColumnType("smallint"); b.HasKey("FamilyCharacterId"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("FamilyCharacter"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.Property<long>("FamilyLogId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyLogId")); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<string>("FamilyLogData") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("FamilyLogType") .HasColumnType("smallint"); b.Property<Instant>("Timestamp") .HasColumnType("timestamp with time zone"); b.HasKey("FamilyLogId"); b.HasIndex("FamilyId"); b.ToTable("FamilyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NActDesc", b => { b.Property<int>("I18NActDescId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NActDescId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NActDescId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NActDesc"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NBCard", b => { b.Property<int>("I18NbCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NbCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NbCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NBCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NCard", b => { b.Property<int>("I18NCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NItem", b => { b.Property<int>("I18NItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NItemId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NItemId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NItem"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapIdData", b => { b.Property<int>("I18NMapIdDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapIdDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapIdDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapIdData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapPointData", b => { b.Property<int>("I18NMapPointDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapPointDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapPointDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapPointData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonster", b => { b.Property<int>("I18NNpcMonsterId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonsterTalk", b => { b.Property<int>("I18NNpcMonsterTalkId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterTalkId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterTalkId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonsterTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NQuest", b => { b.Property<int>("I18NQuestId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NQuestId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NQuestId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NSkill", b => { b.Property<int>("I18NSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NSkillId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NSkillId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("CharacterId", "Slot", "Type") .IsUnique(); b.ToTable("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Property<short>("VNum") .HasColumnType("smallint"); b.Property<byte>("BasicUpgrade") .HasColumnType("smallint"); b.Property<byte>("CellonLvl") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte>("DarkElement") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<int>("Effect") .HasColumnType("integer"); b.Property<int>("EffectValue") .HasColumnType("integer"); b.Property<int>("Element") .HasColumnType("integer"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<byte>("EquipmentSlot") .HasColumnType("smallint"); b.Property<byte>("FireElement") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<bool>("Flag1") .HasColumnType("boolean"); b.Property<bool>("Flag2") .HasColumnType("boolean"); b.Property<bool>("Flag3") .HasColumnType("boolean"); b.Property<bool>("Flag4") .HasColumnType("boolean"); b.Property<bool>("Flag6") .HasColumnType("boolean"); b.Property<bool>("Flag7") .HasColumnType("boolean"); b.Property<bool>("Flag8") .HasColumnType("boolean"); b.Property<bool>("Flag9") .HasColumnType("boolean"); b.Property<byte>("Height") .HasColumnType("smallint"); b.Property<short>("HitRate") .HasColumnType("smallint"); b.Property<short>("Hp") .HasColumnType("smallint"); b.Property<short>("HpRegeneration") .HasColumnType("smallint"); b.Property<bool>("IsColored") .HasColumnType("boolean"); b.Property<bool>("IsConsumable") .HasColumnType("boolean"); b.Property<bool>("IsDroppable") .HasColumnType("boolean"); b.Property<bool>("IsHeroic") .HasColumnType("boolean"); b.Property<bool>("IsMinilandActionable") .HasColumnType("boolean"); b.Property<bool>("IsSoldable") .HasColumnType("boolean"); b.Property<bool>("IsTradable") .HasColumnType("boolean"); b.Property<bool>("IsWarehouse") .HasColumnType("boolean"); b.Property<byte>("ItemSubType") .HasColumnType("smallint"); b.Property<byte>("ItemType") .HasColumnType("smallint"); b.Property<long>("ItemValidTime") .HasColumnType("bigint"); b.Property<byte>("LevelJobMinimum") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("LightElement") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<byte>("MaxCellon") .HasColumnType("smallint"); b.Property<byte>("MaxCellonLvl") .HasColumnType("smallint"); b.Property<short>("MaxElementRate") .HasColumnType("smallint"); b.Property<byte>("MaximumAmmo") .HasColumnType("smallint"); b.Property<int>("MinilandObjectPoint") .HasColumnType("integer"); b.Property<short>("MoreHp") .HasColumnType("smallint"); b.Property<short>("MoreMp") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("Mp") .HasColumnType("smallint"); b.Property<short>("MpRegeneration") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<short>("PvpDefence") .HasColumnType("smallint"); b.Property<byte>("PvpStrength") .HasColumnType("smallint"); b.Property<short>("ReduceOposantResistance") .HasColumnType("smallint"); b.Property<long>("ReputPrice") .HasColumnType("bigint"); b.Property<byte>("ReputationMinimum") .HasColumnType("smallint"); b.Property<bool>("RequireBinding") .HasColumnType("boolean"); b.Property<short>("SecondMorph") .HasColumnType("smallint"); b.Property<int>("SecondaryElement") .HasColumnType("integer"); b.Property<byte>("Sex") .HasColumnType("smallint"); b.Property<byte>("SpType") .HasColumnType("smallint"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("WaitDelay") .HasColumnType("smallint"); b.Property<byte>("WaterElement") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<byte>("Width") .HasColumnType("smallint"); b.HasKey("VNum"); b.ToTable("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<long?>("BoundCharacterId") .HasColumnType("bigint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("Design") .HasColumnType("smallint"); b.Property<string>("Discriminator") .IsRequired() .HasMaxLength(21) .HasColumnType("character varying(21)"); b.Property<int>("DurabilityPoint") .HasColumnType("integer"); b.Property<Instant?>("ItemDeleteTime") .HasColumnType("timestamp with time zone"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("BoundCharacterId"); b.HasIndex("ItemVNum"); b.ToTable("ItemInstance"); b.HasDiscriminator<string>("Discriminator").HasValue("ItemInstance"); b.UseTphMappingStrategy(); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.Property<long>("MailId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MailId")); b.Property<short?>("Armor") .HasColumnType("smallint"); b.Property<short?>("CostumeHat") .HasColumnType("smallint"); b.Property<short?>("CostumeSuit") .HasColumnType("smallint"); b.Property<Instant>("Date") .HasColumnType("timestamp with time zone"); b.Property<short?>("Fairy") .HasColumnType("smallint"); b.Property<short?>("Hat") .HasColumnType("smallint"); b.Property<bool>("IsOpened") .HasColumnType("boolean"); b.Property<bool>("IsSenderCopy") .HasColumnType("boolean"); b.Property<Guid?>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short?>("MainWeapon") .HasColumnType("smallint"); b.Property<short?>("Mask") .HasColumnType("smallint"); b.Property<string>("Message") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ReceiverId") .HasColumnType("bigint"); b.Property<short?>("SecondaryWeapon") .HasColumnType("smallint"); b.Property<byte?>("SenderCharacterClass") .HasColumnType("smallint"); b.Property<byte?>("SenderGender") .HasColumnType("smallint"); b.Property<byte?>("SenderHairColor") .HasColumnType("smallint"); b.Property<byte?>("SenderHairStyle") .HasColumnType("smallint"); b.Property<long?>("SenderId") .HasColumnType("bigint"); b.Property<short?>("SenderMorphId") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short?>("WeaponSkin") .HasColumnType("smallint"); b.Property<short?>("WingSkin") .HasColumnType("smallint"); b.HasKey("MailId"); b.HasIndex("ItemInstanceId"); b.HasIndex("ReceiverId"); b.HasIndex("SenderId"); b.ToTable("Mail"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<byte[]>("Data") .IsRequired() .HasColumnType("bytea"); b.Property<int>("Music") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("ShopAllowed") .HasColumnType("boolean"); b.HasKey("MapId"); b.ToTable("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.Property<int>("MapMonsterId") .HasColumnType("integer"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapMonsterId"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short?>("Dialog") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("EffectDelay") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<bool>("IsSitting") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapNpcId"); b.HasIndex("Dialog"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.Property<string>("MapTypeName") .IsRequired() .HasColumnType("text"); b.Property<short>("PotionDelay") .HasColumnType("smallint"); b.Property<long?>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<long?>("ReturnMapTypeId") .HasColumnType("bigint"); b.HasKey("MapTypeId"); b.HasIndex("RespawnMapTypeId"); b.HasIndex("ReturnMapTypeId"); b.ToTable("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.Property<short>("MapTypeMapId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("MapTypeMapId")); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.HasKey("MapTypeMapId"); b.HasIndex("MapTypeId"); b.HasIndex("MapId", "MapTypeId") .IsUnique(); b.ToTable("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.Property<long>("MateId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MateId")); b.Property<byte>("Attack") .HasColumnType("smallint"); b.Property<bool>("CanPickUp") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<byte>("Defence") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<long>("Experience") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("IsSummonable") .HasColumnType("boolean"); b.Property<bool>("IsTeamMember") .HasColumnType("boolean"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("Loyalty") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("MateType") .HasColumnType("smallint"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short>("Skin") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MateId"); b.HasIndex("CharacterId"); b.HasIndex("VNum"); b.ToTable("Mate"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.Property<Guid>("MinilandId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("DailyVisitCount") .HasColumnType("integer"); b.Property<string>("MinilandMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("MinilandPoint") .HasColumnType("bigint"); b.Property<long>("OwnerId") .HasColumnType("bigint"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("VisitCount") .HasColumnType("integer"); b.Property<short>("WelcomeMusicInfo") .HasColumnType("smallint"); b.HasKey("MinilandId"); b.HasIndex("OwnerId"); b.ToTable("Miniland"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.Property<Guid>("MinilandObjectId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<Guid?>("InventoryItemInstanceId") .HasColumnType("uuid"); b.Property<byte>("Level1BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level2BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level3BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level4BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level5BoxAmount") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.HasKey("MinilandObjectId"); b.HasIndex("InventoryItemInstanceId"); b.ToTable("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<byte>("AmountRequired") .HasColumnType("smallint"); b.Property<byte>("AttackClass") .HasColumnType("smallint"); b.Property<byte>("AttackUpgrade") .HasColumnType("smallint"); b.Property<byte>("BasicArea") .HasColumnType("smallint"); b.Property<short>("BasicCooldown") .HasColumnType("smallint"); b.Property<byte>("BasicRange") .HasColumnType("smallint"); b.Property<short>("BasicSkill") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalChance") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<byte>("DefenceUpgrade") .HasColumnType("smallint"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<int>("GiveDamagePercentage") .HasColumnType("integer"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<int>("HeroXp") .HasColumnType("integer"); b.Property<bool>("IsHostile") .HasColumnType("boolean"); b.Property<bool>("IsPercent") .HasColumnType("boolean"); b.Property<int>("JobXp") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<int>("MaxHp") .HasColumnType("integer"); b.Property<int>("MaxMp") .HasColumnType("integer"); b.Property<byte>("MonsterType") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("NoAggresiveIcon") .HasColumnType("boolean"); b.Property<byte>("NoticeRange") .HasColumnType("smallint"); b.Property<byte>("Race") .HasColumnType("smallint"); b.Property<byte>("RaceType") .HasColumnType("smallint"); b.Property<int>("RespawnTime") .HasColumnType("integer"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<int>("TakeDamages") .HasColumnType("integer"); b.Property<short>("VNumRequired") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<int>("Xp") .HasColumnType("integer"); b.HasKey("NpcMonsterVNum"); b.ToTable("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.Property<long>("NpcMonsterSkillId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("NpcMonsterSkillId")); b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<short>("Rate") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("NpcMonsterSkillId"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Property<short>("DialogId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DialogId")); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("DialogId"); b.ToTable("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.Property<int>("PenaltyLogId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PenaltyLogId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<string>("AdminName") .IsRequired() .HasColumnType("text"); b.Property<Instant>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<byte>("Penalty") .HasColumnType("smallint"); b.Property<string>("Reason") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("PenaltyLogId"); b.HasIndex("AccountId"); b.ToTable("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.Property<int>("PortalId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PortalId")); b.Property<short>("DestinationMapId") .HasColumnType("smallint"); b.Property<short>("DestinationX") .HasColumnType("smallint"); b.Property<short>("DestinationY") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<short>("SourceMapId") .HasColumnType("smallint"); b.Property<short>("SourceX") .HasColumnType("smallint"); b.Property<short>("SourceY") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("PortalId"); b.HasIndex("DestinationMapId"); b.HasIndex("SourceMapId"); b.ToTable("Portal"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<bool>("AutoFinish") .HasColumnType("boolean"); b.Property<string>("Desc") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int?>("EndDialogId") .HasColumnType("integer"); b.Property<bool>("IsDaily") .HasColumnType("boolean"); b.Property<bool>("IsSecondary") .HasColumnType("boolean"); b.Property<byte>("LevelMax") .HasColumnType("smallint"); b.Property<byte>("LevelMin") .HasColumnType("smallint"); b.Property<short?>("NextQuestId") .HasColumnType("smallint"); b.Property<short>("QuestType") .HasColumnType("smallint"); b.Property<short?>("RequiredQuestId") .HasColumnType("smallint"); b.Property<int?>("SpecialData") .HasColumnType("integer"); b.Property<int?>("StartDialogId") .HasColumnType("integer"); b.Property<short?>("TargetMap") .HasColumnType("smallint"); b.Property<short?>("TargetX") .HasColumnType("smallint"); b.Property<short?>("TargetY") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("QuestId"); b.ToTable("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Property<Guid>("QuestObjectiveId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<int?>("FourthData") .HasColumnType("integer"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<int?>("SecondData") .HasColumnType("integer"); b.Property<int?>("ThirdData") .HasColumnType("integer"); b.HasKey("QuestObjectiveId"); b.HasIndex("QuestId"); b.ToTable("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<short>("QuestRewardId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("QuestId"); b.HasIndex("QuestRewardId"); b.ToTable("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Property<short>("QuestRewardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("QuestRewardId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("Data") .HasColumnType("integer"); b.Property<byte>("Design") .HasColumnType("smallint"); b.Property<byte>("Rarity") .HasColumnType("smallint"); b.Property<byte>("RewardType") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("QuestRewardId"); b.ToTable("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("IconType") .HasColumnType("smallint"); b.Property<short>("IconVNum") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("QuickListIndex") .HasColumnType("smallint"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.ToTable("QuicklistEntry"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Property<short>("RecipeId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeId")); b.Property<byte>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.HasKey("RecipeId"); b.HasIndex("ItemVNum"); b.HasIndex("MapNpcId"); b.ToTable("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.Property<short>("RecipeItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("RecipeId") .HasColumnType("smallint"); b.HasKey("RecipeItemId"); b.HasIndex("ItemVNum"); b.HasIndex("RecipeId"); b.ToTable("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.Property<long>("RespawnId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("RespawnId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("X") .HasColumnType("smallint"); b.Property<short>("Y") .HasColumnType("smallint"); b.HasKey("RespawnId"); b.HasIndex("CharacterId"); b.HasIndex("MapId"); b.HasIndex("RespawnMapTypeId"); b.ToTable("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("DefaultX") .HasColumnType("smallint"); b.Property<short>("DefaultY") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("RespawnMapTypeId"); b.HasIndex("MapId"); b.ToTable("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.Property<short>("RollGeneratedItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RollGeneratedItemId")); b.Property<bool>("IsRareRandom") .HasColumnType("boolean"); b.Property<bool>("IsSuperReward") .HasColumnType("boolean"); b.Property<byte>("ItemGeneratedAmount") .HasColumnType("smallint"); b.Property<byte>("ItemGeneratedUpgrade") .HasColumnType("smallint"); b.Property<short>("ItemGeneratedVNum") .HasColumnType("smallint"); b.Property<short>("MaximumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("MinimumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("OriginalItemDesign") .HasColumnType("smallint"); b.Property<short>("OriginalItemVNum") .HasColumnType("smallint"); b.Property<short>("Probability") .HasColumnType("smallint"); b.HasKey("RollGeneratedItemId"); b.HasIndex("ItemGeneratedVNum"); b.HasIndex("OriginalItemVNum"); b.ToTable("RollGeneratedItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short?>("Argument1") .HasColumnType("smallint"); b.Property<short?>("Argument2") .HasColumnType("smallint"); b.Property<short?>("Argument3") .HasColumnType("smallint"); b.Property<byte>("ScriptId") .HasColumnType("smallint"); b.Property<short>("ScriptStepId") .HasColumnType("smallint"); b.Property<string>("StepType") .IsRequired() .HasColumnType("text"); b.Property<string>("StringArgument") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("ScriptId", "ScriptStepId") .IsUnique(); b.ToTable("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.Property<short>("ScriptedInstanceId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("ScriptedInstanceId")); b.Property<string>("Label") .HasColumnType("text"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("PositionX") .HasColumnType("smallint"); b.Property<short>("PositionY") .HasColumnType("smallint"); b.Property<string>("Script") .HasMaxLength(2147483647) .HasColumnType("text"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ScriptedInstanceId"); b.HasIndex("MapId"); b.ToTable("ScriptedInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Property<int>("ShopId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopId")); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<byte>("MenuType") .HasColumnType("smallint"); b.Property<byte>("ShopType") .HasColumnType("smallint"); b.HasKey("ShopId"); b.HasIndex("MapNpcId"); b.ToTable("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.Property<int>("ShopItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopItemId")); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("ShopItemId"); b.HasIndex("ItemVNum"); b.HasIndex("ShopId"); b.ToTable("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.Property<int>("ShopSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopSkillId")); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ShopSkillId"); b.HasIndex("ShopId"); b.HasIndex("SkillVNum"); b.ToTable("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<short>("AttackAnimation") .HasColumnType("smallint"); b.Property<short>("CastAnimation") .HasColumnType("smallint"); b.Property<short>("CastEffect") .HasColumnType("smallint"); b.Property<short>("CastId") .HasColumnType("smallint"); b.Property<short>("CastTime") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Cooldown") .HasColumnType("smallint"); b.Property<byte>("CpCost") .HasColumnType("smallint"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<byte>("HitType") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("MinimumAdventurerLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumArcherLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumMagicianLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumSwordmanLevel") .HasColumnType("smallint"); b.Property<short>("MpCost") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Price") .HasColumnType("integer"); b.Property<byte>("Range") .HasColumnType("smallint"); b.Property<byte>("SkillType") .HasColumnType("smallint"); b.Property<byte>("TargetRange") .HasColumnType("smallint"); b.Property<byte>("TargetType") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("UpgradeSkill") .HasColumnType("smallint"); b.Property<short>("UpgradeType") .HasColumnType("smallint"); b.HasKey("SkillVNum"); b.ToTable("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.Property<long>("StaticBonusId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBonusId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<byte>("StaticBonusType") .HasColumnType("smallint"); b.HasKey("StaticBonusId"); b.HasIndex("CharacterId"); b.ToTable("StaticBonus"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.Property<long>("StaticBuffId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBuffId")); b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<int>("RemainingTime") .HasColumnType("integer"); b.HasKey("StaticBuffId"); b.HasIndex("CardId"); b.HasIndex("CharacterId"); b.ToTable("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.Property<short>("TeleporterId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("TeleporterId")); b.Property<short>("Index") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("TeleporterId"); b.HasIndex("MapId"); b.HasIndex("MapNpcId"); b.ToTable("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<bool>("Active") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("TitleType") .HasColumnType("smallint"); b.Property<bool>("Visible") .HasColumnType("boolean"); b.HasKey("Id"); b.HasIndex("CharacterId", "TitleType") .IsUnique(); b.ToTable("Title"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long?>("CharacterId") .HasColumnType("bigint"); b.Property<long?>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<Guid>("WarehouseId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("WarehouseId"); b.ToTable("WarehouseItem"); }); modelBuilder.Entity("NosCore.Database.Entities.UsableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.ToTable("ItemInstance", t => { t.Property("Hp") .HasColumnName("UsableInstance_Hp"); t.Property("Mp") .HasColumnName("UsableInstance_Mp"); }); b.HasDiscriminator().HasValue("UsableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.WearableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<byte?>("Ammo") .HasColumnType("smallint"); b.Property<byte?>("Cellon") .HasColumnType("smallint"); b.Property<short?>("CloseDefence") .HasColumnType("smallint"); b.Property<short?>("Concentrate") .HasColumnType("smallint"); b.Property<short?>("CriticalDodge") .HasColumnType("smallint"); b.Property<byte?>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short?>("CriticalRate") .HasColumnType("smallint"); b.Property<short?>("DamageMaximum") .HasColumnType("smallint"); b.Property<short?>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte?>("DarkElement") .HasColumnType("smallint"); b.Property<short?>("DarkResistance") .HasColumnType("smallint"); b.Property<short?>("DefenceDodge") .HasColumnType("smallint"); b.Property<short?>("DistanceDefence") .HasColumnType("smallint"); b.Property<short?>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<short?>("ElementRate") .HasColumnType("smallint"); b.Property<byte?>("FireElement") .HasColumnType("smallint"); b.Property<short?>("FireResistance") .HasColumnType("smallint"); b.Property<short?>("HitRate") .HasColumnType("smallint"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<bool?>("IsEmpty") .HasColumnType("boolean"); b.Property<bool?>("IsFixed") .HasColumnType("boolean"); b.Property<byte?>("LightElement") .HasColumnType("smallint"); b.Property<short?>("LightResistance") .HasColumnType("smallint"); b.Property<short?>("MagicDefence") .HasColumnType("smallint"); b.Property<short?>("MaxElementRate") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.Property<byte?>("ShellRarity") .HasColumnType("smallint"); b.Property<byte?>("WaterElement") .HasColumnType("smallint"); b.Property<short?>("WaterResistance") .HasColumnType("smallint"); b.Property<long?>("Xp") .HasColumnType("bigint"); b.HasDiscriminator().HasValue("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.SpecialistInstance", b => { b.HasBaseType("NosCore.Database.Entities.WearableInstance"); b.Property<short>("SlDamage") .HasColumnType("smallint"); b.Property<short>("SlDefence") .HasColumnType("smallint"); b.Property<short>("SlElement") .HasColumnType("smallint"); b.Property<short>("SlHp") .HasColumnType("smallint"); b.Property<byte>("SpDamage") .HasColumnType("smallint"); b.Property<byte>("SpDark") .HasColumnType("smallint"); b.Property<byte>("SpDefence") .HasColumnType("smallint"); b.Property<byte>("SpElement") .HasColumnType("smallint"); b.Property<byte>("SpFire") .HasColumnType("smallint"); b.Property<byte>("SpHp") .HasColumnType("smallint"); b.Property<byte>("SpLevel") .HasColumnType("smallint"); b.Property<byte>("SpLight") .HasColumnType("smallint"); b.Property<byte>("SpStoneUpgrade") .HasColumnType("smallint"); b.Property<byte>("SpWater") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("SpecialistInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.BoxInstance", b => { b.HasBaseType("NosCore.Database.Entities.SpecialistInstance"); b.Property<short?>("HoldingVNum") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("BoxInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.HasOne("NosCore.Database.Entities.Act", "Act") .WithMany("ActParts") .HasForeignKey("ActId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("BCards") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("BCards") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("BCards") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("BCards") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Card"); b.Navigation("Item"); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("BazaarItem") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Seller") .WithMany("BazaarItem") .HasForeignKey("SellerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Seller"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("Character") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Script", "Script") .WithMany("Characters") .HasForeignKey("CurrentScriptId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Character") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); b.Navigation("Map"); b.Navigation("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.HasOne("NosCore.Database.Entities.ActPart", "ActPart") .WithMany("CharacterActParts") .HasForeignKey("ActPartId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterActParts") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ActPart"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterQuest") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("CharacterQuest") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.HasOne("NosCore.Database.Entities.CharacterQuest", "CharacterQuest") .WithMany("CharacterQuestObjective") .HasForeignKey("CharacterQuestId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestObjective", "QuestObjective") .WithMany("CharacterQuestObjective") .HasForeignKey("QuestObjectiveId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.HasOne("NosCore.Database.Entities.Character", "Character1") .WithMany("CharacterRelation1") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character2") .WithMany("CharacterRelation2") .HasForeignKey("RelatedCharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character1"); b.Navigation("Character2"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterSkill") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("CharacterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("Combo") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("Drops") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Drop") .HasForeignKey("MonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Drop") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapType"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.HasOne("NosCore.Database.Entities.WearableInstance", "WearableInstance") .WithMany() .HasForeignKey("WearableInstanceId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("FamilyCharacter") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyCharacters") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyLogs") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Inventory") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("InventoryItemInstance") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("ItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "BoundCharacter") .WithMany() .HasForeignKey("BoundCharacterId"); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ItemInstances") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("BoundCharacter"); b.Navigation("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("Mail") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Character", "Receiver") .WithMany("Mail1") .HasForeignKey("ReceiverId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Sender") .WithMany("Mail") .HasForeignKey("SenderId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("ItemInstance"); b.Navigation("Receiver"); b.Navigation("Sender"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapMonster") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapMonster") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.HasOne("NosCore.Database.Entities.NpcTalk", "NpcTalk") .WithMany("MapNpc") .HasForeignKey("Dialog") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapNpc") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapNpc") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); b.Navigation("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("MapTypes") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.RespawnMapType", "ReturnMapType") .WithMany("MapTypes1") .HasForeignKey("ReturnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("RespawnMapType"); b.Navigation("ReturnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapTypeMap") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("MapTypeMap") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Mate") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Mate") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.HasOne("NosCore.Database.Entities.Character", "Owner") .WithMany("Miniland") .HasForeignKey("OwnerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Owner"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.HasOne("NosCore.Database.Entities.InventoryItemInstance", "InventoryItemInstance") .WithMany("MinilandObject") .HasForeignKey("InventoryItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("NpcMonsterSkill") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("NpcMonsterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("PenaltyLog") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Portal") .HasForeignKey("DestinationMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map1") .WithMany("Portal1") .HasForeignKey("SourceMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("Map1"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestObjective") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestQuestReward") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestReward", "QuestReward") .WithMany("QuestQuestReward") .HasForeignKey("QuestRewardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); b.Navigation("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("QuicklistEntry") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Recipe") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Recipe") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("RecipeItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Recipe", "Recipe") .WithMany("RecipeItem") .HasForeignKey("RecipeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Respawn") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Respawn") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("Respawn") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Map"); b.Navigation("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("RespawnMapType") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.HasOne("NosCore.Database.Entities.Item", "ItemGenerated") .WithMany("RollGeneratedItem2") .HasForeignKey("ItemGeneratedVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Item", "OriginalItem") .WithMany("RollGeneratedItem") .HasForeignKey("OriginalItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemGenerated"); b.Navigation("OriginalItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("ScriptedInstance") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Shop") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ShopItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopItem") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopSkill") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("ShopSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Shop"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBonus") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("StaticBuff") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBuff") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Card"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Teleporter") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Teleporter") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Title") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Warehouses") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("Warehouses") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("WarehouseItems") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Warehouse", "Warehouse") .WithMany("WarehouseItems") .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Navigation("Character"); b.Navigation("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Navigation("ActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Navigation("CharacterActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Navigation("BCards"); b.Navigation("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Navigation("BazaarItem"); b.Navigation("CharacterActParts"); b.Navigation("CharacterQuest"); b.Navigation("CharacterRelation1"); b.Navigation("CharacterRelation2"); b.Navigation("CharacterSkill"); b.Navigation("FamilyCharacter"); b.Navigation("Inventory"); b.Navigation("Mail"); b.Navigation("Mail1"); b.Navigation("Mate"); b.Navigation("Miniland"); b.Navigation("QuicklistEntry"); b.Navigation("Respawn"); b.Navigation("StaticBonus"); b.Navigation("StaticBuff"); b.Navigation("Title"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Navigation("FamilyCharacters"); b.Navigation("FamilyLogs"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Navigation("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("ItemInstances"); b.Navigation("Recipe"); b.Navigation("RecipeItem"); b.Navigation("RollGeneratedItem"); b.Navigation("RollGeneratedItem2"); b.Navigation("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Navigation("BazaarItem"); b.Navigation("InventoryItemInstance"); b.Navigation("Mail"); b.Navigation("WarehouseItems"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Navigation("Character"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("MapTypeMap"); b.Navigation("Portal"); b.Navigation("Portal1"); b.Navigation("Respawn"); b.Navigation("RespawnMapType"); b.Navigation("ScriptedInstance"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Navigation("Recipe"); b.Navigation("Shop"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Navigation("Drops"); b.Navigation("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("Mate"); b.Navigation("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Navigation("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Navigation("MapTypes"); b.Navigation("MapTypes1"); b.Navigation("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Navigation("Characters"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Navigation("ShopItem"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Navigation("BCards"); b.Navigation("CharacterSkill"); b.Navigation("Combo"); b.Navigation("NpcMonsterSkill"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Navigation("WarehouseItems"); }); #pragma warning restore 612, 618 } } } ================================================ FILE: src/NosCore.Database/Migrations/20260420121955_AddCharacterQuestObjective.cs ================================================ using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace NosCore.Database.Migrations { /// <inheritdoc /> public partial class AddCharacterQuestObjective : Migration { /// <inheritdoc /> protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "CharacterQuestObjective", columns: table => new { Id = table.Column<Guid>(type: "uuid", nullable: false), CharacterQuestId = table.Column<Guid>(type: "uuid", nullable: false), QuestObjectiveId = table.Column<Guid>(type: "uuid", nullable: false), Count = table.Column<int>(type: "integer", nullable: false) }, constraints: table => { table.PrimaryKey("PK_CharacterQuestObjective", x => x.Id); table.ForeignKey( name: "FK_CharacterQuestObjective_CharacterQuest_CharacterQuestId", column: x => x.CharacterQuestId, principalTable: "CharacterQuest", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_CharacterQuestObjective_QuestObjective_QuestObjectiveId", column: x => x.QuestObjectiveId, principalTable: "QuestObjective", principalColumn: "QuestObjectiveId", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateIndex( name: "IX_CharacterQuestObjective_CharacterQuestId_QuestObjectiveId", table: "CharacterQuestObjective", columns: new[] { "CharacterQuestId", "QuestObjectiveId" }, unique: true); migrationBuilder.CreateIndex( name: "IX_CharacterQuestObjective_QuestObjectiveId", table: "CharacterQuestObjective", column: "QuestObjectiveId"); } /// <inheritdoc /> protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "CharacterQuestObjective"); } } } ================================================ FILE: src/NosCore.Database/Migrations/20260420231052_AddNpcMonsterCanWalk.Designer.cs ================================================ // <auto-generated /> using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using NodaTime; using NosCore.Database; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace NosCore.Database.Migrations { [DbContext(typeof(NosCoreContext))] [Migration("20260420231052_AddNpcMonsterCanWalk")] partial class AddNpcMonsterCanWalk { /// <inheritdoc /> protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "10.0.6") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "audit_log_type", new[] { "account_creation", "character_creation", "email_update" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "authority_type", new[] { "user", "moderator", "game_master", "administrator", "root", "closed", "banned", "unconfirmed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_class_type", new[] { "adventurer", "swordsman", "archer", "mage", "martial_artist" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_relation_type", new[] { "friend", "hidden_spouse", "spouse", "blocked" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_state", new[] { "active", "inactive" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_type", new[] { "neutral", "fire", "water", "light", "dark" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "equipment_type", new[] { "main_weapon", "armor", "hat", "gloves", "boots", "secondary_weapon", "necklace", "ring", "bracelet", "mask", "fairy", "amulet", "sp", "costume_suit", "costume_hat", "weapon_skin", "wing_skin" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority", new[] { "head", "assistant", "manager", "member" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority_type", new[] { "none", "put", "all" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_log_type", new[] { "daily_message", "raid_won", "rainbow_battle", "family_xp", "family_level_up", "level_up", "item_upgraded", "right_changed", "authority_changed", "family_managed", "user_managed", "ware_house_added", "ware_house_removed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_member_rank", new[] { "nothing", "old_uncle", "old_aunt", "father", "mother", "uncle", "aunt", "brother", "sister", "spouse", "brother2", "sister2", "old_son", "old_daugter", "middle_son", "middle_daughter", "young_son", "young_daugter", "old_little_son", "old_little_daughter", "little_son", "little_daughter", "middle_little_son", "middle_little_daugter" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "gender_type", new[] { "male", "female" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_color_type", new[] { "dark_purple", "yellow", "blue", "purple", "orange", "brown", "green", "dark_grey", "light_blue", "pink_red", "light_yellow", "light_pink", "light_green", "light_grey", "sky_blue", "black", "dark_orange", "dark_orange_variant2", "dark_orange_variant3", "dark_orange_variant4", "dark_orange_variant5", "dark_orange_variant6", "light_orange", "light_light_orange", "light_light_light_orange", "light_light_light_light_orange", "super_light_orange", "dark_yellow", "light_light_yellow", "kaki_yellow", "super_light_yellow", "super_light_yellow2", "super_light_yellow3", "little_dark_yellow", "yellow_variant", "yellow_variant1", "yellow_variant2", "yellow_variant3", "yellow_variant4", "yellow_variant5", "yellow_variant6", "yellow_variant7", "yellow_variant8", "yellow_variant9", "green_variant", "green_variant1", "dark_green_variant", "green_more_dark_variant", "green_variant2", "green_variant3", "green_variant4", "green_variant5", "green_variant6", "green_variant7", "green_variant8", "green_variant9", "green_variant10", "green_variant11", "green_variant12", "green_variant13", "green_variant14", "green_variant15", "green_variant16", "green_variant17", "green_variant18", "green_variant19", "green_variant20", "light_blue_variant1", "light_blue_variant2", "light_blue_variant3", "light_blue_variant4", "light_blue_variant5", "light_blue_variant6", "light_blue_variant7", "light_blue_variant8", "light_blue_variant9", "light_blue_variant10", "light_blue_variant11", "light_blue_variant12", "light_blue_variant13", "dark_black", "light_blue_variant14", "light_blue_variant15", "light_blue_variant16", "light_blue_variant17", "blue_variant", "blue_variant_dark", "blue_variant_dark_dark", "blue_variant_dark_dark2", "flash_blue", "flash_blue_dark", "flash_blue_dark2", "flash_blue_dark3", "flash_blue_dark4", "flash_blue_dark5", "flash_blue_dark6", "flash_blue_dark7", "flash_blue_dark8", "flash_blue_dark9", "white", "flash_blue_dark10", "flash_blue1", "flash_blue2", "flash_blue3", "flash_blue4", "flash_blue5", "flash_purple", "flash_light_purple", "flash_light_purple2", "flash_light_purple3", "flash_light_purple4", "flash_light_purple5", "light_purple", "purple_variant1", "purple_variant2", "purple_variant3", "purple_variant4", "purple_variant5", "purple_variant6", "purple_variant7", "purple_variant8", "purple_variant9", "purple_variant10", "purple_variant11", "purple_variant12", "purple_variant13", "purple_variant14", "purple_variant15" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_style_type", new[] { "hair_style_a", "hair_style_b", "hair_style_c", "hair_style_d", "no_hair" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_effect_type", new[] { "no_effect", "teleport", "apply_hair_die", "speaker", "marriage_proposal", "undefined", "sp_charger", "dropped_sp_recharger", "premium_sp_recharger", "crafted_sp_recharger", "specialist_medal", "apply_skin_partner", "change_gender", "point_initialisation", "sealed_tarot_card", "tarot_card", "red_amulet", "blue_amulet", "reinforcement_amulet", "heroic", "random_heroic", "attack_amulet", "defense_amulet", "speed_booster", "box_effect", "vehicle", "gold_nos_merchant_upgrade", "silver_nos_merchant_upgrade", "inventory_upgrade", "pet_space_upgrade", "pet_basket_upgrade", "pet_backpack_upgrade", "inventory_ticket_upgrade", "buff_potions", "marriage_separation" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_type", new[] { "weapon", "armor", "fashion", "jewelery", "specialist", "box", "shell", "main", "upgrade", "production", "map", "special", "potion", "event", "title", "quest1", "sell", "food", "snack", "magical", "part", "teacher", "ammo", "quest2", "house", "garden", "minigame", "terrace", "miniland_theme" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "mate_type", new[] { "partner", "pet" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "miniland_state", new[] { "open", "private", "lock" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "monster_type", new[] { "unknown", "partner", "npc", "well", "portal", "boss", "elite", "peapod", "special", "gem_space_time" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "noscore_pocket_type", new[] { "equipment", "main", "etc", "miniland", "specialist", "costume", "wear" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "penalty_type", new[] { "muted", "banned", "block_exp", "block_f_exp", "block_rep", "warning" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "portal_type", new[] { "ts_normal", "closed", "open", "miniland", "ts_end", "ts_end_closed", "exit", "exit_closed", "raid", "effect", "blue_raid", "dark_raid", "time_space", "shop_teleport", "map_portal" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "quest_type", new[] { "hunt", "special_collect", "collect_in_raid", "brings", "capture_without_getting_the_monster", "capture", "times_space", "product", "number_of_kill", "target_reput", "ts_point", "dialog1", "collect_in_ts", "required", "wear", "needed", "collect", "transmit_gold", "go_to", "collect_map_entity", "use", "dialog2", "un_know", "inspect", "win_raid", "flower_quest" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "region_type", new[] { "en", "de", "fr", "it", "pl", "es", "ru", "cs", "tr" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "scripted_instance_type", new[] { "time_space", "raid", "raid_act4" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "static_bonus_type", new[] { "bazaar_medal_gold", "bazaar_medal_silver", "back_pack", "pet_basket", "pet_back_pack", "inventory_ticket_upgrade" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "teleporter_type", new[] { "teleporter", "teleporter_on_map" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "warehouse_type", new[] { "warehouse", "family_ware_house", "pet_warehouse" }); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Property<long>("AccountId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("AccountId")); b.Property<short>("Authority") .HasColumnType("smallint"); b.Property<long>("BankMoney") .HasColumnType("bigint"); b.Property<string>("Email") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ItemShopMoney") .HasColumnType("bigint"); b.Property<int>("Language") .HasColumnType("integer"); b.Property<string>("MfaSecret") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthPassword") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthSalt") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Password") .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("RegistrationIp") .HasMaxLength(45) .HasColumnType("character varying(45)"); b.Property<string>("VerificationToken") .HasMaxLength(32) .HasColumnType("character varying(32)"); b.HasKey("AccountId"); b.HasIndex("Name") .IsUnique(); b.ToTable("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("Scene") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("ActId"); b.ToTable("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("ActPartNumber") .HasColumnType("smallint"); b.Property<byte>("MaxTs") .HasColumnType("smallint"); b.HasKey("ActPartId"); b.HasIndex("ActId"); b.ToTable("ActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.AuditLog", b => { b.Property<Guid>("AuditId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("AuditLogType") .HasColumnType("integer"); b.Property<string>("TargetId") .IsRequired() .HasMaxLength(80) .HasColumnType("character varying(80)"); b.Property<string>("TargetType") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)"); b.Property<Instant>("Time") .HasColumnType("timestamp with time zone"); b.Property<string>("Value") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("AuditId"); b.ToTable("AuditLog"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.Property<short>("BCardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("BCardId")); b.Property<short?>("CardId") .HasColumnType("smallint"); b.Property<byte>("CastType") .HasColumnType("smallint"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<bool>("IsLevelDivided") .HasColumnType("boolean"); b.Property<bool>("IsLevelScaled") .HasColumnType("boolean"); b.Property<short?>("ItemVNum") .HasColumnType("smallint"); b.Property<short?>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<int>("SecondData") .HasColumnType("integer"); b.Property<short?>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("SubType") .HasColumnType("smallint"); b.Property<int>("ThirdData") .HasColumnType("integer"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("BCardId"); b.HasIndex("CardId"); b.HasIndex("ItemVNum"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("BCard"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.Property<long>("BazaarItemId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("BazaarItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<bool>("IsPackage") .HasColumnType("boolean"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<bool>("MedalUsed") .HasColumnType("boolean"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<long>("SellerId") .HasColumnType("bigint"); b.HasKey("BazaarItemId"); b.HasIndex("ItemInstanceId"); b.HasIndex("SellerId"); b.ToTable("BazaarItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<byte>("BuffType") .HasColumnType("smallint"); b.Property<int>("Delay") .HasColumnType("integer"); b.Property<int>("Duration") .HasColumnType("integer"); b.Property<int>("EffectId") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("Propability") .HasColumnType("smallint"); b.Property<short>("TimeoutBuff") .HasColumnType("smallint"); b.Property<byte>("TimeoutBuffChance") .HasColumnType("smallint"); b.HasKey("CardId"); b.ToTable("Card"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Property<long>("CharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("CharacterId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<int>("Act4Dead") .HasColumnType("integer"); b.Property<int>("Act4Kill") .HasColumnType("integer"); b.Property<int>("Act4Points") .HasColumnType("integer"); b.Property<int>("ArenaWinner") .HasColumnType("integer"); b.Property<string>("Biography") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("BuffBlocked") .HasColumnType("boolean"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Compliment") .HasColumnType("smallint"); b.Property<Guid?>("CurrentScriptId") .HasColumnType("uuid"); b.Property<short>("Dignity") .HasColumnType("smallint"); b.Property<int>("Elo") .HasColumnType("integer"); b.Property<bool>("EmoticonsBlocked") .HasColumnType("boolean"); b.Property<bool>("ExchangeBlocked") .HasColumnType("boolean"); b.Property<byte>("Faction") .HasColumnType("smallint"); b.Property<bool>("FamilyRequestBlocked") .HasColumnType("boolean"); b.Property<bool>("FriendRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("Gender") .HasColumnType("smallint"); b.Property<long>("Gold") .HasColumnType("bigint"); b.Property<bool>("GroupRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("HairColor") .HasColumnType("smallint"); b.Property<byte>("HairStyle") .HasColumnType("smallint"); b.Property<bool>("HeroChatBlocked") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<long>("HeroXp") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("HpBlocked") .HasColumnType("boolean"); b.Property<byte>("JobLevel") .HasColumnType("smallint"); b.Property<long>("JobLevelXp") .HasColumnType("bigint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<long>("LevelXp") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<int>("MasterPoints") .HasColumnType("integer"); b.Property<int>("MasterTicket") .HasColumnType("integer"); b.Property<byte>("MaxMateCount") .HasColumnType("smallint"); b.Property<bool>("MinilandInviteBlocked") .HasColumnType("boolean"); b.Property<bool>("MouseAimLock") .HasColumnType("boolean"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("Prefix") .HasMaxLength(25) .HasColumnType("character varying(25)"); b.Property<bool>("QuickGetUp") .HasColumnType("boolean"); b.Property<long>("RagePoint") .HasColumnType("bigint"); b.Property<long>("Reput") .HasColumnType("bigint"); b.Property<byte>("ServerId") .HasColumnType("smallint"); b.Property<bool>("ShouldRename") .HasColumnType("boolean"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<int>("SpAdditionPoint") .HasColumnType("integer"); b.Property<int>("SpPoint") .HasColumnType("integer"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("TalentLose") .HasColumnType("integer"); b.Property<int>("TalentSurrender") .HasColumnType("integer"); b.Property<int>("TalentWin") .HasColumnType("integer"); b.Property<bool>("WhisperBlocked") .HasColumnType("boolean"); b.HasKey("CharacterId"); b.HasIndex("AccountId"); b.HasIndex("CurrentScriptId"); b.HasIndex("MapId"); b.ToTable("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.HasKey("Id"); b.HasIndex("ActPartId"); b.HasIndex("CharacterId"); b.ToTable("CharacterActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("CompletedOn") .HasColumnType("timestamp with time zone"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("QuestId"); b.ToTable("CharacterQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("CharacterQuestId") .HasColumnType("uuid"); b.Property<int>("Count") .HasColumnType("integer"); b.Property<Guid>("QuestObjectiveId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("QuestObjectiveId"); b.HasIndex("CharacterQuestId", "QuestObjectiveId") .IsUnique(); b.ToTable("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.Property<Guid>("CharacterRelationId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<long>("RelatedCharacterId") .HasColumnType("bigint"); b.Property<short>("RelationType") .HasColumnType("smallint"); b.HasKey("CharacterRelationId"); b.HasIndex("CharacterId"); b.HasIndex("RelatedCharacterId"); b.ToTable("CharacterRelation"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("SkillVNum"); b.ToTable("CharacterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.Property<int>("ComboId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ComboId")); b.Property<short>("Animation") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("Hit") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("ComboId"); b.HasIndex("SkillVNum"); b.ToTable("Combo"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.Property<short>("DropId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DropId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("DropChance") .HasColumnType("integer"); b.Property<short?>("MapTypeId") .HasColumnType("smallint"); b.Property<short?>("MonsterVNum") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("DropId"); b.HasIndex("MapTypeId"); b.HasIndex("MonsterVNum"); b.HasIndex("VNum"); b.ToTable("Drop"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<int>("Value") .HasColumnType("integer"); b.Property<Guid>("WearableInstanceId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("WearableInstanceId"); b.ToTable("EquipmentOption"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Property<long>("FamilyId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyId")); b.Property<int>("FamilyExperience") .HasColumnType("integer"); b.Property<byte>("FamilyFaction") .HasColumnType("smallint"); b.Property<byte>("FamilyHeadGender") .HasColumnType("smallint"); b.Property<byte>("FamilyLevel") .HasColumnType("smallint"); b.Property<string>("FamilyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("ManagerAuthorityType") .HasColumnType("integer"); b.Property<bool>("ManagerCanGetHistory") .HasColumnType("boolean"); b.Property<bool>("ManagerCanInvite") .HasColumnType("boolean"); b.Property<bool>("ManagerCanNotice") .HasColumnType("boolean"); b.Property<bool>("ManagerCanShout") .HasColumnType("boolean"); b.Property<byte>("MaxSize") .HasColumnType("smallint"); b.Property<int>("MemberAuthorityType") .HasColumnType("integer"); b.Property<bool>("MemberCanGetHistory") .HasColumnType("boolean"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("WarehouseSize") .HasColumnType("smallint"); b.HasKey("FamilyId"); b.ToTable("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.Property<long>("FamilyCharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyCharacterId")); b.Property<byte>("Authority") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<string>("DailyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Experience") .HasColumnType("integer"); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Rank") .HasColumnType("smallint"); b.HasKey("FamilyCharacterId"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("FamilyCharacter"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.Property<long>("FamilyLogId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyLogId")); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<string>("FamilyLogData") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("FamilyLogType") .HasColumnType("smallint"); b.Property<Instant>("Timestamp") .HasColumnType("timestamp with time zone"); b.HasKey("FamilyLogId"); b.HasIndex("FamilyId"); b.ToTable("FamilyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NActDesc", b => { b.Property<int>("I18NActDescId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NActDescId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NActDescId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NActDesc"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NBCard", b => { b.Property<int>("I18NbCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NbCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NbCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NBCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NCard", b => { b.Property<int>("I18NCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NItem", b => { b.Property<int>("I18NItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NItemId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NItemId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NItem"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapIdData", b => { b.Property<int>("I18NMapIdDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapIdDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapIdDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapIdData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapPointData", b => { b.Property<int>("I18NMapPointDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapPointDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapPointDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapPointData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonster", b => { b.Property<int>("I18NNpcMonsterId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonsterTalk", b => { b.Property<int>("I18NNpcMonsterTalkId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterTalkId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterTalkId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonsterTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NQuest", b => { b.Property<int>("I18NQuestId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NQuestId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NQuestId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NSkill", b => { b.Property<int>("I18NSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NSkillId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NSkillId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("CharacterId", "Slot", "Type") .IsUnique(); b.ToTable("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Property<short>("VNum") .HasColumnType("smallint"); b.Property<byte>("BasicUpgrade") .HasColumnType("smallint"); b.Property<byte>("CellonLvl") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte>("DarkElement") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<int>("Effect") .HasColumnType("integer"); b.Property<int>("EffectValue") .HasColumnType("integer"); b.Property<int>("Element") .HasColumnType("integer"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<byte>("EquipmentSlot") .HasColumnType("smallint"); b.Property<byte>("FireElement") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<bool>("Flag1") .HasColumnType("boolean"); b.Property<bool>("Flag2") .HasColumnType("boolean"); b.Property<bool>("Flag3") .HasColumnType("boolean"); b.Property<bool>("Flag4") .HasColumnType("boolean"); b.Property<bool>("Flag6") .HasColumnType("boolean"); b.Property<bool>("Flag7") .HasColumnType("boolean"); b.Property<bool>("Flag8") .HasColumnType("boolean"); b.Property<bool>("Flag9") .HasColumnType("boolean"); b.Property<byte>("Height") .HasColumnType("smallint"); b.Property<short>("HitRate") .HasColumnType("smallint"); b.Property<short>("Hp") .HasColumnType("smallint"); b.Property<short>("HpRegeneration") .HasColumnType("smallint"); b.Property<bool>("IsColored") .HasColumnType("boolean"); b.Property<bool>("IsConsumable") .HasColumnType("boolean"); b.Property<bool>("IsDroppable") .HasColumnType("boolean"); b.Property<bool>("IsHeroic") .HasColumnType("boolean"); b.Property<bool>("IsMinilandActionable") .HasColumnType("boolean"); b.Property<bool>("IsSoldable") .HasColumnType("boolean"); b.Property<bool>("IsTradable") .HasColumnType("boolean"); b.Property<bool>("IsWarehouse") .HasColumnType("boolean"); b.Property<byte>("ItemSubType") .HasColumnType("smallint"); b.Property<byte>("ItemType") .HasColumnType("smallint"); b.Property<long>("ItemValidTime") .HasColumnType("bigint"); b.Property<byte>("LevelJobMinimum") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("LightElement") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<byte>("MaxCellon") .HasColumnType("smallint"); b.Property<byte>("MaxCellonLvl") .HasColumnType("smallint"); b.Property<short>("MaxElementRate") .HasColumnType("smallint"); b.Property<byte>("MaximumAmmo") .HasColumnType("smallint"); b.Property<int>("MinilandObjectPoint") .HasColumnType("integer"); b.Property<short>("MoreHp") .HasColumnType("smallint"); b.Property<short>("MoreMp") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("Mp") .HasColumnType("smallint"); b.Property<short>("MpRegeneration") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<short>("PvpDefence") .HasColumnType("smallint"); b.Property<byte>("PvpStrength") .HasColumnType("smallint"); b.Property<short>("ReduceOposantResistance") .HasColumnType("smallint"); b.Property<long>("ReputPrice") .HasColumnType("bigint"); b.Property<byte>("ReputationMinimum") .HasColumnType("smallint"); b.Property<bool>("RequireBinding") .HasColumnType("boolean"); b.Property<short>("SecondMorph") .HasColumnType("smallint"); b.Property<int>("SecondaryElement") .HasColumnType("integer"); b.Property<byte>("Sex") .HasColumnType("smallint"); b.Property<byte>("SpType") .HasColumnType("smallint"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("WaitDelay") .HasColumnType("smallint"); b.Property<byte>("WaterElement") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<byte>("Width") .HasColumnType("smallint"); b.HasKey("VNum"); b.ToTable("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<long?>("BoundCharacterId") .HasColumnType("bigint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("Design") .HasColumnType("smallint"); b.Property<string>("Discriminator") .IsRequired() .HasMaxLength(21) .HasColumnType("character varying(21)"); b.Property<int>("DurabilityPoint") .HasColumnType("integer"); b.Property<Instant?>("ItemDeleteTime") .HasColumnType("timestamp with time zone"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("BoundCharacterId"); b.HasIndex("ItemVNum"); b.ToTable("ItemInstance"); b.HasDiscriminator<string>("Discriminator").HasValue("ItemInstance"); b.UseTphMappingStrategy(); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.Property<long>("MailId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MailId")); b.Property<short?>("Armor") .HasColumnType("smallint"); b.Property<short?>("CostumeHat") .HasColumnType("smallint"); b.Property<short?>("CostumeSuit") .HasColumnType("smallint"); b.Property<Instant>("Date") .HasColumnType("timestamp with time zone"); b.Property<short?>("Fairy") .HasColumnType("smallint"); b.Property<short?>("Hat") .HasColumnType("smallint"); b.Property<bool>("IsOpened") .HasColumnType("boolean"); b.Property<bool>("IsSenderCopy") .HasColumnType("boolean"); b.Property<Guid?>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short?>("MainWeapon") .HasColumnType("smallint"); b.Property<short?>("Mask") .HasColumnType("smallint"); b.Property<string>("Message") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ReceiverId") .HasColumnType("bigint"); b.Property<short?>("SecondaryWeapon") .HasColumnType("smallint"); b.Property<byte?>("SenderCharacterClass") .HasColumnType("smallint"); b.Property<byte?>("SenderGender") .HasColumnType("smallint"); b.Property<byte?>("SenderHairColor") .HasColumnType("smallint"); b.Property<byte?>("SenderHairStyle") .HasColumnType("smallint"); b.Property<long?>("SenderId") .HasColumnType("bigint"); b.Property<short?>("SenderMorphId") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short?>("WeaponSkin") .HasColumnType("smallint"); b.Property<short?>("WingSkin") .HasColumnType("smallint"); b.HasKey("MailId"); b.HasIndex("ItemInstanceId"); b.HasIndex("ReceiverId"); b.HasIndex("SenderId"); b.ToTable("Mail"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<byte[]>("Data") .IsRequired() .HasColumnType("bytea"); b.Property<int>("Music") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("ShopAllowed") .HasColumnType("boolean"); b.HasKey("MapId"); b.ToTable("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.Property<int>("MapMonsterId") .HasColumnType("integer"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapMonsterId"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short?>("Dialog") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("EffectDelay") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<bool>("IsSitting") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapNpcId"); b.HasIndex("Dialog"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.Property<string>("MapTypeName") .IsRequired() .HasColumnType("text"); b.Property<short>("PotionDelay") .HasColumnType("smallint"); b.Property<long?>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<long?>("ReturnMapTypeId") .HasColumnType("bigint"); b.HasKey("MapTypeId"); b.HasIndex("RespawnMapTypeId"); b.HasIndex("ReturnMapTypeId"); b.ToTable("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.Property<short>("MapTypeMapId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("MapTypeMapId")); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.HasKey("MapTypeMapId"); b.HasIndex("MapTypeId"); b.HasIndex("MapId", "MapTypeId") .IsUnique(); b.ToTable("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.Property<long>("MateId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MateId")); b.Property<byte>("Attack") .HasColumnType("smallint"); b.Property<bool>("CanPickUp") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<byte>("Defence") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<long>("Experience") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("IsSummonable") .HasColumnType("boolean"); b.Property<bool>("IsTeamMember") .HasColumnType("boolean"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("Loyalty") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("MateType") .HasColumnType("smallint"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short>("Skin") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MateId"); b.HasIndex("CharacterId"); b.HasIndex("VNum"); b.ToTable("Mate"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.Property<Guid>("MinilandId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("DailyVisitCount") .HasColumnType("integer"); b.Property<string>("MinilandMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("MinilandPoint") .HasColumnType("bigint"); b.Property<long>("OwnerId") .HasColumnType("bigint"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("VisitCount") .HasColumnType("integer"); b.Property<short>("WelcomeMusicInfo") .HasColumnType("smallint"); b.HasKey("MinilandId"); b.HasIndex("OwnerId"); b.ToTable("Miniland"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.Property<Guid>("MinilandObjectId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<Guid?>("InventoryItemInstanceId") .HasColumnType("uuid"); b.Property<byte>("Level1BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level2BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level3BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level4BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level5BoxAmount") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.HasKey("MinilandObjectId"); b.HasIndex("InventoryItemInstanceId"); b.ToTable("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<byte>("AmountRequired") .HasColumnType("smallint"); b.Property<byte>("AttackClass") .HasColumnType("smallint"); b.Property<byte>("AttackUpgrade") .HasColumnType("smallint"); b.Property<byte>("BasicArea") .HasColumnType("smallint"); b.Property<short>("BasicCooldown") .HasColumnType("smallint"); b.Property<byte>("BasicRange") .HasColumnType("smallint"); b.Property<short>("BasicSkill") .HasColumnType("smallint"); b.Property<bool>("CanWalk") .HasColumnType("boolean"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalChance") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<byte>("DefenceUpgrade") .HasColumnType("smallint"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<int>("GiveDamagePercentage") .HasColumnType("integer"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<int>("HeroXp") .HasColumnType("integer"); b.Property<bool>("IsHostile") .HasColumnType("boolean"); b.Property<bool>("IsPercent") .HasColumnType("boolean"); b.Property<int>("JobXp") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<int>("MaxHp") .HasColumnType("integer"); b.Property<int>("MaxMp") .HasColumnType("integer"); b.Property<byte>("MonsterType") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("NoAggresiveIcon") .HasColumnType("boolean"); b.Property<byte>("NoticeRange") .HasColumnType("smallint"); b.Property<byte>("Race") .HasColumnType("smallint"); b.Property<byte>("RaceType") .HasColumnType("smallint"); b.Property<int>("RespawnTime") .HasColumnType("integer"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<int>("TakeDamages") .HasColumnType("integer"); b.Property<short>("VNumRequired") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<int>("Xp") .HasColumnType("integer"); b.HasKey("NpcMonsterVNum"); b.ToTable("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.Property<long>("NpcMonsterSkillId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("NpcMonsterSkillId")); b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<short>("Rate") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("NpcMonsterSkillId"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Property<short>("DialogId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DialogId")); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("DialogId"); b.ToTable("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.Property<int>("PenaltyLogId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PenaltyLogId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<string>("AdminName") .IsRequired() .HasColumnType("text"); b.Property<Instant>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<byte>("Penalty") .HasColumnType("smallint"); b.Property<string>("Reason") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("PenaltyLogId"); b.HasIndex("AccountId"); b.ToTable("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.Property<int>("PortalId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PortalId")); b.Property<short>("DestinationMapId") .HasColumnType("smallint"); b.Property<short>("DestinationX") .HasColumnType("smallint"); b.Property<short>("DestinationY") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<short>("SourceMapId") .HasColumnType("smallint"); b.Property<short>("SourceX") .HasColumnType("smallint"); b.Property<short>("SourceY") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("PortalId"); b.HasIndex("DestinationMapId"); b.HasIndex("SourceMapId"); b.ToTable("Portal"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<bool>("AutoFinish") .HasColumnType("boolean"); b.Property<string>("Desc") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int?>("EndDialogId") .HasColumnType("integer"); b.Property<bool>("IsDaily") .HasColumnType("boolean"); b.Property<bool>("IsSecondary") .HasColumnType("boolean"); b.Property<byte>("LevelMax") .HasColumnType("smallint"); b.Property<byte>("LevelMin") .HasColumnType("smallint"); b.Property<short?>("NextQuestId") .HasColumnType("smallint"); b.Property<short>("QuestType") .HasColumnType("smallint"); b.Property<short?>("RequiredQuestId") .HasColumnType("smallint"); b.Property<int?>("SpecialData") .HasColumnType("integer"); b.Property<int?>("StartDialogId") .HasColumnType("integer"); b.Property<short?>("TargetMap") .HasColumnType("smallint"); b.Property<short?>("TargetX") .HasColumnType("smallint"); b.Property<short?>("TargetY") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("QuestId"); b.ToTable("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Property<Guid>("QuestObjectiveId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<int?>("FourthData") .HasColumnType("integer"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<int?>("SecondData") .HasColumnType("integer"); b.Property<int?>("ThirdData") .HasColumnType("integer"); b.HasKey("QuestObjectiveId"); b.HasIndex("QuestId"); b.ToTable("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<short>("QuestRewardId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("QuestId"); b.HasIndex("QuestRewardId"); b.ToTable("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Property<short>("QuestRewardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("QuestRewardId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("Data") .HasColumnType("integer"); b.Property<byte>("Design") .HasColumnType("smallint"); b.Property<byte>("Rarity") .HasColumnType("smallint"); b.Property<byte>("RewardType") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("QuestRewardId"); b.ToTable("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("IconType") .HasColumnType("smallint"); b.Property<short>("IconVNum") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("QuickListIndex") .HasColumnType("smallint"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.ToTable("QuicklistEntry"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Property<short>("RecipeId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeId")); b.Property<byte>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.HasKey("RecipeId"); b.HasIndex("ItemVNum"); b.HasIndex("MapNpcId"); b.ToTable("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.Property<short>("RecipeItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("RecipeId") .HasColumnType("smallint"); b.HasKey("RecipeItemId"); b.HasIndex("ItemVNum"); b.HasIndex("RecipeId"); b.ToTable("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.Property<long>("RespawnId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("RespawnId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("X") .HasColumnType("smallint"); b.Property<short>("Y") .HasColumnType("smallint"); b.HasKey("RespawnId"); b.HasIndex("CharacterId"); b.HasIndex("MapId"); b.HasIndex("RespawnMapTypeId"); b.ToTable("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("DefaultX") .HasColumnType("smallint"); b.Property<short>("DefaultY") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("RespawnMapTypeId"); b.HasIndex("MapId"); b.ToTable("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.Property<short>("RollGeneratedItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RollGeneratedItemId")); b.Property<bool>("IsRareRandom") .HasColumnType("boolean"); b.Property<bool>("IsSuperReward") .HasColumnType("boolean"); b.Property<byte>("ItemGeneratedAmount") .HasColumnType("smallint"); b.Property<byte>("ItemGeneratedUpgrade") .HasColumnType("smallint"); b.Property<short>("ItemGeneratedVNum") .HasColumnType("smallint"); b.Property<short>("MaximumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("MinimumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("OriginalItemDesign") .HasColumnType("smallint"); b.Property<short>("OriginalItemVNum") .HasColumnType("smallint"); b.Property<short>("Probability") .HasColumnType("smallint"); b.HasKey("RollGeneratedItemId"); b.HasIndex("ItemGeneratedVNum"); b.HasIndex("OriginalItemVNum"); b.ToTable("RollGeneratedItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short?>("Argument1") .HasColumnType("smallint"); b.Property<short?>("Argument2") .HasColumnType("smallint"); b.Property<short?>("Argument3") .HasColumnType("smallint"); b.Property<byte>("ScriptId") .HasColumnType("smallint"); b.Property<short>("ScriptStepId") .HasColumnType("smallint"); b.Property<string>("StepType") .IsRequired() .HasColumnType("text"); b.Property<string>("StringArgument") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("ScriptId", "ScriptStepId") .IsUnique(); b.ToTable("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.Property<short>("ScriptedInstanceId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("ScriptedInstanceId")); b.Property<string>("Label") .HasColumnType("text"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("PositionX") .HasColumnType("smallint"); b.Property<short>("PositionY") .HasColumnType("smallint"); b.Property<string>("Script") .HasMaxLength(2147483647) .HasColumnType("text"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ScriptedInstanceId"); b.HasIndex("MapId"); b.ToTable("ScriptedInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Property<int>("ShopId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopId")); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<byte>("MenuType") .HasColumnType("smallint"); b.Property<byte>("ShopType") .HasColumnType("smallint"); b.HasKey("ShopId"); b.HasIndex("MapNpcId"); b.ToTable("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.Property<int>("ShopItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopItemId")); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("ShopItemId"); b.HasIndex("ItemVNum"); b.HasIndex("ShopId"); b.ToTable("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.Property<int>("ShopSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopSkillId")); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ShopSkillId"); b.HasIndex("ShopId"); b.HasIndex("SkillVNum"); b.ToTable("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<short>("AttackAnimation") .HasColumnType("smallint"); b.Property<short>("CastAnimation") .HasColumnType("smallint"); b.Property<short>("CastEffect") .HasColumnType("smallint"); b.Property<short>("CastId") .HasColumnType("smallint"); b.Property<short>("CastTime") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Cooldown") .HasColumnType("smallint"); b.Property<byte>("CpCost") .HasColumnType("smallint"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<byte>("HitType") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("MinimumAdventurerLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumArcherLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumMagicianLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumSwordmanLevel") .HasColumnType("smallint"); b.Property<short>("MpCost") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Price") .HasColumnType("integer"); b.Property<byte>("Range") .HasColumnType("smallint"); b.Property<byte>("SkillType") .HasColumnType("smallint"); b.Property<byte>("TargetRange") .HasColumnType("smallint"); b.Property<byte>("TargetType") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("UpgradeSkill") .HasColumnType("smallint"); b.Property<short>("UpgradeType") .HasColumnType("smallint"); b.HasKey("SkillVNum"); b.ToTable("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.Property<long>("StaticBonusId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBonusId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<byte>("StaticBonusType") .HasColumnType("smallint"); b.HasKey("StaticBonusId"); b.HasIndex("CharacterId"); b.ToTable("StaticBonus"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.Property<long>("StaticBuffId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBuffId")); b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<int>("RemainingTime") .HasColumnType("integer"); b.HasKey("StaticBuffId"); b.HasIndex("CardId"); b.HasIndex("CharacterId"); b.ToTable("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.Property<short>("TeleporterId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("TeleporterId")); b.Property<short>("Index") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("TeleporterId"); b.HasIndex("MapId"); b.HasIndex("MapNpcId"); b.ToTable("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<bool>("Active") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("TitleType") .HasColumnType("smallint"); b.Property<bool>("Visible") .HasColumnType("boolean"); b.HasKey("Id"); b.HasIndex("CharacterId", "TitleType") .IsUnique(); b.ToTable("Title"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long?>("CharacterId") .HasColumnType("bigint"); b.Property<long?>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<Guid>("WarehouseId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("WarehouseId"); b.ToTable("WarehouseItem"); }); modelBuilder.Entity("NosCore.Database.Entities.UsableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.ToTable("ItemInstance", t => { t.Property("Hp") .HasColumnName("UsableInstance_Hp"); t.Property("Mp") .HasColumnName("UsableInstance_Mp"); }); b.HasDiscriminator().HasValue("UsableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.WearableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<byte?>("Ammo") .HasColumnType("smallint"); b.Property<byte?>("Cellon") .HasColumnType("smallint"); b.Property<short?>("CloseDefence") .HasColumnType("smallint"); b.Property<short?>("Concentrate") .HasColumnType("smallint"); b.Property<short?>("CriticalDodge") .HasColumnType("smallint"); b.Property<byte?>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short?>("CriticalRate") .HasColumnType("smallint"); b.Property<short?>("DamageMaximum") .HasColumnType("smallint"); b.Property<short?>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte?>("DarkElement") .HasColumnType("smallint"); b.Property<short?>("DarkResistance") .HasColumnType("smallint"); b.Property<short?>("DefenceDodge") .HasColumnType("smallint"); b.Property<short?>("DistanceDefence") .HasColumnType("smallint"); b.Property<short?>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<short?>("ElementRate") .HasColumnType("smallint"); b.Property<byte?>("FireElement") .HasColumnType("smallint"); b.Property<short?>("FireResistance") .HasColumnType("smallint"); b.Property<short?>("HitRate") .HasColumnType("smallint"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<bool?>("IsEmpty") .HasColumnType("boolean"); b.Property<bool?>("IsFixed") .HasColumnType("boolean"); b.Property<byte?>("LightElement") .HasColumnType("smallint"); b.Property<short?>("LightResistance") .HasColumnType("smallint"); b.Property<short?>("MagicDefence") .HasColumnType("smallint"); b.Property<short?>("MaxElementRate") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.Property<byte?>("ShellRarity") .HasColumnType("smallint"); b.Property<byte?>("WaterElement") .HasColumnType("smallint"); b.Property<short?>("WaterResistance") .HasColumnType("smallint"); b.Property<long?>("Xp") .HasColumnType("bigint"); b.HasDiscriminator().HasValue("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.SpecialistInstance", b => { b.HasBaseType("NosCore.Database.Entities.WearableInstance"); b.Property<short>("SlDamage") .HasColumnType("smallint"); b.Property<short>("SlDefence") .HasColumnType("smallint"); b.Property<short>("SlElement") .HasColumnType("smallint"); b.Property<short>("SlHp") .HasColumnType("smallint"); b.Property<byte>("SpDamage") .HasColumnType("smallint"); b.Property<byte>("SpDark") .HasColumnType("smallint"); b.Property<byte>("SpDefence") .HasColumnType("smallint"); b.Property<byte>("SpElement") .HasColumnType("smallint"); b.Property<byte>("SpFire") .HasColumnType("smallint"); b.Property<byte>("SpHp") .HasColumnType("smallint"); b.Property<byte>("SpLevel") .HasColumnType("smallint"); b.Property<byte>("SpLight") .HasColumnType("smallint"); b.Property<byte>("SpStoneUpgrade") .HasColumnType("smallint"); b.Property<byte>("SpWater") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("SpecialistInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.BoxInstance", b => { b.HasBaseType("NosCore.Database.Entities.SpecialistInstance"); b.Property<short?>("HoldingVNum") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("BoxInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.HasOne("NosCore.Database.Entities.Act", "Act") .WithMany("ActParts") .HasForeignKey("ActId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("BCards") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("BCards") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("BCards") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("BCards") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Card"); b.Navigation("Item"); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("BazaarItem") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Seller") .WithMany("BazaarItem") .HasForeignKey("SellerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Seller"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("Character") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Script", "Script") .WithMany("Characters") .HasForeignKey("CurrentScriptId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Character") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); b.Navigation("Map"); b.Navigation("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.HasOne("NosCore.Database.Entities.ActPart", "ActPart") .WithMany("CharacterActParts") .HasForeignKey("ActPartId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterActParts") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ActPart"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterQuest") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("CharacterQuest") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.HasOne("NosCore.Database.Entities.CharacterQuest", "CharacterQuest") .WithMany("CharacterQuestObjective") .HasForeignKey("CharacterQuestId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestObjective", "QuestObjective") .WithMany("CharacterQuestObjective") .HasForeignKey("QuestObjectiveId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.HasOne("NosCore.Database.Entities.Character", "Character1") .WithMany("CharacterRelation1") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character2") .WithMany("CharacterRelation2") .HasForeignKey("RelatedCharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character1"); b.Navigation("Character2"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterSkill") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("CharacterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("Combo") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("Drops") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Drop") .HasForeignKey("MonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Drop") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapType"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.HasOne("NosCore.Database.Entities.WearableInstance", "WearableInstance") .WithMany() .HasForeignKey("WearableInstanceId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("FamilyCharacter") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyCharacters") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyLogs") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Inventory") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("InventoryItemInstance") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("ItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "BoundCharacter") .WithMany() .HasForeignKey("BoundCharacterId"); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ItemInstances") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("BoundCharacter"); b.Navigation("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("Mail") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Character", "Receiver") .WithMany("Mail1") .HasForeignKey("ReceiverId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Sender") .WithMany("Mail") .HasForeignKey("SenderId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("ItemInstance"); b.Navigation("Receiver"); b.Navigation("Sender"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapMonster") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapMonster") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.HasOne("NosCore.Database.Entities.NpcTalk", "NpcTalk") .WithMany("MapNpc") .HasForeignKey("Dialog") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapNpc") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapNpc") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); b.Navigation("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("MapTypes") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.RespawnMapType", "ReturnMapType") .WithMany("MapTypes1") .HasForeignKey("ReturnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("RespawnMapType"); b.Navigation("ReturnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapTypeMap") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("MapTypeMap") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Mate") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Mate") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.HasOne("NosCore.Database.Entities.Character", "Owner") .WithMany("Miniland") .HasForeignKey("OwnerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Owner"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.HasOne("NosCore.Database.Entities.InventoryItemInstance", "InventoryItemInstance") .WithMany("MinilandObject") .HasForeignKey("InventoryItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("NpcMonsterSkill") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("NpcMonsterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("PenaltyLog") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Portal") .HasForeignKey("DestinationMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map1") .WithMany("Portal1") .HasForeignKey("SourceMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("Map1"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestObjective") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestQuestReward") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestReward", "QuestReward") .WithMany("QuestQuestReward") .HasForeignKey("QuestRewardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); b.Navigation("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("QuicklistEntry") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Recipe") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Recipe") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("RecipeItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Recipe", "Recipe") .WithMany("RecipeItem") .HasForeignKey("RecipeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Respawn") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Respawn") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("Respawn") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Map"); b.Navigation("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("RespawnMapType") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.HasOne("NosCore.Database.Entities.Item", "ItemGenerated") .WithMany("RollGeneratedItem2") .HasForeignKey("ItemGeneratedVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Item", "OriginalItem") .WithMany("RollGeneratedItem") .HasForeignKey("OriginalItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemGenerated"); b.Navigation("OriginalItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("ScriptedInstance") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Shop") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ShopItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopItem") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopSkill") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("ShopSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Shop"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBonus") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("StaticBuff") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBuff") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Card"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Teleporter") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Teleporter") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Title") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Warehouses") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("Warehouses") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("WarehouseItems") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Warehouse", "Warehouse") .WithMany("WarehouseItems") .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Navigation("Character"); b.Navigation("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Navigation("ActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Navigation("CharacterActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Navigation("BCards"); b.Navigation("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Navigation("BazaarItem"); b.Navigation("CharacterActParts"); b.Navigation("CharacterQuest"); b.Navigation("CharacterRelation1"); b.Navigation("CharacterRelation2"); b.Navigation("CharacterSkill"); b.Navigation("FamilyCharacter"); b.Navigation("Inventory"); b.Navigation("Mail"); b.Navigation("Mail1"); b.Navigation("Mate"); b.Navigation("Miniland"); b.Navigation("QuicklistEntry"); b.Navigation("Respawn"); b.Navigation("StaticBonus"); b.Navigation("StaticBuff"); b.Navigation("Title"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Navigation("FamilyCharacters"); b.Navigation("FamilyLogs"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Navigation("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("ItemInstances"); b.Navigation("Recipe"); b.Navigation("RecipeItem"); b.Navigation("RollGeneratedItem"); b.Navigation("RollGeneratedItem2"); b.Navigation("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Navigation("BazaarItem"); b.Navigation("InventoryItemInstance"); b.Navigation("Mail"); b.Navigation("WarehouseItems"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Navigation("Character"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("MapTypeMap"); b.Navigation("Portal"); b.Navigation("Portal1"); b.Navigation("Respawn"); b.Navigation("RespawnMapType"); b.Navigation("ScriptedInstance"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Navigation("Recipe"); b.Navigation("Shop"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Navigation("Drops"); b.Navigation("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("Mate"); b.Navigation("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Navigation("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Navigation("MapTypes"); b.Navigation("MapTypes1"); b.Navigation("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Navigation("Characters"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Navigation("ShopItem"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Navigation("BCards"); b.Navigation("CharacterSkill"); b.Navigation("Combo"); b.Navigation("NpcMonsterSkill"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Navigation("WarehouseItems"); }); #pragma warning restore 612, 618 } } } ================================================ FILE: src/NosCore.Database/Migrations/20260420231052_AddNpcMonsterCanWalk.cs ================================================ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace NosCore.Database.Migrations { /// <inheritdoc /> public partial class AddNpcMonsterCanWalk : Migration { /// <inheritdoc /> protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AddColumn<bool>( name: "CanWalk", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); } /// <inheritdoc /> protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropColumn( name: "CanWalk", table: "NpcMonster"); } } } ================================================ FILE: src/NosCore.Database/Migrations/20260421034800_ParseMonsterDatExtras.Designer.cs ================================================ // <auto-generated /> using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using NodaTime; using NosCore.Database; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace NosCore.Database.Migrations { [DbContext(typeof(NosCoreContext))] [Migration("20260421034800_ParseMonsterDatExtras")] partial class ParseMonsterDatExtras { /// <inheritdoc /> protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "10.0.6") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "audit_log_type", new[] { "account_creation", "character_creation", "email_update" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "authority_type", new[] { "user", "moderator", "game_master", "administrator", "root", "closed", "banned", "unconfirmed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_class_type", new[] { "adventurer", "swordsman", "archer", "mage", "martial_artist" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_relation_type", new[] { "friend", "hidden_spouse", "spouse", "blocked" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_state", new[] { "active", "inactive" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_type", new[] { "neutral", "fire", "water", "light", "dark" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "equipment_type", new[] { "main_weapon", "armor", "hat", "gloves", "boots", "secondary_weapon", "necklace", "ring", "bracelet", "mask", "fairy", "amulet", "sp", "costume_suit", "costume_hat", "weapon_skin", "wing_skin" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority", new[] { "head", "assistant", "manager", "member" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority_type", new[] { "none", "put", "all" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_log_type", new[] { "daily_message", "raid_won", "rainbow_battle", "family_xp", "family_level_up", "level_up", "item_upgraded", "right_changed", "authority_changed", "family_managed", "user_managed", "ware_house_added", "ware_house_removed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_member_rank", new[] { "nothing", "old_uncle", "old_aunt", "father", "mother", "uncle", "aunt", "brother", "sister", "spouse", "brother2", "sister2", "old_son", "old_daugter", "middle_son", "middle_daughter", "young_son", "young_daugter", "old_little_son", "old_little_daughter", "little_son", "little_daughter", "middle_little_son", "middle_little_daugter" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "gender_type", new[] { "male", "female" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_color_type", new[] { "dark_purple", "yellow", "blue", "purple", "orange", "brown", "green", "dark_grey", "light_blue", "pink_red", "light_yellow", "light_pink", "light_green", "light_grey", "sky_blue", "black", "dark_orange", "dark_orange_variant2", "dark_orange_variant3", "dark_orange_variant4", "dark_orange_variant5", "dark_orange_variant6", "light_orange", "light_light_orange", "light_light_light_orange", "light_light_light_light_orange", "super_light_orange", "dark_yellow", "light_light_yellow", "kaki_yellow", "super_light_yellow", "super_light_yellow2", "super_light_yellow3", "little_dark_yellow", "yellow_variant", "yellow_variant1", "yellow_variant2", "yellow_variant3", "yellow_variant4", "yellow_variant5", "yellow_variant6", "yellow_variant7", "yellow_variant8", "yellow_variant9", "green_variant", "green_variant1", "dark_green_variant", "green_more_dark_variant", "green_variant2", "green_variant3", "green_variant4", "green_variant5", "green_variant6", "green_variant7", "green_variant8", "green_variant9", "green_variant10", "green_variant11", "green_variant12", "green_variant13", "green_variant14", "green_variant15", "green_variant16", "green_variant17", "green_variant18", "green_variant19", "green_variant20", "light_blue_variant1", "light_blue_variant2", "light_blue_variant3", "light_blue_variant4", "light_blue_variant5", "light_blue_variant6", "light_blue_variant7", "light_blue_variant8", "light_blue_variant9", "light_blue_variant10", "light_blue_variant11", "light_blue_variant12", "light_blue_variant13", "dark_black", "light_blue_variant14", "light_blue_variant15", "light_blue_variant16", "light_blue_variant17", "blue_variant", "blue_variant_dark", "blue_variant_dark_dark", "blue_variant_dark_dark2", "flash_blue", "flash_blue_dark", "flash_blue_dark2", "flash_blue_dark3", "flash_blue_dark4", "flash_blue_dark5", "flash_blue_dark6", "flash_blue_dark7", "flash_blue_dark8", "flash_blue_dark9", "white", "flash_blue_dark10", "flash_blue1", "flash_blue2", "flash_blue3", "flash_blue4", "flash_blue5", "flash_purple", "flash_light_purple", "flash_light_purple2", "flash_light_purple3", "flash_light_purple4", "flash_light_purple5", "light_purple", "purple_variant1", "purple_variant2", "purple_variant3", "purple_variant4", "purple_variant5", "purple_variant6", "purple_variant7", "purple_variant8", "purple_variant9", "purple_variant10", "purple_variant11", "purple_variant12", "purple_variant13", "purple_variant14", "purple_variant15" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_style_type", new[] { "hair_style_a", "hair_style_b", "hair_style_c", "hair_style_d", "no_hair" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_effect_type", new[] { "no_effect", "teleport", "apply_hair_die", "apply_hair_style", "speaker", "marriage_proposal", "undefined", "sp_charger", "dropped_sp_recharger", "premium_sp_recharger", "crafted_sp_recharger", "specialist_medal", "apply_skin_partner", "change_gender", "point_initialisation", "sealed_tarot_card", "tarot_card", "red_amulet", "blue_amulet", "reinforcement_amulet", "heroic", "random_heroic", "attack_amulet", "defense_amulet", "speed_booster", "box_effect", "vehicle", "gold_nos_merchant_upgrade", "silver_nos_merchant_upgrade", "inventory_upgrade", "pet_space_upgrade", "pet_basket_upgrade", "pet_backpack_upgrade", "inventory_ticket_upgrade", "buff_potions", "marriage_separation" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_type", new[] { "weapon", "armor", "fashion", "jewelery", "specialist", "box", "shell", "main", "upgrade", "production", "map", "special", "potion", "event", "title", "quest1", "sell", "food", "snack", "magical", "part", "teacher", "ammo", "quest2", "house", "garden", "minigame", "terrace", "miniland_theme" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "mate_type", new[] { "partner", "pet" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "miniland_state", new[] { "open", "private", "lock" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "monster_type", new[] { "unknown", "partner", "npc", "well", "portal", "boss", "elite", "peapod", "special", "gem_space_time" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "noscore_pocket_type", new[] { "equipment", "main", "etc", "miniland", "specialist", "costume", "wear" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "penalty_type", new[] { "muted", "banned", "block_exp", "block_f_exp", "block_rep", "warning" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "portal_type", new[] { "ts_normal", "closed", "open", "miniland", "ts_end", "ts_end_closed", "exit", "exit_closed", "raid", "effect", "blue_raid", "dark_raid", "time_space", "shop_teleport", "map_portal" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "quest_type", new[] { "hunt", "special_collect", "collect_in_raid", "brings", "capture_without_getting_the_monster", "capture", "times_space", "product", "number_of_kill", "target_reput", "ts_point", "dialog1", "collect_in_ts", "required", "wear", "needed", "collect", "transmit_gold", "go_to", "collect_map_entity", "use", "dialog2", "un_know", "inspect", "win_raid", "flower_quest" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "region_type", new[] { "en", "de", "fr", "it", "pl", "es", "ru", "cs", "tr" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "scripted_instance_type", new[] { "time_space", "raid", "raid_act4" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "static_bonus_type", new[] { "bazaar_medal_gold", "bazaar_medal_silver", "back_pack", "pet_basket", "pet_back_pack", "inventory_ticket_upgrade" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "teleporter_type", new[] { "teleporter", "teleporter_on_map" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "warehouse_type", new[] { "warehouse", "family_ware_house", "pet_warehouse" }); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Property<long>("AccountId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("AccountId")); b.Property<short>("Authority") .HasColumnType("smallint"); b.Property<long>("BankMoney") .HasColumnType("bigint"); b.Property<string>("Email") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ItemShopMoney") .HasColumnType("bigint"); b.Property<int>("Language") .HasColumnType("integer"); b.Property<string>("MfaSecret") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthPassword") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthSalt") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Password") .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("RegistrationIp") .HasMaxLength(45) .HasColumnType("character varying(45)"); b.Property<string>("VerificationToken") .HasMaxLength(32) .HasColumnType("character varying(32)"); b.HasKey("AccountId"); b.HasIndex("Name") .IsUnique(); b.ToTable("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("Scene") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("ActId"); b.ToTable("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("ActPartNumber") .HasColumnType("smallint"); b.Property<byte>("MaxTs") .HasColumnType("smallint"); b.HasKey("ActPartId"); b.HasIndex("ActId"); b.ToTable("ActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.AuditLog", b => { b.Property<Guid>("AuditId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("AuditLogType") .HasColumnType("integer"); b.Property<string>("TargetId") .IsRequired() .HasMaxLength(80) .HasColumnType("character varying(80)"); b.Property<string>("TargetType") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)"); b.Property<Instant>("Time") .HasColumnType("timestamp with time zone"); b.Property<string>("Value") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("AuditId"); b.ToTable("AuditLog"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.Property<short>("BCardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("BCardId")); b.Property<short?>("CardId") .HasColumnType("smallint"); b.Property<byte>("CastType") .HasColumnType("smallint"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<bool>("IsLevelDivided") .HasColumnType("boolean"); b.Property<bool>("IsLevelScaled") .HasColumnType("boolean"); b.Property<short?>("ItemVNum") .HasColumnType("smallint"); b.Property<short?>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<int>("SecondData") .HasColumnType("integer"); b.Property<short?>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("SubType") .HasColumnType("smallint"); b.Property<int>("ThirdData") .HasColumnType("integer"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("BCardId"); b.HasIndex("CardId"); b.HasIndex("ItemVNum"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("BCard"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.Property<long>("BazaarItemId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("BazaarItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<bool>("IsPackage") .HasColumnType("boolean"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<bool>("MedalUsed") .HasColumnType("boolean"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<long>("SellerId") .HasColumnType("bigint"); b.HasKey("BazaarItemId"); b.HasIndex("ItemInstanceId"); b.HasIndex("SellerId"); b.ToTable("BazaarItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<byte>("BuffType") .HasColumnType("smallint"); b.Property<int>("Delay") .HasColumnType("integer"); b.Property<int>("Duration") .HasColumnType("integer"); b.Property<int>("EffectId") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("Propability") .HasColumnType("smallint"); b.Property<short>("TimeoutBuff") .HasColumnType("smallint"); b.Property<byte>("TimeoutBuffChance") .HasColumnType("smallint"); b.HasKey("CardId"); b.ToTable("Card"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Property<long>("CharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("CharacterId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<int>("Act4Dead") .HasColumnType("integer"); b.Property<int>("Act4Kill") .HasColumnType("integer"); b.Property<int>("Act4Points") .HasColumnType("integer"); b.Property<int>("ArenaWinner") .HasColumnType("integer"); b.Property<string>("Biography") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("BuffBlocked") .HasColumnType("boolean"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Compliment") .HasColumnType("smallint"); b.Property<Guid?>("CurrentScriptId") .HasColumnType("uuid"); b.Property<short>("Dignity") .HasColumnType("smallint"); b.Property<int>("Elo") .HasColumnType("integer"); b.Property<bool>("EmoticonsBlocked") .HasColumnType("boolean"); b.Property<bool>("ExchangeBlocked") .HasColumnType("boolean"); b.Property<byte>("Faction") .HasColumnType("smallint"); b.Property<bool>("FamilyRequestBlocked") .HasColumnType("boolean"); b.Property<bool>("FriendRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("Gender") .HasColumnType("smallint"); b.Property<long>("Gold") .HasColumnType("bigint"); b.Property<bool>("GroupRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("HairColor") .HasColumnType("smallint"); b.Property<byte>("HairStyle") .HasColumnType("smallint"); b.Property<bool>("HeroChatBlocked") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<long>("HeroXp") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("HpBlocked") .HasColumnType("boolean"); b.Property<byte>("JobLevel") .HasColumnType("smallint"); b.Property<long>("JobLevelXp") .HasColumnType("bigint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<long>("LevelXp") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<int>("MasterPoints") .HasColumnType("integer"); b.Property<int>("MasterTicket") .HasColumnType("integer"); b.Property<byte>("MaxMateCount") .HasColumnType("smallint"); b.Property<bool>("MinilandInviteBlocked") .HasColumnType("boolean"); b.Property<bool>("MouseAimLock") .HasColumnType("boolean"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("Prefix") .HasMaxLength(25) .HasColumnType("character varying(25)"); b.Property<bool>("QuickGetUp") .HasColumnType("boolean"); b.Property<long>("RagePoint") .HasColumnType("bigint"); b.Property<long>("Reput") .HasColumnType("bigint"); b.Property<byte>("ServerId") .HasColumnType("smallint"); b.Property<bool>("ShouldRename") .HasColumnType("boolean"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<int>("SpAdditionPoint") .HasColumnType("integer"); b.Property<int>("SpPoint") .HasColumnType("integer"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("TalentLose") .HasColumnType("integer"); b.Property<int>("TalentSurrender") .HasColumnType("integer"); b.Property<int>("TalentWin") .HasColumnType("integer"); b.Property<bool>("WhisperBlocked") .HasColumnType("boolean"); b.HasKey("CharacterId"); b.HasIndex("AccountId"); b.HasIndex("CurrentScriptId"); b.HasIndex("MapId"); b.ToTable("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.HasKey("Id"); b.HasIndex("ActPartId"); b.HasIndex("CharacterId"); b.ToTable("CharacterActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("CompletedOn") .HasColumnType("timestamp with time zone"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("QuestId"); b.ToTable("CharacterQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("CharacterQuestId") .HasColumnType("uuid"); b.Property<int>("Count") .HasColumnType("integer"); b.Property<Guid>("QuestObjectiveId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("QuestObjectiveId"); b.HasIndex("CharacterQuestId", "QuestObjectiveId") .IsUnique(); b.ToTable("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.Property<Guid>("CharacterRelationId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<long>("RelatedCharacterId") .HasColumnType("bigint"); b.Property<short>("RelationType") .HasColumnType("smallint"); b.HasKey("CharacterRelationId"); b.HasIndex("CharacterId"); b.HasIndex("RelatedCharacterId"); b.ToTable("CharacterRelation"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("SkillVNum"); b.ToTable("CharacterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.Property<int>("ComboId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ComboId")); b.Property<short>("Animation") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("Hit") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("ComboId"); b.HasIndex("SkillVNum"); b.ToTable("Combo"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.Property<short>("DropId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DropId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("DropChance") .HasColumnType("integer"); b.Property<short?>("MapTypeId") .HasColumnType("smallint"); b.Property<short?>("MonsterVNum") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("DropId"); b.HasIndex("MapTypeId"); b.HasIndex("MonsterVNum"); b.HasIndex("VNum"); b.ToTable("Drop"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<int>("Value") .HasColumnType("integer"); b.Property<Guid>("WearableInstanceId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("WearableInstanceId"); b.ToTable("EquipmentOption"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Property<long>("FamilyId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyId")); b.Property<int>("FamilyExperience") .HasColumnType("integer"); b.Property<byte>("FamilyFaction") .HasColumnType("smallint"); b.Property<byte>("FamilyHeadGender") .HasColumnType("smallint"); b.Property<byte>("FamilyLevel") .HasColumnType("smallint"); b.Property<string>("FamilyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("ManagerAuthorityType") .HasColumnType("integer"); b.Property<bool>("ManagerCanGetHistory") .HasColumnType("boolean"); b.Property<bool>("ManagerCanInvite") .HasColumnType("boolean"); b.Property<bool>("ManagerCanNotice") .HasColumnType("boolean"); b.Property<bool>("ManagerCanShout") .HasColumnType("boolean"); b.Property<byte>("MaxSize") .HasColumnType("smallint"); b.Property<int>("MemberAuthorityType") .HasColumnType("integer"); b.Property<bool>("MemberCanGetHistory") .HasColumnType("boolean"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("WarehouseSize") .HasColumnType("smallint"); b.HasKey("FamilyId"); b.ToTable("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.Property<long>("FamilyCharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyCharacterId")); b.Property<byte>("Authority") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<string>("DailyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Experience") .HasColumnType("integer"); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Rank") .HasColumnType("smallint"); b.HasKey("FamilyCharacterId"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("FamilyCharacter"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.Property<long>("FamilyLogId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyLogId")); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<string>("FamilyLogData") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("FamilyLogType") .HasColumnType("smallint"); b.Property<Instant>("Timestamp") .HasColumnType("timestamp with time zone"); b.HasKey("FamilyLogId"); b.HasIndex("FamilyId"); b.ToTable("FamilyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NActDesc", b => { b.Property<int>("I18NActDescId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NActDescId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NActDescId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NActDesc"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NBCard", b => { b.Property<int>("I18NbCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NbCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NbCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NBCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NCard", b => { b.Property<int>("I18NCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NItem", b => { b.Property<int>("I18NItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NItemId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NItemId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NItem"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapIdData", b => { b.Property<int>("I18NMapIdDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapIdDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapIdDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapIdData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapPointData", b => { b.Property<int>("I18NMapPointDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapPointDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapPointDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapPointData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonster", b => { b.Property<int>("I18NNpcMonsterId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonsterTalk", b => { b.Property<int>("I18NNpcMonsterTalkId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterTalkId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterTalkId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonsterTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NQuest", b => { b.Property<int>("I18NQuestId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NQuestId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NQuestId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NSkill", b => { b.Property<int>("I18NSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NSkillId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NSkillId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("CharacterId", "Slot", "Type") .IsUnique(); b.ToTable("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Property<short>("VNum") .HasColumnType("smallint"); b.Property<byte>("BasicUpgrade") .HasColumnType("smallint"); b.Property<byte>("CellonLvl") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte>("DarkElement") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<int>("Effect") .HasColumnType("integer"); b.Property<int>("EffectValue") .HasColumnType("integer"); b.Property<int>("Element") .HasColumnType("integer"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<byte>("EquipmentSlot") .HasColumnType("smallint"); b.Property<byte>("FireElement") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<bool>("Flag1") .HasColumnType("boolean"); b.Property<bool>("Flag2") .HasColumnType("boolean"); b.Property<bool>("Flag3") .HasColumnType("boolean"); b.Property<bool>("Flag4") .HasColumnType("boolean"); b.Property<bool>("Flag6") .HasColumnType("boolean"); b.Property<bool>("Flag7") .HasColumnType("boolean"); b.Property<bool>("Flag8") .HasColumnType("boolean"); b.Property<bool>("Flag9") .HasColumnType("boolean"); b.Property<byte>("Height") .HasColumnType("smallint"); b.Property<short>("HitRate") .HasColumnType("smallint"); b.Property<short>("Hp") .HasColumnType("smallint"); b.Property<short>("HpRegeneration") .HasColumnType("smallint"); b.Property<bool>("IsColored") .HasColumnType("boolean"); b.Property<bool>("IsConsumable") .HasColumnType("boolean"); b.Property<bool>("IsDroppable") .HasColumnType("boolean"); b.Property<bool>("IsHeroic") .HasColumnType("boolean"); b.Property<bool>("IsMinilandActionable") .HasColumnType("boolean"); b.Property<bool>("IsSoldable") .HasColumnType("boolean"); b.Property<bool>("IsTradable") .HasColumnType("boolean"); b.Property<bool>("IsWarehouse") .HasColumnType("boolean"); b.Property<byte>("ItemSubType") .HasColumnType("smallint"); b.Property<byte>("ItemType") .HasColumnType("smallint"); b.Property<long>("ItemValidTime") .HasColumnType("bigint"); b.Property<byte>("LevelJobMinimum") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("LightElement") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<byte>("MaxCellon") .HasColumnType("smallint"); b.Property<byte>("MaxCellonLvl") .HasColumnType("smallint"); b.Property<short>("MaxElementRate") .HasColumnType("smallint"); b.Property<byte>("MaximumAmmo") .HasColumnType("smallint"); b.Property<int>("MinilandObjectPoint") .HasColumnType("integer"); b.Property<short>("MoreHp") .HasColumnType("smallint"); b.Property<short>("MoreMp") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("Mp") .HasColumnType("smallint"); b.Property<short>("MpRegeneration") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<short>("PvpDefence") .HasColumnType("smallint"); b.Property<byte>("PvpStrength") .HasColumnType("smallint"); b.Property<short>("ReduceOposantResistance") .HasColumnType("smallint"); b.Property<long>("ReputPrice") .HasColumnType("bigint"); b.Property<byte>("ReputationMinimum") .HasColumnType("smallint"); b.Property<bool>("RequireBinding") .HasColumnType("boolean"); b.Property<short>("SecondMorph") .HasColumnType("smallint"); b.Property<int>("SecondaryElement") .HasColumnType("integer"); b.Property<byte>("Sex") .HasColumnType("smallint"); b.Property<byte>("SpType") .HasColumnType("smallint"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("WaitDelay") .HasColumnType("smallint"); b.Property<byte>("WaterElement") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<byte>("Width") .HasColumnType("smallint"); b.HasKey("VNum"); b.ToTable("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<long?>("BoundCharacterId") .HasColumnType("bigint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("Design") .HasColumnType("smallint"); b.Property<string>("Discriminator") .IsRequired() .HasMaxLength(21) .HasColumnType("character varying(21)"); b.Property<int>("DurabilityPoint") .HasColumnType("integer"); b.Property<Instant?>("ItemDeleteTime") .HasColumnType("timestamp with time zone"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("BoundCharacterId"); b.HasIndex("ItemVNum"); b.ToTable("ItemInstance"); b.HasDiscriminator<string>("Discriminator").HasValue("ItemInstance"); b.UseTphMappingStrategy(); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.Property<long>("MailId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MailId")); b.Property<short?>("Armor") .HasColumnType("smallint"); b.Property<short?>("CostumeHat") .HasColumnType("smallint"); b.Property<short?>("CostumeSuit") .HasColumnType("smallint"); b.Property<Instant>("Date") .HasColumnType("timestamp with time zone"); b.Property<short?>("Fairy") .HasColumnType("smallint"); b.Property<short?>("Hat") .HasColumnType("smallint"); b.Property<bool>("IsOpened") .HasColumnType("boolean"); b.Property<bool>("IsSenderCopy") .HasColumnType("boolean"); b.Property<Guid?>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short?>("MainWeapon") .HasColumnType("smallint"); b.Property<short?>("Mask") .HasColumnType("smallint"); b.Property<string>("Message") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ReceiverId") .HasColumnType("bigint"); b.Property<short?>("SecondaryWeapon") .HasColumnType("smallint"); b.Property<byte?>("SenderCharacterClass") .HasColumnType("smallint"); b.Property<byte?>("SenderGender") .HasColumnType("smallint"); b.Property<byte?>("SenderHairColor") .HasColumnType("smallint"); b.Property<byte?>("SenderHairStyle") .HasColumnType("smallint"); b.Property<long?>("SenderId") .HasColumnType("bigint"); b.Property<short?>("SenderMorphId") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short?>("WeaponSkin") .HasColumnType("smallint"); b.Property<short?>("WingSkin") .HasColumnType("smallint"); b.HasKey("MailId"); b.HasIndex("ItemInstanceId"); b.HasIndex("ReceiverId"); b.HasIndex("SenderId"); b.ToTable("Mail"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<byte[]>("Data") .IsRequired() .HasColumnType("bytea"); b.Property<int>("Music") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("ShopAllowed") .HasColumnType("boolean"); b.HasKey("MapId"); b.ToTable("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.Property<int>("MapMonsterId") .HasColumnType("integer"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapMonsterId"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short?>("Dialog") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("EffectDelay") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<bool>("IsSitting") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapNpcId"); b.HasIndex("Dialog"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.Property<string>("MapTypeName") .IsRequired() .HasColumnType("text"); b.Property<short>("PotionDelay") .HasColumnType("smallint"); b.Property<long?>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<long?>("ReturnMapTypeId") .HasColumnType("bigint"); b.HasKey("MapTypeId"); b.HasIndex("RespawnMapTypeId"); b.HasIndex("ReturnMapTypeId"); b.ToTable("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.Property<short>("MapTypeMapId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("MapTypeMapId")); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.HasKey("MapTypeMapId"); b.HasIndex("MapTypeId"); b.HasIndex("MapId", "MapTypeId") .IsUnique(); b.ToTable("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.Property<long>("MateId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MateId")); b.Property<byte>("Attack") .HasColumnType("smallint"); b.Property<bool>("CanPickUp") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<byte>("Defence") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<long>("Experience") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("IsSummonable") .HasColumnType("boolean"); b.Property<bool>("IsTeamMember") .HasColumnType("boolean"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("Loyalty") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("MateType") .HasColumnType("smallint"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short>("Skin") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MateId"); b.HasIndex("CharacterId"); b.HasIndex("VNum"); b.ToTable("Mate"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.Property<Guid>("MinilandId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("DailyVisitCount") .HasColumnType("integer"); b.Property<string>("MinilandMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("MinilandPoint") .HasColumnType("bigint"); b.Property<long>("OwnerId") .HasColumnType("bigint"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("VisitCount") .HasColumnType("integer"); b.Property<short>("WelcomeMusicInfo") .HasColumnType("smallint"); b.HasKey("MinilandId"); b.HasIndex("OwnerId"); b.ToTable("Miniland"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.Property<Guid>("MinilandObjectId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<Guid?>("InventoryItemInstanceId") .HasColumnType("uuid"); b.Property<byte>("Level1BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level2BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level3BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level4BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level5BoxAmount") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.HasKey("MinilandObjectId"); b.HasIndex("InventoryItemInstanceId"); b.ToTable("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<bool>("AlwaysActive") .HasColumnType("boolean"); b.Property<byte>("AmountRequired") .HasColumnType("smallint"); b.Property<byte>("AttackClass") .HasColumnType("smallint"); b.Property<byte>("AttackUpgrade") .HasColumnType("smallint"); b.Property<byte>("BasicArea") .HasColumnType("smallint"); b.Property<short>("BasicCooldown") .HasColumnType("smallint"); b.Property<byte>("BasicRange") .HasColumnType("smallint"); b.Property<short>("BasicSkill") .HasColumnType("smallint"); b.Property<short>("CModeVNum") .HasColumnType("smallint"); b.Property<bool>("CanCatch") .HasColumnType("boolean"); b.Property<bool>("CanCollect") .HasColumnType("boolean"); b.Property<bool>("CanWalk") .HasColumnType("boolean"); b.Property<bool>("CantDebuff") .HasColumnType("boolean"); b.Property<bool>("CantTargetInfo") .HasColumnType("boolean"); b.Property<bool>("CantVoke") .HasColumnType("boolean"); b.Property<byte>("CellMinRange") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalChance") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<byte>("DefenceUpgrade") .HasColumnType("smallint"); b.Property<bool>("DisappearAfterHitting") .HasColumnType("boolean"); b.Property<bool>("DisappearAfterSeconds") .HasColumnType("boolean"); b.Property<bool>("DisappearAfterSecondsMana") .HasColumnType("boolean"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<bool>("DontDrainHpAfterSeconds") .HasColumnType("boolean"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<int>("GiveDamagePercentage") .HasColumnType("integer"); b.Property<bool>("HasDash") .HasColumnType("boolean"); b.Property<bool>("HasMode") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<int>("HeroXp") .HasColumnType("integer"); b.Property<short>("HpThreshold") .HasColumnType("smallint"); b.Property<bool>("IsHostile") .HasColumnType("boolean"); b.Property<bool>("IsPercent") .HasColumnType("boolean"); b.Property<int>("JobXp") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<byte>("Limiter") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<int>("MaxHp") .HasColumnType("integer"); b.Property<int>("MaxMp") .HasColumnType("integer"); b.Property<int>("Midgard") .HasColumnType("integer"); b.Property<byte>("MonsterType") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("NoAggresiveIcon") .HasColumnType("boolean"); b.Property<byte>("NoticeRange") .HasColumnType("smallint"); b.Property<bool>("OnDefenseOnlyOnce") .HasColumnType("boolean"); b.Property<byte>("Race") .HasColumnType("smallint"); b.Property<byte>("RaceType") .HasColumnType("smallint"); b.Property<short>("RangeThreshold") .HasColumnType("smallint"); b.Property<bool>("RegenerateHpOverTime") .HasColumnType("boolean"); b.Property<int>("RespawnTime") .HasColumnType("integer"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<int>("TakeDamages") .HasColumnType("integer"); b.Property<short>("VNumRequired") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<int>("Xp") .HasColumnType("integer"); b.HasKey("NpcMonsterVNum"); b.ToTable("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.Property<long>("NpcMonsterSkillId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("NpcMonsterSkillId")); b.Property<byte>("Force") .HasColumnType("smallint"); b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<short>("Rate") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("NpcMonsterSkillId"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Property<short>("DialogId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DialogId")); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("DialogId"); b.ToTable("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.Property<int>("PenaltyLogId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PenaltyLogId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<string>("AdminName") .IsRequired() .HasColumnType("text"); b.Property<Instant>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<byte>("Penalty") .HasColumnType("smallint"); b.Property<string>("Reason") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("PenaltyLogId"); b.HasIndex("AccountId"); b.ToTable("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.Property<int>("PortalId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PortalId")); b.Property<short>("DestinationMapId") .HasColumnType("smallint"); b.Property<short>("DestinationX") .HasColumnType("smallint"); b.Property<short>("DestinationY") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<short>("SourceMapId") .HasColumnType("smallint"); b.Property<short>("SourceX") .HasColumnType("smallint"); b.Property<short>("SourceY") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("PortalId"); b.HasIndex("DestinationMapId"); b.HasIndex("SourceMapId"); b.ToTable("Portal"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<bool>("AutoFinish") .HasColumnType("boolean"); b.Property<string>("Desc") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int?>("EndDialogId") .HasColumnType("integer"); b.Property<bool>("IsDaily") .HasColumnType("boolean"); b.Property<bool>("IsSecondary") .HasColumnType("boolean"); b.Property<byte>("LevelMax") .HasColumnType("smallint"); b.Property<byte>("LevelMin") .HasColumnType("smallint"); b.Property<short?>("NextQuestId") .HasColumnType("smallint"); b.Property<short>("QuestType") .HasColumnType("smallint"); b.Property<short?>("RequiredQuestId") .HasColumnType("smallint"); b.Property<int?>("SpecialData") .HasColumnType("integer"); b.Property<int?>("StartDialogId") .HasColumnType("integer"); b.Property<short?>("TargetMap") .HasColumnType("smallint"); b.Property<short?>("TargetX") .HasColumnType("smallint"); b.Property<short?>("TargetY") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("QuestId"); b.ToTable("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Property<Guid>("QuestObjectiveId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<int?>("FourthData") .HasColumnType("integer"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<int?>("SecondData") .HasColumnType("integer"); b.Property<int?>("ThirdData") .HasColumnType("integer"); b.HasKey("QuestObjectiveId"); b.HasIndex("QuestId"); b.ToTable("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<short>("QuestRewardId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("QuestId"); b.HasIndex("QuestRewardId"); b.ToTable("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Property<short>("QuestRewardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("QuestRewardId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("Data") .HasColumnType("integer"); b.Property<byte>("Design") .HasColumnType("smallint"); b.Property<byte>("Rarity") .HasColumnType("smallint"); b.Property<byte>("RewardType") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("QuestRewardId"); b.ToTable("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("IconType") .HasColumnType("smallint"); b.Property<short>("IconVNum") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("QuickListIndex") .HasColumnType("smallint"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.ToTable("QuicklistEntry"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Property<short>("RecipeId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeId")); b.Property<byte>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.HasKey("RecipeId"); b.HasIndex("ItemVNum"); b.HasIndex("MapNpcId"); b.ToTable("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.Property<short>("RecipeItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("RecipeId") .HasColumnType("smallint"); b.HasKey("RecipeItemId"); b.HasIndex("ItemVNum"); b.HasIndex("RecipeId"); b.ToTable("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.Property<long>("RespawnId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("RespawnId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("X") .HasColumnType("smallint"); b.Property<short>("Y") .HasColumnType("smallint"); b.HasKey("RespawnId"); b.HasIndex("CharacterId"); b.HasIndex("MapId"); b.HasIndex("RespawnMapTypeId"); b.ToTable("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("DefaultX") .HasColumnType("smallint"); b.Property<short>("DefaultY") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("RespawnMapTypeId"); b.HasIndex("MapId"); b.ToTable("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.Property<short>("RollGeneratedItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RollGeneratedItemId")); b.Property<bool>("IsRareRandom") .HasColumnType("boolean"); b.Property<bool>("IsSuperReward") .HasColumnType("boolean"); b.Property<byte>("ItemGeneratedAmount") .HasColumnType("smallint"); b.Property<byte>("ItemGeneratedUpgrade") .HasColumnType("smallint"); b.Property<short>("ItemGeneratedVNum") .HasColumnType("smallint"); b.Property<short>("MaximumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("MinimumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("OriginalItemDesign") .HasColumnType("smallint"); b.Property<short>("OriginalItemVNum") .HasColumnType("smallint"); b.Property<short>("Probability") .HasColumnType("smallint"); b.HasKey("RollGeneratedItemId"); b.HasIndex("ItemGeneratedVNum"); b.HasIndex("OriginalItemVNum"); b.ToTable("RollGeneratedItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short?>("Argument1") .HasColumnType("smallint"); b.Property<short?>("Argument2") .HasColumnType("smallint"); b.Property<short?>("Argument3") .HasColumnType("smallint"); b.Property<byte>("ScriptId") .HasColumnType("smallint"); b.Property<short>("ScriptStepId") .HasColumnType("smallint"); b.Property<string>("StepType") .IsRequired() .HasColumnType("text"); b.Property<string>("StringArgument") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("ScriptId", "ScriptStepId") .IsUnique(); b.ToTable("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.Property<short>("ScriptedInstanceId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("ScriptedInstanceId")); b.Property<string>("Label") .HasColumnType("text"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("PositionX") .HasColumnType("smallint"); b.Property<short>("PositionY") .HasColumnType("smallint"); b.Property<string>("Script") .HasMaxLength(2147483647) .HasColumnType("text"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ScriptedInstanceId"); b.HasIndex("MapId"); b.ToTable("ScriptedInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Property<int>("ShopId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopId")); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<byte>("MenuType") .HasColumnType("smallint"); b.Property<byte>("ShopType") .HasColumnType("smallint"); b.HasKey("ShopId"); b.HasIndex("MapNpcId"); b.ToTable("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.Property<int>("ShopItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopItemId")); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("ShopItemId"); b.HasIndex("ItemVNum"); b.HasIndex("ShopId"); b.ToTable("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.Property<int>("ShopSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopSkillId")); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ShopSkillId"); b.HasIndex("ShopId"); b.HasIndex("SkillVNum"); b.ToTable("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<short>("AttackAnimation") .HasColumnType("smallint"); b.Property<short>("CastAnimation") .HasColumnType("smallint"); b.Property<short>("CastEffect") .HasColumnType("smallint"); b.Property<short>("CastId") .HasColumnType("smallint"); b.Property<short>("CastTime") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Cooldown") .HasColumnType("smallint"); b.Property<byte>("CpCost") .HasColumnType("smallint"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<byte>("HitType") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("MinimumAdventurerLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumArcherLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumMagicianLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumSwordmanLevel") .HasColumnType("smallint"); b.Property<short>("MpCost") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Price") .HasColumnType("integer"); b.Property<byte>("Range") .HasColumnType("smallint"); b.Property<byte>("SkillType") .HasColumnType("smallint"); b.Property<byte>("TargetRange") .HasColumnType("smallint"); b.Property<byte>("TargetType") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("UpgradeSkill") .HasColumnType("smallint"); b.Property<short>("UpgradeType") .HasColumnType("smallint"); b.HasKey("SkillVNum"); b.ToTable("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.Property<long>("StaticBonusId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBonusId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<byte>("StaticBonusType") .HasColumnType("smallint"); b.HasKey("StaticBonusId"); b.HasIndex("CharacterId"); b.ToTable("StaticBonus"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.Property<long>("StaticBuffId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBuffId")); b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<int>("RemainingTime") .HasColumnType("integer"); b.HasKey("StaticBuffId"); b.HasIndex("CardId"); b.HasIndex("CharacterId"); b.ToTable("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.Property<short>("TeleporterId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("TeleporterId")); b.Property<short>("Index") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("TeleporterId"); b.HasIndex("MapId"); b.HasIndex("MapNpcId"); b.ToTable("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<bool>("Active") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("TitleType") .HasColumnType("smallint"); b.Property<bool>("Visible") .HasColumnType("boolean"); b.HasKey("Id"); b.HasIndex("CharacterId", "TitleType") .IsUnique(); b.ToTable("Title"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long?>("CharacterId") .HasColumnType("bigint"); b.Property<long?>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<Guid>("WarehouseId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("WarehouseId"); b.ToTable("WarehouseItem"); }); modelBuilder.Entity("NosCore.Database.Entities.UsableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.ToTable("ItemInstance", t => { t.Property("Hp") .HasColumnName("UsableInstance_Hp"); t.Property("Mp") .HasColumnName("UsableInstance_Mp"); }); b.HasDiscriminator().HasValue("UsableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.WearableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<byte?>("Ammo") .HasColumnType("smallint"); b.Property<byte?>("Cellon") .HasColumnType("smallint"); b.Property<short?>("CloseDefence") .HasColumnType("smallint"); b.Property<short?>("Concentrate") .HasColumnType("smallint"); b.Property<short?>("CriticalDodge") .HasColumnType("smallint"); b.Property<byte?>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short?>("CriticalRate") .HasColumnType("smallint"); b.Property<short?>("DamageMaximum") .HasColumnType("smallint"); b.Property<short?>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte?>("DarkElement") .HasColumnType("smallint"); b.Property<short?>("DarkResistance") .HasColumnType("smallint"); b.Property<short?>("DefenceDodge") .HasColumnType("smallint"); b.Property<short?>("DistanceDefence") .HasColumnType("smallint"); b.Property<short?>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<short?>("ElementRate") .HasColumnType("smallint"); b.Property<byte?>("FireElement") .HasColumnType("smallint"); b.Property<short?>("FireResistance") .HasColumnType("smallint"); b.Property<short?>("HitRate") .HasColumnType("smallint"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<bool?>("IsEmpty") .HasColumnType("boolean"); b.Property<bool?>("IsFixed") .HasColumnType("boolean"); b.Property<byte?>("LightElement") .HasColumnType("smallint"); b.Property<short?>("LightResistance") .HasColumnType("smallint"); b.Property<short?>("MagicDefence") .HasColumnType("smallint"); b.Property<short?>("MaxElementRate") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.Property<byte?>("ShellRarity") .HasColumnType("smallint"); b.Property<byte?>("WaterElement") .HasColumnType("smallint"); b.Property<short?>("WaterResistance") .HasColumnType("smallint"); b.Property<long?>("Xp") .HasColumnType("bigint"); b.HasDiscriminator().HasValue("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.SpecialistInstance", b => { b.HasBaseType("NosCore.Database.Entities.WearableInstance"); b.Property<short>("SlDamage") .HasColumnType("smallint"); b.Property<short>("SlDefence") .HasColumnType("smallint"); b.Property<short>("SlElement") .HasColumnType("smallint"); b.Property<short>("SlHp") .HasColumnType("smallint"); b.Property<byte>("SpDamage") .HasColumnType("smallint"); b.Property<byte>("SpDark") .HasColumnType("smallint"); b.Property<byte>("SpDefence") .HasColumnType("smallint"); b.Property<byte>("SpElement") .HasColumnType("smallint"); b.Property<byte>("SpFire") .HasColumnType("smallint"); b.Property<byte>("SpHp") .HasColumnType("smallint"); b.Property<byte>("SpLevel") .HasColumnType("smallint"); b.Property<byte>("SpLight") .HasColumnType("smallint"); b.Property<byte>("SpStoneUpgrade") .HasColumnType("smallint"); b.Property<byte>("SpWater") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("SpecialistInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.BoxInstance", b => { b.HasBaseType("NosCore.Database.Entities.SpecialistInstance"); b.Property<short?>("HoldingVNum") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("BoxInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.HasOne("NosCore.Database.Entities.Act", "Act") .WithMany("ActParts") .HasForeignKey("ActId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("BCards") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("BCards") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("BCards") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("BCards") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Card"); b.Navigation("Item"); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("BazaarItem") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Seller") .WithMany("BazaarItem") .HasForeignKey("SellerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Seller"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("Character") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Script", "Script") .WithMany("Characters") .HasForeignKey("CurrentScriptId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Character") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); b.Navigation("Map"); b.Navigation("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.HasOne("NosCore.Database.Entities.ActPart", "ActPart") .WithMany("CharacterActParts") .HasForeignKey("ActPartId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterActParts") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ActPart"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterQuest") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("CharacterQuest") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.HasOne("NosCore.Database.Entities.CharacterQuest", "CharacterQuest") .WithMany("CharacterQuestObjective") .HasForeignKey("CharacterQuestId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestObjective", "QuestObjective") .WithMany("CharacterQuestObjective") .HasForeignKey("QuestObjectiveId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.HasOne("NosCore.Database.Entities.Character", "Character1") .WithMany("CharacterRelation1") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character2") .WithMany("CharacterRelation2") .HasForeignKey("RelatedCharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character1"); b.Navigation("Character2"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterSkill") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("CharacterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("Combo") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("Drops") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Drop") .HasForeignKey("MonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Drop") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapType"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.HasOne("NosCore.Database.Entities.WearableInstance", "WearableInstance") .WithMany() .HasForeignKey("WearableInstanceId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("FamilyCharacter") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyCharacters") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyLogs") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Inventory") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("InventoryItemInstance") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("ItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "BoundCharacter") .WithMany() .HasForeignKey("BoundCharacterId"); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ItemInstances") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("BoundCharacter"); b.Navigation("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("Mail") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Character", "Receiver") .WithMany("Mail1") .HasForeignKey("ReceiverId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Sender") .WithMany("Mail") .HasForeignKey("SenderId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("ItemInstance"); b.Navigation("Receiver"); b.Navigation("Sender"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapMonster") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapMonster") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.HasOne("NosCore.Database.Entities.NpcTalk", "NpcTalk") .WithMany("MapNpc") .HasForeignKey("Dialog") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapNpc") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapNpc") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); b.Navigation("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("MapTypes") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.RespawnMapType", "ReturnMapType") .WithMany("MapTypes1") .HasForeignKey("ReturnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("RespawnMapType"); b.Navigation("ReturnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapTypeMap") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("MapTypeMap") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Mate") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Mate") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.HasOne("NosCore.Database.Entities.Character", "Owner") .WithMany("Miniland") .HasForeignKey("OwnerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Owner"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.HasOne("NosCore.Database.Entities.InventoryItemInstance", "InventoryItemInstance") .WithMany("MinilandObject") .HasForeignKey("InventoryItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("NpcMonsterSkill") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("NpcMonsterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("PenaltyLog") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Portal") .HasForeignKey("DestinationMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map1") .WithMany("Portal1") .HasForeignKey("SourceMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("Map1"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestObjective") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestQuestReward") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestReward", "QuestReward") .WithMany("QuestQuestReward") .HasForeignKey("QuestRewardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); b.Navigation("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("QuicklistEntry") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Recipe") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Recipe") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("RecipeItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Recipe", "Recipe") .WithMany("RecipeItem") .HasForeignKey("RecipeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Respawn") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Respawn") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("Respawn") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Map"); b.Navigation("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("RespawnMapType") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.HasOne("NosCore.Database.Entities.Item", "ItemGenerated") .WithMany("RollGeneratedItem2") .HasForeignKey("ItemGeneratedVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Item", "OriginalItem") .WithMany("RollGeneratedItem") .HasForeignKey("OriginalItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemGenerated"); b.Navigation("OriginalItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("ScriptedInstance") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Shop") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ShopItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopItem") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopSkill") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("ShopSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Shop"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBonus") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("StaticBuff") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBuff") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Card"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Teleporter") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Teleporter") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Title") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Warehouses") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("Warehouses") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("WarehouseItems") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Warehouse", "Warehouse") .WithMany("WarehouseItems") .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Navigation("Character"); b.Navigation("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Navigation("ActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Navigation("CharacterActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Navigation("BCards"); b.Navigation("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Navigation("BazaarItem"); b.Navigation("CharacterActParts"); b.Navigation("CharacterQuest"); b.Navigation("CharacterRelation1"); b.Navigation("CharacterRelation2"); b.Navigation("CharacterSkill"); b.Navigation("FamilyCharacter"); b.Navigation("Inventory"); b.Navigation("Mail"); b.Navigation("Mail1"); b.Navigation("Mate"); b.Navigation("Miniland"); b.Navigation("QuicklistEntry"); b.Navigation("Respawn"); b.Navigation("StaticBonus"); b.Navigation("StaticBuff"); b.Navigation("Title"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Navigation("FamilyCharacters"); b.Navigation("FamilyLogs"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Navigation("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("ItemInstances"); b.Navigation("Recipe"); b.Navigation("RecipeItem"); b.Navigation("RollGeneratedItem"); b.Navigation("RollGeneratedItem2"); b.Navigation("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Navigation("BazaarItem"); b.Navigation("InventoryItemInstance"); b.Navigation("Mail"); b.Navigation("WarehouseItems"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Navigation("Character"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("MapTypeMap"); b.Navigation("Portal"); b.Navigation("Portal1"); b.Navigation("Respawn"); b.Navigation("RespawnMapType"); b.Navigation("ScriptedInstance"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Navigation("Recipe"); b.Navigation("Shop"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Navigation("Drops"); b.Navigation("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("Mate"); b.Navigation("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Navigation("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Navigation("MapTypes"); b.Navigation("MapTypes1"); b.Navigation("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Navigation("Characters"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Navigation("ShopItem"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Navigation("BCards"); b.Navigation("CharacterSkill"); b.Navigation("Combo"); b.Navigation("NpcMonsterSkill"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Navigation("WarehouseItems"); }); #pragma warning restore 612, 618 } } } ================================================ FILE: src/NosCore.Database/Migrations/20260421034800_ParseMonsterDatExtras.cs ================================================ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace NosCore.Database.Migrations { /// <inheritdoc /> public partial class ParseMonsterDatExtras : Migration { /// <inheritdoc /> protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AddColumn<byte>( name: "Force", table: "NpcMonsterSkill", type: "smallint", nullable: false, defaultValue: (byte)0); migrationBuilder.AddColumn<bool>( name: "AlwaysActive", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AddColumn<short>( name: "CModeVNum", table: "NpcMonster", type: "smallint", nullable: false, defaultValue: (short)0); migrationBuilder.AddColumn<bool>( name: "CanCatch", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AddColumn<bool>( name: "CanCollect", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AddColumn<bool>( name: "CantDebuff", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AddColumn<bool>( name: "CantTargetInfo", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AddColumn<bool>( name: "CantVoke", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AddColumn<byte>( name: "CellMinRange", table: "NpcMonster", type: "smallint", nullable: false, defaultValue: (byte)0); migrationBuilder.AddColumn<bool>( name: "DisappearAfterHitting", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AddColumn<bool>( name: "DisappearAfterSeconds", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AddColumn<bool>( name: "DisappearAfterSecondsMana", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AddColumn<bool>( name: "DontDrainHpAfterSeconds", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AddColumn<bool>( name: "HasDash", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AddColumn<bool>( name: "HasMode", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AddColumn<short>( name: "HpThreshold", table: "NpcMonster", type: "smallint", nullable: false, defaultValue: (short)0); migrationBuilder.AddColumn<byte>( name: "Limiter", table: "NpcMonster", type: "smallint", nullable: false, defaultValue: (byte)0); migrationBuilder.AddColumn<int>( name: "Midgard", table: "NpcMonster", type: "integer", nullable: false, defaultValue: 0); migrationBuilder.AddColumn<bool>( name: "OnDefenseOnlyOnce", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AddColumn<short>( name: "RangeThreshold", table: "NpcMonster", type: "smallint", nullable: false, defaultValue: (short)0); migrationBuilder.AddColumn<bool>( name: "RegenerateHpOverTime", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); } /// <inheritdoc /> protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropColumn( name: "Force", table: "NpcMonsterSkill"); migrationBuilder.DropColumn( name: "AlwaysActive", table: "NpcMonster"); migrationBuilder.DropColumn( name: "CModeVNum", table: "NpcMonster"); migrationBuilder.DropColumn( name: "CanCatch", table: "NpcMonster"); migrationBuilder.DropColumn( name: "CanCollect", table: "NpcMonster"); migrationBuilder.DropColumn( name: "CantDebuff", table: "NpcMonster"); migrationBuilder.DropColumn( name: "CantTargetInfo", table: "NpcMonster"); migrationBuilder.DropColumn( name: "CantVoke", table: "NpcMonster"); migrationBuilder.DropColumn( name: "CellMinRange", table: "NpcMonster"); migrationBuilder.DropColumn( name: "DisappearAfterHitting", table: "NpcMonster"); migrationBuilder.DropColumn( name: "DisappearAfterSeconds", table: "NpcMonster"); migrationBuilder.DropColumn( name: "DisappearAfterSecondsMana", table: "NpcMonster"); migrationBuilder.DropColumn( name: "DontDrainHpAfterSeconds", table: "NpcMonster"); migrationBuilder.DropColumn( name: "HasDash", table: "NpcMonster"); migrationBuilder.DropColumn( name: "HasMode", table: "NpcMonster"); migrationBuilder.DropColumn( name: "HpThreshold", table: "NpcMonster"); migrationBuilder.DropColumn( name: "Limiter", table: "NpcMonster"); migrationBuilder.DropColumn( name: "Midgard", table: "NpcMonster"); migrationBuilder.DropColumn( name: "OnDefenseOnlyOnce", table: "NpcMonster"); migrationBuilder.DropColumn( name: "RangeThreshold", table: "NpcMonster"); migrationBuilder.DropColumn( name: "RegenerateHpOverTime", table: "NpcMonster"); } } } ================================================ FILE: src/NosCore.Database/Migrations/20260421054001_AddBCardSlot.Designer.cs ================================================ // <auto-generated /> using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using NodaTime; using NosCore.Database; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace NosCore.Database.Migrations { [DbContext(typeof(NosCoreContext))] [Migration("20260421054001_AddBCardSlot")] partial class AddBCardSlot { /// <inheritdoc /> protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "10.0.6") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "audit_log_type", new[] { "account_creation", "character_creation", "email_update" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "authority_type", new[] { "user", "moderator", "game_master", "administrator", "root", "closed", "banned", "unconfirmed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_class_type", new[] { "adventurer", "swordsman", "archer", "mage", "martial_artist" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_relation_type", new[] { "friend", "hidden_spouse", "spouse", "blocked" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_state", new[] { "active", "inactive" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_type", new[] { "neutral", "fire", "water", "light", "dark" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "equipment_type", new[] { "main_weapon", "armor", "hat", "gloves", "boots", "secondary_weapon", "necklace", "ring", "bracelet", "mask", "fairy", "amulet", "sp", "costume_suit", "costume_hat", "weapon_skin", "wing_skin" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority", new[] { "head", "assistant", "manager", "member" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority_type", new[] { "none", "put", "all" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_log_type", new[] { "daily_message", "raid_won", "rainbow_battle", "family_xp", "family_level_up", "level_up", "item_upgraded", "right_changed", "authority_changed", "family_managed", "user_managed", "ware_house_added", "ware_house_removed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_member_rank", new[] { "nothing", "old_uncle", "old_aunt", "father", "mother", "uncle", "aunt", "brother", "sister", "spouse", "brother2", "sister2", "old_son", "old_daugter", "middle_son", "middle_daughter", "young_son", "young_daugter", "old_little_son", "old_little_daughter", "little_son", "little_daughter", "middle_little_son", "middle_little_daugter" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "gender_type", new[] { "male", "female" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_color_type", new[] { "dark_purple", "yellow", "blue", "purple", "orange", "brown", "green", "dark_grey", "light_blue", "pink_red", "light_yellow", "light_pink", "light_green", "light_grey", "sky_blue", "black", "dark_orange", "dark_orange_variant2", "dark_orange_variant3", "dark_orange_variant4", "dark_orange_variant5", "dark_orange_variant6", "light_orange", "light_light_orange", "light_light_light_orange", "light_light_light_light_orange", "super_light_orange", "dark_yellow", "light_light_yellow", "kaki_yellow", "super_light_yellow", "super_light_yellow2", "super_light_yellow3", "little_dark_yellow", "yellow_variant", "yellow_variant1", "yellow_variant2", "yellow_variant3", "yellow_variant4", "yellow_variant5", "yellow_variant6", "yellow_variant7", "yellow_variant8", "yellow_variant9", "green_variant", "green_variant1", "dark_green_variant", "green_more_dark_variant", "green_variant2", "green_variant3", "green_variant4", "green_variant5", "green_variant6", "green_variant7", "green_variant8", "green_variant9", "green_variant10", "green_variant11", "green_variant12", "green_variant13", "green_variant14", "green_variant15", "green_variant16", "green_variant17", "green_variant18", "green_variant19", "green_variant20", "light_blue_variant1", "light_blue_variant2", "light_blue_variant3", "light_blue_variant4", "light_blue_variant5", "light_blue_variant6", "light_blue_variant7", "light_blue_variant8", "light_blue_variant9", "light_blue_variant10", "light_blue_variant11", "light_blue_variant12", "light_blue_variant13", "dark_black", "light_blue_variant14", "light_blue_variant15", "light_blue_variant16", "light_blue_variant17", "blue_variant", "blue_variant_dark", "blue_variant_dark_dark", "blue_variant_dark_dark2", "flash_blue", "flash_blue_dark", "flash_blue_dark2", "flash_blue_dark3", "flash_blue_dark4", "flash_blue_dark5", "flash_blue_dark6", "flash_blue_dark7", "flash_blue_dark8", "flash_blue_dark9", "white", "flash_blue_dark10", "flash_blue1", "flash_blue2", "flash_blue3", "flash_blue4", "flash_blue5", "flash_purple", "flash_light_purple", "flash_light_purple2", "flash_light_purple3", "flash_light_purple4", "flash_light_purple5", "light_purple", "purple_variant1", "purple_variant2", "purple_variant3", "purple_variant4", "purple_variant5", "purple_variant6", "purple_variant7", "purple_variant8", "purple_variant9", "purple_variant10", "purple_variant11", "purple_variant12", "purple_variant13", "purple_variant14", "purple_variant15" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_style_type", new[] { "hair_style_a", "hair_style_b", "hair_style_c", "hair_style_d", "no_hair" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_effect_type", new[] { "no_effect", "teleport", "apply_hair_die", "apply_hair_style", "speaker", "marriage_proposal", "undefined", "sp_charger", "dropped_sp_recharger", "premium_sp_recharger", "crafted_sp_recharger", "specialist_medal", "apply_skin_partner", "change_gender", "point_initialisation", "sealed_tarot_card", "tarot_card", "red_amulet", "blue_amulet", "reinforcement_amulet", "heroic", "random_heroic", "attack_amulet", "defense_amulet", "speed_booster", "box_effect", "vehicle", "gold_nos_merchant_upgrade", "silver_nos_merchant_upgrade", "inventory_upgrade", "pet_space_upgrade", "pet_basket_upgrade", "pet_backpack_upgrade", "inventory_ticket_upgrade", "buff_potions", "marriage_separation" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_type", new[] { "weapon", "armor", "fashion", "jewelery", "specialist", "box", "shell", "main", "upgrade", "production", "map", "special", "potion", "event", "title", "quest1", "sell", "food", "snack", "magical", "part", "teacher", "ammo", "quest2", "house", "garden", "minigame", "terrace", "miniland_theme" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "mate_type", new[] { "partner", "pet" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "miniland_state", new[] { "open", "private", "lock" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "monster_type", new[] { "unknown", "partner", "npc", "well", "portal", "boss", "elite", "peapod", "special", "gem_space_time" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "noscore_pocket_type", new[] { "equipment", "main", "etc", "miniland", "specialist", "costume", "wear" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "penalty_type", new[] { "muted", "banned", "block_exp", "block_f_exp", "block_rep", "warning" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "portal_type", new[] { "ts_normal", "closed", "open", "miniland", "ts_end", "ts_end_closed", "exit", "exit_closed", "raid", "effect", "blue_raid", "dark_raid", "time_space", "shop_teleport", "map_portal" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "quest_type", new[] { "hunt", "special_collect", "collect_in_raid", "brings", "capture_without_getting_the_monster", "capture", "times_space", "product", "number_of_kill", "target_reput", "ts_point", "dialog1", "collect_in_ts", "required", "wear", "needed", "collect", "transmit_gold", "go_to", "collect_map_entity", "use", "dialog2", "un_know", "inspect", "win_raid", "flower_quest" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "region_type", new[] { "en", "de", "fr", "it", "pl", "es", "ru", "cs", "tr" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "scripted_instance_type", new[] { "time_space", "raid", "raid_act4" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "static_bonus_type", new[] { "bazaar_medal_gold", "bazaar_medal_silver", "back_pack", "pet_basket", "pet_back_pack", "inventory_ticket_upgrade" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "teleporter_type", new[] { "teleporter", "teleporter_on_map" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "warehouse_type", new[] { "warehouse", "family_ware_house", "pet_warehouse" }); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Property<long>("AccountId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("AccountId")); b.Property<short>("Authority") .HasColumnType("smallint"); b.Property<long>("BankMoney") .HasColumnType("bigint"); b.Property<string>("Email") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ItemShopMoney") .HasColumnType("bigint"); b.Property<int>("Language") .HasColumnType("integer"); b.Property<string>("MfaSecret") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthPassword") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthSalt") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Password") .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("RegistrationIp") .HasMaxLength(45) .HasColumnType("character varying(45)"); b.Property<string>("VerificationToken") .HasMaxLength(32) .HasColumnType("character varying(32)"); b.HasKey("AccountId"); b.HasIndex("Name") .IsUnique(); b.ToTable("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("Scene") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("ActId"); b.ToTable("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("ActPartNumber") .HasColumnType("smallint"); b.Property<byte>("MaxTs") .HasColumnType("smallint"); b.HasKey("ActPartId"); b.HasIndex("ActId"); b.ToTable("ActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.AuditLog", b => { b.Property<Guid>("AuditId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("AuditLogType") .HasColumnType("integer"); b.Property<string>("TargetId") .IsRequired() .HasMaxLength(80) .HasColumnType("character varying(80)"); b.Property<string>("TargetType") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)"); b.Property<Instant>("Time") .HasColumnType("timestamp with time zone"); b.Property<string>("Value") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("AuditId"); b.ToTable("AuditLog"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.Property<short>("BCardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("BCardId")); b.Property<short?>("CardId") .HasColumnType("smallint"); b.Property<byte>("CastType") .HasColumnType("smallint"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<bool>("IsLevelDivided") .HasColumnType("boolean"); b.Property<bool>("IsLevelScaled") .HasColumnType("boolean"); b.Property<short?>("ItemVNum") .HasColumnType("smallint"); b.Property<short?>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<int>("SecondData") .HasColumnType("integer"); b.Property<short?>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("SubType") .HasColumnType("smallint"); b.Property<int>("ThirdData") .HasColumnType("integer"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("BCardId"); b.HasIndex("CardId"); b.HasIndex("ItemVNum"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("BCard"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.Property<long>("BazaarItemId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("BazaarItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<bool>("IsPackage") .HasColumnType("boolean"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<bool>("MedalUsed") .HasColumnType("boolean"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<long>("SellerId") .HasColumnType("bigint"); b.HasKey("BazaarItemId"); b.HasIndex("ItemInstanceId"); b.HasIndex("SellerId"); b.ToTable("BazaarItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<byte>("BuffType") .HasColumnType("smallint"); b.Property<int>("Delay") .HasColumnType("integer"); b.Property<int>("Duration") .HasColumnType("integer"); b.Property<int>("EffectId") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("Propability") .HasColumnType("smallint"); b.Property<short>("TimeoutBuff") .HasColumnType("smallint"); b.Property<byte>("TimeoutBuffChance") .HasColumnType("smallint"); b.HasKey("CardId"); b.ToTable("Card"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Property<long>("CharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("CharacterId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<int>("Act4Dead") .HasColumnType("integer"); b.Property<int>("Act4Kill") .HasColumnType("integer"); b.Property<int>("Act4Points") .HasColumnType("integer"); b.Property<int>("ArenaWinner") .HasColumnType("integer"); b.Property<string>("Biography") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("BuffBlocked") .HasColumnType("boolean"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Compliment") .HasColumnType("smallint"); b.Property<Guid?>("CurrentScriptId") .HasColumnType("uuid"); b.Property<short>("Dignity") .HasColumnType("smallint"); b.Property<int>("Elo") .HasColumnType("integer"); b.Property<bool>("EmoticonsBlocked") .HasColumnType("boolean"); b.Property<bool>("ExchangeBlocked") .HasColumnType("boolean"); b.Property<byte>("Faction") .HasColumnType("smallint"); b.Property<bool>("FamilyRequestBlocked") .HasColumnType("boolean"); b.Property<bool>("FriendRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("Gender") .HasColumnType("smallint"); b.Property<long>("Gold") .HasColumnType("bigint"); b.Property<bool>("GroupRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("HairColor") .HasColumnType("smallint"); b.Property<byte>("HairStyle") .HasColumnType("smallint"); b.Property<bool>("HeroChatBlocked") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<long>("HeroXp") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("HpBlocked") .HasColumnType("boolean"); b.Property<byte>("JobLevel") .HasColumnType("smallint"); b.Property<long>("JobLevelXp") .HasColumnType("bigint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<long>("LevelXp") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<int>("MasterPoints") .HasColumnType("integer"); b.Property<int>("MasterTicket") .HasColumnType("integer"); b.Property<byte>("MaxMateCount") .HasColumnType("smallint"); b.Property<bool>("MinilandInviteBlocked") .HasColumnType("boolean"); b.Property<bool>("MouseAimLock") .HasColumnType("boolean"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("Prefix") .HasMaxLength(25) .HasColumnType("character varying(25)"); b.Property<bool>("QuickGetUp") .HasColumnType("boolean"); b.Property<long>("RagePoint") .HasColumnType("bigint"); b.Property<long>("Reput") .HasColumnType("bigint"); b.Property<byte>("ServerId") .HasColumnType("smallint"); b.Property<bool>("ShouldRename") .HasColumnType("boolean"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<int>("SpAdditionPoint") .HasColumnType("integer"); b.Property<int>("SpPoint") .HasColumnType("integer"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("TalentLose") .HasColumnType("integer"); b.Property<int>("TalentSurrender") .HasColumnType("integer"); b.Property<int>("TalentWin") .HasColumnType("integer"); b.Property<bool>("WhisperBlocked") .HasColumnType("boolean"); b.HasKey("CharacterId"); b.HasIndex("AccountId"); b.HasIndex("CurrentScriptId"); b.HasIndex("MapId"); b.ToTable("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.HasKey("Id"); b.HasIndex("ActPartId"); b.HasIndex("CharacterId"); b.ToTable("CharacterActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("CompletedOn") .HasColumnType("timestamp with time zone"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("QuestId"); b.ToTable("CharacterQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("CharacterQuestId") .HasColumnType("uuid"); b.Property<int>("Count") .HasColumnType("integer"); b.Property<Guid>("QuestObjectiveId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("QuestObjectiveId"); b.HasIndex("CharacterQuestId", "QuestObjectiveId") .IsUnique(); b.ToTable("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.Property<Guid>("CharacterRelationId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<long>("RelatedCharacterId") .HasColumnType("bigint"); b.Property<short>("RelationType") .HasColumnType("smallint"); b.HasKey("CharacterRelationId"); b.HasIndex("CharacterId"); b.HasIndex("RelatedCharacterId"); b.ToTable("CharacterRelation"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("SkillVNum"); b.ToTable("CharacterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.Property<int>("ComboId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ComboId")); b.Property<short>("Animation") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("Hit") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("ComboId"); b.HasIndex("SkillVNum"); b.ToTable("Combo"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.Property<short>("DropId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DropId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("DropChance") .HasColumnType("integer"); b.Property<short?>("MapTypeId") .HasColumnType("smallint"); b.Property<short?>("MonsterVNum") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("DropId"); b.HasIndex("MapTypeId"); b.HasIndex("MonsterVNum"); b.HasIndex("VNum"); b.ToTable("Drop"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<int>("Value") .HasColumnType("integer"); b.Property<Guid>("WearableInstanceId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("WearableInstanceId"); b.ToTable("EquipmentOption"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Property<long>("FamilyId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyId")); b.Property<int>("FamilyExperience") .HasColumnType("integer"); b.Property<byte>("FamilyFaction") .HasColumnType("smallint"); b.Property<byte>("FamilyHeadGender") .HasColumnType("smallint"); b.Property<byte>("FamilyLevel") .HasColumnType("smallint"); b.Property<string>("FamilyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("ManagerAuthorityType") .HasColumnType("integer"); b.Property<bool>("ManagerCanGetHistory") .HasColumnType("boolean"); b.Property<bool>("ManagerCanInvite") .HasColumnType("boolean"); b.Property<bool>("ManagerCanNotice") .HasColumnType("boolean"); b.Property<bool>("ManagerCanShout") .HasColumnType("boolean"); b.Property<byte>("MaxSize") .HasColumnType("smallint"); b.Property<int>("MemberAuthorityType") .HasColumnType("integer"); b.Property<bool>("MemberCanGetHistory") .HasColumnType("boolean"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("WarehouseSize") .HasColumnType("smallint"); b.HasKey("FamilyId"); b.ToTable("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.Property<long>("FamilyCharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyCharacterId")); b.Property<byte>("Authority") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<string>("DailyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Experience") .HasColumnType("integer"); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Rank") .HasColumnType("smallint"); b.HasKey("FamilyCharacterId"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("FamilyCharacter"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.Property<long>("FamilyLogId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyLogId")); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<string>("FamilyLogData") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("FamilyLogType") .HasColumnType("smallint"); b.Property<Instant>("Timestamp") .HasColumnType("timestamp with time zone"); b.HasKey("FamilyLogId"); b.HasIndex("FamilyId"); b.ToTable("FamilyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NActDesc", b => { b.Property<int>("I18NActDescId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NActDescId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NActDescId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NActDesc"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NBCard", b => { b.Property<int>("I18NbCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NbCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NbCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NBCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NCard", b => { b.Property<int>("I18NCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NItem", b => { b.Property<int>("I18NItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NItemId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NItemId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NItem"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapIdData", b => { b.Property<int>("I18NMapIdDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapIdDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapIdDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapIdData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapPointData", b => { b.Property<int>("I18NMapPointDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapPointDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapPointDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapPointData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonster", b => { b.Property<int>("I18NNpcMonsterId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonsterTalk", b => { b.Property<int>("I18NNpcMonsterTalkId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterTalkId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterTalkId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonsterTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NQuest", b => { b.Property<int>("I18NQuestId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NQuestId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NQuestId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NSkill", b => { b.Property<int>("I18NSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NSkillId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NSkillId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("CharacterId", "Slot", "Type") .IsUnique(); b.ToTable("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Property<short>("VNum") .HasColumnType("smallint"); b.Property<byte>("BasicUpgrade") .HasColumnType("smallint"); b.Property<byte>("CellonLvl") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte>("DarkElement") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<int>("Effect") .HasColumnType("integer"); b.Property<int>("EffectValue") .HasColumnType("integer"); b.Property<int>("Element") .HasColumnType("integer"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<byte>("EquipmentSlot") .HasColumnType("smallint"); b.Property<byte>("FireElement") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<bool>("Flag1") .HasColumnType("boolean"); b.Property<bool>("Flag2") .HasColumnType("boolean"); b.Property<bool>("Flag3") .HasColumnType("boolean"); b.Property<bool>("Flag4") .HasColumnType("boolean"); b.Property<bool>("Flag6") .HasColumnType("boolean"); b.Property<bool>("Flag7") .HasColumnType("boolean"); b.Property<bool>("Flag8") .HasColumnType("boolean"); b.Property<bool>("Flag9") .HasColumnType("boolean"); b.Property<byte>("Height") .HasColumnType("smallint"); b.Property<short>("HitRate") .HasColumnType("smallint"); b.Property<short>("Hp") .HasColumnType("smallint"); b.Property<short>("HpRegeneration") .HasColumnType("smallint"); b.Property<bool>("IsColored") .HasColumnType("boolean"); b.Property<bool>("IsConsumable") .HasColumnType("boolean"); b.Property<bool>("IsDroppable") .HasColumnType("boolean"); b.Property<bool>("IsHeroic") .HasColumnType("boolean"); b.Property<bool>("IsMinilandActionable") .HasColumnType("boolean"); b.Property<bool>("IsSoldable") .HasColumnType("boolean"); b.Property<bool>("IsTradable") .HasColumnType("boolean"); b.Property<bool>("IsWarehouse") .HasColumnType("boolean"); b.Property<byte>("ItemSubType") .HasColumnType("smallint"); b.Property<byte>("ItemType") .HasColumnType("smallint"); b.Property<long>("ItemValidTime") .HasColumnType("bigint"); b.Property<byte>("LevelJobMinimum") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("LightElement") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<byte>("MaxCellon") .HasColumnType("smallint"); b.Property<byte>("MaxCellonLvl") .HasColumnType("smallint"); b.Property<short>("MaxElementRate") .HasColumnType("smallint"); b.Property<byte>("MaximumAmmo") .HasColumnType("smallint"); b.Property<int>("MinilandObjectPoint") .HasColumnType("integer"); b.Property<short>("MoreHp") .HasColumnType("smallint"); b.Property<short>("MoreMp") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("Mp") .HasColumnType("smallint"); b.Property<short>("MpRegeneration") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<short>("PvpDefence") .HasColumnType("smallint"); b.Property<byte>("PvpStrength") .HasColumnType("smallint"); b.Property<short>("ReduceOposantResistance") .HasColumnType("smallint"); b.Property<long>("ReputPrice") .HasColumnType("bigint"); b.Property<byte>("ReputationMinimum") .HasColumnType("smallint"); b.Property<bool>("RequireBinding") .HasColumnType("boolean"); b.Property<short>("SecondMorph") .HasColumnType("smallint"); b.Property<int>("SecondaryElement") .HasColumnType("integer"); b.Property<byte>("Sex") .HasColumnType("smallint"); b.Property<byte>("SpType") .HasColumnType("smallint"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("WaitDelay") .HasColumnType("smallint"); b.Property<byte>("WaterElement") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<byte>("Width") .HasColumnType("smallint"); b.HasKey("VNum"); b.ToTable("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<long?>("BoundCharacterId") .HasColumnType("bigint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("Design") .HasColumnType("smallint"); b.Property<string>("Discriminator") .IsRequired() .HasMaxLength(21) .HasColumnType("character varying(21)"); b.Property<int>("DurabilityPoint") .HasColumnType("integer"); b.Property<Instant?>("ItemDeleteTime") .HasColumnType("timestamp with time zone"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("BoundCharacterId"); b.HasIndex("ItemVNum"); b.ToTable("ItemInstance"); b.HasDiscriminator<string>("Discriminator").HasValue("ItemInstance"); b.UseTphMappingStrategy(); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.Property<long>("MailId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MailId")); b.Property<short?>("Armor") .HasColumnType("smallint"); b.Property<short?>("CostumeHat") .HasColumnType("smallint"); b.Property<short?>("CostumeSuit") .HasColumnType("smallint"); b.Property<Instant>("Date") .HasColumnType("timestamp with time zone"); b.Property<short?>("Fairy") .HasColumnType("smallint"); b.Property<short?>("Hat") .HasColumnType("smallint"); b.Property<bool>("IsOpened") .HasColumnType("boolean"); b.Property<bool>("IsSenderCopy") .HasColumnType("boolean"); b.Property<Guid?>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short?>("MainWeapon") .HasColumnType("smallint"); b.Property<short?>("Mask") .HasColumnType("smallint"); b.Property<string>("Message") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ReceiverId") .HasColumnType("bigint"); b.Property<short?>("SecondaryWeapon") .HasColumnType("smallint"); b.Property<byte?>("SenderCharacterClass") .HasColumnType("smallint"); b.Property<byte?>("SenderGender") .HasColumnType("smallint"); b.Property<byte?>("SenderHairColor") .HasColumnType("smallint"); b.Property<byte?>("SenderHairStyle") .HasColumnType("smallint"); b.Property<long?>("SenderId") .HasColumnType("bigint"); b.Property<short?>("SenderMorphId") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short?>("WeaponSkin") .HasColumnType("smallint"); b.Property<short?>("WingSkin") .HasColumnType("smallint"); b.HasKey("MailId"); b.HasIndex("ItemInstanceId"); b.HasIndex("ReceiverId"); b.HasIndex("SenderId"); b.ToTable("Mail"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<byte[]>("Data") .IsRequired() .HasColumnType("bytea"); b.Property<int>("Music") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("ShopAllowed") .HasColumnType("boolean"); b.HasKey("MapId"); b.ToTable("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.Property<int>("MapMonsterId") .HasColumnType("integer"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapMonsterId"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short?>("Dialog") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("EffectDelay") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<bool>("IsSitting") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapNpcId"); b.HasIndex("Dialog"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.Property<string>("MapTypeName") .IsRequired() .HasColumnType("text"); b.Property<short>("PotionDelay") .HasColumnType("smallint"); b.Property<long?>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<long?>("ReturnMapTypeId") .HasColumnType("bigint"); b.HasKey("MapTypeId"); b.HasIndex("RespawnMapTypeId"); b.HasIndex("ReturnMapTypeId"); b.ToTable("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.Property<short>("MapTypeMapId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("MapTypeMapId")); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.HasKey("MapTypeMapId"); b.HasIndex("MapTypeId"); b.HasIndex("MapId", "MapTypeId") .IsUnique(); b.ToTable("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.Property<long>("MateId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MateId")); b.Property<byte>("Attack") .HasColumnType("smallint"); b.Property<bool>("CanPickUp") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<byte>("Defence") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<long>("Experience") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("IsSummonable") .HasColumnType("boolean"); b.Property<bool>("IsTeamMember") .HasColumnType("boolean"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("Loyalty") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("MateType") .HasColumnType("smallint"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short>("Skin") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MateId"); b.HasIndex("CharacterId"); b.HasIndex("VNum"); b.ToTable("Mate"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.Property<Guid>("MinilandId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("DailyVisitCount") .HasColumnType("integer"); b.Property<string>("MinilandMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("MinilandPoint") .HasColumnType("bigint"); b.Property<long>("OwnerId") .HasColumnType("bigint"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("VisitCount") .HasColumnType("integer"); b.Property<short>("WelcomeMusicInfo") .HasColumnType("smallint"); b.HasKey("MinilandId"); b.HasIndex("OwnerId"); b.ToTable("Miniland"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.Property<Guid>("MinilandObjectId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<Guid?>("InventoryItemInstanceId") .HasColumnType("uuid"); b.Property<byte>("Level1BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level2BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level3BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level4BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level5BoxAmount") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.HasKey("MinilandObjectId"); b.HasIndex("InventoryItemInstanceId"); b.ToTable("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<bool>("AlwaysActive") .HasColumnType("boolean"); b.Property<byte>("AmountRequired") .HasColumnType("smallint"); b.Property<byte>("AttackClass") .HasColumnType("smallint"); b.Property<byte>("AttackUpgrade") .HasColumnType("smallint"); b.Property<byte>("BasicArea") .HasColumnType("smallint"); b.Property<short>("BasicCooldown") .HasColumnType("smallint"); b.Property<byte>("BasicRange") .HasColumnType("smallint"); b.Property<short>("BasicSkill") .HasColumnType("smallint"); b.Property<short>("CModeVNum") .HasColumnType("smallint"); b.Property<bool>("CanCatch") .HasColumnType("boolean"); b.Property<bool>("CanCollect") .HasColumnType("boolean"); b.Property<bool>("CanWalk") .HasColumnType("boolean"); b.Property<bool>("CantDebuff") .HasColumnType("boolean"); b.Property<bool>("CantTargetInfo") .HasColumnType("boolean"); b.Property<bool>("CantVoke") .HasColumnType("boolean"); b.Property<byte>("CellMinRange") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalChance") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<byte>("DefenceUpgrade") .HasColumnType("smallint"); b.Property<bool>("DisappearAfterHitting") .HasColumnType("boolean"); b.Property<bool>("DisappearAfterSeconds") .HasColumnType("boolean"); b.Property<bool>("DisappearAfterSecondsMana") .HasColumnType("boolean"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<bool>("DontDrainHpAfterSeconds") .HasColumnType("boolean"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<int>("GiveDamagePercentage") .HasColumnType("integer"); b.Property<bool>("HasDash") .HasColumnType("boolean"); b.Property<bool>("HasMode") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<int>("HeroXp") .HasColumnType("integer"); b.Property<short>("HpThreshold") .HasColumnType("smallint"); b.Property<bool>("IsHostile") .HasColumnType("boolean"); b.Property<bool>("IsPercent") .HasColumnType("boolean"); b.Property<int>("JobXp") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<byte>("Limiter") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<int>("MaxHp") .HasColumnType("integer"); b.Property<int>("MaxMp") .HasColumnType("integer"); b.Property<int>("Midgard") .HasColumnType("integer"); b.Property<byte>("MonsterType") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("NoAggresiveIcon") .HasColumnType("boolean"); b.Property<byte>("NoticeRange") .HasColumnType("smallint"); b.Property<bool>("OnDefenseOnlyOnce") .HasColumnType("boolean"); b.Property<byte>("Race") .HasColumnType("smallint"); b.Property<byte>("RaceType") .HasColumnType("smallint"); b.Property<short>("RangeThreshold") .HasColumnType("smallint"); b.Property<bool>("RegenerateHpOverTime") .HasColumnType("boolean"); b.Property<int>("RespawnTime") .HasColumnType("integer"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<int>("TakeDamages") .HasColumnType("integer"); b.Property<short>("VNumRequired") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<int>("Xp") .HasColumnType("integer"); b.HasKey("NpcMonsterVNum"); b.ToTable("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.Property<long>("NpcMonsterSkillId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("NpcMonsterSkillId")); b.Property<byte>("Force") .HasColumnType("smallint"); b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<short>("Rate") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("NpcMonsterSkillId"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Property<short>("DialogId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DialogId")); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("DialogId"); b.ToTable("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.Property<int>("PenaltyLogId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PenaltyLogId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<string>("AdminName") .IsRequired() .HasColumnType("text"); b.Property<Instant>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<byte>("Penalty") .HasColumnType("smallint"); b.Property<string>("Reason") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("PenaltyLogId"); b.HasIndex("AccountId"); b.ToTable("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.Property<int>("PortalId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PortalId")); b.Property<short>("DestinationMapId") .HasColumnType("smallint"); b.Property<short>("DestinationX") .HasColumnType("smallint"); b.Property<short>("DestinationY") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<short>("SourceMapId") .HasColumnType("smallint"); b.Property<short>("SourceX") .HasColumnType("smallint"); b.Property<short>("SourceY") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("PortalId"); b.HasIndex("DestinationMapId"); b.HasIndex("SourceMapId"); b.ToTable("Portal"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<bool>("AutoFinish") .HasColumnType("boolean"); b.Property<string>("Desc") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int?>("EndDialogId") .HasColumnType("integer"); b.Property<bool>("IsDaily") .HasColumnType("boolean"); b.Property<bool>("IsSecondary") .HasColumnType("boolean"); b.Property<byte>("LevelMax") .HasColumnType("smallint"); b.Property<byte>("LevelMin") .HasColumnType("smallint"); b.Property<short?>("NextQuestId") .HasColumnType("smallint"); b.Property<short>("QuestType") .HasColumnType("smallint"); b.Property<short?>("RequiredQuestId") .HasColumnType("smallint"); b.Property<int?>("SpecialData") .HasColumnType("integer"); b.Property<int?>("StartDialogId") .HasColumnType("integer"); b.Property<short?>("TargetMap") .HasColumnType("smallint"); b.Property<short?>("TargetX") .HasColumnType("smallint"); b.Property<short?>("TargetY") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("QuestId"); b.ToTable("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Property<Guid>("QuestObjectiveId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<int?>("FourthData") .HasColumnType("integer"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<int?>("SecondData") .HasColumnType("integer"); b.Property<int?>("ThirdData") .HasColumnType("integer"); b.HasKey("QuestObjectiveId"); b.HasIndex("QuestId"); b.ToTable("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<short>("QuestRewardId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("QuestId"); b.HasIndex("QuestRewardId"); b.ToTable("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Property<short>("QuestRewardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("QuestRewardId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("Data") .HasColumnType("integer"); b.Property<byte>("Design") .HasColumnType("smallint"); b.Property<byte>("Rarity") .HasColumnType("smallint"); b.Property<byte>("RewardType") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("QuestRewardId"); b.ToTable("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("IconType") .HasColumnType("smallint"); b.Property<short>("IconVNum") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("QuickListIndex") .HasColumnType("smallint"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.ToTable("QuicklistEntry"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Property<short>("RecipeId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeId")); b.Property<byte>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.HasKey("RecipeId"); b.HasIndex("ItemVNum"); b.HasIndex("MapNpcId"); b.ToTable("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.Property<short>("RecipeItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("RecipeId") .HasColumnType("smallint"); b.HasKey("RecipeItemId"); b.HasIndex("ItemVNum"); b.HasIndex("RecipeId"); b.ToTable("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.Property<long>("RespawnId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("RespawnId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("X") .HasColumnType("smallint"); b.Property<short>("Y") .HasColumnType("smallint"); b.HasKey("RespawnId"); b.HasIndex("CharacterId"); b.HasIndex("MapId"); b.HasIndex("RespawnMapTypeId"); b.ToTable("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("DefaultX") .HasColumnType("smallint"); b.Property<short>("DefaultY") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("RespawnMapTypeId"); b.HasIndex("MapId"); b.ToTable("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.Property<short>("RollGeneratedItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RollGeneratedItemId")); b.Property<bool>("IsRareRandom") .HasColumnType("boolean"); b.Property<bool>("IsSuperReward") .HasColumnType("boolean"); b.Property<byte>("ItemGeneratedAmount") .HasColumnType("smallint"); b.Property<byte>("ItemGeneratedUpgrade") .HasColumnType("smallint"); b.Property<short>("ItemGeneratedVNum") .HasColumnType("smallint"); b.Property<short>("MaximumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("MinimumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("OriginalItemDesign") .HasColumnType("smallint"); b.Property<short>("OriginalItemVNum") .HasColumnType("smallint"); b.Property<short>("Probability") .HasColumnType("smallint"); b.HasKey("RollGeneratedItemId"); b.HasIndex("ItemGeneratedVNum"); b.HasIndex("OriginalItemVNum"); b.ToTable("RollGeneratedItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short?>("Argument1") .HasColumnType("smallint"); b.Property<short?>("Argument2") .HasColumnType("smallint"); b.Property<short?>("Argument3") .HasColumnType("smallint"); b.Property<byte>("ScriptId") .HasColumnType("smallint"); b.Property<short>("ScriptStepId") .HasColumnType("smallint"); b.Property<string>("StepType") .IsRequired() .HasColumnType("text"); b.Property<string>("StringArgument") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("ScriptId", "ScriptStepId") .IsUnique(); b.ToTable("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.Property<short>("ScriptedInstanceId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("ScriptedInstanceId")); b.Property<string>("Label") .HasColumnType("text"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("PositionX") .HasColumnType("smallint"); b.Property<short>("PositionY") .HasColumnType("smallint"); b.Property<string>("Script") .HasMaxLength(2147483647) .HasColumnType("text"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ScriptedInstanceId"); b.HasIndex("MapId"); b.ToTable("ScriptedInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Property<int>("ShopId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopId")); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<byte>("MenuType") .HasColumnType("smallint"); b.Property<byte>("ShopType") .HasColumnType("smallint"); b.HasKey("ShopId"); b.HasIndex("MapNpcId"); b.ToTable("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.Property<int>("ShopItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopItemId")); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("ShopItemId"); b.HasIndex("ItemVNum"); b.HasIndex("ShopId"); b.ToTable("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.Property<int>("ShopSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopSkillId")); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ShopSkillId"); b.HasIndex("ShopId"); b.HasIndex("SkillVNum"); b.ToTable("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<short>("AttackAnimation") .HasColumnType("smallint"); b.Property<short>("CastAnimation") .HasColumnType("smallint"); b.Property<short>("CastEffect") .HasColumnType("smallint"); b.Property<short>("CastId") .HasColumnType("smallint"); b.Property<short>("CastTime") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Cooldown") .HasColumnType("smallint"); b.Property<byte>("CpCost") .HasColumnType("smallint"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<byte>("HitType") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("MinimumAdventurerLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumArcherLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumMagicianLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumSwordmanLevel") .HasColumnType("smallint"); b.Property<short>("MpCost") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Price") .HasColumnType("integer"); b.Property<byte>("Range") .HasColumnType("smallint"); b.Property<byte>("SkillType") .HasColumnType("smallint"); b.Property<byte>("TargetRange") .HasColumnType("smallint"); b.Property<byte>("TargetType") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("UpgradeSkill") .HasColumnType("smallint"); b.Property<short>("UpgradeType") .HasColumnType("smallint"); b.HasKey("SkillVNum"); b.ToTable("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.Property<long>("StaticBonusId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBonusId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<byte>("StaticBonusType") .HasColumnType("smallint"); b.HasKey("StaticBonusId"); b.HasIndex("CharacterId"); b.ToTable("StaticBonus"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.Property<long>("StaticBuffId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBuffId")); b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<int>("RemainingTime") .HasColumnType("integer"); b.HasKey("StaticBuffId"); b.HasIndex("CardId"); b.HasIndex("CharacterId"); b.ToTable("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.Property<short>("TeleporterId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("TeleporterId")); b.Property<short>("Index") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("TeleporterId"); b.HasIndex("MapId"); b.HasIndex("MapNpcId"); b.ToTable("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<bool>("Active") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("TitleType") .HasColumnType("smallint"); b.Property<bool>("Visible") .HasColumnType("boolean"); b.HasKey("Id"); b.HasIndex("CharacterId", "TitleType") .IsUnique(); b.ToTable("Title"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long?>("CharacterId") .HasColumnType("bigint"); b.Property<long?>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<Guid>("WarehouseId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("WarehouseId"); b.ToTable("WarehouseItem"); }); modelBuilder.Entity("NosCore.Database.Entities.UsableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.ToTable("ItemInstance", t => { t.Property("Hp") .HasColumnName("UsableInstance_Hp"); t.Property("Mp") .HasColumnName("UsableInstance_Mp"); }); b.HasDiscriminator().HasValue("UsableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.WearableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<byte?>("Ammo") .HasColumnType("smallint"); b.Property<byte?>("Cellon") .HasColumnType("smallint"); b.Property<short?>("CloseDefence") .HasColumnType("smallint"); b.Property<short?>("Concentrate") .HasColumnType("smallint"); b.Property<short?>("CriticalDodge") .HasColumnType("smallint"); b.Property<byte?>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short?>("CriticalRate") .HasColumnType("smallint"); b.Property<short?>("DamageMaximum") .HasColumnType("smallint"); b.Property<short?>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte?>("DarkElement") .HasColumnType("smallint"); b.Property<short?>("DarkResistance") .HasColumnType("smallint"); b.Property<short?>("DefenceDodge") .HasColumnType("smallint"); b.Property<short?>("DistanceDefence") .HasColumnType("smallint"); b.Property<short?>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<short?>("ElementRate") .HasColumnType("smallint"); b.Property<byte?>("FireElement") .HasColumnType("smallint"); b.Property<short?>("FireResistance") .HasColumnType("smallint"); b.Property<short?>("HitRate") .HasColumnType("smallint"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<bool?>("IsEmpty") .HasColumnType("boolean"); b.Property<bool?>("IsFixed") .HasColumnType("boolean"); b.Property<byte?>("LightElement") .HasColumnType("smallint"); b.Property<short?>("LightResistance") .HasColumnType("smallint"); b.Property<short?>("MagicDefence") .HasColumnType("smallint"); b.Property<short?>("MaxElementRate") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.Property<byte?>("ShellRarity") .HasColumnType("smallint"); b.Property<byte?>("WaterElement") .HasColumnType("smallint"); b.Property<short?>("WaterResistance") .HasColumnType("smallint"); b.Property<long?>("Xp") .HasColumnType("bigint"); b.HasDiscriminator().HasValue("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.SpecialistInstance", b => { b.HasBaseType("NosCore.Database.Entities.WearableInstance"); b.Property<short>("SlDamage") .HasColumnType("smallint"); b.Property<short>("SlDefence") .HasColumnType("smallint"); b.Property<short>("SlElement") .HasColumnType("smallint"); b.Property<short>("SlHp") .HasColumnType("smallint"); b.Property<byte>("SpDamage") .HasColumnType("smallint"); b.Property<byte>("SpDark") .HasColumnType("smallint"); b.Property<byte>("SpDefence") .HasColumnType("smallint"); b.Property<byte>("SpElement") .HasColumnType("smallint"); b.Property<byte>("SpFire") .HasColumnType("smallint"); b.Property<byte>("SpHp") .HasColumnType("smallint"); b.Property<byte>("SpLevel") .HasColumnType("smallint"); b.Property<byte>("SpLight") .HasColumnType("smallint"); b.Property<byte>("SpStoneUpgrade") .HasColumnType("smallint"); b.Property<byte>("SpWater") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("SpecialistInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.BoxInstance", b => { b.HasBaseType("NosCore.Database.Entities.SpecialistInstance"); b.Property<short?>("HoldingVNum") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("BoxInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.HasOne("NosCore.Database.Entities.Act", "Act") .WithMany("ActParts") .HasForeignKey("ActId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("BCards") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("BCards") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("BCards") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("BCards") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Card"); b.Navigation("Item"); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("BazaarItem") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Seller") .WithMany("BazaarItem") .HasForeignKey("SellerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Seller"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("Character") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Script", "Script") .WithMany("Characters") .HasForeignKey("CurrentScriptId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Character") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); b.Navigation("Map"); b.Navigation("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.HasOne("NosCore.Database.Entities.ActPart", "ActPart") .WithMany("CharacterActParts") .HasForeignKey("ActPartId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterActParts") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ActPart"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterQuest") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("CharacterQuest") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.HasOne("NosCore.Database.Entities.CharacterQuest", "CharacterQuest") .WithMany("CharacterQuestObjective") .HasForeignKey("CharacterQuestId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestObjective", "QuestObjective") .WithMany("CharacterQuestObjective") .HasForeignKey("QuestObjectiveId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.HasOne("NosCore.Database.Entities.Character", "Character1") .WithMany("CharacterRelation1") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character2") .WithMany("CharacterRelation2") .HasForeignKey("RelatedCharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character1"); b.Navigation("Character2"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterSkill") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("CharacterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("Combo") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("Drops") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Drop") .HasForeignKey("MonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Drop") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapType"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.HasOne("NosCore.Database.Entities.WearableInstance", "WearableInstance") .WithMany() .HasForeignKey("WearableInstanceId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("FamilyCharacter") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyCharacters") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyLogs") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Inventory") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("InventoryItemInstance") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("ItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "BoundCharacter") .WithMany() .HasForeignKey("BoundCharacterId"); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ItemInstances") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("BoundCharacter"); b.Navigation("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("Mail") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Character", "Receiver") .WithMany("Mail1") .HasForeignKey("ReceiverId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Sender") .WithMany("Mail") .HasForeignKey("SenderId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("ItemInstance"); b.Navigation("Receiver"); b.Navigation("Sender"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapMonster") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapMonster") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.HasOne("NosCore.Database.Entities.NpcTalk", "NpcTalk") .WithMany("MapNpc") .HasForeignKey("Dialog") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapNpc") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapNpc") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); b.Navigation("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("MapTypes") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.RespawnMapType", "ReturnMapType") .WithMany("MapTypes1") .HasForeignKey("ReturnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("RespawnMapType"); b.Navigation("ReturnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapTypeMap") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("MapTypeMap") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Mate") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Mate") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.HasOne("NosCore.Database.Entities.Character", "Owner") .WithMany("Miniland") .HasForeignKey("OwnerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Owner"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.HasOne("NosCore.Database.Entities.InventoryItemInstance", "InventoryItemInstance") .WithMany("MinilandObject") .HasForeignKey("InventoryItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("NpcMonsterSkill") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("NpcMonsterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("PenaltyLog") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Portal") .HasForeignKey("DestinationMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map1") .WithMany("Portal1") .HasForeignKey("SourceMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("Map1"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestObjective") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestQuestReward") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestReward", "QuestReward") .WithMany("QuestQuestReward") .HasForeignKey("QuestRewardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); b.Navigation("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("QuicklistEntry") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Recipe") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Recipe") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("RecipeItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Recipe", "Recipe") .WithMany("RecipeItem") .HasForeignKey("RecipeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Respawn") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Respawn") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("Respawn") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Map"); b.Navigation("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("RespawnMapType") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.HasOne("NosCore.Database.Entities.Item", "ItemGenerated") .WithMany("RollGeneratedItem2") .HasForeignKey("ItemGeneratedVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Item", "OriginalItem") .WithMany("RollGeneratedItem") .HasForeignKey("OriginalItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemGenerated"); b.Navigation("OriginalItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("ScriptedInstance") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Shop") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ShopItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopItem") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopSkill") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("ShopSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Shop"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBonus") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("StaticBuff") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBuff") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Card"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Teleporter") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Teleporter") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Title") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Warehouses") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("Warehouses") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("WarehouseItems") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Warehouse", "Warehouse") .WithMany("WarehouseItems") .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Navigation("Character"); b.Navigation("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Navigation("ActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Navigation("CharacterActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Navigation("BCards"); b.Navigation("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Navigation("BazaarItem"); b.Navigation("CharacterActParts"); b.Navigation("CharacterQuest"); b.Navigation("CharacterRelation1"); b.Navigation("CharacterRelation2"); b.Navigation("CharacterSkill"); b.Navigation("FamilyCharacter"); b.Navigation("Inventory"); b.Navigation("Mail"); b.Navigation("Mail1"); b.Navigation("Mate"); b.Navigation("Miniland"); b.Navigation("QuicklistEntry"); b.Navigation("Respawn"); b.Navigation("StaticBonus"); b.Navigation("StaticBuff"); b.Navigation("Title"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Navigation("FamilyCharacters"); b.Navigation("FamilyLogs"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Navigation("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("ItemInstances"); b.Navigation("Recipe"); b.Navigation("RecipeItem"); b.Navigation("RollGeneratedItem"); b.Navigation("RollGeneratedItem2"); b.Navigation("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Navigation("BazaarItem"); b.Navigation("InventoryItemInstance"); b.Navigation("Mail"); b.Navigation("WarehouseItems"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Navigation("Character"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("MapTypeMap"); b.Navigation("Portal"); b.Navigation("Portal1"); b.Navigation("Respawn"); b.Navigation("RespawnMapType"); b.Navigation("ScriptedInstance"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Navigation("Recipe"); b.Navigation("Shop"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Navigation("Drops"); b.Navigation("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("Mate"); b.Navigation("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Navigation("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Navigation("MapTypes"); b.Navigation("MapTypes1"); b.Navigation("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Navigation("Characters"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Navigation("ShopItem"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Navigation("BCards"); b.Navigation("CharacterSkill"); b.Navigation("Combo"); b.Navigation("NpcMonsterSkill"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Navigation("WarehouseItems"); }); #pragma warning restore 612, 618 } } } ================================================ FILE: src/NosCore.Database/Migrations/20260421054001_AddBCardSlot.cs ================================================ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace NosCore.Database.Migrations { /// <inheritdoc /> public partial class AddBCardSlot : Migration { /// <inheritdoc /> protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AddColumn<byte>( name: "Slot", table: "BCard", type: "smallint", nullable: false, defaultValue: (byte)0); } /// <inheritdoc /> protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropColumn( name: "Slot", table: "BCard"); } } } ================================================ FILE: src/NosCore.Database/Migrations/20260421070126_AddMountAndRaidPockets.Designer.cs ================================================ // <auto-generated /> using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using NodaTime; using NosCore.Database; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace NosCore.Database.Migrations { [DbContext(typeof(NosCoreContext))] [Migration("20260421070126_AddMountAndRaidPockets")] partial class AddMountAndRaidPockets { /// <inheritdoc /> protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "10.0.6") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "audit_log_type", new[] { "account_creation", "character_creation", "email_update" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "authority_type", new[] { "user", "moderator", "game_master", "administrator", "root", "closed", "banned", "unconfirmed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_class_type", new[] { "adventurer", "swordsman", "archer", "mage", "martial_artist" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_relation_type", new[] { "friend", "hidden_spouse", "spouse", "blocked" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_state", new[] { "active", "inactive" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_type", new[] { "neutral", "fire", "water", "light", "dark" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "equipment_type", new[] { "main_weapon", "armor", "hat", "gloves", "boots", "secondary_weapon", "necklace", "ring", "bracelet", "mask", "fairy", "amulet", "sp", "costume_suit", "costume_hat", "weapon_skin", "wing_skin" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority", new[] { "head", "assistant", "manager", "member" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority_type", new[] { "none", "put", "all" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_log_type", new[] { "daily_message", "raid_won", "rainbow_battle", "family_xp", "family_level_up", "level_up", "item_upgraded", "right_changed", "authority_changed", "family_managed", "user_managed", "ware_house_added", "ware_house_removed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_member_rank", new[] { "nothing", "old_uncle", "old_aunt", "father", "mother", "uncle", "aunt", "brother", "sister", "spouse", "brother2", "sister2", "old_son", "old_daugter", "middle_son", "middle_daughter", "young_son", "young_daugter", "old_little_son", "old_little_daughter", "little_son", "little_daughter", "middle_little_son", "middle_little_daugter" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "gender_type", new[] { "male", "female" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_color_type", new[] { "dark_purple", "yellow", "blue", "purple", "orange", "brown", "green", "dark_grey", "light_blue", "pink_red", "light_yellow", "light_pink", "light_green", "light_grey", "sky_blue", "black", "dark_orange", "dark_orange_variant2", "dark_orange_variant3", "dark_orange_variant4", "dark_orange_variant5", "dark_orange_variant6", "light_orange", "light_light_orange", "light_light_light_orange", "light_light_light_light_orange", "super_light_orange", "dark_yellow", "light_light_yellow", "kaki_yellow", "super_light_yellow", "super_light_yellow2", "super_light_yellow3", "little_dark_yellow", "yellow_variant", "yellow_variant1", "yellow_variant2", "yellow_variant3", "yellow_variant4", "yellow_variant5", "yellow_variant6", "yellow_variant7", "yellow_variant8", "yellow_variant9", "green_variant", "green_variant1", "dark_green_variant", "green_more_dark_variant", "green_variant2", "green_variant3", "green_variant4", "green_variant5", "green_variant6", "green_variant7", "green_variant8", "green_variant9", "green_variant10", "green_variant11", "green_variant12", "green_variant13", "green_variant14", "green_variant15", "green_variant16", "green_variant17", "green_variant18", "green_variant19", "green_variant20", "light_blue_variant1", "light_blue_variant2", "light_blue_variant3", "light_blue_variant4", "light_blue_variant5", "light_blue_variant6", "light_blue_variant7", "light_blue_variant8", "light_blue_variant9", "light_blue_variant10", "light_blue_variant11", "light_blue_variant12", "light_blue_variant13", "dark_black", "light_blue_variant14", "light_blue_variant15", "light_blue_variant16", "light_blue_variant17", "blue_variant", "blue_variant_dark", "blue_variant_dark_dark", "blue_variant_dark_dark2", "flash_blue", "flash_blue_dark", "flash_blue_dark2", "flash_blue_dark3", "flash_blue_dark4", "flash_blue_dark5", "flash_blue_dark6", "flash_blue_dark7", "flash_blue_dark8", "flash_blue_dark9", "white", "flash_blue_dark10", "flash_blue1", "flash_blue2", "flash_blue3", "flash_blue4", "flash_blue5", "flash_purple", "flash_light_purple", "flash_light_purple2", "flash_light_purple3", "flash_light_purple4", "flash_light_purple5", "light_purple", "purple_variant1", "purple_variant2", "purple_variant3", "purple_variant4", "purple_variant5", "purple_variant6", "purple_variant7", "purple_variant8", "purple_variant9", "purple_variant10", "purple_variant11", "purple_variant12", "purple_variant13", "purple_variant14", "purple_variant15" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_style_type", new[] { "hair_style_a", "hair_style_b", "hair_style_c", "hair_style_d", "no_hair" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_effect_type", new[] { "no_effect", "teleport", "apply_hair_die", "apply_hair_style", "speaker", "marriage_proposal", "undefined", "sp_charger", "dropped_sp_recharger", "premium_sp_recharger", "crafted_sp_recharger", "specialist_medal", "apply_skin_partner", "change_gender", "point_initialisation", "sealed_tarot_card", "tarot_card", "red_amulet", "blue_amulet", "reinforcement_amulet", "heroic", "random_heroic", "attack_amulet", "defense_amulet", "speed_booster", "box_effect", "vehicle", "gold_nos_merchant_upgrade", "silver_nos_merchant_upgrade", "inventory_upgrade", "pet_space_upgrade", "pet_basket_upgrade", "pet_backpack_upgrade", "inventory_ticket_upgrade", "buff_potions", "marriage_separation" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_type", new[] { "weapon", "armor", "fashion", "jewelery", "specialist", "box", "shell", "main", "upgrade", "production", "map", "special", "potion", "event", "title", "quest1", "sell", "food", "snack", "magical", "part", "teacher", "ammo", "quest2", "house", "garden", "minigame", "terrace", "miniland_theme" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "mate_type", new[] { "partner", "pet" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "miniland_state", new[] { "open", "private", "lock" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "monster_type", new[] { "unknown", "partner", "npc", "well", "portal", "boss", "elite", "peapod", "special", "gem_space_time" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "noscore_pocket_type", new[] { "equipment", "main", "etc", "miniland", "specialist", "costume", "wear", "mount", "raid" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "penalty_type", new[] { "muted", "banned", "block_exp", "block_f_exp", "block_rep", "warning" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "portal_type", new[] { "ts_normal", "closed", "open", "miniland", "ts_end", "ts_end_closed", "exit", "exit_closed", "raid", "effect", "blue_raid", "dark_raid", "time_space", "shop_teleport", "map_portal" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "quest_type", new[] { "hunt", "special_collect", "collect_in_raid", "brings", "capture_without_getting_the_monster", "capture", "times_space", "product", "number_of_kill", "target_reput", "ts_point", "dialog1", "collect_in_ts", "required", "wear", "needed", "collect", "transmit_gold", "go_to", "collect_map_entity", "use", "dialog2", "un_know", "inspect", "win_raid", "flower_quest" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "region_type", new[] { "en", "de", "fr", "it", "pl", "es", "ru", "cs", "tr" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "scripted_instance_type", new[] { "time_space", "raid", "raid_act4" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "static_bonus_type", new[] { "bazaar_medal_gold", "bazaar_medal_silver", "back_pack", "pet_basket", "pet_back_pack", "inventory_ticket_upgrade" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "teleporter_type", new[] { "teleporter", "teleporter_on_map" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "warehouse_type", new[] { "warehouse", "family_ware_house", "pet_warehouse" }); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Property<long>("AccountId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("AccountId")); b.Property<short>("Authority") .HasColumnType("smallint"); b.Property<long>("BankMoney") .HasColumnType("bigint"); b.Property<string>("Email") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ItemShopMoney") .HasColumnType("bigint"); b.Property<int>("Language") .HasColumnType("integer"); b.Property<string>("MfaSecret") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthPassword") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthSalt") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Password") .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("RegistrationIp") .HasMaxLength(45) .HasColumnType("character varying(45)"); b.Property<string>("VerificationToken") .HasMaxLength(32) .HasColumnType("character varying(32)"); b.HasKey("AccountId"); b.HasIndex("Name") .IsUnique(); b.ToTable("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("Scene") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("ActId"); b.ToTable("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("ActPartNumber") .HasColumnType("smallint"); b.Property<byte>("MaxTs") .HasColumnType("smallint"); b.HasKey("ActPartId"); b.HasIndex("ActId"); b.ToTable("ActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.AuditLog", b => { b.Property<Guid>("AuditId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("AuditLogType") .HasColumnType("integer"); b.Property<string>("TargetId") .IsRequired() .HasMaxLength(80) .HasColumnType("character varying(80)"); b.Property<string>("TargetType") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)"); b.Property<Instant>("Time") .HasColumnType("timestamp with time zone"); b.Property<string>("Value") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("AuditId"); b.ToTable("AuditLog"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.Property<short>("BCardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("BCardId")); b.Property<short?>("CardId") .HasColumnType("smallint"); b.Property<byte>("CastType") .HasColumnType("smallint"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<bool>("IsLevelDivided") .HasColumnType("boolean"); b.Property<bool>("IsLevelScaled") .HasColumnType("boolean"); b.Property<short?>("ItemVNum") .HasColumnType("smallint"); b.Property<short?>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<int>("SecondData") .HasColumnType("integer"); b.Property<short?>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("SubType") .HasColumnType("smallint"); b.Property<int>("ThirdData") .HasColumnType("integer"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("BCardId"); b.HasIndex("CardId"); b.HasIndex("ItemVNum"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("BCard"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.Property<long>("BazaarItemId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("BazaarItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<bool>("IsPackage") .HasColumnType("boolean"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<bool>("MedalUsed") .HasColumnType("boolean"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<long>("SellerId") .HasColumnType("bigint"); b.HasKey("BazaarItemId"); b.HasIndex("ItemInstanceId"); b.HasIndex("SellerId"); b.ToTable("BazaarItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<byte>("BuffType") .HasColumnType("smallint"); b.Property<int>("Delay") .HasColumnType("integer"); b.Property<int>("Duration") .HasColumnType("integer"); b.Property<int>("EffectId") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("Propability") .HasColumnType("smallint"); b.Property<short>("TimeoutBuff") .HasColumnType("smallint"); b.Property<byte>("TimeoutBuffChance") .HasColumnType("smallint"); b.HasKey("CardId"); b.ToTable("Card"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Property<long>("CharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("CharacterId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<int>("Act4Dead") .HasColumnType("integer"); b.Property<int>("Act4Kill") .HasColumnType("integer"); b.Property<int>("Act4Points") .HasColumnType("integer"); b.Property<int>("ArenaWinner") .HasColumnType("integer"); b.Property<string>("Biography") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("BuffBlocked") .HasColumnType("boolean"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Compliment") .HasColumnType("smallint"); b.Property<Guid?>("CurrentScriptId") .HasColumnType("uuid"); b.Property<short>("Dignity") .HasColumnType("smallint"); b.Property<int>("Elo") .HasColumnType("integer"); b.Property<bool>("EmoticonsBlocked") .HasColumnType("boolean"); b.Property<bool>("ExchangeBlocked") .HasColumnType("boolean"); b.Property<byte>("Faction") .HasColumnType("smallint"); b.Property<bool>("FamilyRequestBlocked") .HasColumnType("boolean"); b.Property<bool>("FriendRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("Gender") .HasColumnType("smallint"); b.Property<long>("Gold") .HasColumnType("bigint"); b.Property<bool>("GroupRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("HairColor") .HasColumnType("smallint"); b.Property<byte>("HairStyle") .HasColumnType("smallint"); b.Property<bool>("HeroChatBlocked") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<long>("HeroXp") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("HpBlocked") .HasColumnType("boolean"); b.Property<byte>("JobLevel") .HasColumnType("smallint"); b.Property<long>("JobLevelXp") .HasColumnType("bigint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<long>("LevelXp") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<int>("MasterPoints") .HasColumnType("integer"); b.Property<int>("MasterTicket") .HasColumnType("integer"); b.Property<byte>("MaxMateCount") .HasColumnType("smallint"); b.Property<bool>("MinilandInviteBlocked") .HasColumnType("boolean"); b.Property<bool>("MouseAimLock") .HasColumnType("boolean"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("Prefix") .HasMaxLength(25) .HasColumnType("character varying(25)"); b.Property<bool>("QuickGetUp") .HasColumnType("boolean"); b.Property<long>("RagePoint") .HasColumnType("bigint"); b.Property<long>("Reput") .HasColumnType("bigint"); b.Property<byte>("ServerId") .HasColumnType("smallint"); b.Property<bool>("ShouldRename") .HasColumnType("boolean"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<int>("SpAdditionPoint") .HasColumnType("integer"); b.Property<int>("SpPoint") .HasColumnType("integer"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("TalentLose") .HasColumnType("integer"); b.Property<int>("TalentSurrender") .HasColumnType("integer"); b.Property<int>("TalentWin") .HasColumnType("integer"); b.Property<bool>("WhisperBlocked") .HasColumnType("boolean"); b.HasKey("CharacterId"); b.HasIndex("AccountId"); b.HasIndex("CurrentScriptId"); b.HasIndex("MapId"); b.ToTable("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.HasKey("Id"); b.HasIndex("ActPartId"); b.HasIndex("CharacterId"); b.ToTable("CharacterActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("CompletedOn") .HasColumnType("timestamp with time zone"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("QuestId"); b.ToTable("CharacterQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("CharacterQuestId") .HasColumnType("uuid"); b.Property<int>("Count") .HasColumnType("integer"); b.Property<Guid>("QuestObjectiveId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("QuestObjectiveId"); b.HasIndex("CharacterQuestId", "QuestObjectiveId") .IsUnique(); b.ToTable("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.Property<Guid>("CharacterRelationId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<long>("RelatedCharacterId") .HasColumnType("bigint"); b.Property<short>("RelationType") .HasColumnType("smallint"); b.HasKey("CharacterRelationId"); b.HasIndex("CharacterId"); b.HasIndex("RelatedCharacterId"); b.ToTable("CharacterRelation"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("SkillVNum"); b.ToTable("CharacterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.Property<int>("ComboId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ComboId")); b.Property<short>("Animation") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("Hit") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("ComboId"); b.HasIndex("SkillVNum"); b.ToTable("Combo"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.Property<short>("DropId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DropId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("DropChance") .HasColumnType("integer"); b.Property<short?>("MapTypeId") .HasColumnType("smallint"); b.Property<short?>("MonsterVNum") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("DropId"); b.HasIndex("MapTypeId"); b.HasIndex("MonsterVNum"); b.HasIndex("VNum"); b.ToTable("Drop"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<int>("Value") .HasColumnType("integer"); b.Property<Guid>("WearableInstanceId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("WearableInstanceId"); b.ToTable("EquipmentOption"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Property<long>("FamilyId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyId")); b.Property<int>("FamilyExperience") .HasColumnType("integer"); b.Property<byte>("FamilyFaction") .HasColumnType("smallint"); b.Property<byte>("FamilyHeadGender") .HasColumnType("smallint"); b.Property<byte>("FamilyLevel") .HasColumnType("smallint"); b.Property<string>("FamilyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("ManagerAuthorityType") .HasColumnType("integer"); b.Property<bool>("ManagerCanGetHistory") .HasColumnType("boolean"); b.Property<bool>("ManagerCanInvite") .HasColumnType("boolean"); b.Property<bool>("ManagerCanNotice") .HasColumnType("boolean"); b.Property<bool>("ManagerCanShout") .HasColumnType("boolean"); b.Property<byte>("MaxSize") .HasColumnType("smallint"); b.Property<int>("MemberAuthorityType") .HasColumnType("integer"); b.Property<bool>("MemberCanGetHistory") .HasColumnType("boolean"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("WarehouseSize") .HasColumnType("smallint"); b.HasKey("FamilyId"); b.ToTable("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.Property<long>("FamilyCharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyCharacterId")); b.Property<byte>("Authority") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<string>("DailyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Experience") .HasColumnType("integer"); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Rank") .HasColumnType("smallint"); b.HasKey("FamilyCharacterId"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("FamilyCharacter"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.Property<long>("FamilyLogId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyLogId")); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<string>("FamilyLogData") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("FamilyLogType") .HasColumnType("smallint"); b.Property<Instant>("Timestamp") .HasColumnType("timestamp with time zone"); b.HasKey("FamilyLogId"); b.HasIndex("FamilyId"); b.ToTable("FamilyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NActDesc", b => { b.Property<int>("I18NActDescId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NActDescId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NActDescId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NActDesc"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NBCard", b => { b.Property<int>("I18NbCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NbCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NbCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NBCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NCard", b => { b.Property<int>("I18NCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NItem", b => { b.Property<int>("I18NItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NItemId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NItemId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NItem"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapIdData", b => { b.Property<int>("I18NMapIdDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapIdDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapIdDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapIdData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapPointData", b => { b.Property<int>("I18NMapPointDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapPointDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapPointDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapPointData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonster", b => { b.Property<int>("I18NNpcMonsterId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonsterTalk", b => { b.Property<int>("I18NNpcMonsterTalkId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterTalkId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterTalkId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonsterTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NQuest", b => { b.Property<int>("I18NQuestId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NQuestId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NQuestId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NSkill", b => { b.Property<int>("I18NSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NSkillId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NSkillId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("CharacterId", "Slot", "Type") .IsUnique(); b.ToTable("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Property<short>("VNum") .HasColumnType("smallint"); b.Property<byte>("BasicUpgrade") .HasColumnType("smallint"); b.Property<byte>("CellonLvl") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte>("DarkElement") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<int>("Effect") .HasColumnType("integer"); b.Property<int>("EffectValue") .HasColumnType("integer"); b.Property<int>("Element") .HasColumnType("integer"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<byte>("EquipmentSlot") .HasColumnType("smallint"); b.Property<byte>("FireElement") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<bool>("Flag1") .HasColumnType("boolean"); b.Property<bool>("Flag2") .HasColumnType("boolean"); b.Property<bool>("Flag3") .HasColumnType("boolean"); b.Property<bool>("Flag4") .HasColumnType("boolean"); b.Property<bool>("Flag6") .HasColumnType("boolean"); b.Property<bool>("Flag7") .HasColumnType("boolean"); b.Property<bool>("Flag8") .HasColumnType("boolean"); b.Property<bool>("Flag9") .HasColumnType("boolean"); b.Property<byte>("Height") .HasColumnType("smallint"); b.Property<short>("HitRate") .HasColumnType("smallint"); b.Property<short>("Hp") .HasColumnType("smallint"); b.Property<short>("HpRegeneration") .HasColumnType("smallint"); b.Property<bool>("IsColored") .HasColumnType("boolean"); b.Property<bool>("IsConsumable") .HasColumnType("boolean"); b.Property<bool>("IsDroppable") .HasColumnType("boolean"); b.Property<bool>("IsHeroic") .HasColumnType("boolean"); b.Property<bool>("IsMinilandActionable") .HasColumnType("boolean"); b.Property<bool>("IsSoldable") .HasColumnType("boolean"); b.Property<bool>("IsTradable") .HasColumnType("boolean"); b.Property<bool>("IsWarehouse") .HasColumnType("boolean"); b.Property<byte>("ItemSubType") .HasColumnType("smallint"); b.Property<byte>("ItemType") .HasColumnType("smallint"); b.Property<long>("ItemValidTime") .HasColumnType("bigint"); b.Property<byte>("LevelJobMinimum") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("LightElement") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<byte>("MaxCellon") .HasColumnType("smallint"); b.Property<byte>("MaxCellonLvl") .HasColumnType("smallint"); b.Property<short>("MaxElementRate") .HasColumnType("smallint"); b.Property<byte>("MaximumAmmo") .HasColumnType("smallint"); b.Property<int>("MinilandObjectPoint") .HasColumnType("integer"); b.Property<short>("MoreHp") .HasColumnType("smallint"); b.Property<short>("MoreMp") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("Mp") .HasColumnType("smallint"); b.Property<short>("MpRegeneration") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<short>("PvpDefence") .HasColumnType("smallint"); b.Property<byte>("PvpStrength") .HasColumnType("smallint"); b.Property<short>("ReduceOposantResistance") .HasColumnType("smallint"); b.Property<long>("ReputPrice") .HasColumnType("bigint"); b.Property<byte>("ReputationMinimum") .HasColumnType("smallint"); b.Property<bool>("RequireBinding") .HasColumnType("boolean"); b.Property<short>("SecondMorph") .HasColumnType("smallint"); b.Property<int>("SecondaryElement") .HasColumnType("integer"); b.Property<byte>("Sex") .HasColumnType("smallint"); b.Property<byte>("SpType") .HasColumnType("smallint"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("WaitDelay") .HasColumnType("smallint"); b.Property<byte>("WaterElement") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<byte>("Width") .HasColumnType("smallint"); b.HasKey("VNum"); b.ToTable("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<long?>("BoundCharacterId") .HasColumnType("bigint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("Design") .HasColumnType("smallint"); b.Property<string>("Discriminator") .IsRequired() .HasMaxLength(21) .HasColumnType("character varying(21)"); b.Property<int>("DurabilityPoint") .HasColumnType("integer"); b.Property<Instant?>("ItemDeleteTime") .HasColumnType("timestamp with time zone"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("BoundCharacterId"); b.HasIndex("ItemVNum"); b.ToTable("ItemInstance"); b.HasDiscriminator<string>("Discriminator").HasValue("ItemInstance"); b.UseTphMappingStrategy(); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.Property<long>("MailId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MailId")); b.Property<short?>("Armor") .HasColumnType("smallint"); b.Property<short?>("CostumeHat") .HasColumnType("smallint"); b.Property<short?>("CostumeSuit") .HasColumnType("smallint"); b.Property<Instant>("Date") .HasColumnType("timestamp with time zone"); b.Property<short?>("Fairy") .HasColumnType("smallint"); b.Property<short?>("Hat") .HasColumnType("smallint"); b.Property<bool>("IsOpened") .HasColumnType("boolean"); b.Property<bool>("IsSenderCopy") .HasColumnType("boolean"); b.Property<Guid?>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short?>("MainWeapon") .HasColumnType("smallint"); b.Property<short?>("Mask") .HasColumnType("smallint"); b.Property<string>("Message") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ReceiverId") .HasColumnType("bigint"); b.Property<short?>("SecondaryWeapon") .HasColumnType("smallint"); b.Property<byte?>("SenderCharacterClass") .HasColumnType("smallint"); b.Property<byte?>("SenderGender") .HasColumnType("smallint"); b.Property<byte?>("SenderHairColor") .HasColumnType("smallint"); b.Property<byte?>("SenderHairStyle") .HasColumnType("smallint"); b.Property<long?>("SenderId") .HasColumnType("bigint"); b.Property<short?>("SenderMorphId") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short?>("WeaponSkin") .HasColumnType("smallint"); b.Property<short?>("WingSkin") .HasColumnType("smallint"); b.HasKey("MailId"); b.HasIndex("ItemInstanceId"); b.HasIndex("ReceiverId"); b.HasIndex("SenderId"); b.ToTable("Mail"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<byte[]>("Data") .IsRequired() .HasColumnType("bytea"); b.Property<int>("Music") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("ShopAllowed") .HasColumnType("boolean"); b.HasKey("MapId"); b.ToTable("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.Property<int>("MapMonsterId") .HasColumnType("integer"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapMonsterId"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short?>("Dialog") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("EffectDelay") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<bool>("IsSitting") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapNpcId"); b.HasIndex("Dialog"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.Property<string>("MapTypeName") .IsRequired() .HasColumnType("text"); b.Property<short>("PotionDelay") .HasColumnType("smallint"); b.Property<long?>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<long?>("ReturnMapTypeId") .HasColumnType("bigint"); b.HasKey("MapTypeId"); b.HasIndex("RespawnMapTypeId"); b.HasIndex("ReturnMapTypeId"); b.ToTable("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.Property<short>("MapTypeMapId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("MapTypeMapId")); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.HasKey("MapTypeMapId"); b.HasIndex("MapTypeId"); b.HasIndex("MapId", "MapTypeId") .IsUnique(); b.ToTable("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.Property<long>("MateId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MateId")); b.Property<byte>("Attack") .HasColumnType("smallint"); b.Property<bool>("CanPickUp") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<byte>("Defence") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<long>("Experience") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("IsSummonable") .HasColumnType("boolean"); b.Property<bool>("IsTeamMember") .HasColumnType("boolean"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("Loyalty") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("MateType") .HasColumnType("smallint"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short>("Skin") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MateId"); b.HasIndex("CharacterId"); b.HasIndex("VNum"); b.ToTable("Mate"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.Property<Guid>("MinilandId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("DailyVisitCount") .HasColumnType("integer"); b.Property<string>("MinilandMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("MinilandPoint") .HasColumnType("bigint"); b.Property<long>("OwnerId") .HasColumnType("bigint"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("VisitCount") .HasColumnType("integer"); b.Property<short>("WelcomeMusicInfo") .HasColumnType("smallint"); b.HasKey("MinilandId"); b.HasIndex("OwnerId"); b.ToTable("Miniland"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.Property<Guid>("MinilandObjectId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<Guid?>("InventoryItemInstanceId") .HasColumnType("uuid"); b.Property<byte>("Level1BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level2BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level3BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level4BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level5BoxAmount") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.HasKey("MinilandObjectId"); b.HasIndex("InventoryItemInstanceId"); b.ToTable("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<bool>("AlwaysActive") .HasColumnType("boolean"); b.Property<byte>("AmountRequired") .HasColumnType("smallint"); b.Property<byte>("AttackClass") .HasColumnType("smallint"); b.Property<byte>("AttackUpgrade") .HasColumnType("smallint"); b.Property<byte>("BasicArea") .HasColumnType("smallint"); b.Property<short>("BasicCooldown") .HasColumnType("smallint"); b.Property<byte>("BasicRange") .HasColumnType("smallint"); b.Property<short>("BasicSkill") .HasColumnType("smallint"); b.Property<short>("CModeVNum") .HasColumnType("smallint"); b.Property<bool>("CanCatch") .HasColumnType("boolean"); b.Property<bool>("CanCollect") .HasColumnType("boolean"); b.Property<bool>("CanWalk") .HasColumnType("boolean"); b.Property<bool>("CantDebuff") .HasColumnType("boolean"); b.Property<bool>("CantTargetInfo") .HasColumnType("boolean"); b.Property<bool>("CantVoke") .HasColumnType("boolean"); b.Property<byte>("CellMinRange") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalChance") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<byte>("DefenceUpgrade") .HasColumnType("smallint"); b.Property<bool>("DisappearAfterHitting") .HasColumnType("boolean"); b.Property<bool>("DisappearAfterSeconds") .HasColumnType("boolean"); b.Property<bool>("DisappearAfterSecondsMana") .HasColumnType("boolean"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<bool>("DontDrainHpAfterSeconds") .HasColumnType("boolean"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<int>("GiveDamagePercentage") .HasColumnType("integer"); b.Property<bool>("HasDash") .HasColumnType("boolean"); b.Property<bool>("HasMode") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<int>("HeroXp") .HasColumnType("integer"); b.Property<short>("HpThreshold") .HasColumnType("smallint"); b.Property<bool>("IsHostile") .HasColumnType("boolean"); b.Property<bool>("IsPercent") .HasColumnType("boolean"); b.Property<int>("JobXp") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<byte>("Limiter") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<int>("MaxHp") .HasColumnType("integer"); b.Property<int>("MaxMp") .HasColumnType("integer"); b.Property<int>("Midgard") .HasColumnType("integer"); b.Property<byte>("MonsterType") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("NoAggresiveIcon") .HasColumnType("boolean"); b.Property<byte>("NoticeRange") .HasColumnType("smallint"); b.Property<bool>("OnDefenseOnlyOnce") .HasColumnType("boolean"); b.Property<byte>("Race") .HasColumnType("smallint"); b.Property<byte>("RaceType") .HasColumnType("smallint"); b.Property<short>("RangeThreshold") .HasColumnType("smallint"); b.Property<bool>("RegenerateHpOverTime") .HasColumnType("boolean"); b.Property<int>("RespawnTime") .HasColumnType("integer"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<int>("TakeDamages") .HasColumnType("integer"); b.Property<short>("VNumRequired") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<int>("Xp") .HasColumnType("integer"); b.HasKey("NpcMonsterVNum"); b.ToTable("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.Property<long>("NpcMonsterSkillId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("NpcMonsterSkillId")); b.Property<byte>("Force") .HasColumnType("smallint"); b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<short>("Rate") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("NpcMonsterSkillId"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Property<short>("DialogId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DialogId")); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("DialogId"); b.ToTable("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.Property<int>("PenaltyLogId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PenaltyLogId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<string>("AdminName") .IsRequired() .HasColumnType("text"); b.Property<Instant>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<byte>("Penalty") .HasColumnType("smallint"); b.Property<string>("Reason") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("PenaltyLogId"); b.HasIndex("AccountId"); b.ToTable("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.Property<int>("PortalId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PortalId")); b.Property<short>("DestinationMapId") .HasColumnType("smallint"); b.Property<short>("DestinationX") .HasColumnType("smallint"); b.Property<short>("DestinationY") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<short>("SourceMapId") .HasColumnType("smallint"); b.Property<short>("SourceX") .HasColumnType("smallint"); b.Property<short>("SourceY") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("PortalId"); b.HasIndex("DestinationMapId"); b.HasIndex("SourceMapId"); b.ToTable("Portal"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<bool>("AutoFinish") .HasColumnType("boolean"); b.Property<string>("Desc") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int?>("EndDialogId") .HasColumnType("integer"); b.Property<bool>("IsDaily") .HasColumnType("boolean"); b.Property<bool>("IsSecondary") .HasColumnType("boolean"); b.Property<byte>("LevelMax") .HasColumnType("smallint"); b.Property<byte>("LevelMin") .HasColumnType("smallint"); b.Property<short?>("NextQuestId") .HasColumnType("smallint"); b.Property<short>("QuestType") .HasColumnType("smallint"); b.Property<short?>("RequiredQuestId") .HasColumnType("smallint"); b.Property<int?>("SpecialData") .HasColumnType("integer"); b.Property<int?>("StartDialogId") .HasColumnType("integer"); b.Property<short?>("TargetMap") .HasColumnType("smallint"); b.Property<short?>("TargetX") .HasColumnType("smallint"); b.Property<short?>("TargetY") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("QuestId"); b.ToTable("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Property<Guid>("QuestObjectiveId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<int?>("FourthData") .HasColumnType("integer"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<int?>("SecondData") .HasColumnType("integer"); b.Property<int?>("ThirdData") .HasColumnType("integer"); b.HasKey("QuestObjectiveId"); b.HasIndex("QuestId"); b.ToTable("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<short>("QuestRewardId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("QuestId"); b.HasIndex("QuestRewardId"); b.ToTable("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Property<short>("QuestRewardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("QuestRewardId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("Data") .HasColumnType("integer"); b.Property<byte>("Design") .HasColumnType("smallint"); b.Property<byte>("Rarity") .HasColumnType("smallint"); b.Property<byte>("RewardType") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("QuestRewardId"); b.ToTable("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("IconType") .HasColumnType("smallint"); b.Property<short>("IconVNum") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("QuickListIndex") .HasColumnType("smallint"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.ToTable("QuicklistEntry"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Property<short>("RecipeId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeId")); b.Property<byte>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.HasKey("RecipeId"); b.HasIndex("ItemVNum"); b.HasIndex("MapNpcId"); b.ToTable("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.Property<short>("RecipeItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("RecipeId") .HasColumnType("smallint"); b.HasKey("RecipeItemId"); b.HasIndex("ItemVNum"); b.HasIndex("RecipeId"); b.ToTable("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.Property<long>("RespawnId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("RespawnId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("X") .HasColumnType("smallint"); b.Property<short>("Y") .HasColumnType("smallint"); b.HasKey("RespawnId"); b.HasIndex("CharacterId"); b.HasIndex("MapId"); b.HasIndex("RespawnMapTypeId"); b.ToTable("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("DefaultX") .HasColumnType("smallint"); b.Property<short>("DefaultY") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("RespawnMapTypeId"); b.HasIndex("MapId"); b.ToTable("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.Property<short>("RollGeneratedItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RollGeneratedItemId")); b.Property<bool>("IsRareRandom") .HasColumnType("boolean"); b.Property<bool>("IsSuperReward") .HasColumnType("boolean"); b.Property<byte>("ItemGeneratedAmount") .HasColumnType("smallint"); b.Property<byte>("ItemGeneratedUpgrade") .HasColumnType("smallint"); b.Property<short>("ItemGeneratedVNum") .HasColumnType("smallint"); b.Property<short>("MaximumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("MinimumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("OriginalItemDesign") .HasColumnType("smallint"); b.Property<short>("OriginalItemVNum") .HasColumnType("smallint"); b.Property<short>("Probability") .HasColumnType("smallint"); b.HasKey("RollGeneratedItemId"); b.HasIndex("ItemGeneratedVNum"); b.HasIndex("OriginalItemVNum"); b.ToTable("RollGeneratedItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short?>("Argument1") .HasColumnType("smallint"); b.Property<short?>("Argument2") .HasColumnType("smallint"); b.Property<short?>("Argument3") .HasColumnType("smallint"); b.Property<byte>("ScriptId") .HasColumnType("smallint"); b.Property<short>("ScriptStepId") .HasColumnType("smallint"); b.Property<string>("StepType") .IsRequired() .HasColumnType("text"); b.Property<string>("StringArgument") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("ScriptId", "ScriptStepId") .IsUnique(); b.ToTable("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.Property<short>("ScriptedInstanceId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("ScriptedInstanceId")); b.Property<string>("Label") .HasColumnType("text"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("PositionX") .HasColumnType("smallint"); b.Property<short>("PositionY") .HasColumnType("smallint"); b.Property<string>("Script") .HasMaxLength(2147483647) .HasColumnType("text"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ScriptedInstanceId"); b.HasIndex("MapId"); b.ToTable("ScriptedInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Property<int>("ShopId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopId")); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<byte>("MenuType") .HasColumnType("smallint"); b.Property<byte>("ShopType") .HasColumnType("smallint"); b.HasKey("ShopId"); b.HasIndex("MapNpcId"); b.ToTable("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.Property<int>("ShopItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopItemId")); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("ShopItemId"); b.HasIndex("ItemVNum"); b.HasIndex("ShopId"); b.ToTable("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.Property<int>("ShopSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopSkillId")); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ShopSkillId"); b.HasIndex("ShopId"); b.HasIndex("SkillVNum"); b.ToTable("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<short>("AttackAnimation") .HasColumnType("smallint"); b.Property<short>("CastAnimation") .HasColumnType("smallint"); b.Property<short>("CastEffect") .HasColumnType("smallint"); b.Property<short>("CastId") .HasColumnType("smallint"); b.Property<short>("CastTime") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Cooldown") .HasColumnType("smallint"); b.Property<byte>("CpCost") .HasColumnType("smallint"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<byte>("HitType") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("MinimumAdventurerLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumArcherLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumMagicianLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumSwordmanLevel") .HasColumnType("smallint"); b.Property<short>("MpCost") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Price") .HasColumnType("integer"); b.Property<byte>("Range") .HasColumnType("smallint"); b.Property<byte>("SkillType") .HasColumnType("smallint"); b.Property<byte>("TargetRange") .HasColumnType("smallint"); b.Property<byte>("TargetType") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("UpgradeSkill") .HasColumnType("smallint"); b.Property<short>("UpgradeType") .HasColumnType("smallint"); b.HasKey("SkillVNum"); b.ToTable("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.Property<long>("StaticBonusId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBonusId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<byte>("StaticBonusType") .HasColumnType("smallint"); b.HasKey("StaticBonusId"); b.HasIndex("CharacterId"); b.ToTable("StaticBonus"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.Property<long>("StaticBuffId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBuffId")); b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<int>("RemainingTime") .HasColumnType("integer"); b.HasKey("StaticBuffId"); b.HasIndex("CardId"); b.HasIndex("CharacterId"); b.ToTable("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.Property<short>("TeleporterId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("TeleporterId")); b.Property<short>("Index") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("TeleporterId"); b.HasIndex("MapId"); b.HasIndex("MapNpcId"); b.ToTable("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<bool>("Active") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("TitleType") .HasColumnType("smallint"); b.Property<bool>("Visible") .HasColumnType("boolean"); b.HasKey("Id"); b.HasIndex("CharacterId", "TitleType") .IsUnique(); b.ToTable("Title"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long?>("CharacterId") .HasColumnType("bigint"); b.Property<long?>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<Guid>("WarehouseId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("WarehouseId"); b.ToTable("WarehouseItem"); }); modelBuilder.Entity("NosCore.Database.Entities.UsableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.ToTable("ItemInstance", t => { t.Property("Hp") .HasColumnName("UsableInstance_Hp"); t.Property("Mp") .HasColumnName("UsableInstance_Mp"); }); b.HasDiscriminator().HasValue("UsableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.WearableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<byte?>("Ammo") .HasColumnType("smallint"); b.Property<byte?>("Cellon") .HasColumnType("smallint"); b.Property<short?>("CloseDefence") .HasColumnType("smallint"); b.Property<short?>("Concentrate") .HasColumnType("smallint"); b.Property<short?>("CriticalDodge") .HasColumnType("smallint"); b.Property<byte?>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short?>("CriticalRate") .HasColumnType("smallint"); b.Property<short?>("DamageMaximum") .HasColumnType("smallint"); b.Property<short?>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte?>("DarkElement") .HasColumnType("smallint"); b.Property<short?>("DarkResistance") .HasColumnType("smallint"); b.Property<short?>("DefenceDodge") .HasColumnType("smallint"); b.Property<short?>("DistanceDefence") .HasColumnType("smallint"); b.Property<short?>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<short?>("ElementRate") .HasColumnType("smallint"); b.Property<byte?>("FireElement") .HasColumnType("smallint"); b.Property<short?>("FireResistance") .HasColumnType("smallint"); b.Property<short?>("HitRate") .HasColumnType("smallint"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<bool?>("IsEmpty") .HasColumnType("boolean"); b.Property<bool?>("IsFixed") .HasColumnType("boolean"); b.Property<byte?>("LightElement") .HasColumnType("smallint"); b.Property<short?>("LightResistance") .HasColumnType("smallint"); b.Property<short?>("MagicDefence") .HasColumnType("smallint"); b.Property<short?>("MaxElementRate") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.Property<byte?>("ShellRarity") .HasColumnType("smallint"); b.Property<byte?>("WaterElement") .HasColumnType("smallint"); b.Property<short?>("WaterResistance") .HasColumnType("smallint"); b.Property<long?>("Xp") .HasColumnType("bigint"); b.HasDiscriminator().HasValue("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.SpecialistInstance", b => { b.HasBaseType("NosCore.Database.Entities.WearableInstance"); b.Property<short>("SlDamage") .HasColumnType("smallint"); b.Property<short>("SlDefence") .HasColumnType("smallint"); b.Property<short>("SlElement") .HasColumnType("smallint"); b.Property<short>("SlHp") .HasColumnType("smallint"); b.Property<byte>("SpDamage") .HasColumnType("smallint"); b.Property<byte>("SpDark") .HasColumnType("smallint"); b.Property<byte>("SpDefence") .HasColumnType("smallint"); b.Property<byte>("SpElement") .HasColumnType("smallint"); b.Property<byte>("SpFire") .HasColumnType("smallint"); b.Property<byte>("SpHp") .HasColumnType("smallint"); b.Property<byte>("SpLevel") .HasColumnType("smallint"); b.Property<byte>("SpLight") .HasColumnType("smallint"); b.Property<byte>("SpStoneUpgrade") .HasColumnType("smallint"); b.Property<byte>("SpWater") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("SpecialistInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.BoxInstance", b => { b.HasBaseType("NosCore.Database.Entities.SpecialistInstance"); b.Property<short?>("HoldingVNum") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("BoxInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.HasOne("NosCore.Database.Entities.Act", "Act") .WithMany("ActParts") .HasForeignKey("ActId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("BCards") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("BCards") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("BCards") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("BCards") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Card"); b.Navigation("Item"); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("BazaarItem") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Seller") .WithMany("BazaarItem") .HasForeignKey("SellerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Seller"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("Character") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Script", "Script") .WithMany("Characters") .HasForeignKey("CurrentScriptId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Character") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); b.Navigation("Map"); b.Navigation("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.HasOne("NosCore.Database.Entities.ActPart", "ActPart") .WithMany("CharacterActParts") .HasForeignKey("ActPartId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterActParts") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ActPart"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterQuest") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("CharacterQuest") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.HasOne("NosCore.Database.Entities.CharacterQuest", "CharacterQuest") .WithMany("CharacterQuestObjective") .HasForeignKey("CharacterQuestId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestObjective", "QuestObjective") .WithMany("CharacterQuestObjective") .HasForeignKey("QuestObjectiveId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.HasOne("NosCore.Database.Entities.Character", "Character1") .WithMany("CharacterRelation1") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character2") .WithMany("CharacterRelation2") .HasForeignKey("RelatedCharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character1"); b.Navigation("Character2"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterSkill") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("CharacterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("Combo") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("Drops") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Drop") .HasForeignKey("MonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Drop") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapType"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.HasOne("NosCore.Database.Entities.WearableInstance", "WearableInstance") .WithMany() .HasForeignKey("WearableInstanceId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("FamilyCharacter") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyCharacters") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyLogs") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Inventory") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("InventoryItemInstance") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("ItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "BoundCharacter") .WithMany() .HasForeignKey("BoundCharacterId"); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ItemInstances") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("BoundCharacter"); b.Navigation("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("Mail") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Character", "Receiver") .WithMany("Mail1") .HasForeignKey("ReceiverId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Sender") .WithMany("Mail") .HasForeignKey("SenderId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("ItemInstance"); b.Navigation("Receiver"); b.Navigation("Sender"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapMonster") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapMonster") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.HasOne("NosCore.Database.Entities.NpcTalk", "NpcTalk") .WithMany("MapNpc") .HasForeignKey("Dialog") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapNpc") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapNpc") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); b.Navigation("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("MapTypes") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.RespawnMapType", "ReturnMapType") .WithMany("MapTypes1") .HasForeignKey("ReturnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("RespawnMapType"); b.Navigation("ReturnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapTypeMap") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("MapTypeMap") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Mate") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Mate") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.HasOne("NosCore.Database.Entities.Character", "Owner") .WithMany("Miniland") .HasForeignKey("OwnerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Owner"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.HasOne("NosCore.Database.Entities.InventoryItemInstance", "InventoryItemInstance") .WithMany("MinilandObject") .HasForeignKey("InventoryItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("NpcMonsterSkill") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("NpcMonsterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("PenaltyLog") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Portal") .HasForeignKey("DestinationMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map1") .WithMany("Portal1") .HasForeignKey("SourceMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("Map1"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestObjective") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestQuestReward") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestReward", "QuestReward") .WithMany("QuestQuestReward") .HasForeignKey("QuestRewardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); b.Navigation("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("QuicklistEntry") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Recipe") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Recipe") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("RecipeItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Recipe", "Recipe") .WithMany("RecipeItem") .HasForeignKey("RecipeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Respawn") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Respawn") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("Respawn") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Map"); b.Navigation("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("RespawnMapType") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.HasOne("NosCore.Database.Entities.Item", "ItemGenerated") .WithMany("RollGeneratedItem2") .HasForeignKey("ItemGeneratedVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Item", "OriginalItem") .WithMany("RollGeneratedItem") .HasForeignKey("OriginalItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemGenerated"); b.Navigation("OriginalItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("ScriptedInstance") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Shop") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ShopItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopItem") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopSkill") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("ShopSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Shop"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBonus") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("StaticBuff") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBuff") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Card"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Teleporter") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Teleporter") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Title") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Warehouses") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("Warehouses") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("WarehouseItems") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Warehouse", "Warehouse") .WithMany("WarehouseItems") .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Navigation("Character"); b.Navigation("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Navigation("ActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Navigation("CharacterActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Navigation("BCards"); b.Navigation("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Navigation("BazaarItem"); b.Navigation("CharacterActParts"); b.Navigation("CharacterQuest"); b.Navigation("CharacterRelation1"); b.Navigation("CharacterRelation2"); b.Navigation("CharacterSkill"); b.Navigation("FamilyCharacter"); b.Navigation("Inventory"); b.Navigation("Mail"); b.Navigation("Mail1"); b.Navigation("Mate"); b.Navigation("Miniland"); b.Navigation("QuicklistEntry"); b.Navigation("Respawn"); b.Navigation("StaticBonus"); b.Navigation("StaticBuff"); b.Navigation("Title"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Navigation("FamilyCharacters"); b.Navigation("FamilyLogs"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Navigation("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("ItemInstances"); b.Navigation("Recipe"); b.Navigation("RecipeItem"); b.Navigation("RollGeneratedItem"); b.Navigation("RollGeneratedItem2"); b.Navigation("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Navigation("BazaarItem"); b.Navigation("InventoryItemInstance"); b.Navigation("Mail"); b.Navigation("WarehouseItems"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Navigation("Character"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("MapTypeMap"); b.Navigation("Portal"); b.Navigation("Portal1"); b.Navigation("Respawn"); b.Navigation("RespawnMapType"); b.Navigation("ScriptedInstance"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Navigation("Recipe"); b.Navigation("Shop"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Navigation("Drops"); b.Navigation("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("Mate"); b.Navigation("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Navigation("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Navigation("MapTypes"); b.Navigation("MapTypes1"); b.Navigation("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Navigation("Characters"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Navigation("ShopItem"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Navigation("BCards"); b.Navigation("CharacterSkill"); b.Navigation("Combo"); b.Navigation("NpcMonsterSkill"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Navigation("WarehouseItems"); }); #pragma warning restore 612, 618 } } } ================================================ FILE: src/NosCore.Database/Migrations/20260421070126_AddMountAndRaidPockets.cs ================================================ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace NosCore.Database.Migrations { /// <inheritdoc /> public partial class AddMountAndRaidPockets : Migration { /// <inheritdoc /> protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AlterDatabase() .Annotation("Npgsql:Enum:audit_log_type", "account_creation,character_creation,email_update") .Annotation("Npgsql:Enum:authority_type", "user,moderator,game_master,administrator,root,closed,banned,unconfirmed") .Annotation("Npgsql:Enum:character_class_type", "adventurer,swordsman,archer,mage,martial_artist") .Annotation("Npgsql:Enum:character_relation_type", "friend,hidden_spouse,spouse,blocked") .Annotation("Npgsql:Enum:character_state", "active,inactive") .Annotation("Npgsql:Enum:element_type", "neutral,fire,water,light,dark") .Annotation("Npgsql:Enum:equipment_type", "main_weapon,armor,hat,gloves,boots,secondary_weapon,necklace,ring,bracelet,mask,fairy,amulet,sp,costume_suit,costume_hat,weapon_skin,wing_skin") .Annotation("Npgsql:Enum:family_authority", "head,assistant,manager,member") .Annotation("Npgsql:Enum:family_authority_type", "none,put,all") .Annotation("Npgsql:Enum:family_log_type", "daily_message,raid_won,rainbow_battle,family_xp,family_level_up,level_up,item_upgraded,right_changed,authority_changed,family_managed,user_managed,ware_house_added,ware_house_removed") .Annotation("Npgsql:Enum:family_member_rank", "nothing,old_uncle,old_aunt,father,mother,uncle,aunt,brother,sister,spouse,brother2,sister2,old_son,old_daugter,middle_son,middle_daughter,young_son,young_daugter,old_little_son,old_little_daughter,little_son,little_daughter,middle_little_son,middle_little_daugter") .Annotation("Npgsql:Enum:gender_type", "male,female") .Annotation("Npgsql:Enum:hair_color_type", "dark_purple,yellow,blue,purple,orange,brown,green,dark_grey,light_blue,pink_red,light_yellow,light_pink,light_green,light_grey,sky_blue,black,dark_orange,dark_orange_variant2,dark_orange_variant3,dark_orange_variant4,dark_orange_variant5,dark_orange_variant6,light_orange,light_light_orange,light_light_light_orange,light_light_light_light_orange,super_light_orange,dark_yellow,light_light_yellow,kaki_yellow,super_light_yellow,super_light_yellow2,super_light_yellow3,little_dark_yellow,yellow_variant,yellow_variant1,yellow_variant2,yellow_variant3,yellow_variant4,yellow_variant5,yellow_variant6,yellow_variant7,yellow_variant8,yellow_variant9,green_variant,green_variant1,dark_green_variant,green_more_dark_variant,green_variant2,green_variant3,green_variant4,green_variant5,green_variant6,green_variant7,green_variant8,green_variant9,green_variant10,green_variant11,green_variant12,green_variant13,green_variant14,green_variant15,green_variant16,green_variant17,green_variant18,green_variant19,green_variant20,light_blue_variant1,light_blue_variant2,light_blue_variant3,light_blue_variant4,light_blue_variant5,light_blue_variant6,light_blue_variant7,light_blue_variant8,light_blue_variant9,light_blue_variant10,light_blue_variant11,light_blue_variant12,light_blue_variant13,dark_black,light_blue_variant14,light_blue_variant15,light_blue_variant16,light_blue_variant17,blue_variant,blue_variant_dark,blue_variant_dark_dark,blue_variant_dark_dark2,flash_blue,flash_blue_dark,flash_blue_dark2,flash_blue_dark3,flash_blue_dark4,flash_blue_dark5,flash_blue_dark6,flash_blue_dark7,flash_blue_dark8,flash_blue_dark9,white,flash_blue_dark10,flash_blue1,flash_blue2,flash_blue3,flash_blue4,flash_blue5,flash_purple,flash_light_purple,flash_light_purple2,flash_light_purple3,flash_light_purple4,flash_light_purple5,light_purple,purple_variant1,purple_variant2,purple_variant3,purple_variant4,purple_variant5,purple_variant6,purple_variant7,purple_variant8,purple_variant9,purple_variant10,purple_variant11,purple_variant12,purple_variant13,purple_variant14,purple_variant15") .Annotation("Npgsql:Enum:hair_style_type", "hair_style_a,hair_style_b,hair_style_c,hair_style_d,no_hair") .Annotation("Npgsql:Enum:item_effect_type", "no_effect,teleport,apply_hair_die,apply_hair_style,speaker,marriage_proposal,undefined,sp_charger,dropped_sp_recharger,premium_sp_recharger,crafted_sp_recharger,specialist_medal,apply_skin_partner,change_gender,point_initialisation,sealed_tarot_card,tarot_card,red_amulet,blue_amulet,reinforcement_amulet,heroic,random_heroic,attack_amulet,defense_amulet,speed_booster,box_effect,vehicle,gold_nos_merchant_upgrade,silver_nos_merchant_upgrade,inventory_upgrade,pet_space_upgrade,pet_basket_upgrade,pet_backpack_upgrade,inventory_ticket_upgrade,buff_potions,marriage_separation") .Annotation("Npgsql:Enum:item_type", "weapon,armor,fashion,jewelery,specialist,box,shell,main,upgrade,production,map,special,potion,event,title,quest1,sell,food,snack,magical,part,teacher,ammo,quest2,house,garden,minigame,terrace,miniland_theme") .Annotation("Npgsql:Enum:mate_type", "partner,pet") .Annotation("Npgsql:Enum:miniland_state", "open,private,lock") .Annotation("Npgsql:Enum:monster_type", "unknown,partner,npc,well,portal,boss,elite,peapod,special,gem_space_time") .Annotation("Npgsql:Enum:noscore_pocket_type", "equipment,main,etc,miniland,specialist,costume,wear,mount,raid") .Annotation("Npgsql:Enum:penalty_type", "muted,banned,block_exp,block_f_exp,block_rep,warning") .Annotation("Npgsql:Enum:portal_type", "ts_normal,closed,open,miniland,ts_end,ts_end_closed,exit,exit_closed,raid,effect,blue_raid,dark_raid,time_space,shop_teleport,map_portal") .Annotation("Npgsql:Enum:quest_type", "hunt,special_collect,collect_in_raid,brings,capture_without_getting_the_monster,capture,times_space,product,number_of_kill,target_reput,ts_point,dialog1,collect_in_ts,required,wear,needed,collect,transmit_gold,go_to,collect_map_entity,use,dialog2,un_know,inspect,win_raid,flower_quest") .Annotation("Npgsql:Enum:region_type", "en,de,fr,it,pl,es,ru,cs,tr") .Annotation("Npgsql:Enum:scripted_instance_type", "time_space,raid,raid_act4") .Annotation("Npgsql:Enum:static_bonus_type", "bazaar_medal_gold,bazaar_medal_silver,back_pack,pet_basket,pet_back_pack,inventory_ticket_upgrade") .Annotation("Npgsql:Enum:teleporter_type", "teleporter,teleporter_on_map") .Annotation("Npgsql:Enum:warehouse_type", "warehouse,family_ware_house,pet_warehouse") .OldAnnotation("Npgsql:Enum:audit_log_type", "account_creation,character_creation,email_update") .OldAnnotation("Npgsql:Enum:authority_type", "user,moderator,game_master,administrator,root,closed,banned,unconfirmed") .OldAnnotation("Npgsql:Enum:character_class_type", "adventurer,swordsman,archer,mage,martial_artist") .OldAnnotation("Npgsql:Enum:character_relation_type", "friend,hidden_spouse,spouse,blocked") .OldAnnotation("Npgsql:Enum:character_state", "active,inactive") .OldAnnotation("Npgsql:Enum:element_type", "neutral,fire,water,light,dark") .OldAnnotation("Npgsql:Enum:equipment_type", "main_weapon,armor,hat,gloves,boots,secondary_weapon,necklace,ring,bracelet,mask,fairy,amulet,sp,costume_suit,costume_hat,weapon_skin,wing_skin") .OldAnnotation("Npgsql:Enum:family_authority", "head,assistant,manager,member") .OldAnnotation("Npgsql:Enum:family_authority_type", "none,put,all") .OldAnnotation("Npgsql:Enum:family_log_type", "daily_message,raid_won,rainbow_battle,family_xp,family_level_up,level_up,item_upgraded,right_changed,authority_changed,family_managed,user_managed,ware_house_added,ware_house_removed") .OldAnnotation("Npgsql:Enum:family_member_rank", "nothing,old_uncle,old_aunt,father,mother,uncle,aunt,brother,sister,spouse,brother2,sister2,old_son,old_daugter,middle_son,middle_daughter,young_son,young_daugter,old_little_son,old_little_daughter,little_son,little_daughter,middle_little_son,middle_little_daugter") .OldAnnotation("Npgsql:Enum:gender_type", "male,female") .OldAnnotation("Npgsql:Enum:hair_color_type", "dark_purple,yellow,blue,purple,orange,brown,green,dark_grey,light_blue,pink_red,light_yellow,light_pink,light_green,light_grey,sky_blue,black,dark_orange,dark_orange_variant2,dark_orange_variant3,dark_orange_variant4,dark_orange_variant5,dark_orange_variant6,light_orange,light_light_orange,light_light_light_orange,light_light_light_light_orange,super_light_orange,dark_yellow,light_light_yellow,kaki_yellow,super_light_yellow,super_light_yellow2,super_light_yellow3,little_dark_yellow,yellow_variant,yellow_variant1,yellow_variant2,yellow_variant3,yellow_variant4,yellow_variant5,yellow_variant6,yellow_variant7,yellow_variant8,yellow_variant9,green_variant,green_variant1,dark_green_variant,green_more_dark_variant,green_variant2,green_variant3,green_variant4,green_variant5,green_variant6,green_variant7,green_variant8,green_variant9,green_variant10,green_variant11,green_variant12,green_variant13,green_variant14,green_variant15,green_variant16,green_variant17,green_variant18,green_variant19,green_variant20,light_blue_variant1,light_blue_variant2,light_blue_variant3,light_blue_variant4,light_blue_variant5,light_blue_variant6,light_blue_variant7,light_blue_variant8,light_blue_variant9,light_blue_variant10,light_blue_variant11,light_blue_variant12,light_blue_variant13,dark_black,light_blue_variant14,light_blue_variant15,light_blue_variant16,light_blue_variant17,blue_variant,blue_variant_dark,blue_variant_dark_dark,blue_variant_dark_dark2,flash_blue,flash_blue_dark,flash_blue_dark2,flash_blue_dark3,flash_blue_dark4,flash_blue_dark5,flash_blue_dark6,flash_blue_dark7,flash_blue_dark8,flash_blue_dark9,white,flash_blue_dark10,flash_blue1,flash_blue2,flash_blue3,flash_blue4,flash_blue5,flash_purple,flash_light_purple,flash_light_purple2,flash_light_purple3,flash_light_purple4,flash_light_purple5,light_purple,purple_variant1,purple_variant2,purple_variant3,purple_variant4,purple_variant5,purple_variant6,purple_variant7,purple_variant8,purple_variant9,purple_variant10,purple_variant11,purple_variant12,purple_variant13,purple_variant14,purple_variant15") .OldAnnotation("Npgsql:Enum:hair_style_type", "hair_style_a,hair_style_b,hair_style_c,hair_style_d,no_hair") .OldAnnotation("Npgsql:Enum:item_effect_type", "no_effect,teleport,apply_hair_die,apply_hair_style,speaker,marriage_proposal,undefined,sp_charger,dropped_sp_recharger,premium_sp_recharger,crafted_sp_recharger,specialist_medal,apply_skin_partner,change_gender,point_initialisation,sealed_tarot_card,tarot_card,red_amulet,blue_amulet,reinforcement_amulet,heroic,random_heroic,attack_amulet,defense_amulet,speed_booster,box_effect,vehicle,gold_nos_merchant_upgrade,silver_nos_merchant_upgrade,inventory_upgrade,pet_space_upgrade,pet_basket_upgrade,pet_backpack_upgrade,inventory_ticket_upgrade,buff_potions,marriage_separation") .OldAnnotation("Npgsql:Enum:item_type", "weapon,armor,fashion,jewelery,specialist,box,shell,main,upgrade,production,map,special,potion,event,title,quest1,sell,food,snack,magical,part,teacher,ammo,quest2,house,garden,minigame,terrace,miniland_theme") .OldAnnotation("Npgsql:Enum:mate_type", "partner,pet") .OldAnnotation("Npgsql:Enum:miniland_state", "open,private,lock") .OldAnnotation("Npgsql:Enum:monster_type", "unknown,partner,npc,well,portal,boss,elite,peapod,special,gem_space_time") .OldAnnotation("Npgsql:Enum:noscore_pocket_type", "equipment,main,etc,miniland,specialist,costume,wear") .OldAnnotation("Npgsql:Enum:penalty_type", "muted,banned,block_exp,block_f_exp,block_rep,warning") .OldAnnotation("Npgsql:Enum:portal_type", "ts_normal,closed,open,miniland,ts_end,ts_end_closed,exit,exit_closed,raid,effect,blue_raid,dark_raid,time_space,shop_teleport,map_portal") .OldAnnotation("Npgsql:Enum:quest_type", "hunt,special_collect,collect_in_raid,brings,capture_without_getting_the_monster,capture,times_space,product,number_of_kill,target_reput,ts_point,dialog1,collect_in_ts,required,wear,needed,collect,transmit_gold,go_to,collect_map_entity,use,dialog2,un_know,inspect,win_raid,flower_quest") .OldAnnotation("Npgsql:Enum:region_type", "en,de,fr,it,pl,es,ru,cs,tr") .OldAnnotation("Npgsql:Enum:scripted_instance_type", "time_space,raid,raid_act4") .OldAnnotation("Npgsql:Enum:static_bonus_type", "bazaar_medal_gold,bazaar_medal_silver,back_pack,pet_basket,pet_back_pack,inventory_ticket_upgrade") .OldAnnotation("Npgsql:Enum:teleporter_type", "teleporter,teleporter_on_map") .OldAnnotation("Npgsql:Enum:warehouse_type", "warehouse,family_ware_house,pet_warehouse"); } /// <inheritdoc /> protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.AlterDatabase() .Annotation("Npgsql:Enum:audit_log_type", "account_creation,character_creation,email_update") .Annotation("Npgsql:Enum:authority_type", "user,moderator,game_master,administrator,root,closed,banned,unconfirmed") .Annotation("Npgsql:Enum:character_class_type", "adventurer,swordsman,archer,mage,martial_artist") .Annotation("Npgsql:Enum:character_relation_type", "friend,hidden_spouse,spouse,blocked") .Annotation("Npgsql:Enum:character_state", "active,inactive") .Annotation("Npgsql:Enum:element_type", "neutral,fire,water,light,dark") .Annotation("Npgsql:Enum:equipment_type", "main_weapon,armor,hat,gloves,boots,secondary_weapon,necklace,ring,bracelet,mask,fairy,amulet,sp,costume_suit,costume_hat,weapon_skin,wing_skin") .Annotation("Npgsql:Enum:family_authority", "head,assistant,manager,member") .Annotation("Npgsql:Enum:family_authority_type", "none,put,all") .Annotation("Npgsql:Enum:family_log_type", "daily_message,raid_won,rainbow_battle,family_xp,family_level_up,level_up,item_upgraded,right_changed,authority_changed,family_managed,user_managed,ware_house_added,ware_house_removed") .Annotation("Npgsql:Enum:family_member_rank", "nothing,old_uncle,old_aunt,father,mother,uncle,aunt,brother,sister,spouse,brother2,sister2,old_son,old_daugter,middle_son,middle_daughter,young_son,young_daugter,old_little_son,old_little_daughter,little_son,little_daughter,middle_little_son,middle_little_daugter") .Annotation("Npgsql:Enum:gender_type", "male,female") .Annotation("Npgsql:Enum:hair_color_type", "dark_purple,yellow,blue,purple,orange,brown,green,dark_grey,light_blue,pink_red,light_yellow,light_pink,light_green,light_grey,sky_blue,black,dark_orange,dark_orange_variant2,dark_orange_variant3,dark_orange_variant4,dark_orange_variant5,dark_orange_variant6,light_orange,light_light_orange,light_light_light_orange,light_light_light_light_orange,super_light_orange,dark_yellow,light_light_yellow,kaki_yellow,super_light_yellow,super_light_yellow2,super_light_yellow3,little_dark_yellow,yellow_variant,yellow_variant1,yellow_variant2,yellow_variant3,yellow_variant4,yellow_variant5,yellow_variant6,yellow_variant7,yellow_variant8,yellow_variant9,green_variant,green_variant1,dark_green_variant,green_more_dark_variant,green_variant2,green_variant3,green_variant4,green_variant5,green_variant6,green_variant7,green_variant8,green_variant9,green_variant10,green_variant11,green_variant12,green_variant13,green_variant14,green_variant15,green_variant16,green_variant17,green_variant18,green_variant19,green_variant20,light_blue_variant1,light_blue_variant2,light_blue_variant3,light_blue_variant4,light_blue_variant5,light_blue_variant6,light_blue_variant7,light_blue_variant8,light_blue_variant9,light_blue_variant10,light_blue_variant11,light_blue_variant12,light_blue_variant13,dark_black,light_blue_variant14,light_blue_variant15,light_blue_variant16,light_blue_variant17,blue_variant,blue_variant_dark,blue_variant_dark_dark,blue_variant_dark_dark2,flash_blue,flash_blue_dark,flash_blue_dark2,flash_blue_dark3,flash_blue_dark4,flash_blue_dark5,flash_blue_dark6,flash_blue_dark7,flash_blue_dark8,flash_blue_dark9,white,flash_blue_dark10,flash_blue1,flash_blue2,flash_blue3,flash_blue4,flash_blue5,flash_purple,flash_light_purple,flash_light_purple2,flash_light_purple3,flash_light_purple4,flash_light_purple5,light_purple,purple_variant1,purple_variant2,purple_variant3,purple_variant4,purple_variant5,purple_variant6,purple_variant7,purple_variant8,purple_variant9,purple_variant10,purple_variant11,purple_variant12,purple_variant13,purple_variant14,purple_variant15") .Annotation("Npgsql:Enum:hair_style_type", "hair_style_a,hair_style_b,hair_style_c,hair_style_d,no_hair") .Annotation("Npgsql:Enum:item_effect_type", "no_effect,teleport,apply_hair_die,apply_hair_style,speaker,marriage_proposal,undefined,sp_charger,dropped_sp_recharger,premium_sp_recharger,crafted_sp_recharger,specialist_medal,apply_skin_partner,change_gender,point_initialisation,sealed_tarot_card,tarot_card,red_amulet,blue_amulet,reinforcement_amulet,heroic,random_heroic,attack_amulet,defense_amulet,speed_booster,box_effect,vehicle,gold_nos_merchant_upgrade,silver_nos_merchant_upgrade,inventory_upgrade,pet_space_upgrade,pet_basket_upgrade,pet_backpack_upgrade,inventory_ticket_upgrade,buff_potions,marriage_separation") .Annotation("Npgsql:Enum:item_type", "weapon,armor,fashion,jewelery,specialist,box,shell,main,upgrade,production,map,special,potion,event,title,quest1,sell,food,snack,magical,part,teacher,ammo,quest2,house,garden,minigame,terrace,miniland_theme") .Annotation("Npgsql:Enum:mate_type", "partner,pet") .Annotation("Npgsql:Enum:miniland_state", "open,private,lock") .Annotation("Npgsql:Enum:monster_type", "unknown,partner,npc,well,portal,boss,elite,peapod,special,gem_space_time") .Annotation("Npgsql:Enum:noscore_pocket_type", "equipment,main,etc,miniland,specialist,costume,wear") .Annotation("Npgsql:Enum:penalty_type", "muted,banned,block_exp,block_f_exp,block_rep,warning") .Annotation("Npgsql:Enum:portal_type", "ts_normal,closed,open,miniland,ts_end,ts_end_closed,exit,exit_closed,raid,effect,blue_raid,dark_raid,time_space,shop_teleport,map_portal") .Annotation("Npgsql:Enum:quest_type", "hunt,special_collect,collect_in_raid,brings,capture_without_getting_the_monster,capture,times_space,product,number_of_kill,target_reput,ts_point,dialog1,collect_in_ts,required,wear,needed,collect,transmit_gold,go_to,collect_map_entity,use,dialog2,un_know,inspect,win_raid,flower_quest") .Annotation("Npgsql:Enum:region_type", "en,de,fr,it,pl,es,ru,cs,tr") .Annotation("Npgsql:Enum:scripted_instance_type", "time_space,raid,raid_act4") .Annotation("Npgsql:Enum:static_bonus_type", "bazaar_medal_gold,bazaar_medal_silver,back_pack,pet_basket,pet_back_pack,inventory_ticket_upgrade") .Annotation("Npgsql:Enum:teleporter_type", "teleporter,teleporter_on_map") .Annotation("Npgsql:Enum:warehouse_type", "warehouse,family_ware_house,pet_warehouse") .OldAnnotation("Npgsql:Enum:audit_log_type", "account_creation,character_creation,email_update") .OldAnnotation("Npgsql:Enum:authority_type", "user,moderator,game_master,administrator,root,closed,banned,unconfirmed") .OldAnnotation("Npgsql:Enum:character_class_type", "adventurer,swordsman,archer,mage,martial_artist") .OldAnnotation("Npgsql:Enum:character_relation_type", "friend,hidden_spouse,spouse,blocked") .OldAnnotation("Npgsql:Enum:character_state", "active,inactive") .OldAnnotation("Npgsql:Enum:element_type", "neutral,fire,water,light,dark") .OldAnnotation("Npgsql:Enum:equipment_type", "main_weapon,armor,hat,gloves,boots,secondary_weapon,necklace,ring,bracelet,mask,fairy,amulet,sp,costume_suit,costume_hat,weapon_skin,wing_skin") .OldAnnotation("Npgsql:Enum:family_authority", "head,assistant,manager,member") .OldAnnotation("Npgsql:Enum:family_authority_type", "none,put,all") .OldAnnotation("Npgsql:Enum:family_log_type", "daily_message,raid_won,rainbow_battle,family_xp,family_level_up,level_up,item_upgraded,right_changed,authority_changed,family_managed,user_managed,ware_house_added,ware_house_removed") .OldAnnotation("Npgsql:Enum:family_member_rank", "nothing,old_uncle,old_aunt,father,mother,uncle,aunt,brother,sister,spouse,brother2,sister2,old_son,old_daugter,middle_son,middle_daughter,young_son,young_daugter,old_little_son,old_little_daughter,little_son,little_daughter,middle_little_son,middle_little_daugter") .OldAnnotation("Npgsql:Enum:gender_type", "male,female") .OldAnnotation("Npgsql:Enum:hair_color_type", "dark_purple,yellow,blue,purple,orange,brown,green,dark_grey,light_blue,pink_red,light_yellow,light_pink,light_green,light_grey,sky_blue,black,dark_orange,dark_orange_variant2,dark_orange_variant3,dark_orange_variant4,dark_orange_variant5,dark_orange_variant6,light_orange,light_light_orange,light_light_light_orange,light_light_light_light_orange,super_light_orange,dark_yellow,light_light_yellow,kaki_yellow,super_light_yellow,super_light_yellow2,super_light_yellow3,little_dark_yellow,yellow_variant,yellow_variant1,yellow_variant2,yellow_variant3,yellow_variant4,yellow_variant5,yellow_variant6,yellow_variant7,yellow_variant8,yellow_variant9,green_variant,green_variant1,dark_green_variant,green_more_dark_variant,green_variant2,green_variant3,green_variant4,green_variant5,green_variant6,green_variant7,green_variant8,green_variant9,green_variant10,green_variant11,green_variant12,green_variant13,green_variant14,green_variant15,green_variant16,green_variant17,green_variant18,green_variant19,green_variant20,light_blue_variant1,light_blue_variant2,light_blue_variant3,light_blue_variant4,light_blue_variant5,light_blue_variant6,light_blue_variant7,light_blue_variant8,light_blue_variant9,light_blue_variant10,light_blue_variant11,light_blue_variant12,light_blue_variant13,dark_black,light_blue_variant14,light_blue_variant15,light_blue_variant16,light_blue_variant17,blue_variant,blue_variant_dark,blue_variant_dark_dark,blue_variant_dark_dark2,flash_blue,flash_blue_dark,flash_blue_dark2,flash_blue_dark3,flash_blue_dark4,flash_blue_dark5,flash_blue_dark6,flash_blue_dark7,flash_blue_dark8,flash_blue_dark9,white,flash_blue_dark10,flash_blue1,flash_blue2,flash_blue3,flash_blue4,flash_blue5,flash_purple,flash_light_purple,flash_light_purple2,flash_light_purple3,flash_light_purple4,flash_light_purple5,light_purple,purple_variant1,purple_variant2,purple_variant3,purple_variant4,purple_variant5,purple_variant6,purple_variant7,purple_variant8,purple_variant9,purple_variant10,purple_variant11,purple_variant12,purple_variant13,purple_variant14,purple_variant15") .OldAnnotation("Npgsql:Enum:hair_style_type", "hair_style_a,hair_style_b,hair_style_c,hair_style_d,no_hair") .OldAnnotation("Npgsql:Enum:item_effect_type", "no_effect,teleport,apply_hair_die,apply_hair_style,speaker,marriage_proposal,undefined,sp_charger,dropped_sp_recharger,premium_sp_recharger,crafted_sp_recharger,specialist_medal,apply_skin_partner,change_gender,point_initialisation,sealed_tarot_card,tarot_card,red_amulet,blue_amulet,reinforcement_amulet,heroic,random_heroic,attack_amulet,defense_amulet,speed_booster,box_effect,vehicle,gold_nos_merchant_upgrade,silver_nos_merchant_upgrade,inventory_upgrade,pet_space_upgrade,pet_basket_upgrade,pet_backpack_upgrade,inventory_ticket_upgrade,buff_potions,marriage_separation") .OldAnnotation("Npgsql:Enum:item_type", "weapon,armor,fashion,jewelery,specialist,box,shell,main,upgrade,production,map,special,potion,event,title,quest1,sell,food,snack,magical,part,teacher,ammo,quest2,house,garden,minigame,terrace,miniland_theme") .OldAnnotation("Npgsql:Enum:mate_type", "partner,pet") .OldAnnotation("Npgsql:Enum:miniland_state", "open,private,lock") .OldAnnotation("Npgsql:Enum:monster_type", "unknown,partner,npc,well,portal,boss,elite,peapod,special,gem_space_time") .OldAnnotation("Npgsql:Enum:noscore_pocket_type", "equipment,main,etc,miniland,specialist,costume,wear,mount,raid") .OldAnnotation("Npgsql:Enum:penalty_type", "muted,banned,block_exp,block_f_exp,block_rep,warning") .OldAnnotation("Npgsql:Enum:portal_type", "ts_normal,closed,open,miniland,ts_end,ts_end_closed,exit,exit_closed,raid,effect,blue_raid,dark_raid,time_space,shop_teleport,map_portal") .OldAnnotation("Npgsql:Enum:quest_type", "hunt,special_collect,collect_in_raid,brings,capture_without_getting_the_monster,capture,times_space,product,number_of_kill,target_reput,ts_point,dialog1,collect_in_ts,required,wear,needed,collect,transmit_gold,go_to,collect_map_entity,use,dialog2,un_know,inspect,win_raid,flower_quest") .OldAnnotation("Npgsql:Enum:region_type", "en,de,fr,it,pl,es,ru,cs,tr") .OldAnnotation("Npgsql:Enum:scripted_instance_type", "time_space,raid,raid_act4") .OldAnnotation("Npgsql:Enum:static_bonus_type", "bazaar_medal_gold,bazaar_medal_silver,back_pack,pet_basket,pet_back_pack,inventory_ticket_upgrade") .OldAnnotation("Npgsql:Enum:teleporter_type", "teleporter,teleporter_on_map") .OldAnnotation("Npgsql:Enum:warehouse_type", "warehouse,family_ware_house,pet_warehouse"); } } } ================================================ FILE: src/NosCore.Database/Migrations/20260421105756_DropMapMonsterIsMoving.Designer.cs ================================================ // <auto-generated /> using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using NodaTime; using NosCore.Database; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace NosCore.Database.Migrations { [DbContext(typeof(NosCoreContext))] [Migration("20260421105756_DropMapMonsterIsMoving")] partial class DropMapMonsterIsMoving { /// <inheritdoc /> protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "10.0.6") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "audit_log_type", new[] { "account_creation", "character_creation", "email_update" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "authority_type", new[] { "user", "moderator", "game_master", "administrator", "root", "closed", "banned", "unconfirmed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_class_type", new[] { "adventurer", "swordsman", "archer", "mage", "martial_artist" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_relation_type", new[] { "friend", "hidden_spouse", "spouse", "blocked" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_state", new[] { "active", "inactive" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_type", new[] { "neutral", "fire", "water", "light", "dark" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "equipment_type", new[] { "main_weapon", "armor", "hat", "gloves", "boots", "secondary_weapon", "necklace", "ring", "bracelet", "mask", "fairy", "amulet", "sp", "costume_suit", "costume_hat", "weapon_skin", "wing_skin" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority", new[] { "head", "assistant", "manager", "member" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority_type", new[] { "none", "put", "all" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_log_type", new[] { "daily_message", "raid_won", "rainbow_battle", "family_xp", "family_level_up", "level_up", "item_upgraded", "right_changed", "authority_changed", "family_managed", "user_managed", "ware_house_added", "ware_house_removed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_member_rank", new[] { "nothing", "old_uncle", "old_aunt", "father", "mother", "uncle", "aunt", "brother", "sister", "spouse", "brother2", "sister2", "old_son", "old_daugter", "middle_son", "middle_daughter", "young_son", "young_daugter", "old_little_son", "old_little_daughter", "little_son", "little_daughter", "middle_little_son", "middle_little_daugter" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "gender_type", new[] { "male", "female" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_color_type", new[] { "dark_purple", "yellow", "blue", "purple", "orange", "brown", "green", "dark_grey", "light_blue", "pink_red", "light_yellow", "light_pink", "light_green", "light_grey", "sky_blue", "black", "dark_orange", "dark_orange_variant2", "dark_orange_variant3", "dark_orange_variant4", "dark_orange_variant5", "dark_orange_variant6", "light_orange", "light_light_orange", "light_light_light_orange", "light_light_light_light_orange", "super_light_orange", "dark_yellow", "light_light_yellow", "kaki_yellow", "super_light_yellow", "super_light_yellow2", "super_light_yellow3", "little_dark_yellow", "yellow_variant", "yellow_variant1", "yellow_variant2", "yellow_variant3", "yellow_variant4", "yellow_variant5", "yellow_variant6", "yellow_variant7", "yellow_variant8", "yellow_variant9", "green_variant", "green_variant1", "dark_green_variant", "green_more_dark_variant", "green_variant2", "green_variant3", "green_variant4", "green_variant5", "green_variant6", "green_variant7", "green_variant8", "green_variant9", "green_variant10", "green_variant11", "green_variant12", "green_variant13", "green_variant14", "green_variant15", "green_variant16", "green_variant17", "green_variant18", "green_variant19", "green_variant20", "light_blue_variant1", "light_blue_variant2", "light_blue_variant3", "light_blue_variant4", "light_blue_variant5", "light_blue_variant6", "light_blue_variant7", "light_blue_variant8", "light_blue_variant9", "light_blue_variant10", "light_blue_variant11", "light_blue_variant12", "light_blue_variant13", "dark_black", "light_blue_variant14", "light_blue_variant15", "light_blue_variant16", "light_blue_variant17", "blue_variant", "blue_variant_dark", "blue_variant_dark_dark", "blue_variant_dark_dark2", "flash_blue", "flash_blue_dark", "flash_blue_dark2", "flash_blue_dark3", "flash_blue_dark4", "flash_blue_dark5", "flash_blue_dark6", "flash_blue_dark7", "flash_blue_dark8", "flash_blue_dark9", "white", "flash_blue_dark10", "flash_blue1", "flash_blue2", "flash_blue3", "flash_blue4", "flash_blue5", "flash_purple", "flash_light_purple", "flash_light_purple2", "flash_light_purple3", "flash_light_purple4", "flash_light_purple5", "light_purple", "purple_variant1", "purple_variant2", "purple_variant3", "purple_variant4", "purple_variant5", "purple_variant6", "purple_variant7", "purple_variant8", "purple_variant9", "purple_variant10", "purple_variant11", "purple_variant12", "purple_variant13", "purple_variant14", "purple_variant15" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_style_type", new[] { "hair_style_a", "hair_style_b", "hair_style_c", "hair_style_d", "no_hair" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_effect_type", new[] { "no_effect", "teleport", "apply_hair_die", "apply_hair_style", "speaker", "marriage_proposal", "undefined", "sp_charger", "dropped_sp_recharger", "premium_sp_recharger", "crafted_sp_recharger", "specialist_medal", "apply_skin_partner", "change_gender", "point_initialisation", "sealed_tarot_card", "tarot_card", "red_amulet", "blue_amulet", "reinforcement_amulet", "heroic", "random_heroic", "attack_amulet", "defense_amulet", "speed_booster", "box_effect", "vehicle", "gold_nos_merchant_upgrade", "silver_nos_merchant_upgrade", "inventory_upgrade", "pet_space_upgrade", "pet_basket_upgrade", "pet_backpack_upgrade", "inventory_ticket_upgrade", "buff_potions", "marriage_separation" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_type", new[] { "weapon", "armor", "fashion", "jewelery", "specialist", "box", "shell", "main", "upgrade", "production", "map", "special", "potion", "event", "title", "quest1", "sell", "food", "snack", "magical", "part", "teacher", "ammo", "quest2", "house", "garden", "minigame", "terrace", "miniland_theme" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "mate_type", new[] { "partner", "pet" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "miniland_state", new[] { "open", "private", "lock" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "monster_type", new[] { "unknown", "partner", "npc", "well", "portal", "boss", "elite", "peapod", "special", "gem_space_time" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "noscore_pocket_type", new[] { "equipment", "main", "etc", "miniland", "specialist", "costume", "wear", "mount", "raid" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "penalty_type", new[] { "muted", "banned", "block_exp", "block_f_exp", "block_rep", "warning" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "portal_type", new[] { "ts_normal", "closed", "open", "miniland", "ts_end", "ts_end_closed", "exit", "exit_closed", "raid", "effect", "blue_raid", "dark_raid", "time_space", "shop_teleport", "map_portal" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "quest_type", new[] { "hunt", "special_collect", "collect_in_raid", "brings", "capture_without_getting_the_monster", "capture", "times_space", "product", "number_of_kill", "target_reput", "ts_point", "dialog1", "collect_in_ts", "required", "wear", "needed", "collect", "transmit_gold", "go_to", "collect_map_entity", "use", "dialog2", "un_know", "inspect", "win_raid", "flower_quest" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "region_type", new[] { "en", "de", "fr", "it", "pl", "es", "ru", "cs", "tr" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "scripted_instance_type", new[] { "time_space", "raid", "raid_act4" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "static_bonus_type", new[] { "bazaar_medal_gold", "bazaar_medal_silver", "back_pack", "pet_basket", "pet_back_pack", "inventory_ticket_upgrade" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "teleporter_type", new[] { "teleporter", "teleporter_on_map" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "warehouse_type", new[] { "warehouse", "family_ware_house", "pet_warehouse" }); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Property<long>("AccountId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("AccountId")); b.Property<short>("Authority") .HasColumnType("smallint"); b.Property<long>("BankMoney") .HasColumnType("bigint"); b.Property<string>("Email") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ItemShopMoney") .HasColumnType("bigint"); b.Property<int>("Language") .HasColumnType("integer"); b.Property<string>("MfaSecret") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthPassword") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthSalt") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Password") .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("RegistrationIp") .HasMaxLength(45) .HasColumnType("character varying(45)"); b.Property<string>("VerificationToken") .HasMaxLength(32) .HasColumnType("character varying(32)"); b.HasKey("AccountId"); b.HasIndex("Name") .IsUnique(); b.ToTable("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("Scene") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("ActId"); b.ToTable("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("ActPartNumber") .HasColumnType("smallint"); b.Property<byte>("MaxTs") .HasColumnType("smallint"); b.HasKey("ActPartId"); b.HasIndex("ActId"); b.ToTable("ActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.AuditLog", b => { b.Property<Guid>("AuditId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("AuditLogType") .HasColumnType("integer"); b.Property<string>("TargetId") .IsRequired() .HasMaxLength(80) .HasColumnType("character varying(80)"); b.Property<string>("TargetType") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)"); b.Property<Instant>("Time") .HasColumnType("timestamp with time zone"); b.Property<string>("Value") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("AuditId"); b.ToTable("AuditLog"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.Property<short>("BCardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("BCardId")); b.Property<short?>("CardId") .HasColumnType("smallint"); b.Property<byte>("CastType") .HasColumnType("smallint"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<bool>("IsLevelDivided") .HasColumnType("boolean"); b.Property<bool>("IsLevelScaled") .HasColumnType("boolean"); b.Property<short?>("ItemVNum") .HasColumnType("smallint"); b.Property<short?>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<int>("SecondData") .HasColumnType("integer"); b.Property<short?>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("SubType") .HasColumnType("smallint"); b.Property<int>("ThirdData") .HasColumnType("integer"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("BCardId"); b.HasIndex("CardId"); b.HasIndex("ItemVNum"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("BCard"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.Property<long>("BazaarItemId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("BazaarItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<bool>("IsPackage") .HasColumnType("boolean"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<bool>("MedalUsed") .HasColumnType("boolean"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<long>("SellerId") .HasColumnType("bigint"); b.HasKey("BazaarItemId"); b.HasIndex("ItemInstanceId"); b.HasIndex("SellerId"); b.ToTable("BazaarItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<byte>("BuffType") .HasColumnType("smallint"); b.Property<int>("Delay") .HasColumnType("integer"); b.Property<int>("Duration") .HasColumnType("integer"); b.Property<int>("EffectId") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("Propability") .HasColumnType("smallint"); b.Property<short>("TimeoutBuff") .HasColumnType("smallint"); b.Property<byte>("TimeoutBuffChance") .HasColumnType("smallint"); b.HasKey("CardId"); b.ToTable("Card"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Property<long>("CharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("CharacterId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<int>("Act4Dead") .HasColumnType("integer"); b.Property<int>("Act4Kill") .HasColumnType("integer"); b.Property<int>("Act4Points") .HasColumnType("integer"); b.Property<int>("ArenaWinner") .HasColumnType("integer"); b.Property<string>("Biography") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("BuffBlocked") .HasColumnType("boolean"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Compliment") .HasColumnType("smallint"); b.Property<Guid?>("CurrentScriptId") .HasColumnType("uuid"); b.Property<short>("Dignity") .HasColumnType("smallint"); b.Property<int>("Elo") .HasColumnType("integer"); b.Property<bool>("EmoticonsBlocked") .HasColumnType("boolean"); b.Property<bool>("ExchangeBlocked") .HasColumnType("boolean"); b.Property<byte>("Faction") .HasColumnType("smallint"); b.Property<bool>("FamilyRequestBlocked") .HasColumnType("boolean"); b.Property<bool>("FriendRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("Gender") .HasColumnType("smallint"); b.Property<long>("Gold") .HasColumnType("bigint"); b.Property<bool>("GroupRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("HairColor") .HasColumnType("smallint"); b.Property<byte>("HairStyle") .HasColumnType("smallint"); b.Property<bool>("HeroChatBlocked") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<long>("HeroXp") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("HpBlocked") .HasColumnType("boolean"); b.Property<byte>("JobLevel") .HasColumnType("smallint"); b.Property<long>("JobLevelXp") .HasColumnType("bigint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<long>("LevelXp") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<int>("MasterPoints") .HasColumnType("integer"); b.Property<int>("MasterTicket") .HasColumnType("integer"); b.Property<byte>("MaxMateCount") .HasColumnType("smallint"); b.Property<bool>("MinilandInviteBlocked") .HasColumnType("boolean"); b.Property<bool>("MouseAimLock") .HasColumnType("boolean"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("Prefix") .HasMaxLength(25) .HasColumnType("character varying(25)"); b.Property<bool>("QuickGetUp") .HasColumnType("boolean"); b.Property<long>("RagePoint") .HasColumnType("bigint"); b.Property<long>("Reput") .HasColumnType("bigint"); b.Property<byte>("ServerId") .HasColumnType("smallint"); b.Property<bool>("ShouldRename") .HasColumnType("boolean"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<int>("SpAdditionPoint") .HasColumnType("integer"); b.Property<int>("SpPoint") .HasColumnType("integer"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("TalentLose") .HasColumnType("integer"); b.Property<int>("TalentSurrender") .HasColumnType("integer"); b.Property<int>("TalentWin") .HasColumnType("integer"); b.Property<bool>("WhisperBlocked") .HasColumnType("boolean"); b.HasKey("CharacterId"); b.HasIndex("AccountId"); b.HasIndex("CurrentScriptId"); b.HasIndex("MapId"); b.ToTable("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.HasKey("Id"); b.HasIndex("ActPartId"); b.HasIndex("CharacterId"); b.ToTable("CharacterActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("CompletedOn") .HasColumnType("timestamp with time zone"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("QuestId"); b.ToTable("CharacterQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("CharacterQuestId") .HasColumnType("uuid"); b.Property<int>("Count") .HasColumnType("integer"); b.Property<Guid>("QuestObjectiveId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("QuestObjectiveId"); b.HasIndex("CharacterQuestId", "QuestObjectiveId") .IsUnique(); b.ToTable("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.Property<Guid>("CharacterRelationId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<long>("RelatedCharacterId") .HasColumnType("bigint"); b.Property<short>("RelationType") .HasColumnType("smallint"); b.HasKey("CharacterRelationId"); b.HasIndex("CharacterId"); b.HasIndex("RelatedCharacterId"); b.ToTable("CharacterRelation"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("SkillVNum"); b.ToTable("CharacterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.Property<int>("ComboId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ComboId")); b.Property<short>("Animation") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("Hit") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("ComboId"); b.HasIndex("SkillVNum"); b.ToTable("Combo"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.Property<short>("DropId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DropId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("DropChance") .HasColumnType("integer"); b.Property<short?>("MapTypeId") .HasColumnType("smallint"); b.Property<short?>("MonsterVNum") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("DropId"); b.HasIndex("MapTypeId"); b.HasIndex("MonsterVNum"); b.HasIndex("VNum"); b.ToTable("Drop"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<int>("Value") .HasColumnType("integer"); b.Property<Guid>("WearableInstanceId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("WearableInstanceId"); b.ToTable("EquipmentOption"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Property<long>("FamilyId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyId")); b.Property<int>("FamilyExperience") .HasColumnType("integer"); b.Property<byte>("FamilyFaction") .HasColumnType("smallint"); b.Property<byte>("FamilyHeadGender") .HasColumnType("smallint"); b.Property<byte>("FamilyLevel") .HasColumnType("smallint"); b.Property<string>("FamilyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("ManagerAuthorityType") .HasColumnType("integer"); b.Property<bool>("ManagerCanGetHistory") .HasColumnType("boolean"); b.Property<bool>("ManagerCanInvite") .HasColumnType("boolean"); b.Property<bool>("ManagerCanNotice") .HasColumnType("boolean"); b.Property<bool>("ManagerCanShout") .HasColumnType("boolean"); b.Property<byte>("MaxSize") .HasColumnType("smallint"); b.Property<int>("MemberAuthorityType") .HasColumnType("integer"); b.Property<bool>("MemberCanGetHistory") .HasColumnType("boolean"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("WarehouseSize") .HasColumnType("smallint"); b.HasKey("FamilyId"); b.ToTable("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.Property<long>("FamilyCharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyCharacterId")); b.Property<byte>("Authority") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<string>("DailyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Experience") .HasColumnType("integer"); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Rank") .HasColumnType("smallint"); b.HasKey("FamilyCharacterId"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("FamilyCharacter"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.Property<long>("FamilyLogId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyLogId")); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<string>("FamilyLogData") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("FamilyLogType") .HasColumnType("smallint"); b.Property<Instant>("Timestamp") .HasColumnType("timestamp with time zone"); b.HasKey("FamilyLogId"); b.HasIndex("FamilyId"); b.ToTable("FamilyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NActDesc", b => { b.Property<int>("I18NActDescId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NActDescId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NActDescId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NActDesc"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NBCard", b => { b.Property<int>("I18NbCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NbCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NbCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NBCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NCard", b => { b.Property<int>("I18NCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NItem", b => { b.Property<int>("I18NItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NItemId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NItemId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NItem"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapIdData", b => { b.Property<int>("I18NMapIdDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapIdDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapIdDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapIdData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapPointData", b => { b.Property<int>("I18NMapPointDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapPointDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapPointDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapPointData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonster", b => { b.Property<int>("I18NNpcMonsterId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonsterTalk", b => { b.Property<int>("I18NNpcMonsterTalkId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterTalkId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterTalkId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonsterTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NQuest", b => { b.Property<int>("I18NQuestId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NQuestId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NQuestId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NSkill", b => { b.Property<int>("I18NSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NSkillId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NSkillId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("CharacterId", "Slot", "Type") .IsUnique(); b.ToTable("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Property<short>("VNum") .HasColumnType("smallint"); b.Property<byte>("BasicUpgrade") .HasColumnType("smallint"); b.Property<byte>("CellonLvl") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte>("DarkElement") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<int>("Effect") .HasColumnType("integer"); b.Property<int>("EffectValue") .HasColumnType("integer"); b.Property<int>("Element") .HasColumnType("integer"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<byte>("EquipmentSlot") .HasColumnType("smallint"); b.Property<byte>("FireElement") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<bool>("Flag1") .HasColumnType("boolean"); b.Property<bool>("Flag2") .HasColumnType("boolean"); b.Property<bool>("Flag3") .HasColumnType("boolean"); b.Property<bool>("Flag4") .HasColumnType("boolean"); b.Property<bool>("Flag6") .HasColumnType("boolean"); b.Property<bool>("Flag7") .HasColumnType("boolean"); b.Property<bool>("Flag8") .HasColumnType("boolean"); b.Property<bool>("Flag9") .HasColumnType("boolean"); b.Property<byte>("Height") .HasColumnType("smallint"); b.Property<short>("HitRate") .HasColumnType("smallint"); b.Property<short>("Hp") .HasColumnType("smallint"); b.Property<short>("HpRegeneration") .HasColumnType("smallint"); b.Property<bool>("IsColored") .HasColumnType("boolean"); b.Property<bool>("IsConsumable") .HasColumnType("boolean"); b.Property<bool>("IsDroppable") .HasColumnType("boolean"); b.Property<bool>("IsHeroic") .HasColumnType("boolean"); b.Property<bool>("IsMinilandActionable") .HasColumnType("boolean"); b.Property<bool>("IsSoldable") .HasColumnType("boolean"); b.Property<bool>("IsTradable") .HasColumnType("boolean"); b.Property<bool>("IsWarehouse") .HasColumnType("boolean"); b.Property<byte>("ItemSubType") .HasColumnType("smallint"); b.Property<byte>("ItemType") .HasColumnType("smallint"); b.Property<long>("ItemValidTime") .HasColumnType("bigint"); b.Property<byte>("LevelJobMinimum") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("LightElement") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<byte>("MaxCellon") .HasColumnType("smallint"); b.Property<byte>("MaxCellonLvl") .HasColumnType("smallint"); b.Property<short>("MaxElementRate") .HasColumnType("smallint"); b.Property<byte>("MaximumAmmo") .HasColumnType("smallint"); b.Property<int>("MinilandObjectPoint") .HasColumnType("integer"); b.Property<short>("MoreHp") .HasColumnType("smallint"); b.Property<short>("MoreMp") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("Mp") .HasColumnType("smallint"); b.Property<short>("MpRegeneration") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<short>("PvpDefence") .HasColumnType("smallint"); b.Property<byte>("PvpStrength") .HasColumnType("smallint"); b.Property<short>("ReduceOposantResistance") .HasColumnType("smallint"); b.Property<long>("ReputPrice") .HasColumnType("bigint"); b.Property<byte>("ReputationMinimum") .HasColumnType("smallint"); b.Property<bool>("RequireBinding") .HasColumnType("boolean"); b.Property<short>("SecondMorph") .HasColumnType("smallint"); b.Property<int>("SecondaryElement") .HasColumnType("integer"); b.Property<byte>("Sex") .HasColumnType("smallint"); b.Property<byte>("SpType") .HasColumnType("smallint"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("WaitDelay") .HasColumnType("smallint"); b.Property<byte>("WaterElement") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<byte>("Width") .HasColumnType("smallint"); b.HasKey("VNum"); b.ToTable("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<long?>("BoundCharacterId") .HasColumnType("bigint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("Design") .HasColumnType("smallint"); b.Property<string>("Discriminator") .IsRequired() .HasMaxLength(21) .HasColumnType("character varying(21)"); b.Property<int>("DurabilityPoint") .HasColumnType("integer"); b.Property<Instant?>("ItemDeleteTime") .HasColumnType("timestamp with time zone"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("BoundCharacterId"); b.HasIndex("ItemVNum"); b.ToTable("ItemInstance"); b.HasDiscriminator<string>("Discriminator").HasValue("ItemInstance"); b.UseTphMappingStrategy(); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.Property<long>("MailId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MailId")); b.Property<short?>("Armor") .HasColumnType("smallint"); b.Property<short?>("CostumeHat") .HasColumnType("smallint"); b.Property<short?>("CostumeSuit") .HasColumnType("smallint"); b.Property<Instant>("Date") .HasColumnType("timestamp with time zone"); b.Property<short?>("Fairy") .HasColumnType("smallint"); b.Property<short?>("Hat") .HasColumnType("smallint"); b.Property<bool>("IsOpened") .HasColumnType("boolean"); b.Property<bool>("IsSenderCopy") .HasColumnType("boolean"); b.Property<Guid?>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short?>("MainWeapon") .HasColumnType("smallint"); b.Property<short?>("Mask") .HasColumnType("smallint"); b.Property<string>("Message") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ReceiverId") .HasColumnType("bigint"); b.Property<short?>("SecondaryWeapon") .HasColumnType("smallint"); b.Property<byte?>("SenderCharacterClass") .HasColumnType("smallint"); b.Property<byte?>("SenderGender") .HasColumnType("smallint"); b.Property<byte?>("SenderHairColor") .HasColumnType("smallint"); b.Property<byte?>("SenderHairStyle") .HasColumnType("smallint"); b.Property<long?>("SenderId") .HasColumnType("bigint"); b.Property<short?>("SenderMorphId") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short?>("WeaponSkin") .HasColumnType("smallint"); b.Property<short?>("WingSkin") .HasColumnType("smallint"); b.HasKey("MailId"); b.HasIndex("ItemInstanceId"); b.HasIndex("ReceiverId"); b.HasIndex("SenderId"); b.ToTable("Mail"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<byte[]>("Data") .IsRequired() .HasColumnType("bytea"); b.Property<int>("Music") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("ShopAllowed") .HasColumnType("boolean"); b.HasKey("MapId"); b.ToTable("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.Property<int>("MapMonsterId") .HasColumnType("integer"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapMonsterId"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short?>("Dialog") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("EffectDelay") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<bool>("IsSitting") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapNpcId"); b.HasIndex("Dialog"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.Property<string>("MapTypeName") .IsRequired() .HasColumnType("text"); b.Property<short>("PotionDelay") .HasColumnType("smallint"); b.Property<long?>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<long?>("ReturnMapTypeId") .HasColumnType("bigint"); b.HasKey("MapTypeId"); b.HasIndex("RespawnMapTypeId"); b.HasIndex("ReturnMapTypeId"); b.ToTable("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.Property<short>("MapTypeMapId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("MapTypeMapId")); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.HasKey("MapTypeMapId"); b.HasIndex("MapTypeId"); b.HasIndex("MapId", "MapTypeId") .IsUnique(); b.ToTable("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.Property<long>("MateId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MateId")); b.Property<byte>("Attack") .HasColumnType("smallint"); b.Property<bool>("CanPickUp") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<byte>("Defence") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<long>("Experience") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("IsSummonable") .HasColumnType("boolean"); b.Property<bool>("IsTeamMember") .HasColumnType("boolean"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("Loyalty") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("MateType") .HasColumnType("smallint"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short>("Skin") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MateId"); b.HasIndex("CharacterId"); b.HasIndex("VNum"); b.ToTable("Mate"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.Property<Guid>("MinilandId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("DailyVisitCount") .HasColumnType("integer"); b.Property<string>("MinilandMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("MinilandPoint") .HasColumnType("bigint"); b.Property<long>("OwnerId") .HasColumnType("bigint"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("VisitCount") .HasColumnType("integer"); b.Property<short>("WelcomeMusicInfo") .HasColumnType("smallint"); b.HasKey("MinilandId"); b.HasIndex("OwnerId"); b.ToTable("Miniland"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.Property<Guid>("MinilandObjectId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<Guid?>("InventoryItemInstanceId") .HasColumnType("uuid"); b.Property<byte>("Level1BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level2BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level3BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level4BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level5BoxAmount") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.HasKey("MinilandObjectId"); b.HasIndex("InventoryItemInstanceId"); b.ToTable("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<bool>("AlwaysActive") .HasColumnType("boolean"); b.Property<byte>("AmountRequired") .HasColumnType("smallint"); b.Property<byte>("AttackClass") .HasColumnType("smallint"); b.Property<byte>("AttackUpgrade") .HasColumnType("smallint"); b.Property<byte>("BasicArea") .HasColumnType("smallint"); b.Property<short>("BasicCooldown") .HasColumnType("smallint"); b.Property<byte>("BasicRange") .HasColumnType("smallint"); b.Property<short>("BasicSkill") .HasColumnType("smallint"); b.Property<short>("CModeVNum") .HasColumnType("smallint"); b.Property<bool>("CanCatch") .HasColumnType("boolean"); b.Property<bool>("CanCollect") .HasColumnType("boolean"); b.Property<bool>("CanWalk") .HasColumnType("boolean"); b.Property<bool>("CantDebuff") .HasColumnType("boolean"); b.Property<bool>("CantTargetInfo") .HasColumnType("boolean"); b.Property<bool>("CantVoke") .HasColumnType("boolean"); b.Property<byte>("CellMinRange") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalChance") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<byte>("DefenceUpgrade") .HasColumnType("smallint"); b.Property<bool>("DisappearAfterHitting") .HasColumnType("boolean"); b.Property<bool>("DisappearAfterSeconds") .HasColumnType("boolean"); b.Property<bool>("DisappearAfterSecondsMana") .HasColumnType("boolean"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<bool>("DontDrainHpAfterSeconds") .HasColumnType("boolean"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<int>("GiveDamagePercentage") .HasColumnType("integer"); b.Property<bool>("HasDash") .HasColumnType("boolean"); b.Property<bool>("HasMode") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<int>("HeroXp") .HasColumnType("integer"); b.Property<short>("HpThreshold") .HasColumnType("smallint"); b.Property<bool>("IsHostile") .HasColumnType("boolean"); b.Property<bool>("IsPercent") .HasColumnType("boolean"); b.Property<int>("JobXp") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<byte>("Limiter") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<int>("MaxHp") .HasColumnType("integer"); b.Property<int>("MaxMp") .HasColumnType("integer"); b.Property<int>("Midgard") .HasColumnType("integer"); b.Property<byte>("MonsterType") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("NoAggresiveIcon") .HasColumnType("boolean"); b.Property<byte>("NoticeRange") .HasColumnType("smallint"); b.Property<bool>("OnDefenseOnlyOnce") .HasColumnType("boolean"); b.Property<byte>("Race") .HasColumnType("smallint"); b.Property<byte>("RaceType") .HasColumnType("smallint"); b.Property<short>("RangeThreshold") .HasColumnType("smallint"); b.Property<bool>("RegenerateHpOverTime") .HasColumnType("boolean"); b.Property<int>("RespawnTime") .HasColumnType("integer"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<int>("TakeDamages") .HasColumnType("integer"); b.Property<short>("VNumRequired") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<int>("Xp") .HasColumnType("integer"); b.HasKey("NpcMonsterVNum"); b.ToTable("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.Property<long>("NpcMonsterSkillId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("NpcMonsterSkillId")); b.Property<byte>("Force") .HasColumnType("smallint"); b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<short>("Rate") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("NpcMonsterSkillId"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Property<short>("DialogId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DialogId")); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("DialogId"); b.ToTable("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.Property<int>("PenaltyLogId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PenaltyLogId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<string>("AdminName") .IsRequired() .HasColumnType("text"); b.Property<Instant>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<byte>("Penalty") .HasColumnType("smallint"); b.Property<string>("Reason") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("PenaltyLogId"); b.HasIndex("AccountId"); b.ToTable("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.Property<int>("PortalId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PortalId")); b.Property<short>("DestinationMapId") .HasColumnType("smallint"); b.Property<short>("DestinationX") .HasColumnType("smallint"); b.Property<short>("DestinationY") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<short>("SourceMapId") .HasColumnType("smallint"); b.Property<short>("SourceX") .HasColumnType("smallint"); b.Property<short>("SourceY") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("PortalId"); b.HasIndex("DestinationMapId"); b.HasIndex("SourceMapId"); b.ToTable("Portal"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<bool>("AutoFinish") .HasColumnType("boolean"); b.Property<string>("Desc") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int?>("EndDialogId") .HasColumnType("integer"); b.Property<bool>("IsDaily") .HasColumnType("boolean"); b.Property<bool>("IsSecondary") .HasColumnType("boolean"); b.Property<byte>("LevelMax") .HasColumnType("smallint"); b.Property<byte>("LevelMin") .HasColumnType("smallint"); b.Property<short?>("NextQuestId") .HasColumnType("smallint"); b.Property<short>("QuestType") .HasColumnType("smallint"); b.Property<short?>("RequiredQuestId") .HasColumnType("smallint"); b.Property<int?>("SpecialData") .HasColumnType("integer"); b.Property<int?>("StartDialogId") .HasColumnType("integer"); b.Property<short?>("TargetMap") .HasColumnType("smallint"); b.Property<short?>("TargetX") .HasColumnType("smallint"); b.Property<short?>("TargetY") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("QuestId"); b.ToTable("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Property<Guid>("QuestObjectiveId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<int?>("FourthData") .HasColumnType("integer"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<int?>("SecondData") .HasColumnType("integer"); b.Property<int?>("ThirdData") .HasColumnType("integer"); b.HasKey("QuestObjectiveId"); b.HasIndex("QuestId"); b.ToTable("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<short>("QuestRewardId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("QuestId"); b.HasIndex("QuestRewardId"); b.ToTable("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Property<short>("QuestRewardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("QuestRewardId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("Data") .HasColumnType("integer"); b.Property<byte>("Design") .HasColumnType("smallint"); b.Property<byte>("Rarity") .HasColumnType("smallint"); b.Property<byte>("RewardType") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("QuestRewardId"); b.ToTable("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("IconType") .HasColumnType("smallint"); b.Property<short>("IconVNum") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("QuickListIndex") .HasColumnType("smallint"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.ToTable("QuicklistEntry"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Property<short>("RecipeId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeId")); b.Property<byte>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.HasKey("RecipeId"); b.HasIndex("ItemVNum"); b.HasIndex("MapNpcId"); b.ToTable("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.Property<short>("RecipeItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("RecipeId") .HasColumnType("smallint"); b.HasKey("RecipeItemId"); b.HasIndex("ItemVNum"); b.HasIndex("RecipeId"); b.ToTable("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.Property<long>("RespawnId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("RespawnId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("X") .HasColumnType("smallint"); b.Property<short>("Y") .HasColumnType("smallint"); b.HasKey("RespawnId"); b.HasIndex("CharacterId"); b.HasIndex("MapId"); b.HasIndex("RespawnMapTypeId"); b.ToTable("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("DefaultX") .HasColumnType("smallint"); b.Property<short>("DefaultY") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("RespawnMapTypeId"); b.HasIndex("MapId"); b.ToTable("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.Property<short>("RollGeneratedItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RollGeneratedItemId")); b.Property<bool>("IsRareRandom") .HasColumnType("boolean"); b.Property<bool>("IsSuperReward") .HasColumnType("boolean"); b.Property<byte>("ItemGeneratedAmount") .HasColumnType("smallint"); b.Property<byte>("ItemGeneratedUpgrade") .HasColumnType("smallint"); b.Property<short>("ItemGeneratedVNum") .HasColumnType("smallint"); b.Property<short>("MaximumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("MinimumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("OriginalItemDesign") .HasColumnType("smallint"); b.Property<short>("OriginalItemVNum") .HasColumnType("smallint"); b.Property<short>("Probability") .HasColumnType("smallint"); b.HasKey("RollGeneratedItemId"); b.HasIndex("ItemGeneratedVNum"); b.HasIndex("OriginalItemVNum"); b.ToTable("RollGeneratedItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short?>("Argument1") .HasColumnType("smallint"); b.Property<short?>("Argument2") .HasColumnType("smallint"); b.Property<short?>("Argument3") .HasColumnType("smallint"); b.Property<byte>("ScriptId") .HasColumnType("smallint"); b.Property<short>("ScriptStepId") .HasColumnType("smallint"); b.Property<string>("StepType") .IsRequired() .HasColumnType("text"); b.Property<string>("StringArgument") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("ScriptId", "ScriptStepId") .IsUnique(); b.ToTable("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.Property<short>("ScriptedInstanceId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("ScriptedInstanceId")); b.Property<string>("Label") .HasColumnType("text"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("PositionX") .HasColumnType("smallint"); b.Property<short>("PositionY") .HasColumnType("smallint"); b.Property<string>("Script") .HasMaxLength(2147483647) .HasColumnType("text"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ScriptedInstanceId"); b.HasIndex("MapId"); b.ToTable("ScriptedInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Property<int>("ShopId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopId")); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<byte>("MenuType") .HasColumnType("smallint"); b.Property<byte>("ShopType") .HasColumnType("smallint"); b.HasKey("ShopId"); b.HasIndex("MapNpcId"); b.ToTable("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.Property<int>("ShopItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopItemId")); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("ShopItemId"); b.HasIndex("ItemVNum"); b.HasIndex("ShopId"); b.ToTable("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.Property<int>("ShopSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopSkillId")); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ShopSkillId"); b.HasIndex("ShopId"); b.HasIndex("SkillVNum"); b.ToTable("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<short>("AttackAnimation") .HasColumnType("smallint"); b.Property<short>("CastAnimation") .HasColumnType("smallint"); b.Property<short>("CastEffect") .HasColumnType("smallint"); b.Property<short>("CastId") .HasColumnType("smallint"); b.Property<short>("CastTime") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Cooldown") .HasColumnType("smallint"); b.Property<byte>("CpCost") .HasColumnType("smallint"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<byte>("HitType") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("MinimumAdventurerLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumArcherLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumMagicianLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumSwordmanLevel") .HasColumnType("smallint"); b.Property<short>("MpCost") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Price") .HasColumnType("integer"); b.Property<byte>("Range") .HasColumnType("smallint"); b.Property<byte>("SkillType") .HasColumnType("smallint"); b.Property<byte>("TargetRange") .HasColumnType("smallint"); b.Property<byte>("TargetType") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("UpgradeSkill") .HasColumnType("smallint"); b.Property<short>("UpgradeType") .HasColumnType("smallint"); b.HasKey("SkillVNum"); b.ToTable("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.Property<long>("StaticBonusId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBonusId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<byte>("StaticBonusType") .HasColumnType("smallint"); b.HasKey("StaticBonusId"); b.HasIndex("CharacterId"); b.ToTable("StaticBonus"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.Property<long>("StaticBuffId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBuffId")); b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<int>("RemainingTime") .HasColumnType("integer"); b.HasKey("StaticBuffId"); b.HasIndex("CardId"); b.HasIndex("CharacterId"); b.ToTable("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.Property<short>("TeleporterId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("TeleporterId")); b.Property<short>("Index") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("TeleporterId"); b.HasIndex("MapId"); b.HasIndex("MapNpcId"); b.ToTable("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<bool>("Active") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("TitleType") .HasColumnType("smallint"); b.Property<bool>("Visible") .HasColumnType("boolean"); b.HasKey("Id"); b.HasIndex("CharacterId", "TitleType") .IsUnique(); b.ToTable("Title"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long?>("CharacterId") .HasColumnType("bigint"); b.Property<long?>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<Guid>("WarehouseId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("WarehouseId"); b.ToTable("WarehouseItem"); }); modelBuilder.Entity("NosCore.Database.Entities.UsableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.ToTable("ItemInstance", t => { t.Property("Hp") .HasColumnName("UsableInstance_Hp"); t.Property("Mp") .HasColumnName("UsableInstance_Mp"); }); b.HasDiscriminator().HasValue("UsableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.WearableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<byte?>("Ammo") .HasColumnType("smallint"); b.Property<byte?>("Cellon") .HasColumnType("smallint"); b.Property<short?>("CloseDefence") .HasColumnType("smallint"); b.Property<short?>("Concentrate") .HasColumnType("smallint"); b.Property<short?>("CriticalDodge") .HasColumnType("smallint"); b.Property<byte?>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short?>("CriticalRate") .HasColumnType("smallint"); b.Property<short?>("DamageMaximum") .HasColumnType("smallint"); b.Property<short?>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte?>("DarkElement") .HasColumnType("smallint"); b.Property<short?>("DarkResistance") .HasColumnType("smallint"); b.Property<short?>("DefenceDodge") .HasColumnType("smallint"); b.Property<short?>("DistanceDefence") .HasColumnType("smallint"); b.Property<short?>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<short?>("ElementRate") .HasColumnType("smallint"); b.Property<byte?>("FireElement") .HasColumnType("smallint"); b.Property<short?>("FireResistance") .HasColumnType("smallint"); b.Property<short?>("HitRate") .HasColumnType("smallint"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<bool?>("IsEmpty") .HasColumnType("boolean"); b.Property<bool?>("IsFixed") .HasColumnType("boolean"); b.Property<byte?>("LightElement") .HasColumnType("smallint"); b.Property<short?>("LightResistance") .HasColumnType("smallint"); b.Property<short?>("MagicDefence") .HasColumnType("smallint"); b.Property<short?>("MaxElementRate") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.Property<byte?>("ShellRarity") .HasColumnType("smallint"); b.Property<byte?>("WaterElement") .HasColumnType("smallint"); b.Property<short?>("WaterResistance") .HasColumnType("smallint"); b.Property<long?>("Xp") .HasColumnType("bigint"); b.HasDiscriminator().HasValue("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.SpecialistInstance", b => { b.HasBaseType("NosCore.Database.Entities.WearableInstance"); b.Property<short>("SlDamage") .HasColumnType("smallint"); b.Property<short>("SlDefence") .HasColumnType("smallint"); b.Property<short>("SlElement") .HasColumnType("smallint"); b.Property<short>("SlHp") .HasColumnType("smallint"); b.Property<byte>("SpDamage") .HasColumnType("smallint"); b.Property<byte>("SpDark") .HasColumnType("smallint"); b.Property<byte>("SpDefence") .HasColumnType("smallint"); b.Property<byte>("SpElement") .HasColumnType("smallint"); b.Property<byte>("SpFire") .HasColumnType("smallint"); b.Property<byte>("SpHp") .HasColumnType("smallint"); b.Property<byte>("SpLevel") .HasColumnType("smallint"); b.Property<byte>("SpLight") .HasColumnType("smallint"); b.Property<byte>("SpStoneUpgrade") .HasColumnType("smallint"); b.Property<byte>("SpWater") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("SpecialistInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.BoxInstance", b => { b.HasBaseType("NosCore.Database.Entities.SpecialistInstance"); b.Property<short?>("HoldingVNum") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("BoxInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.HasOne("NosCore.Database.Entities.Act", "Act") .WithMany("ActParts") .HasForeignKey("ActId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("BCards") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("BCards") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("BCards") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("BCards") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Card"); b.Navigation("Item"); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("BazaarItem") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Seller") .WithMany("BazaarItem") .HasForeignKey("SellerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Seller"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("Character") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Script", "Script") .WithMany("Characters") .HasForeignKey("CurrentScriptId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Character") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); b.Navigation("Map"); b.Navigation("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.HasOne("NosCore.Database.Entities.ActPart", "ActPart") .WithMany("CharacterActParts") .HasForeignKey("ActPartId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterActParts") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ActPart"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterQuest") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("CharacterQuest") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.HasOne("NosCore.Database.Entities.CharacterQuest", "CharacterQuest") .WithMany("CharacterQuestObjective") .HasForeignKey("CharacterQuestId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestObjective", "QuestObjective") .WithMany("CharacterQuestObjective") .HasForeignKey("QuestObjectiveId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.HasOne("NosCore.Database.Entities.Character", "Character1") .WithMany("CharacterRelation1") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character2") .WithMany("CharacterRelation2") .HasForeignKey("RelatedCharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character1"); b.Navigation("Character2"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterSkill") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("CharacterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("Combo") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("Drops") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Drop") .HasForeignKey("MonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Drop") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapType"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.HasOne("NosCore.Database.Entities.WearableInstance", "WearableInstance") .WithMany() .HasForeignKey("WearableInstanceId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("FamilyCharacter") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyCharacters") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyLogs") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Inventory") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("InventoryItemInstance") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("ItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "BoundCharacter") .WithMany() .HasForeignKey("BoundCharacterId"); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ItemInstances") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("BoundCharacter"); b.Navigation("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("Mail") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Character", "Receiver") .WithMany("Mail1") .HasForeignKey("ReceiverId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Sender") .WithMany("Mail") .HasForeignKey("SenderId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("ItemInstance"); b.Navigation("Receiver"); b.Navigation("Sender"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapMonster") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapMonster") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.HasOne("NosCore.Database.Entities.NpcTalk", "NpcTalk") .WithMany("MapNpc") .HasForeignKey("Dialog") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapNpc") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapNpc") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); b.Navigation("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("MapTypes") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.RespawnMapType", "ReturnMapType") .WithMany("MapTypes1") .HasForeignKey("ReturnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("RespawnMapType"); b.Navigation("ReturnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapTypeMap") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("MapTypeMap") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Mate") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Mate") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.HasOne("NosCore.Database.Entities.Character", "Owner") .WithMany("Miniland") .HasForeignKey("OwnerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Owner"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.HasOne("NosCore.Database.Entities.InventoryItemInstance", "InventoryItemInstance") .WithMany("MinilandObject") .HasForeignKey("InventoryItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("NpcMonsterSkill") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("NpcMonsterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("PenaltyLog") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Portal") .HasForeignKey("DestinationMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map1") .WithMany("Portal1") .HasForeignKey("SourceMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("Map1"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestObjective") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestQuestReward") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestReward", "QuestReward") .WithMany("QuestQuestReward") .HasForeignKey("QuestRewardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); b.Navigation("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("QuicklistEntry") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Recipe") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Recipe") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("RecipeItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Recipe", "Recipe") .WithMany("RecipeItem") .HasForeignKey("RecipeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Respawn") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Respawn") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("Respawn") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Map"); b.Navigation("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("RespawnMapType") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.HasOne("NosCore.Database.Entities.Item", "ItemGenerated") .WithMany("RollGeneratedItem2") .HasForeignKey("ItemGeneratedVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Item", "OriginalItem") .WithMany("RollGeneratedItem") .HasForeignKey("OriginalItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemGenerated"); b.Navigation("OriginalItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("ScriptedInstance") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Shop") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ShopItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopItem") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopSkill") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("ShopSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Shop"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBonus") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("StaticBuff") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBuff") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Card"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Teleporter") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Teleporter") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Title") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Warehouses") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("Warehouses") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("WarehouseItems") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Warehouse", "Warehouse") .WithMany("WarehouseItems") .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Navigation("Character"); b.Navigation("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Navigation("ActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Navigation("CharacterActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Navigation("BCards"); b.Navigation("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Navigation("BazaarItem"); b.Navigation("CharacterActParts"); b.Navigation("CharacterQuest"); b.Navigation("CharacterRelation1"); b.Navigation("CharacterRelation2"); b.Navigation("CharacterSkill"); b.Navigation("FamilyCharacter"); b.Navigation("Inventory"); b.Navigation("Mail"); b.Navigation("Mail1"); b.Navigation("Mate"); b.Navigation("Miniland"); b.Navigation("QuicklistEntry"); b.Navigation("Respawn"); b.Navigation("StaticBonus"); b.Navigation("StaticBuff"); b.Navigation("Title"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Navigation("FamilyCharacters"); b.Navigation("FamilyLogs"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Navigation("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("ItemInstances"); b.Navigation("Recipe"); b.Navigation("RecipeItem"); b.Navigation("RollGeneratedItem"); b.Navigation("RollGeneratedItem2"); b.Navigation("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Navigation("BazaarItem"); b.Navigation("InventoryItemInstance"); b.Navigation("Mail"); b.Navigation("WarehouseItems"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Navigation("Character"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("MapTypeMap"); b.Navigation("Portal"); b.Navigation("Portal1"); b.Navigation("Respawn"); b.Navigation("RespawnMapType"); b.Navigation("ScriptedInstance"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Navigation("Recipe"); b.Navigation("Shop"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Navigation("Drops"); b.Navigation("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("Mate"); b.Navigation("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Navigation("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Navigation("MapTypes"); b.Navigation("MapTypes1"); b.Navigation("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Navigation("Characters"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Navigation("ShopItem"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Navigation("BCards"); b.Navigation("CharacterSkill"); b.Navigation("Combo"); b.Navigation("NpcMonsterSkill"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Navigation("WarehouseItems"); }); #pragma warning restore 612, 618 } } } ================================================ FILE: src/NosCore.Database/Migrations/20260421105756_DropMapMonsterIsMoving.cs ================================================ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace NosCore.Database.Migrations { /// <inheritdoc /> public partial class DropMapMonsterIsMoving : Migration { /// <inheritdoc /> protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.DropColumn( name: "IsMoving", table: "MapMonster"); } /// <inheritdoc /> protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.AddColumn<bool>( name: "IsMoving", table: "MapMonster", type: "boolean", nullable: false, defaultValue: false); } } } ================================================ FILE: src/NosCore.Database/Migrations/20260421112205_ParseExtraNpcMonsterColumns.Designer.cs ================================================ // <auto-generated /> using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using NodaTime; using NosCore.Database; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace NosCore.Database.Migrations { [DbContext(typeof(NosCoreContext))] [Migration("20260421112205_ParseExtraNpcMonsterColumns")] partial class ParseExtraNpcMonsterColumns { /// <inheritdoc /> protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "10.0.6") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "audit_log_type", new[] { "account_creation", "character_creation", "email_update" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "authority_type", new[] { "user", "moderator", "game_master", "administrator", "root", "closed", "banned", "unconfirmed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_class_type", new[] { "adventurer", "swordsman", "archer", "mage", "martial_artist" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_relation_type", new[] { "friend", "hidden_spouse", "spouse", "blocked" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_state", new[] { "active", "inactive" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_type", new[] { "neutral", "fire", "water", "light", "dark" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "equipment_type", new[] { "main_weapon", "armor", "hat", "gloves", "boots", "secondary_weapon", "necklace", "ring", "bracelet", "mask", "fairy", "amulet", "sp", "costume_suit", "costume_hat", "weapon_skin", "wing_skin" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority", new[] { "head", "assistant", "manager", "member" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority_type", new[] { "none", "put", "all" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_log_type", new[] { "daily_message", "raid_won", "rainbow_battle", "family_xp", "family_level_up", "level_up", "item_upgraded", "right_changed", "authority_changed", "family_managed", "user_managed", "ware_house_added", "ware_house_removed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_member_rank", new[] { "nothing", "old_uncle", "old_aunt", "father", "mother", "uncle", "aunt", "brother", "sister", "spouse", "brother2", "sister2", "old_son", "old_daugter", "middle_son", "middle_daughter", "young_son", "young_daugter", "old_little_son", "old_little_daughter", "little_son", "little_daughter", "middle_little_son", "middle_little_daugter" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "gender_type", new[] { "male", "female" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_color_type", new[] { "dark_purple", "yellow", "blue", "purple", "orange", "brown", "green", "dark_grey", "light_blue", "pink_red", "light_yellow", "light_pink", "light_green", "light_grey", "sky_blue", "black", "dark_orange", "dark_orange_variant2", "dark_orange_variant3", "dark_orange_variant4", "dark_orange_variant5", "dark_orange_variant6", "light_orange", "light_light_orange", "light_light_light_orange", "light_light_light_light_orange", "super_light_orange", "dark_yellow", "light_light_yellow", "kaki_yellow", "super_light_yellow", "super_light_yellow2", "super_light_yellow3", "little_dark_yellow", "yellow_variant", "yellow_variant1", "yellow_variant2", "yellow_variant3", "yellow_variant4", "yellow_variant5", "yellow_variant6", "yellow_variant7", "yellow_variant8", "yellow_variant9", "green_variant", "green_variant1", "dark_green_variant", "green_more_dark_variant", "green_variant2", "green_variant3", "green_variant4", "green_variant5", "green_variant6", "green_variant7", "green_variant8", "green_variant9", "green_variant10", "green_variant11", "green_variant12", "green_variant13", "green_variant14", "green_variant15", "green_variant16", "green_variant17", "green_variant18", "green_variant19", "green_variant20", "light_blue_variant1", "light_blue_variant2", "light_blue_variant3", "light_blue_variant4", "light_blue_variant5", "light_blue_variant6", "light_blue_variant7", "light_blue_variant8", "light_blue_variant9", "light_blue_variant10", "light_blue_variant11", "light_blue_variant12", "light_blue_variant13", "dark_black", "light_blue_variant14", "light_blue_variant15", "light_blue_variant16", "light_blue_variant17", "blue_variant", "blue_variant_dark", "blue_variant_dark_dark", "blue_variant_dark_dark2", "flash_blue", "flash_blue_dark", "flash_blue_dark2", "flash_blue_dark3", "flash_blue_dark4", "flash_blue_dark5", "flash_blue_dark6", "flash_blue_dark7", "flash_blue_dark8", "flash_blue_dark9", "white", "flash_blue_dark10", "flash_blue1", "flash_blue2", "flash_blue3", "flash_blue4", "flash_blue5", "flash_purple", "flash_light_purple", "flash_light_purple2", "flash_light_purple3", "flash_light_purple4", "flash_light_purple5", "light_purple", "purple_variant1", "purple_variant2", "purple_variant3", "purple_variant4", "purple_variant5", "purple_variant6", "purple_variant7", "purple_variant8", "purple_variant9", "purple_variant10", "purple_variant11", "purple_variant12", "purple_variant13", "purple_variant14", "purple_variant15" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_style_type", new[] { "hair_style_a", "hair_style_b", "hair_style_c", "hair_style_d", "no_hair" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_effect_type", new[] { "no_effect", "teleport", "apply_hair_die", "apply_hair_style", "speaker", "marriage_proposal", "undefined", "sp_charger", "dropped_sp_recharger", "premium_sp_recharger", "crafted_sp_recharger", "specialist_medal", "apply_skin_partner", "change_gender", "point_initialisation", "sealed_tarot_card", "tarot_card", "red_amulet", "blue_amulet", "reinforcement_amulet", "heroic", "random_heroic", "attack_amulet", "defense_amulet", "speed_booster", "box_effect", "vehicle", "gold_nos_merchant_upgrade", "silver_nos_merchant_upgrade", "inventory_upgrade", "pet_space_upgrade", "pet_basket_upgrade", "pet_backpack_upgrade", "inventory_ticket_upgrade", "buff_potions", "marriage_separation" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_type", new[] { "weapon", "armor", "fashion", "jewelery", "specialist", "box", "shell", "main", "upgrade", "production", "map", "special", "potion", "event", "title", "quest1", "sell", "food", "snack", "magical", "part", "teacher", "ammo", "quest2", "house", "garden", "minigame", "terrace", "miniland_theme" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "mate_type", new[] { "partner", "pet" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "miniland_state", new[] { "open", "private", "lock" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "monster_type", new[] { "unknown", "partner", "npc", "well", "portal", "boss", "elite", "peapod", "special", "gem_space_time" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "noscore_pocket_type", new[] { "equipment", "main", "etc", "miniland", "specialist", "costume", "wear", "mount", "raid" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "penalty_type", new[] { "muted", "banned", "block_exp", "block_f_exp", "block_rep", "warning" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "portal_type", new[] { "ts_normal", "closed", "open", "miniland", "ts_end", "ts_end_closed", "exit", "exit_closed", "raid", "effect", "blue_raid", "dark_raid", "time_space", "shop_teleport", "map_portal" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "quest_type", new[] { "hunt", "special_collect", "collect_in_raid", "brings", "capture_without_getting_the_monster", "capture", "times_space", "product", "number_of_kill", "target_reput", "ts_point", "dialog1", "collect_in_ts", "required", "wear", "needed", "collect", "transmit_gold", "go_to", "collect_map_entity", "use", "dialog2", "un_know", "inspect", "win_raid", "flower_quest" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "region_type", new[] { "en", "de", "fr", "it", "pl", "es", "ru", "cs", "tr" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "scripted_instance_type", new[] { "time_space", "raid", "raid_act4" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "static_bonus_type", new[] { "bazaar_medal_gold", "bazaar_medal_silver", "back_pack", "pet_basket", "pet_back_pack", "inventory_ticket_upgrade" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "teleporter_type", new[] { "teleporter", "teleporter_on_map" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "warehouse_type", new[] { "warehouse", "family_ware_house", "pet_warehouse" }); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Property<long>("AccountId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("AccountId")); b.Property<short>("Authority") .HasColumnType("smallint"); b.Property<long>("BankMoney") .HasColumnType("bigint"); b.Property<string>("Email") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ItemShopMoney") .HasColumnType("bigint"); b.Property<int>("Language") .HasColumnType("integer"); b.Property<string>("MfaSecret") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthPassword") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthSalt") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Password") .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("RegistrationIp") .HasMaxLength(45) .HasColumnType("character varying(45)"); b.Property<string>("VerificationToken") .HasMaxLength(32) .HasColumnType("character varying(32)"); b.HasKey("AccountId"); b.HasIndex("Name") .IsUnique(); b.ToTable("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("Scene") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("ActId"); b.ToTable("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("ActPartNumber") .HasColumnType("smallint"); b.Property<byte>("MaxTs") .HasColumnType("smallint"); b.HasKey("ActPartId"); b.HasIndex("ActId"); b.ToTable("ActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.AuditLog", b => { b.Property<Guid>("AuditId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("AuditLogType") .HasColumnType("integer"); b.Property<string>("TargetId") .IsRequired() .HasMaxLength(80) .HasColumnType("character varying(80)"); b.Property<string>("TargetType") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)"); b.Property<Instant>("Time") .HasColumnType("timestamp with time zone"); b.Property<string>("Value") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("AuditId"); b.ToTable("AuditLog"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.Property<short>("BCardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("BCardId")); b.Property<short?>("CardId") .HasColumnType("smallint"); b.Property<byte>("CastType") .HasColumnType("smallint"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<bool>("IsLevelDivided") .HasColumnType("boolean"); b.Property<bool>("IsLevelScaled") .HasColumnType("boolean"); b.Property<short?>("ItemVNum") .HasColumnType("smallint"); b.Property<short?>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<int>("SecondData") .HasColumnType("integer"); b.Property<short?>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("SubType") .HasColumnType("smallint"); b.Property<int>("ThirdData") .HasColumnType("integer"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("BCardId"); b.HasIndex("CardId"); b.HasIndex("ItemVNum"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("BCard"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.Property<long>("BazaarItemId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("BazaarItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<bool>("IsPackage") .HasColumnType("boolean"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<bool>("MedalUsed") .HasColumnType("boolean"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<long>("SellerId") .HasColumnType("bigint"); b.HasKey("BazaarItemId"); b.HasIndex("ItemInstanceId"); b.HasIndex("SellerId"); b.ToTable("BazaarItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<byte>("BuffType") .HasColumnType("smallint"); b.Property<int>("Delay") .HasColumnType("integer"); b.Property<int>("Duration") .HasColumnType("integer"); b.Property<int>("EffectId") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("Propability") .HasColumnType("smallint"); b.Property<short>("TimeoutBuff") .HasColumnType("smallint"); b.Property<byte>("TimeoutBuffChance") .HasColumnType("smallint"); b.HasKey("CardId"); b.ToTable("Card"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Property<long>("CharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("CharacterId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<int>("Act4Dead") .HasColumnType("integer"); b.Property<int>("Act4Kill") .HasColumnType("integer"); b.Property<int>("Act4Points") .HasColumnType("integer"); b.Property<int>("ArenaWinner") .HasColumnType("integer"); b.Property<string>("Biography") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("BuffBlocked") .HasColumnType("boolean"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Compliment") .HasColumnType("smallint"); b.Property<Guid?>("CurrentScriptId") .HasColumnType("uuid"); b.Property<short>("Dignity") .HasColumnType("smallint"); b.Property<int>("Elo") .HasColumnType("integer"); b.Property<bool>("EmoticonsBlocked") .HasColumnType("boolean"); b.Property<bool>("ExchangeBlocked") .HasColumnType("boolean"); b.Property<byte>("Faction") .HasColumnType("smallint"); b.Property<bool>("FamilyRequestBlocked") .HasColumnType("boolean"); b.Property<bool>("FriendRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("Gender") .HasColumnType("smallint"); b.Property<long>("Gold") .HasColumnType("bigint"); b.Property<bool>("GroupRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("HairColor") .HasColumnType("smallint"); b.Property<byte>("HairStyle") .HasColumnType("smallint"); b.Property<bool>("HeroChatBlocked") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<long>("HeroXp") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("HpBlocked") .HasColumnType("boolean"); b.Property<byte>("JobLevel") .HasColumnType("smallint"); b.Property<long>("JobLevelXp") .HasColumnType("bigint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<long>("LevelXp") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<int>("MasterPoints") .HasColumnType("integer"); b.Property<int>("MasterTicket") .HasColumnType("integer"); b.Property<byte>("MaxMateCount") .HasColumnType("smallint"); b.Property<bool>("MinilandInviteBlocked") .HasColumnType("boolean"); b.Property<bool>("MouseAimLock") .HasColumnType("boolean"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("Prefix") .HasMaxLength(25) .HasColumnType("character varying(25)"); b.Property<bool>("QuickGetUp") .HasColumnType("boolean"); b.Property<long>("RagePoint") .HasColumnType("bigint"); b.Property<long>("Reput") .HasColumnType("bigint"); b.Property<byte>("ServerId") .HasColumnType("smallint"); b.Property<bool>("ShouldRename") .HasColumnType("boolean"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<int>("SpAdditionPoint") .HasColumnType("integer"); b.Property<int>("SpPoint") .HasColumnType("integer"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("TalentLose") .HasColumnType("integer"); b.Property<int>("TalentSurrender") .HasColumnType("integer"); b.Property<int>("TalentWin") .HasColumnType("integer"); b.Property<bool>("WhisperBlocked") .HasColumnType("boolean"); b.HasKey("CharacterId"); b.HasIndex("AccountId"); b.HasIndex("CurrentScriptId"); b.HasIndex("MapId"); b.ToTable("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.HasKey("Id"); b.HasIndex("ActPartId"); b.HasIndex("CharacterId"); b.ToTable("CharacterActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("CompletedOn") .HasColumnType("timestamp with time zone"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("QuestId"); b.ToTable("CharacterQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("CharacterQuestId") .HasColumnType("uuid"); b.Property<int>("Count") .HasColumnType("integer"); b.Property<Guid>("QuestObjectiveId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("QuestObjectiveId"); b.HasIndex("CharacterQuestId", "QuestObjectiveId") .IsUnique(); b.ToTable("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.Property<Guid>("CharacterRelationId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<long>("RelatedCharacterId") .HasColumnType("bigint"); b.Property<short>("RelationType") .HasColumnType("smallint"); b.HasKey("CharacterRelationId"); b.HasIndex("CharacterId"); b.HasIndex("RelatedCharacterId"); b.ToTable("CharacterRelation"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("SkillVNum"); b.ToTable("CharacterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.Property<int>("ComboId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ComboId")); b.Property<short>("Animation") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("Hit") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("ComboId"); b.HasIndex("SkillVNum"); b.ToTable("Combo"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.Property<short>("DropId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DropId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("DropChance") .HasColumnType("integer"); b.Property<short?>("MapTypeId") .HasColumnType("smallint"); b.Property<short?>("MonsterVNum") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("DropId"); b.HasIndex("MapTypeId"); b.HasIndex("MonsterVNum"); b.HasIndex("VNum"); b.ToTable("Drop"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<int>("Value") .HasColumnType("integer"); b.Property<Guid>("WearableInstanceId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("WearableInstanceId"); b.ToTable("EquipmentOption"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Property<long>("FamilyId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyId")); b.Property<int>("FamilyExperience") .HasColumnType("integer"); b.Property<byte>("FamilyFaction") .HasColumnType("smallint"); b.Property<byte>("FamilyHeadGender") .HasColumnType("smallint"); b.Property<byte>("FamilyLevel") .HasColumnType("smallint"); b.Property<string>("FamilyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("ManagerAuthorityType") .HasColumnType("integer"); b.Property<bool>("ManagerCanGetHistory") .HasColumnType("boolean"); b.Property<bool>("ManagerCanInvite") .HasColumnType("boolean"); b.Property<bool>("ManagerCanNotice") .HasColumnType("boolean"); b.Property<bool>("ManagerCanShout") .HasColumnType("boolean"); b.Property<byte>("MaxSize") .HasColumnType("smallint"); b.Property<int>("MemberAuthorityType") .HasColumnType("integer"); b.Property<bool>("MemberCanGetHistory") .HasColumnType("boolean"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("WarehouseSize") .HasColumnType("smallint"); b.HasKey("FamilyId"); b.ToTable("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.Property<long>("FamilyCharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyCharacterId")); b.Property<byte>("Authority") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<string>("DailyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Experience") .HasColumnType("integer"); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Rank") .HasColumnType("smallint"); b.HasKey("FamilyCharacterId"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("FamilyCharacter"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.Property<long>("FamilyLogId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyLogId")); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<string>("FamilyLogData") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("FamilyLogType") .HasColumnType("smallint"); b.Property<Instant>("Timestamp") .HasColumnType("timestamp with time zone"); b.HasKey("FamilyLogId"); b.HasIndex("FamilyId"); b.ToTable("FamilyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NActDesc", b => { b.Property<int>("I18NActDescId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NActDescId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NActDescId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NActDesc"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NBCard", b => { b.Property<int>("I18NbCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NbCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NbCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NBCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NCard", b => { b.Property<int>("I18NCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NItem", b => { b.Property<int>("I18NItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NItemId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NItemId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NItem"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapIdData", b => { b.Property<int>("I18NMapIdDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapIdDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapIdDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapIdData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapPointData", b => { b.Property<int>("I18NMapPointDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapPointDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapPointDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapPointData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonster", b => { b.Property<int>("I18NNpcMonsterId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonsterTalk", b => { b.Property<int>("I18NNpcMonsterTalkId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterTalkId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterTalkId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonsterTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NQuest", b => { b.Property<int>("I18NQuestId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NQuestId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NQuestId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NSkill", b => { b.Property<int>("I18NSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NSkillId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NSkillId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("CharacterId", "Slot", "Type") .IsUnique(); b.ToTable("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Property<short>("VNum") .HasColumnType("smallint"); b.Property<byte>("BasicUpgrade") .HasColumnType("smallint"); b.Property<byte>("CellonLvl") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte>("DarkElement") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<int>("Effect") .HasColumnType("integer"); b.Property<int>("EffectValue") .HasColumnType("integer"); b.Property<int>("Element") .HasColumnType("integer"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<byte>("EquipmentSlot") .HasColumnType("smallint"); b.Property<byte>("FireElement") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<bool>("Flag1") .HasColumnType("boolean"); b.Property<bool>("Flag2") .HasColumnType("boolean"); b.Property<bool>("Flag3") .HasColumnType("boolean"); b.Property<bool>("Flag4") .HasColumnType("boolean"); b.Property<bool>("Flag6") .HasColumnType("boolean"); b.Property<bool>("Flag7") .HasColumnType("boolean"); b.Property<bool>("Flag8") .HasColumnType("boolean"); b.Property<bool>("Flag9") .HasColumnType("boolean"); b.Property<byte>("Height") .HasColumnType("smallint"); b.Property<short>("HitRate") .HasColumnType("smallint"); b.Property<short>("Hp") .HasColumnType("smallint"); b.Property<short>("HpRegeneration") .HasColumnType("smallint"); b.Property<bool>("IsColored") .HasColumnType("boolean"); b.Property<bool>("IsConsumable") .HasColumnType("boolean"); b.Property<bool>("IsDroppable") .HasColumnType("boolean"); b.Property<bool>("IsHeroic") .HasColumnType("boolean"); b.Property<bool>("IsMinilandActionable") .HasColumnType("boolean"); b.Property<bool>("IsSoldable") .HasColumnType("boolean"); b.Property<bool>("IsTradable") .HasColumnType("boolean"); b.Property<bool>("IsWarehouse") .HasColumnType("boolean"); b.Property<byte>("ItemSubType") .HasColumnType("smallint"); b.Property<byte>("ItemType") .HasColumnType("smallint"); b.Property<long>("ItemValidTime") .HasColumnType("bigint"); b.Property<byte>("LevelJobMinimum") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("LightElement") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<byte>("MaxCellon") .HasColumnType("smallint"); b.Property<byte>("MaxCellonLvl") .HasColumnType("smallint"); b.Property<short>("MaxElementRate") .HasColumnType("smallint"); b.Property<byte>("MaximumAmmo") .HasColumnType("smallint"); b.Property<int>("MinilandObjectPoint") .HasColumnType("integer"); b.Property<short>("MoreHp") .HasColumnType("smallint"); b.Property<short>("MoreMp") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("Mp") .HasColumnType("smallint"); b.Property<short>("MpRegeneration") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<short>("PvpDefence") .HasColumnType("smallint"); b.Property<byte>("PvpStrength") .HasColumnType("smallint"); b.Property<short>("ReduceOposantResistance") .HasColumnType("smallint"); b.Property<long>("ReputPrice") .HasColumnType("bigint"); b.Property<byte>("ReputationMinimum") .HasColumnType("smallint"); b.Property<bool>("RequireBinding") .HasColumnType("boolean"); b.Property<short>("SecondMorph") .HasColumnType("smallint"); b.Property<int>("SecondaryElement") .HasColumnType("integer"); b.Property<byte>("Sex") .HasColumnType("smallint"); b.Property<byte>("SpType") .HasColumnType("smallint"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("WaitDelay") .HasColumnType("smallint"); b.Property<byte>("WaterElement") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<byte>("Width") .HasColumnType("smallint"); b.HasKey("VNum"); b.ToTable("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<long?>("BoundCharacterId") .HasColumnType("bigint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("Design") .HasColumnType("smallint"); b.Property<string>("Discriminator") .IsRequired() .HasMaxLength(21) .HasColumnType("character varying(21)"); b.Property<int>("DurabilityPoint") .HasColumnType("integer"); b.Property<Instant?>("ItemDeleteTime") .HasColumnType("timestamp with time zone"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("BoundCharacterId"); b.HasIndex("ItemVNum"); b.ToTable("ItemInstance"); b.HasDiscriminator<string>("Discriminator").HasValue("ItemInstance"); b.UseTphMappingStrategy(); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.Property<long>("MailId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MailId")); b.Property<short?>("Armor") .HasColumnType("smallint"); b.Property<short?>("CostumeHat") .HasColumnType("smallint"); b.Property<short?>("CostumeSuit") .HasColumnType("smallint"); b.Property<Instant>("Date") .HasColumnType("timestamp with time zone"); b.Property<short?>("Fairy") .HasColumnType("smallint"); b.Property<short?>("Hat") .HasColumnType("smallint"); b.Property<bool>("IsOpened") .HasColumnType("boolean"); b.Property<bool>("IsSenderCopy") .HasColumnType("boolean"); b.Property<Guid?>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short?>("MainWeapon") .HasColumnType("smallint"); b.Property<short?>("Mask") .HasColumnType("smallint"); b.Property<string>("Message") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ReceiverId") .HasColumnType("bigint"); b.Property<short?>("SecondaryWeapon") .HasColumnType("smallint"); b.Property<byte?>("SenderCharacterClass") .HasColumnType("smallint"); b.Property<byte?>("SenderGender") .HasColumnType("smallint"); b.Property<byte?>("SenderHairColor") .HasColumnType("smallint"); b.Property<byte?>("SenderHairStyle") .HasColumnType("smallint"); b.Property<long?>("SenderId") .HasColumnType("bigint"); b.Property<short?>("SenderMorphId") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short?>("WeaponSkin") .HasColumnType("smallint"); b.Property<short?>("WingSkin") .HasColumnType("smallint"); b.HasKey("MailId"); b.HasIndex("ItemInstanceId"); b.HasIndex("ReceiverId"); b.HasIndex("SenderId"); b.ToTable("Mail"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<byte[]>("Data") .IsRequired() .HasColumnType("bytea"); b.Property<int>("Music") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("ShopAllowed") .HasColumnType("boolean"); b.HasKey("MapId"); b.ToTable("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.Property<int>("MapMonsterId") .HasColumnType("integer"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapMonsterId"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short?>("Dialog") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("EffectDelay") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<bool>("IsSitting") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapNpcId"); b.HasIndex("Dialog"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.Property<string>("MapTypeName") .IsRequired() .HasColumnType("text"); b.Property<short>("PotionDelay") .HasColumnType("smallint"); b.Property<long?>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<long?>("ReturnMapTypeId") .HasColumnType("bigint"); b.HasKey("MapTypeId"); b.HasIndex("RespawnMapTypeId"); b.HasIndex("ReturnMapTypeId"); b.ToTable("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.Property<short>("MapTypeMapId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("MapTypeMapId")); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.HasKey("MapTypeMapId"); b.HasIndex("MapTypeId"); b.HasIndex("MapId", "MapTypeId") .IsUnique(); b.ToTable("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.Property<long>("MateId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MateId")); b.Property<byte>("Attack") .HasColumnType("smallint"); b.Property<bool>("CanPickUp") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<byte>("Defence") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<long>("Experience") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("IsSummonable") .HasColumnType("boolean"); b.Property<bool>("IsTeamMember") .HasColumnType("boolean"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("Loyalty") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("MateType") .HasColumnType("smallint"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short>("Skin") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MateId"); b.HasIndex("CharacterId"); b.HasIndex("VNum"); b.ToTable("Mate"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.Property<Guid>("MinilandId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("DailyVisitCount") .HasColumnType("integer"); b.Property<string>("MinilandMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("MinilandPoint") .HasColumnType("bigint"); b.Property<long>("OwnerId") .HasColumnType("bigint"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("VisitCount") .HasColumnType("integer"); b.Property<short>("WelcomeMusicInfo") .HasColumnType("smallint"); b.HasKey("MinilandId"); b.HasIndex("OwnerId"); b.ToTable("Miniland"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.Property<Guid>("MinilandObjectId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<Guid?>("InventoryItemInstanceId") .HasColumnType("uuid"); b.Property<byte>("Level1BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level2BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level3BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level4BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level5BoxAmount") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.HasKey("MinilandObjectId"); b.HasIndex("InventoryItemInstanceId"); b.ToTable("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<bool>("AlwaysActive") .HasColumnType("boolean"); b.Property<byte>("AmountRequired") .HasColumnType("smallint"); b.Property<byte>("AttackClass") .HasColumnType("smallint"); b.Property<byte>("AttackUpgrade") .HasColumnType("smallint"); b.Property<byte>("BasicArea") .HasColumnType("smallint"); b.Property<short>("BasicCooldown") .HasColumnType("smallint"); b.Property<byte>("BasicHitChance") .HasColumnType("smallint"); b.Property<byte>("BasicRange") .HasColumnType("smallint"); b.Property<short>("BasicSkill") .HasColumnType("smallint"); b.Property<short>("CModeVNum") .HasColumnType("smallint"); b.Property<bool>("CanCatch") .HasColumnType("boolean"); b.Property<bool>("CanCollect") .HasColumnType("boolean"); b.Property<bool>("CanOnlyBeDmgedByJajamaruLastSkill") .HasColumnType("boolean"); b.Property<bool>("CanWalk") .HasColumnType("boolean"); b.Property<bool>("CantDebuff") .HasColumnType("boolean"); b.Property<bool>("CantTargetInfo") .HasColumnType("boolean"); b.Property<bool>("CantVoke") .HasColumnType("boolean"); b.Property<byte>("CellMinRange") .HasColumnType("smallint"); b.Property<byte>("CellSize") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalChance") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<byte>("DashSpeed") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<byte>("DefenceUpgrade") .HasColumnType("smallint"); b.Property<bool>("DisappearAfterHitting") .HasColumnType("boolean"); b.Property<bool>("DisappearAfterSeconds") .HasColumnType("boolean"); b.Property<bool>("DisappearAfterSecondsMana") .HasColumnType("boolean"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<bool>("DontDrainHpAfterSeconds") .HasColumnType("boolean"); b.Property<short>("EffectIdConstantly") .HasColumnType("smallint"); b.Property<short>("EffectIdOnDeath") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<int>("GiveDamagePercentage") .HasColumnType("integer"); b.Property<byte>("GroupAttack") .HasColumnType("smallint"); b.Property<bool>("HasDash") .HasColumnType("boolean"); b.Property<bool>("HasMode") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<int>("HeroXp") .HasColumnType("integer"); b.Property<short>("HpThreshold") .HasColumnType("smallint"); b.Property<short>("IconId") .HasColumnType("smallint"); b.Property<bool>("IsHostile") .HasColumnType("boolean"); b.Property<bool>("IsPercent") .HasColumnType("boolean"); b.Property<bool>("IsPercentileDmg") .HasColumnType("boolean"); b.Property<bool>("IsValhallaPartner") .HasColumnType("boolean"); b.Property<int>("JobXp") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<byte>("Limiter") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<int>("MaxHp") .HasColumnType("integer"); b.Property<int>("MaxMp") .HasColumnType("integer"); b.Property<int>("Midgard") .HasColumnType("integer"); b.Property<byte>("MonsterType") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("NoAggresiveIcon") .HasColumnType("boolean"); b.Property<byte>("NoticeRange") .HasColumnType("smallint"); b.Property<bool>("OnDefenseOnlyOnce") .HasColumnType("boolean"); b.Property<int>("PetInfoVal1") .HasColumnType("integer"); b.Property<int>("PetInfoVal2") .HasColumnType("integer"); b.Property<int>("PetInfoVal3") .HasColumnType("integer"); b.Property<int>("PetInfoVal4") .HasColumnType("integer"); b.Property<byte>("Race") .HasColumnType("smallint"); b.Property<byte>("RaceType") .HasColumnType("smallint"); b.Property<short>("RangeThreshold") .HasColumnType("smallint"); b.Property<bool>("RegenerateHpOverTime") .HasColumnType("boolean"); b.Property<int>("RespawnTime") .HasColumnType("integer"); b.Property<int>("SpawnMobOrColor") .HasColumnType("integer"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<short>("SpriteSize") .HasColumnType("smallint"); b.Property<int>("TakeDamages") .HasColumnType("integer"); b.Property<short>("VNumRequired") .HasColumnType("smallint"); b.Property<bool>("VisibleOnMinimapAsGreenDot") .HasColumnType("boolean"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<int>("Xp") .HasColumnType("integer"); b.HasKey("NpcMonsterVNum"); b.ToTable("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.Property<long>("NpcMonsterSkillId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("NpcMonsterSkillId")); b.Property<byte>("Force") .HasColumnType("smallint"); b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<short>("Rate") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("NpcMonsterSkillId"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Property<short>("DialogId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DialogId")); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("DialogId"); b.ToTable("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.Property<int>("PenaltyLogId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PenaltyLogId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<string>("AdminName") .IsRequired() .HasColumnType("text"); b.Property<Instant>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<byte>("Penalty") .HasColumnType("smallint"); b.Property<string>("Reason") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("PenaltyLogId"); b.HasIndex("AccountId"); b.ToTable("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.Property<int>("PortalId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PortalId")); b.Property<short>("DestinationMapId") .HasColumnType("smallint"); b.Property<short>("DestinationX") .HasColumnType("smallint"); b.Property<short>("DestinationY") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<short>("SourceMapId") .HasColumnType("smallint"); b.Property<short>("SourceX") .HasColumnType("smallint"); b.Property<short>("SourceY") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("PortalId"); b.HasIndex("DestinationMapId"); b.HasIndex("SourceMapId"); b.ToTable("Portal"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<bool>("AutoFinish") .HasColumnType("boolean"); b.Property<string>("Desc") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int?>("EndDialogId") .HasColumnType("integer"); b.Property<bool>("IsDaily") .HasColumnType("boolean"); b.Property<bool>("IsSecondary") .HasColumnType("boolean"); b.Property<byte>("LevelMax") .HasColumnType("smallint"); b.Property<byte>("LevelMin") .HasColumnType("smallint"); b.Property<short?>("NextQuestId") .HasColumnType("smallint"); b.Property<short>("QuestType") .HasColumnType("smallint"); b.Property<short?>("RequiredQuestId") .HasColumnType("smallint"); b.Property<int?>("SpecialData") .HasColumnType("integer"); b.Property<int?>("StartDialogId") .HasColumnType("integer"); b.Property<short?>("TargetMap") .HasColumnType("smallint"); b.Property<short?>("TargetX") .HasColumnType("smallint"); b.Property<short?>("TargetY") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("QuestId"); b.ToTable("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Property<Guid>("QuestObjectiveId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<int?>("FourthData") .HasColumnType("integer"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<int?>("SecondData") .HasColumnType("integer"); b.Property<int?>("ThirdData") .HasColumnType("integer"); b.HasKey("QuestObjectiveId"); b.HasIndex("QuestId"); b.ToTable("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<short>("QuestRewardId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("QuestId"); b.HasIndex("QuestRewardId"); b.ToTable("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Property<short>("QuestRewardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("QuestRewardId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("Data") .HasColumnType("integer"); b.Property<byte>("Design") .HasColumnType("smallint"); b.Property<byte>("Rarity") .HasColumnType("smallint"); b.Property<byte>("RewardType") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("QuestRewardId"); b.ToTable("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("IconType") .HasColumnType("smallint"); b.Property<short>("IconVNum") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("QuickListIndex") .HasColumnType("smallint"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.ToTable("QuicklistEntry"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Property<short>("RecipeId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeId")); b.Property<byte>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.HasKey("RecipeId"); b.HasIndex("ItemVNum"); b.HasIndex("MapNpcId"); b.ToTable("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.Property<short>("RecipeItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("RecipeId") .HasColumnType("smallint"); b.HasKey("RecipeItemId"); b.HasIndex("ItemVNum"); b.HasIndex("RecipeId"); b.ToTable("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.Property<long>("RespawnId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("RespawnId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("X") .HasColumnType("smallint"); b.Property<short>("Y") .HasColumnType("smallint"); b.HasKey("RespawnId"); b.HasIndex("CharacterId"); b.HasIndex("MapId"); b.HasIndex("RespawnMapTypeId"); b.ToTable("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("DefaultX") .HasColumnType("smallint"); b.Property<short>("DefaultY") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("RespawnMapTypeId"); b.HasIndex("MapId"); b.ToTable("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.Property<short>("RollGeneratedItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RollGeneratedItemId")); b.Property<bool>("IsRareRandom") .HasColumnType("boolean"); b.Property<bool>("IsSuperReward") .HasColumnType("boolean"); b.Property<byte>("ItemGeneratedAmount") .HasColumnType("smallint"); b.Property<byte>("ItemGeneratedUpgrade") .HasColumnType("smallint"); b.Property<short>("ItemGeneratedVNum") .HasColumnType("smallint"); b.Property<short>("MaximumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("MinimumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("OriginalItemDesign") .HasColumnType("smallint"); b.Property<short>("OriginalItemVNum") .HasColumnType("smallint"); b.Property<short>("Probability") .HasColumnType("smallint"); b.HasKey("RollGeneratedItemId"); b.HasIndex("ItemGeneratedVNum"); b.HasIndex("OriginalItemVNum"); b.ToTable("RollGeneratedItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short?>("Argument1") .HasColumnType("smallint"); b.Property<short?>("Argument2") .HasColumnType("smallint"); b.Property<short?>("Argument3") .HasColumnType("smallint"); b.Property<byte>("ScriptId") .HasColumnType("smallint"); b.Property<short>("ScriptStepId") .HasColumnType("smallint"); b.Property<string>("StepType") .IsRequired() .HasColumnType("text"); b.Property<string>("StringArgument") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("ScriptId", "ScriptStepId") .IsUnique(); b.ToTable("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.Property<short>("ScriptedInstanceId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("ScriptedInstanceId")); b.Property<string>("Label") .HasColumnType("text"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("PositionX") .HasColumnType("smallint"); b.Property<short>("PositionY") .HasColumnType("smallint"); b.Property<string>("Script") .HasMaxLength(2147483647) .HasColumnType("text"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ScriptedInstanceId"); b.HasIndex("MapId"); b.ToTable("ScriptedInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Property<int>("ShopId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopId")); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<byte>("MenuType") .HasColumnType("smallint"); b.Property<byte>("ShopType") .HasColumnType("smallint"); b.HasKey("ShopId"); b.HasIndex("MapNpcId"); b.ToTable("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.Property<int>("ShopItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopItemId")); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("ShopItemId"); b.HasIndex("ItemVNum"); b.HasIndex("ShopId"); b.ToTable("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.Property<int>("ShopSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopSkillId")); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ShopSkillId"); b.HasIndex("ShopId"); b.HasIndex("SkillVNum"); b.ToTable("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<short>("AttackAnimation") .HasColumnType("smallint"); b.Property<short>("CastAnimation") .HasColumnType("smallint"); b.Property<short>("CastEffect") .HasColumnType("smallint"); b.Property<short>("CastId") .HasColumnType("smallint"); b.Property<short>("CastTime") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Cooldown") .HasColumnType("smallint"); b.Property<byte>("CpCost") .HasColumnType("smallint"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<byte>("HitType") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("MinimumAdventurerLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumArcherLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumMagicianLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumSwordmanLevel") .HasColumnType("smallint"); b.Property<short>("MpCost") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Price") .HasColumnType("integer"); b.Property<byte>("Range") .HasColumnType("smallint"); b.Property<byte>("SkillType") .HasColumnType("smallint"); b.Property<byte>("TargetRange") .HasColumnType("smallint"); b.Property<byte>("TargetType") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("UpgradeSkill") .HasColumnType("smallint"); b.Property<short>("UpgradeType") .HasColumnType("smallint"); b.HasKey("SkillVNum"); b.ToTable("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.Property<long>("StaticBonusId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBonusId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<byte>("StaticBonusType") .HasColumnType("smallint"); b.HasKey("StaticBonusId"); b.HasIndex("CharacterId"); b.ToTable("StaticBonus"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.Property<long>("StaticBuffId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBuffId")); b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<int>("RemainingTime") .HasColumnType("integer"); b.HasKey("StaticBuffId"); b.HasIndex("CardId"); b.HasIndex("CharacterId"); b.ToTable("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.Property<short>("TeleporterId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("TeleporterId")); b.Property<short>("Index") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("TeleporterId"); b.HasIndex("MapId"); b.HasIndex("MapNpcId"); b.ToTable("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<bool>("Active") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("TitleType") .HasColumnType("smallint"); b.Property<bool>("Visible") .HasColumnType("boolean"); b.HasKey("Id"); b.HasIndex("CharacterId", "TitleType") .IsUnique(); b.ToTable("Title"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long?>("CharacterId") .HasColumnType("bigint"); b.Property<long?>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<Guid>("WarehouseId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("WarehouseId"); b.ToTable("WarehouseItem"); }); modelBuilder.Entity("NosCore.Database.Entities.UsableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.ToTable("ItemInstance", t => { t.Property("Hp") .HasColumnName("UsableInstance_Hp"); t.Property("Mp") .HasColumnName("UsableInstance_Mp"); }); b.HasDiscriminator().HasValue("UsableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.WearableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<byte?>("Ammo") .HasColumnType("smallint"); b.Property<byte?>("Cellon") .HasColumnType("smallint"); b.Property<short?>("CloseDefence") .HasColumnType("smallint"); b.Property<short?>("Concentrate") .HasColumnType("smallint"); b.Property<short?>("CriticalDodge") .HasColumnType("smallint"); b.Property<byte?>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short?>("CriticalRate") .HasColumnType("smallint"); b.Property<short?>("DamageMaximum") .HasColumnType("smallint"); b.Property<short?>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte?>("DarkElement") .HasColumnType("smallint"); b.Property<short?>("DarkResistance") .HasColumnType("smallint"); b.Property<short?>("DefenceDodge") .HasColumnType("smallint"); b.Property<short?>("DistanceDefence") .HasColumnType("smallint"); b.Property<short?>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<short?>("ElementRate") .HasColumnType("smallint"); b.Property<byte?>("FireElement") .HasColumnType("smallint"); b.Property<short?>("FireResistance") .HasColumnType("smallint"); b.Property<short?>("HitRate") .HasColumnType("smallint"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<bool?>("IsEmpty") .HasColumnType("boolean"); b.Property<bool?>("IsFixed") .HasColumnType("boolean"); b.Property<byte?>("LightElement") .HasColumnType("smallint"); b.Property<short?>("LightResistance") .HasColumnType("smallint"); b.Property<short?>("MagicDefence") .HasColumnType("smallint"); b.Property<short?>("MaxElementRate") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.Property<byte?>("ShellRarity") .HasColumnType("smallint"); b.Property<byte?>("WaterElement") .HasColumnType("smallint"); b.Property<short?>("WaterResistance") .HasColumnType("smallint"); b.Property<long?>("Xp") .HasColumnType("bigint"); b.HasDiscriminator().HasValue("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.SpecialistInstance", b => { b.HasBaseType("NosCore.Database.Entities.WearableInstance"); b.Property<short>("SlDamage") .HasColumnType("smallint"); b.Property<short>("SlDefence") .HasColumnType("smallint"); b.Property<short>("SlElement") .HasColumnType("smallint"); b.Property<short>("SlHp") .HasColumnType("smallint"); b.Property<byte>("SpDamage") .HasColumnType("smallint"); b.Property<byte>("SpDark") .HasColumnType("smallint"); b.Property<byte>("SpDefence") .HasColumnType("smallint"); b.Property<byte>("SpElement") .HasColumnType("smallint"); b.Property<byte>("SpFire") .HasColumnType("smallint"); b.Property<byte>("SpHp") .HasColumnType("smallint"); b.Property<byte>("SpLevel") .HasColumnType("smallint"); b.Property<byte>("SpLight") .HasColumnType("smallint"); b.Property<byte>("SpStoneUpgrade") .HasColumnType("smallint"); b.Property<byte>("SpWater") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("SpecialistInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.BoxInstance", b => { b.HasBaseType("NosCore.Database.Entities.SpecialistInstance"); b.Property<short?>("HoldingVNum") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("BoxInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.HasOne("NosCore.Database.Entities.Act", "Act") .WithMany("ActParts") .HasForeignKey("ActId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("BCards") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("BCards") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("BCards") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("BCards") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Card"); b.Navigation("Item"); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("BazaarItem") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Seller") .WithMany("BazaarItem") .HasForeignKey("SellerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Seller"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("Character") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Script", "Script") .WithMany("Characters") .HasForeignKey("CurrentScriptId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Character") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); b.Navigation("Map"); b.Navigation("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.HasOne("NosCore.Database.Entities.ActPart", "ActPart") .WithMany("CharacterActParts") .HasForeignKey("ActPartId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterActParts") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ActPart"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterQuest") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("CharacterQuest") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.HasOne("NosCore.Database.Entities.CharacterQuest", "CharacterQuest") .WithMany("CharacterQuestObjective") .HasForeignKey("CharacterQuestId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestObjective", "QuestObjective") .WithMany("CharacterQuestObjective") .HasForeignKey("QuestObjectiveId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.HasOne("NosCore.Database.Entities.Character", "Character1") .WithMany("CharacterRelation1") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character2") .WithMany("CharacterRelation2") .HasForeignKey("RelatedCharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character1"); b.Navigation("Character2"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterSkill") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("CharacterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("Combo") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("Drops") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Drop") .HasForeignKey("MonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Drop") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapType"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.HasOne("NosCore.Database.Entities.WearableInstance", "WearableInstance") .WithMany() .HasForeignKey("WearableInstanceId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("FamilyCharacter") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyCharacters") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyLogs") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Inventory") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("InventoryItemInstance") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("ItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "BoundCharacter") .WithMany() .HasForeignKey("BoundCharacterId"); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ItemInstances") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("BoundCharacter"); b.Navigation("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("Mail") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Character", "Receiver") .WithMany("Mail1") .HasForeignKey("ReceiverId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Sender") .WithMany("Mail") .HasForeignKey("SenderId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("ItemInstance"); b.Navigation("Receiver"); b.Navigation("Sender"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapMonster") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapMonster") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.HasOne("NosCore.Database.Entities.NpcTalk", "NpcTalk") .WithMany("MapNpc") .HasForeignKey("Dialog") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapNpc") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapNpc") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); b.Navigation("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("MapTypes") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.RespawnMapType", "ReturnMapType") .WithMany("MapTypes1") .HasForeignKey("ReturnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("RespawnMapType"); b.Navigation("ReturnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapTypeMap") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("MapTypeMap") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Mate") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Mate") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.HasOne("NosCore.Database.Entities.Character", "Owner") .WithMany("Miniland") .HasForeignKey("OwnerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Owner"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.HasOne("NosCore.Database.Entities.InventoryItemInstance", "InventoryItemInstance") .WithMany("MinilandObject") .HasForeignKey("InventoryItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("NpcMonsterSkill") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("NpcMonsterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("PenaltyLog") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Portal") .HasForeignKey("DestinationMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map1") .WithMany("Portal1") .HasForeignKey("SourceMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("Map1"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestObjective") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestQuestReward") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestReward", "QuestReward") .WithMany("QuestQuestReward") .HasForeignKey("QuestRewardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); b.Navigation("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("QuicklistEntry") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Recipe") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Recipe") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("RecipeItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Recipe", "Recipe") .WithMany("RecipeItem") .HasForeignKey("RecipeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Respawn") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Respawn") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("Respawn") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Map"); b.Navigation("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("RespawnMapType") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.HasOne("NosCore.Database.Entities.Item", "ItemGenerated") .WithMany("RollGeneratedItem2") .HasForeignKey("ItemGeneratedVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Item", "OriginalItem") .WithMany("RollGeneratedItem") .HasForeignKey("OriginalItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemGenerated"); b.Navigation("OriginalItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("ScriptedInstance") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Shop") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ShopItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopItem") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopSkill") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("ShopSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Shop"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBonus") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("StaticBuff") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBuff") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Card"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Teleporter") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Teleporter") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Title") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Warehouses") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("Warehouses") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("WarehouseItems") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Warehouse", "Warehouse") .WithMany("WarehouseItems") .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Navigation("Character"); b.Navigation("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Navigation("ActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Navigation("CharacterActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Navigation("BCards"); b.Navigation("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Navigation("BazaarItem"); b.Navigation("CharacterActParts"); b.Navigation("CharacterQuest"); b.Navigation("CharacterRelation1"); b.Navigation("CharacterRelation2"); b.Navigation("CharacterSkill"); b.Navigation("FamilyCharacter"); b.Navigation("Inventory"); b.Navigation("Mail"); b.Navigation("Mail1"); b.Navigation("Mate"); b.Navigation("Miniland"); b.Navigation("QuicklistEntry"); b.Navigation("Respawn"); b.Navigation("StaticBonus"); b.Navigation("StaticBuff"); b.Navigation("Title"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Navigation("FamilyCharacters"); b.Navigation("FamilyLogs"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Navigation("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("ItemInstances"); b.Navigation("Recipe"); b.Navigation("RecipeItem"); b.Navigation("RollGeneratedItem"); b.Navigation("RollGeneratedItem2"); b.Navigation("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Navigation("BazaarItem"); b.Navigation("InventoryItemInstance"); b.Navigation("Mail"); b.Navigation("WarehouseItems"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Navigation("Character"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("MapTypeMap"); b.Navigation("Portal"); b.Navigation("Portal1"); b.Navigation("Respawn"); b.Navigation("RespawnMapType"); b.Navigation("ScriptedInstance"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Navigation("Recipe"); b.Navigation("Shop"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Navigation("Drops"); b.Navigation("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("Mate"); b.Navigation("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Navigation("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Navigation("MapTypes"); b.Navigation("MapTypes1"); b.Navigation("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Navigation("Characters"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Navigation("ShopItem"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Navigation("BCards"); b.Navigation("CharacterSkill"); b.Navigation("Combo"); b.Navigation("NpcMonsterSkill"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Navigation("WarehouseItems"); }); #pragma warning restore 612, 618 } } } ================================================ FILE: src/NosCore.Database/Migrations/20260421112205_ParseExtraNpcMonsterColumns.cs ================================================ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace NosCore.Database.Migrations { /// <inheritdoc /> public partial class ParseExtraNpcMonsterColumns : Migration { /// <inheritdoc /> protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AddColumn<byte>( name: "BasicHitChance", table: "NpcMonster", type: "smallint", nullable: false, defaultValue: (byte)0); migrationBuilder.AddColumn<bool>( name: "CanOnlyBeDmgedByJajamaruLastSkill", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AddColumn<byte>( name: "CellSize", table: "NpcMonster", type: "smallint", nullable: false, defaultValue: (byte)0); migrationBuilder.AddColumn<byte>( name: "DashSpeed", table: "NpcMonster", type: "smallint", nullable: false, defaultValue: (byte)0); migrationBuilder.AddColumn<short>( name: "EffectIdConstantly", table: "NpcMonster", type: "smallint", nullable: false, defaultValue: (short)0); migrationBuilder.AddColumn<short>( name: "EffectIdOnDeath", table: "NpcMonster", type: "smallint", nullable: false, defaultValue: (short)0); migrationBuilder.AddColumn<byte>( name: "GroupAttack", table: "NpcMonster", type: "smallint", nullable: false, defaultValue: (byte)0); migrationBuilder.AddColumn<short>( name: "IconId", table: "NpcMonster", type: "smallint", nullable: false, defaultValue: (short)0); migrationBuilder.AddColumn<bool>( name: "IsPercentileDmg", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AddColumn<bool>( name: "IsValhallaPartner", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AddColumn<int>( name: "PetInfoVal1", table: "NpcMonster", type: "integer", nullable: false, defaultValue: 0); migrationBuilder.AddColumn<int>( name: "PetInfoVal2", table: "NpcMonster", type: "integer", nullable: false, defaultValue: 0); migrationBuilder.AddColumn<int>( name: "PetInfoVal3", table: "NpcMonster", type: "integer", nullable: false, defaultValue: 0); migrationBuilder.AddColumn<int>( name: "PetInfoVal4", table: "NpcMonster", type: "integer", nullable: false, defaultValue: 0); migrationBuilder.AddColumn<int>( name: "SpawnMobOrColor", table: "NpcMonster", type: "integer", nullable: false, defaultValue: 0); migrationBuilder.AddColumn<short>( name: "SpriteSize", table: "NpcMonster", type: "smallint", nullable: false, defaultValue: (short)0); migrationBuilder.AddColumn<bool>( name: "VisibleOnMinimapAsGreenDot", table: "NpcMonster", type: "boolean", nullable: false, defaultValue: false); } /// <inheritdoc /> protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropColumn( name: "BasicHitChance", table: "NpcMonster"); migrationBuilder.DropColumn( name: "CanOnlyBeDmgedByJajamaruLastSkill", table: "NpcMonster"); migrationBuilder.DropColumn( name: "CellSize", table: "NpcMonster"); migrationBuilder.DropColumn( name: "DashSpeed", table: "NpcMonster"); migrationBuilder.DropColumn( name: "EffectIdConstantly", table: "NpcMonster"); migrationBuilder.DropColumn( name: "EffectIdOnDeath", table: "NpcMonster"); migrationBuilder.DropColumn( name: "GroupAttack", table: "NpcMonster"); migrationBuilder.DropColumn( name: "IconId", table: "NpcMonster"); migrationBuilder.DropColumn( name: "IsPercentileDmg", table: "NpcMonster"); migrationBuilder.DropColumn( name: "IsValhallaPartner", table: "NpcMonster"); migrationBuilder.DropColumn( name: "PetInfoVal1", table: "NpcMonster"); migrationBuilder.DropColumn( name: "PetInfoVal2", table: "NpcMonster"); migrationBuilder.DropColumn( name: "PetInfoVal3", table: "NpcMonster"); migrationBuilder.DropColumn( name: "PetInfoVal4", table: "NpcMonster"); migrationBuilder.DropColumn( name: "SpawnMobOrColor", table: "NpcMonster"); migrationBuilder.DropColumn( name: "SpriteSize", table: "NpcMonster"); migrationBuilder.DropColumn( name: "VisibleOnMinimapAsGreenDot", table: "NpcMonster"); } } } ================================================ FILE: src/NosCore.Database/Migrations/20260424144528_AddMateCaptureItemEffect.Designer.cs ================================================ // <auto-generated /> using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using NodaTime; using NosCore.Database; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace NosCore.Database.Migrations { [DbContext(typeof(NosCoreContext))] [Migration("20260424144528_AddMateCaptureItemEffect")] partial class AddMateCaptureItemEffect { /// <inheritdoc /> protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "10.0.6") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "audit_log_type", new[] { "account_creation", "character_creation", "email_update" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "authority_type", new[] { "user", "moderator", "game_master", "administrator", "root", "closed", "banned", "unconfirmed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_class_type", new[] { "adventurer", "swordsman", "archer", "mage", "martial_artist" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_relation_type", new[] { "friend", "hidden_spouse", "spouse", "blocked" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_state", new[] { "active", "inactive" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_type", new[] { "neutral", "fire", "water", "light", "dark" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "equipment_type", new[] { "main_weapon", "armor", "hat", "gloves", "boots", "secondary_weapon", "necklace", "ring", "bracelet", "mask", "fairy", "amulet", "sp", "costume_suit", "costume_hat", "weapon_skin", "wing_skin" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority", new[] { "head", "assistant", "manager", "member" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority_type", new[] { "none", "put", "all" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_log_type", new[] { "daily_message", "raid_won", "rainbow_battle", "family_xp", "family_level_up", "level_up", "item_upgraded", "right_changed", "authority_changed", "family_managed", "user_managed", "ware_house_added", "ware_house_removed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_member_rank", new[] { "nothing", "old_uncle", "old_aunt", "father", "mother", "uncle", "aunt", "brother", "sister", "spouse", "brother2", "sister2", "old_son", "old_daugter", "middle_son", "middle_daughter", "young_son", "young_daugter", "old_little_son", "old_little_daughter", "little_son", "little_daughter", "middle_little_son", "middle_little_daugter" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "gender_type", new[] { "male", "female" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_color_type", new[] { "dark_purple", "yellow", "blue", "purple", "orange", "brown", "green", "dark_grey", "light_blue", "pink_red", "light_yellow", "light_pink", "light_green", "light_grey", "sky_blue", "black", "dark_orange", "dark_orange_variant2", "dark_orange_variant3", "dark_orange_variant4", "dark_orange_variant5", "dark_orange_variant6", "light_orange", "light_light_orange", "light_light_light_orange", "light_light_light_light_orange", "super_light_orange", "dark_yellow", "light_light_yellow", "kaki_yellow", "super_light_yellow", "super_light_yellow2", "super_light_yellow3", "little_dark_yellow", "yellow_variant", "yellow_variant1", "yellow_variant2", "yellow_variant3", "yellow_variant4", "yellow_variant5", "yellow_variant6", "yellow_variant7", "yellow_variant8", "yellow_variant9", "green_variant", "green_variant1", "dark_green_variant", "green_more_dark_variant", "green_variant2", "green_variant3", "green_variant4", "green_variant5", "green_variant6", "green_variant7", "green_variant8", "green_variant9", "green_variant10", "green_variant11", "green_variant12", "green_variant13", "green_variant14", "green_variant15", "green_variant16", "green_variant17", "green_variant18", "green_variant19", "green_variant20", "light_blue_variant1", "light_blue_variant2", "light_blue_variant3", "light_blue_variant4", "light_blue_variant5", "light_blue_variant6", "light_blue_variant7", "light_blue_variant8", "light_blue_variant9", "light_blue_variant10", "light_blue_variant11", "light_blue_variant12", "light_blue_variant13", "dark_black", "light_blue_variant14", "light_blue_variant15", "light_blue_variant16", "light_blue_variant17", "blue_variant", "blue_variant_dark", "blue_variant_dark_dark", "blue_variant_dark_dark2", "flash_blue", "flash_blue_dark", "flash_blue_dark2", "flash_blue_dark3", "flash_blue_dark4", "flash_blue_dark5", "flash_blue_dark6", "flash_blue_dark7", "flash_blue_dark8", "flash_blue_dark9", "white", "flash_blue_dark10", "flash_blue1", "flash_blue2", "flash_blue3", "flash_blue4", "flash_blue5", "flash_purple", "flash_light_purple", "flash_light_purple2", "flash_light_purple3", "flash_light_purple4", "flash_light_purple5", "light_purple", "purple_variant1", "purple_variant2", "purple_variant3", "purple_variant4", "purple_variant5", "purple_variant6", "purple_variant7", "purple_variant8", "purple_variant9", "purple_variant10", "purple_variant11", "purple_variant12", "purple_variant13", "purple_variant14", "purple_variant15" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_style_type", new[] { "hair_style_a", "hair_style_b", "hair_style_c", "hair_style_d", "no_hair" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_effect_type", new[] { "no_effect", "teleport", "apply_hair_die", "apply_hair_style", "speaker", "marriage_proposal", "undefined", "sp_charger", "mate_capture", "dropped_sp_recharger", "premium_sp_recharger", "crafted_sp_recharger", "specialist_medal", "apply_skin_partner", "change_gender", "point_initialisation", "sealed_tarot_card", "tarot_card", "red_amulet", "blue_amulet", "reinforcement_amulet", "heroic", "random_heroic", "attack_amulet", "defense_amulet", "speed_booster", "box_effect", "vehicle", "gold_nos_merchant_upgrade", "silver_nos_merchant_upgrade", "inventory_upgrade", "pet_space_upgrade", "pet_basket_upgrade", "pet_backpack_upgrade", "inventory_ticket_upgrade", "buff_potions", "marriage_separation" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_type", new[] { "weapon", "armor", "fashion", "jewelery", "specialist", "box", "shell", "main", "upgrade", "production", "map", "special", "potion", "event", "title", "quest1", "sell", "food", "snack", "magical", "part", "teacher", "ammo", "quest2", "house", "garden", "minigame", "terrace", "miniland_theme" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "mate_type", new[] { "partner", "pet" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "miniland_state", new[] { "open", "private", "lock" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "monster_type", new[] { "unknown", "partner", "npc", "well", "portal", "boss", "elite", "peapod", "special", "gem_space_time" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "noscore_pocket_type", new[] { "equipment", "main", "etc", "miniland", "specialist", "costume", "wear", "mount", "raid" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "penalty_type", new[] { "muted", "banned", "block_exp", "block_f_exp", "block_rep", "warning" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "portal_type", new[] { "ts_normal", "closed", "open", "miniland", "ts_end", "ts_end_closed", "exit", "exit_closed", "raid", "effect", "blue_raid", "dark_raid", "time_space", "shop_teleport", "map_portal" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "quest_type", new[] { "hunt", "special_collect", "collect_in_raid", "brings", "capture_without_getting_the_monster", "capture", "times_space", "product", "number_of_kill", "target_reput", "ts_point", "dialog1", "collect_in_ts", "required", "wear", "needed", "collect", "transmit_gold", "go_to", "collect_map_entity", "use", "dialog2", "un_know", "inspect", "win_raid", "flower_quest" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "region_type", new[] { "en", "de", "fr", "it", "pl", "es", "ru", "cs", "tr" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "scripted_instance_type", new[] { "time_space", "raid", "raid_act4" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "static_bonus_type", new[] { "bazaar_medal_gold", "bazaar_medal_silver", "back_pack", "pet_basket", "pet_back_pack", "inventory_ticket_upgrade" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "teleporter_type", new[] { "teleporter", "teleporter_on_map" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "warehouse_type", new[] { "warehouse", "family_ware_house", "pet_warehouse" }); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Property<long>("AccountId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("AccountId")); b.Property<short>("Authority") .HasColumnType("smallint"); b.Property<long>("BankMoney") .HasColumnType("bigint"); b.Property<string>("Email") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ItemShopMoney") .HasColumnType("bigint"); b.Property<int>("Language") .HasColumnType("integer"); b.Property<string>("MfaSecret") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthPassword") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthSalt") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Password") .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("RegistrationIp") .HasMaxLength(45) .HasColumnType("character varying(45)"); b.Property<string>("VerificationToken") .HasMaxLength(32) .HasColumnType("character varying(32)"); b.HasKey("AccountId"); b.HasIndex("Name") .IsUnique(); b.ToTable("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("Scene") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("ActId"); b.ToTable("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("ActPartNumber") .HasColumnType("smallint"); b.Property<byte>("MaxTs") .HasColumnType("smallint"); b.HasKey("ActPartId"); b.HasIndex("ActId"); b.ToTable("ActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.AuditLog", b => { b.Property<Guid>("AuditId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("AuditLogType") .HasColumnType("integer"); b.Property<string>("TargetId") .IsRequired() .HasMaxLength(80) .HasColumnType("character varying(80)"); b.Property<string>("TargetType") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)"); b.Property<Instant>("Time") .HasColumnType("timestamp with time zone"); b.Property<string>("Value") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("AuditId"); b.ToTable("AuditLog"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.Property<short>("BCardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("BCardId")); b.Property<short?>("CardId") .HasColumnType("smallint"); b.Property<byte>("CastType") .HasColumnType("smallint"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<bool>("IsLevelDivided") .HasColumnType("boolean"); b.Property<bool>("IsLevelScaled") .HasColumnType("boolean"); b.Property<short?>("ItemVNum") .HasColumnType("smallint"); b.Property<short?>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<int>("SecondData") .HasColumnType("integer"); b.Property<short?>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("SubType") .HasColumnType("smallint"); b.Property<int>("ThirdData") .HasColumnType("integer"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("BCardId"); b.HasIndex("CardId"); b.HasIndex("ItemVNum"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("BCard"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.Property<long>("BazaarItemId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("BazaarItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<bool>("IsPackage") .HasColumnType("boolean"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<bool>("MedalUsed") .HasColumnType("boolean"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<long>("SellerId") .HasColumnType("bigint"); b.HasKey("BazaarItemId"); b.HasIndex("ItemInstanceId"); b.HasIndex("SellerId"); b.ToTable("BazaarItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<byte>("BuffType") .HasColumnType("smallint"); b.Property<int>("Delay") .HasColumnType("integer"); b.Property<int>("Duration") .HasColumnType("integer"); b.Property<int>("EffectId") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("Propability") .HasColumnType("smallint"); b.Property<short>("TimeoutBuff") .HasColumnType("smallint"); b.Property<byte>("TimeoutBuffChance") .HasColumnType("smallint"); b.HasKey("CardId"); b.ToTable("Card"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Property<long>("CharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("CharacterId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<int>("Act4Dead") .HasColumnType("integer"); b.Property<int>("Act4Kill") .HasColumnType("integer"); b.Property<int>("Act4Points") .HasColumnType("integer"); b.Property<int>("ArenaWinner") .HasColumnType("integer"); b.Property<string>("Biography") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("BuffBlocked") .HasColumnType("boolean"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Compliment") .HasColumnType("smallint"); b.Property<Guid?>("CurrentScriptId") .HasColumnType("uuid"); b.Property<short>("Dignity") .HasColumnType("smallint"); b.Property<int>("Elo") .HasColumnType("integer"); b.Property<bool>("EmoticonsBlocked") .HasColumnType("boolean"); b.Property<bool>("ExchangeBlocked") .HasColumnType("boolean"); b.Property<byte>("Faction") .HasColumnType("smallint"); b.Property<bool>("FamilyRequestBlocked") .HasColumnType("boolean"); b.Property<bool>("FriendRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("Gender") .HasColumnType("smallint"); b.Property<long>("Gold") .HasColumnType("bigint"); b.Property<bool>("GroupRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("HairColor") .HasColumnType("smallint"); b.Property<byte>("HairStyle") .HasColumnType("smallint"); b.Property<bool>("HeroChatBlocked") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<long>("HeroXp") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("HpBlocked") .HasColumnType("boolean"); b.Property<byte>("JobLevel") .HasColumnType("smallint"); b.Property<long>("JobLevelXp") .HasColumnType("bigint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<long>("LevelXp") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<int>("MasterPoints") .HasColumnType("integer"); b.Property<int>("MasterTicket") .HasColumnType("integer"); b.Property<byte>("MaxMateCount") .HasColumnType("smallint"); b.Property<bool>("MinilandInviteBlocked") .HasColumnType("boolean"); b.Property<bool>("MouseAimLock") .HasColumnType("boolean"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("Prefix") .HasMaxLength(25) .HasColumnType("character varying(25)"); b.Property<bool>("QuickGetUp") .HasColumnType("boolean"); b.Property<long>("RagePoint") .HasColumnType("bigint"); b.Property<long>("Reput") .HasColumnType("bigint"); b.Property<byte>("ServerId") .HasColumnType("smallint"); b.Property<bool>("ShouldRename") .HasColumnType("boolean"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<int>("SpAdditionPoint") .HasColumnType("integer"); b.Property<int>("SpPoint") .HasColumnType("integer"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("TalentLose") .HasColumnType("integer"); b.Property<int>("TalentSurrender") .HasColumnType("integer"); b.Property<int>("TalentWin") .HasColumnType("integer"); b.Property<bool>("WhisperBlocked") .HasColumnType("boolean"); b.HasKey("CharacterId"); b.HasIndex("AccountId"); b.HasIndex("CurrentScriptId"); b.HasIndex("MapId"); b.ToTable("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.HasKey("Id"); b.HasIndex("ActPartId"); b.HasIndex("CharacterId"); b.ToTable("CharacterActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("CompletedOn") .HasColumnType("timestamp with time zone"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("QuestId"); b.ToTable("CharacterQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("CharacterQuestId") .HasColumnType("uuid"); b.Property<int>("Count") .HasColumnType("integer"); b.Property<Guid>("QuestObjectiveId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("QuestObjectiveId"); b.HasIndex("CharacterQuestId", "QuestObjectiveId") .IsUnique(); b.ToTable("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.Property<Guid>("CharacterRelationId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<long>("RelatedCharacterId") .HasColumnType("bigint"); b.Property<short>("RelationType") .HasColumnType("smallint"); b.HasKey("CharacterRelationId"); b.HasIndex("CharacterId"); b.HasIndex("RelatedCharacterId"); b.ToTable("CharacterRelation"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("SkillVNum"); b.ToTable("CharacterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.Property<int>("ComboId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ComboId")); b.Property<short>("Animation") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("Hit") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("ComboId"); b.HasIndex("SkillVNum"); b.ToTable("Combo"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.Property<short>("DropId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DropId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("DropChance") .HasColumnType("integer"); b.Property<short?>("MapTypeId") .HasColumnType("smallint"); b.Property<short?>("MonsterVNum") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("DropId"); b.HasIndex("MapTypeId"); b.HasIndex("MonsterVNum"); b.HasIndex("VNum"); b.ToTable("Drop"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<int>("Value") .HasColumnType("integer"); b.Property<Guid>("WearableInstanceId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("WearableInstanceId"); b.ToTable("EquipmentOption"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Property<long>("FamilyId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyId")); b.Property<int>("FamilyExperience") .HasColumnType("integer"); b.Property<byte>("FamilyFaction") .HasColumnType("smallint"); b.Property<byte>("FamilyHeadGender") .HasColumnType("smallint"); b.Property<byte>("FamilyLevel") .HasColumnType("smallint"); b.Property<string>("FamilyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("ManagerAuthorityType") .HasColumnType("integer"); b.Property<bool>("ManagerCanGetHistory") .HasColumnType("boolean"); b.Property<bool>("ManagerCanInvite") .HasColumnType("boolean"); b.Property<bool>("ManagerCanNotice") .HasColumnType("boolean"); b.Property<bool>("ManagerCanShout") .HasColumnType("boolean"); b.Property<byte>("MaxSize") .HasColumnType("smallint"); b.Property<int>("MemberAuthorityType") .HasColumnType("integer"); b.Property<bool>("MemberCanGetHistory") .HasColumnType("boolean"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("WarehouseSize") .HasColumnType("smallint"); b.HasKey("FamilyId"); b.ToTable("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.Property<long>("FamilyCharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyCharacterId")); b.Property<byte>("Authority") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<string>("DailyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Experience") .HasColumnType("integer"); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Rank") .HasColumnType("smallint"); b.HasKey("FamilyCharacterId"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("FamilyCharacter"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.Property<long>("FamilyLogId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyLogId")); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<string>("FamilyLogData") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("FamilyLogType") .HasColumnType("smallint"); b.Property<Instant>("Timestamp") .HasColumnType("timestamp with time zone"); b.HasKey("FamilyLogId"); b.HasIndex("FamilyId"); b.ToTable("FamilyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NActDesc", b => { b.Property<int>("I18NActDescId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NActDescId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NActDescId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NActDesc"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NBCard", b => { b.Property<int>("I18NbCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NbCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NbCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NBCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NCard", b => { b.Property<int>("I18NCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NItem", b => { b.Property<int>("I18NItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NItemId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NItemId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NItem"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapIdData", b => { b.Property<int>("I18NMapIdDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapIdDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapIdDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapIdData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapPointData", b => { b.Property<int>("I18NMapPointDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapPointDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapPointDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapPointData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonster", b => { b.Property<int>("I18NNpcMonsterId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonsterTalk", b => { b.Property<int>("I18NNpcMonsterTalkId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterTalkId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterTalkId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonsterTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NQuest", b => { b.Property<int>("I18NQuestId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NQuestId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NQuestId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NSkill", b => { b.Property<int>("I18NSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NSkillId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NSkillId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("CharacterId", "Slot", "Type") .IsUnique(); b.ToTable("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Property<short>("VNum") .HasColumnType("smallint"); b.Property<byte>("BasicUpgrade") .HasColumnType("smallint"); b.Property<byte>("CellonLvl") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte>("DarkElement") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<int>("Effect") .HasColumnType("integer"); b.Property<int>("EffectValue") .HasColumnType("integer"); b.Property<int>("Element") .HasColumnType("integer"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<byte>("EquipmentSlot") .HasColumnType("smallint"); b.Property<byte>("FireElement") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<bool>("Flag1") .HasColumnType("boolean"); b.Property<bool>("Flag2") .HasColumnType("boolean"); b.Property<bool>("Flag3") .HasColumnType("boolean"); b.Property<bool>("Flag4") .HasColumnType("boolean"); b.Property<bool>("Flag6") .HasColumnType("boolean"); b.Property<bool>("Flag7") .HasColumnType("boolean"); b.Property<bool>("Flag8") .HasColumnType("boolean"); b.Property<bool>("Flag9") .HasColumnType("boolean"); b.Property<byte>("Height") .HasColumnType("smallint"); b.Property<short>("HitRate") .HasColumnType("smallint"); b.Property<short>("Hp") .HasColumnType("smallint"); b.Property<short>("HpRegeneration") .HasColumnType("smallint"); b.Property<bool>("IsColored") .HasColumnType("boolean"); b.Property<bool>("IsConsumable") .HasColumnType("boolean"); b.Property<bool>("IsDroppable") .HasColumnType("boolean"); b.Property<bool>("IsHeroic") .HasColumnType("boolean"); b.Property<bool>("IsMinilandActionable") .HasColumnType("boolean"); b.Property<bool>("IsSoldable") .HasColumnType("boolean"); b.Property<bool>("IsTradable") .HasColumnType("boolean"); b.Property<bool>("IsWarehouse") .HasColumnType("boolean"); b.Property<byte>("ItemSubType") .HasColumnType("smallint"); b.Property<byte>("ItemType") .HasColumnType("smallint"); b.Property<long>("ItemValidTime") .HasColumnType("bigint"); b.Property<byte>("LevelJobMinimum") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("LightElement") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<byte>("MaxCellon") .HasColumnType("smallint"); b.Property<byte>("MaxCellonLvl") .HasColumnType("smallint"); b.Property<short>("MaxElementRate") .HasColumnType("smallint"); b.Property<byte>("MaximumAmmo") .HasColumnType("smallint"); b.Property<int>("MinilandObjectPoint") .HasColumnType("integer"); b.Property<short>("MoreHp") .HasColumnType("smallint"); b.Property<short>("MoreMp") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("Mp") .HasColumnType("smallint"); b.Property<short>("MpRegeneration") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<short>("PvpDefence") .HasColumnType("smallint"); b.Property<byte>("PvpStrength") .HasColumnType("smallint"); b.Property<short>("ReduceOposantResistance") .HasColumnType("smallint"); b.Property<long>("ReputPrice") .HasColumnType("bigint"); b.Property<byte>("ReputationMinimum") .HasColumnType("smallint"); b.Property<bool>("RequireBinding") .HasColumnType("boolean"); b.Property<short>("SecondMorph") .HasColumnType("smallint"); b.Property<int>("SecondaryElement") .HasColumnType("integer"); b.Property<byte>("Sex") .HasColumnType("smallint"); b.Property<byte>("SpType") .HasColumnType("smallint"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("WaitDelay") .HasColumnType("smallint"); b.Property<byte>("WaterElement") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<byte>("Width") .HasColumnType("smallint"); b.HasKey("VNum"); b.ToTable("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<long?>("BoundCharacterId") .HasColumnType("bigint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("Design") .HasColumnType("smallint"); b.Property<string>("Discriminator") .IsRequired() .HasMaxLength(21) .HasColumnType("character varying(21)"); b.Property<int>("DurabilityPoint") .HasColumnType("integer"); b.Property<Instant?>("ItemDeleteTime") .HasColumnType("timestamp with time zone"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("BoundCharacterId"); b.HasIndex("ItemVNum"); b.ToTable("ItemInstance"); b.HasDiscriminator<string>("Discriminator").HasValue("ItemInstance"); b.UseTphMappingStrategy(); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.Property<long>("MailId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MailId")); b.Property<short?>("Armor") .HasColumnType("smallint"); b.Property<short?>("CostumeHat") .HasColumnType("smallint"); b.Property<short?>("CostumeSuit") .HasColumnType("smallint"); b.Property<Instant>("Date") .HasColumnType("timestamp with time zone"); b.Property<short?>("Fairy") .HasColumnType("smallint"); b.Property<short?>("Hat") .HasColumnType("smallint"); b.Property<bool>("IsOpened") .HasColumnType("boolean"); b.Property<bool>("IsSenderCopy") .HasColumnType("boolean"); b.Property<Guid?>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short?>("MainWeapon") .HasColumnType("smallint"); b.Property<short?>("Mask") .HasColumnType("smallint"); b.Property<string>("Message") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ReceiverId") .HasColumnType("bigint"); b.Property<short?>("SecondaryWeapon") .HasColumnType("smallint"); b.Property<byte?>("SenderCharacterClass") .HasColumnType("smallint"); b.Property<byte?>("SenderGender") .HasColumnType("smallint"); b.Property<byte?>("SenderHairColor") .HasColumnType("smallint"); b.Property<byte?>("SenderHairStyle") .HasColumnType("smallint"); b.Property<long?>("SenderId") .HasColumnType("bigint"); b.Property<short?>("SenderMorphId") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short?>("WeaponSkin") .HasColumnType("smallint"); b.Property<short?>("WingSkin") .HasColumnType("smallint"); b.HasKey("MailId"); b.HasIndex("ItemInstanceId"); b.HasIndex("ReceiverId"); b.HasIndex("SenderId"); b.ToTable("Mail"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<byte[]>("Data") .IsRequired() .HasColumnType("bytea"); b.Property<int>("Music") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("ShopAllowed") .HasColumnType("boolean"); b.HasKey("MapId"); b.ToTable("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.Property<int>("MapMonsterId") .HasColumnType("integer"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapMonsterId"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short?>("Dialog") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("EffectDelay") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<bool>("IsSitting") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapNpcId"); b.HasIndex("Dialog"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.Property<string>("MapTypeName") .IsRequired() .HasColumnType("text"); b.Property<short>("PotionDelay") .HasColumnType("smallint"); b.Property<long?>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<long?>("ReturnMapTypeId") .HasColumnType("bigint"); b.HasKey("MapTypeId"); b.HasIndex("RespawnMapTypeId"); b.HasIndex("ReturnMapTypeId"); b.ToTable("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.Property<short>("MapTypeMapId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("MapTypeMapId")); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.HasKey("MapTypeMapId"); b.HasIndex("MapTypeId"); b.HasIndex("MapId", "MapTypeId") .IsUnique(); b.ToTable("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.Property<long>("MateId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MateId")); b.Property<byte>("Attack") .HasColumnType("smallint"); b.Property<bool>("CanPickUp") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<byte>("Defence") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<long>("Experience") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("IsSummonable") .HasColumnType("boolean"); b.Property<bool>("IsTeamMember") .HasColumnType("boolean"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("Loyalty") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("MateType") .HasColumnType("smallint"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short>("Skin") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MateId"); b.HasIndex("CharacterId"); b.HasIndex("VNum"); b.ToTable("Mate"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.Property<Guid>("MinilandId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("DailyVisitCount") .HasColumnType("integer"); b.Property<string>("MinilandMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("MinilandPoint") .HasColumnType("bigint"); b.Property<long>("OwnerId") .HasColumnType("bigint"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("VisitCount") .HasColumnType("integer"); b.Property<short>("WelcomeMusicInfo") .HasColumnType("smallint"); b.HasKey("MinilandId"); b.HasIndex("OwnerId"); b.ToTable("Miniland"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.Property<Guid>("MinilandObjectId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<Guid?>("InventoryItemInstanceId") .HasColumnType("uuid"); b.Property<byte>("Level1BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level2BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level3BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level4BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level5BoxAmount") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.HasKey("MinilandObjectId"); b.HasIndex("InventoryItemInstanceId"); b.ToTable("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<bool>("AlwaysActive") .HasColumnType("boolean"); b.Property<byte>("AmountRequired") .HasColumnType("smallint"); b.Property<byte>("AttackClass") .HasColumnType("smallint"); b.Property<byte>("AttackUpgrade") .HasColumnType("smallint"); b.Property<byte>("BasicArea") .HasColumnType("smallint"); b.Property<short>("BasicCooldown") .HasColumnType("smallint"); b.Property<byte>("BasicHitChance") .HasColumnType("smallint"); b.Property<byte>("BasicRange") .HasColumnType("smallint"); b.Property<short>("BasicSkill") .HasColumnType("smallint"); b.Property<short>("CModeVNum") .HasColumnType("smallint"); b.Property<bool>("CanCatch") .HasColumnType("boolean"); b.Property<bool>("CanCollect") .HasColumnType("boolean"); b.Property<bool>("CanOnlyBeDmgedByJajamaruLastSkill") .HasColumnType("boolean"); b.Property<bool>("CanWalk") .HasColumnType("boolean"); b.Property<bool>("CantDebuff") .HasColumnType("boolean"); b.Property<bool>("CantTargetInfo") .HasColumnType("boolean"); b.Property<bool>("CantVoke") .HasColumnType("boolean"); b.Property<byte>("CellMinRange") .HasColumnType("smallint"); b.Property<byte>("CellSize") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalChance") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<byte>("DashSpeed") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<byte>("DefenceUpgrade") .HasColumnType("smallint"); b.Property<bool>("DisappearAfterHitting") .HasColumnType("boolean"); b.Property<bool>("DisappearAfterSeconds") .HasColumnType("boolean"); b.Property<bool>("DisappearAfterSecondsMana") .HasColumnType("boolean"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<bool>("DontDrainHpAfterSeconds") .HasColumnType("boolean"); b.Property<short>("EffectIdConstantly") .HasColumnType("smallint"); b.Property<short>("EffectIdOnDeath") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<int>("GiveDamagePercentage") .HasColumnType("integer"); b.Property<byte>("GroupAttack") .HasColumnType("smallint"); b.Property<bool>("HasDash") .HasColumnType("boolean"); b.Property<bool>("HasMode") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<int>("HeroXp") .HasColumnType("integer"); b.Property<short>("HpThreshold") .HasColumnType("smallint"); b.Property<short>("IconId") .HasColumnType("smallint"); b.Property<bool>("IsHostile") .HasColumnType("boolean"); b.Property<bool>("IsPercent") .HasColumnType("boolean"); b.Property<bool>("IsPercentileDmg") .HasColumnType("boolean"); b.Property<bool>("IsValhallaPartner") .HasColumnType("boolean"); b.Property<int>("JobXp") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<byte>("Limiter") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<int>("MaxHp") .HasColumnType("integer"); b.Property<int>("MaxMp") .HasColumnType("integer"); b.Property<int>("Midgard") .HasColumnType("integer"); b.Property<byte>("MonsterType") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("NoAggresiveIcon") .HasColumnType("boolean"); b.Property<byte>("NoticeRange") .HasColumnType("smallint"); b.Property<bool>("OnDefenseOnlyOnce") .HasColumnType("boolean"); b.Property<int>("PetInfoVal1") .HasColumnType("integer"); b.Property<int>("PetInfoVal2") .HasColumnType("integer"); b.Property<int>("PetInfoVal3") .HasColumnType("integer"); b.Property<int>("PetInfoVal4") .HasColumnType("integer"); b.Property<byte>("Race") .HasColumnType("smallint"); b.Property<byte>("RaceType") .HasColumnType("smallint"); b.Property<short>("RangeThreshold") .HasColumnType("smallint"); b.Property<bool>("RegenerateHpOverTime") .HasColumnType("boolean"); b.Property<int>("RespawnTime") .HasColumnType("integer"); b.Property<int>("SpawnMobOrColor") .HasColumnType("integer"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<short>("SpriteSize") .HasColumnType("smallint"); b.Property<int>("TakeDamages") .HasColumnType("integer"); b.Property<short>("VNumRequired") .HasColumnType("smallint"); b.Property<bool>("VisibleOnMinimapAsGreenDot") .HasColumnType("boolean"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<int>("Xp") .HasColumnType("integer"); b.HasKey("NpcMonsterVNum"); b.ToTable("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.Property<long>("NpcMonsterSkillId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("NpcMonsterSkillId")); b.Property<byte>("Force") .HasColumnType("smallint"); b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<short>("Rate") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("NpcMonsterSkillId"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Property<short>("DialogId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DialogId")); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("DialogId"); b.ToTable("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.Property<int>("PenaltyLogId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PenaltyLogId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<string>("AdminName") .IsRequired() .HasColumnType("text"); b.Property<Instant>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<byte>("Penalty") .HasColumnType("smallint"); b.Property<string>("Reason") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("PenaltyLogId"); b.HasIndex("AccountId"); b.ToTable("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.Property<int>("PortalId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PortalId")); b.Property<short>("DestinationMapId") .HasColumnType("smallint"); b.Property<short>("DestinationX") .HasColumnType("smallint"); b.Property<short>("DestinationY") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<short>("SourceMapId") .HasColumnType("smallint"); b.Property<short>("SourceX") .HasColumnType("smallint"); b.Property<short>("SourceY") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("PortalId"); b.HasIndex("DestinationMapId"); b.HasIndex("SourceMapId"); b.ToTable("Portal"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<bool>("AutoFinish") .HasColumnType("boolean"); b.Property<string>("Desc") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int?>("EndDialogId") .HasColumnType("integer"); b.Property<bool>("IsDaily") .HasColumnType("boolean"); b.Property<bool>("IsSecondary") .HasColumnType("boolean"); b.Property<byte>("LevelMax") .HasColumnType("smallint"); b.Property<byte>("LevelMin") .HasColumnType("smallint"); b.Property<short?>("NextQuestId") .HasColumnType("smallint"); b.Property<short>("QuestType") .HasColumnType("smallint"); b.Property<short?>("RequiredQuestId") .HasColumnType("smallint"); b.Property<int?>("SpecialData") .HasColumnType("integer"); b.Property<int?>("StartDialogId") .HasColumnType("integer"); b.Property<short?>("TargetMap") .HasColumnType("smallint"); b.Property<short?>("TargetX") .HasColumnType("smallint"); b.Property<short?>("TargetY") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("QuestId"); b.ToTable("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Property<Guid>("QuestObjectiveId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<int?>("FourthData") .HasColumnType("integer"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<int?>("SecondData") .HasColumnType("integer"); b.Property<int?>("ThirdData") .HasColumnType("integer"); b.HasKey("QuestObjectiveId"); b.HasIndex("QuestId"); b.ToTable("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<short>("QuestRewardId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("QuestId"); b.HasIndex("QuestRewardId"); b.ToTable("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Property<short>("QuestRewardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("QuestRewardId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("Data") .HasColumnType("integer"); b.Property<byte>("Design") .HasColumnType("smallint"); b.Property<byte>("Rarity") .HasColumnType("smallint"); b.Property<byte>("RewardType") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("QuestRewardId"); b.ToTable("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("IconType") .HasColumnType("smallint"); b.Property<short>("IconVNum") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("QuickListIndex") .HasColumnType("smallint"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.ToTable("QuicklistEntry"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Property<short>("RecipeId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeId")); b.Property<byte>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.HasKey("RecipeId"); b.HasIndex("ItemVNum"); b.HasIndex("MapNpcId"); b.ToTable("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.Property<short>("RecipeItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("RecipeId") .HasColumnType("smallint"); b.HasKey("RecipeItemId"); b.HasIndex("ItemVNum"); b.HasIndex("RecipeId"); b.ToTable("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.Property<long>("RespawnId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("RespawnId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("X") .HasColumnType("smallint"); b.Property<short>("Y") .HasColumnType("smallint"); b.HasKey("RespawnId"); b.HasIndex("CharacterId"); b.HasIndex("MapId"); b.HasIndex("RespawnMapTypeId"); b.ToTable("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("DefaultX") .HasColumnType("smallint"); b.Property<short>("DefaultY") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("RespawnMapTypeId"); b.HasIndex("MapId"); b.ToTable("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.Property<short>("RollGeneratedItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RollGeneratedItemId")); b.Property<bool>("IsRareRandom") .HasColumnType("boolean"); b.Property<bool>("IsSuperReward") .HasColumnType("boolean"); b.Property<byte>("ItemGeneratedAmount") .HasColumnType("smallint"); b.Property<byte>("ItemGeneratedUpgrade") .HasColumnType("smallint"); b.Property<short>("ItemGeneratedVNum") .HasColumnType("smallint"); b.Property<short>("MaximumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("MinimumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("OriginalItemDesign") .HasColumnType("smallint"); b.Property<short>("OriginalItemVNum") .HasColumnType("smallint"); b.Property<short>("Probability") .HasColumnType("smallint"); b.HasKey("RollGeneratedItemId"); b.HasIndex("ItemGeneratedVNum"); b.HasIndex("OriginalItemVNum"); b.ToTable("RollGeneratedItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short?>("Argument1") .HasColumnType("smallint"); b.Property<short?>("Argument2") .HasColumnType("smallint"); b.Property<short?>("Argument3") .HasColumnType("smallint"); b.Property<byte>("ScriptId") .HasColumnType("smallint"); b.Property<short>("ScriptStepId") .HasColumnType("smallint"); b.Property<string>("StepType") .IsRequired() .HasColumnType("text"); b.Property<string>("StringArgument") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("ScriptId", "ScriptStepId") .IsUnique(); b.ToTable("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.Property<short>("ScriptedInstanceId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("ScriptedInstanceId")); b.Property<string>("Label") .HasColumnType("text"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("PositionX") .HasColumnType("smallint"); b.Property<short>("PositionY") .HasColumnType("smallint"); b.Property<string>("Script") .HasMaxLength(2147483647) .HasColumnType("text"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ScriptedInstanceId"); b.HasIndex("MapId"); b.ToTable("ScriptedInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Property<int>("ShopId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopId")); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<byte>("MenuType") .HasColumnType("smallint"); b.Property<byte>("ShopType") .HasColumnType("smallint"); b.HasKey("ShopId"); b.HasIndex("MapNpcId"); b.ToTable("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.Property<int>("ShopItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopItemId")); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("ShopItemId"); b.HasIndex("ItemVNum"); b.HasIndex("ShopId"); b.ToTable("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.Property<int>("ShopSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopSkillId")); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ShopSkillId"); b.HasIndex("ShopId"); b.HasIndex("SkillVNum"); b.ToTable("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<short>("AttackAnimation") .HasColumnType("smallint"); b.Property<short>("CastAnimation") .HasColumnType("smallint"); b.Property<short>("CastEffect") .HasColumnType("smallint"); b.Property<short>("CastId") .HasColumnType("smallint"); b.Property<short>("CastTime") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Cooldown") .HasColumnType("smallint"); b.Property<byte>("CpCost") .HasColumnType("smallint"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<byte>("HitType") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("MinimumAdventurerLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumArcherLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumMagicianLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumSwordmanLevel") .HasColumnType("smallint"); b.Property<short>("MpCost") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Price") .HasColumnType("integer"); b.Property<byte>("Range") .HasColumnType("smallint"); b.Property<byte>("SkillType") .HasColumnType("smallint"); b.Property<byte>("TargetRange") .HasColumnType("smallint"); b.Property<byte>("TargetType") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("UpgradeSkill") .HasColumnType("smallint"); b.Property<short>("UpgradeType") .HasColumnType("smallint"); b.HasKey("SkillVNum"); b.ToTable("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.Property<long>("StaticBonusId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBonusId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<byte>("StaticBonusType") .HasColumnType("smallint"); b.HasKey("StaticBonusId"); b.HasIndex("CharacterId"); b.ToTable("StaticBonus"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.Property<long>("StaticBuffId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBuffId")); b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<int>("RemainingTime") .HasColumnType("integer"); b.HasKey("StaticBuffId"); b.HasIndex("CardId"); b.HasIndex("CharacterId"); b.ToTable("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.Property<short>("TeleporterId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("TeleporterId")); b.Property<short>("Index") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("TeleporterId"); b.HasIndex("MapId"); b.HasIndex("MapNpcId"); b.ToTable("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<bool>("Active") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("TitleType") .HasColumnType("smallint"); b.Property<bool>("Visible") .HasColumnType("boolean"); b.HasKey("Id"); b.HasIndex("CharacterId", "TitleType") .IsUnique(); b.ToTable("Title"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long?>("CharacterId") .HasColumnType("bigint"); b.Property<long?>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<Guid>("WarehouseId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("WarehouseId"); b.ToTable("WarehouseItem"); }); modelBuilder.Entity("NosCore.Database.Entities.UsableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.ToTable("ItemInstance", t => { t.Property("Hp") .HasColumnName("UsableInstance_Hp"); t.Property("Mp") .HasColumnName("UsableInstance_Mp"); }); b.HasDiscriminator().HasValue("UsableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.WearableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<byte?>("Ammo") .HasColumnType("smallint"); b.Property<byte?>("Cellon") .HasColumnType("smallint"); b.Property<short?>("CloseDefence") .HasColumnType("smallint"); b.Property<short?>("Concentrate") .HasColumnType("smallint"); b.Property<short?>("CriticalDodge") .HasColumnType("smallint"); b.Property<byte?>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short?>("CriticalRate") .HasColumnType("smallint"); b.Property<short?>("DamageMaximum") .HasColumnType("smallint"); b.Property<short?>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte?>("DarkElement") .HasColumnType("smallint"); b.Property<short?>("DarkResistance") .HasColumnType("smallint"); b.Property<short?>("DefenceDodge") .HasColumnType("smallint"); b.Property<short?>("DistanceDefence") .HasColumnType("smallint"); b.Property<short?>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<short?>("ElementRate") .HasColumnType("smallint"); b.Property<byte?>("FireElement") .HasColumnType("smallint"); b.Property<short?>("FireResistance") .HasColumnType("smallint"); b.Property<short?>("HitRate") .HasColumnType("smallint"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<bool?>("IsEmpty") .HasColumnType("boolean"); b.Property<bool?>("IsFixed") .HasColumnType("boolean"); b.Property<byte?>("LightElement") .HasColumnType("smallint"); b.Property<short?>("LightResistance") .HasColumnType("smallint"); b.Property<short?>("MagicDefence") .HasColumnType("smallint"); b.Property<short?>("MaxElementRate") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.Property<byte?>("ShellRarity") .HasColumnType("smallint"); b.Property<byte?>("WaterElement") .HasColumnType("smallint"); b.Property<short?>("WaterResistance") .HasColumnType("smallint"); b.Property<long?>("Xp") .HasColumnType("bigint"); b.HasDiscriminator().HasValue("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.SpecialistInstance", b => { b.HasBaseType("NosCore.Database.Entities.WearableInstance"); b.Property<short>("SlDamage") .HasColumnType("smallint"); b.Property<short>("SlDefence") .HasColumnType("smallint"); b.Property<short>("SlElement") .HasColumnType("smallint"); b.Property<short>("SlHp") .HasColumnType("smallint"); b.Property<byte>("SpDamage") .HasColumnType("smallint"); b.Property<byte>("SpDark") .HasColumnType("smallint"); b.Property<byte>("SpDefence") .HasColumnType("smallint"); b.Property<byte>("SpElement") .HasColumnType("smallint"); b.Property<byte>("SpFire") .HasColumnType("smallint"); b.Property<byte>("SpHp") .HasColumnType("smallint"); b.Property<byte>("SpLevel") .HasColumnType("smallint"); b.Property<byte>("SpLight") .HasColumnType("smallint"); b.Property<byte>("SpStoneUpgrade") .HasColumnType("smallint"); b.Property<byte>("SpWater") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("SpecialistInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.BoxInstance", b => { b.HasBaseType("NosCore.Database.Entities.SpecialistInstance"); b.Property<short?>("HoldingVNum") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("BoxInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.HasOne("NosCore.Database.Entities.Act", "Act") .WithMany("ActParts") .HasForeignKey("ActId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("BCards") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("BCards") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("BCards") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("BCards") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Card"); b.Navigation("Item"); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("BazaarItem") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Seller") .WithMany("BazaarItem") .HasForeignKey("SellerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Seller"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("Character") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Script", "Script") .WithMany("Characters") .HasForeignKey("CurrentScriptId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Character") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); b.Navigation("Map"); b.Navigation("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.HasOne("NosCore.Database.Entities.ActPart", "ActPart") .WithMany("CharacterActParts") .HasForeignKey("ActPartId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterActParts") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ActPart"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterQuest") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("CharacterQuest") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.HasOne("NosCore.Database.Entities.CharacterQuest", "CharacterQuest") .WithMany("CharacterQuestObjective") .HasForeignKey("CharacterQuestId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestObjective", "QuestObjective") .WithMany("CharacterQuestObjective") .HasForeignKey("QuestObjectiveId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.HasOne("NosCore.Database.Entities.Character", "Character1") .WithMany("CharacterRelation1") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character2") .WithMany("CharacterRelation2") .HasForeignKey("RelatedCharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character1"); b.Navigation("Character2"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterSkill") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("CharacterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("Combo") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("Drops") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Drop") .HasForeignKey("MonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Drop") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapType"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.HasOne("NosCore.Database.Entities.WearableInstance", "WearableInstance") .WithMany() .HasForeignKey("WearableInstanceId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("FamilyCharacter") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyCharacters") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyLogs") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Inventory") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("InventoryItemInstance") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("ItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "BoundCharacter") .WithMany() .HasForeignKey("BoundCharacterId"); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ItemInstances") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("BoundCharacter"); b.Navigation("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("Mail") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Character", "Receiver") .WithMany("Mail1") .HasForeignKey("ReceiverId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Sender") .WithMany("Mail") .HasForeignKey("SenderId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("ItemInstance"); b.Navigation("Receiver"); b.Navigation("Sender"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapMonster") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapMonster") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.HasOne("NosCore.Database.Entities.NpcTalk", "NpcTalk") .WithMany("MapNpc") .HasForeignKey("Dialog") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapNpc") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapNpc") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); b.Navigation("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("MapTypes") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.RespawnMapType", "ReturnMapType") .WithMany("MapTypes1") .HasForeignKey("ReturnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("RespawnMapType"); b.Navigation("ReturnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapTypeMap") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("MapTypeMap") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Mate") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Mate") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.HasOne("NosCore.Database.Entities.Character", "Owner") .WithMany("Miniland") .HasForeignKey("OwnerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Owner"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.HasOne("NosCore.Database.Entities.InventoryItemInstance", "InventoryItemInstance") .WithMany("MinilandObject") .HasForeignKey("InventoryItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("NpcMonsterSkill") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("NpcMonsterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("PenaltyLog") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Portal") .HasForeignKey("DestinationMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map1") .WithMany("Portal1") .HasForeignKey("SourceMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("Map1"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestObjective") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestQuestReward") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestReward", "QuestReward") .WithMany("QuestQuestReward") .HasForeignKey("QuestRewardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); b.Navigation("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("QuicklistEntry") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Recipe") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Recipe") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("RecipeItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Recipe", "Recipe") .WithMany("RecipeItem") .HasForeignKey("RecipeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Respawn") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Respawn") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("Respawn") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Map"); b.Navigation("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("RespawnMapType") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.HasOne("NosCore.Database.Entities.Item", "ItemGenerated") .WithMany("RollGeneratedItem2") .HasForeignKey("ItemGeneratedVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Item", "OriginalItem") .WithMany("RollGeneratedItem") .HasForeignKey("OriginalItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemGenerated"); b.Navigation("OriginalItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("ScriptedInstance") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Shop") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ShopItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopItem") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopSkill") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("ShopSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Shop"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBonus") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("StaticBuff") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBuff") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Card"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Teleporter") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Teleporter") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Title") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Warehouses") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("Warehouses") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("WarehouseItems") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Warehouse", "Warehouse") .WithMany("WarehouseItems") .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Navigation("Character"); b.Navigation("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Navigation("ActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Navigation("CharacterActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Navigation("BCards"); b.Navigation("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Navigation("BazaarItem"); b.Navigation("CharacterActParts"); b.Navigation("CharacterQuest"); b.Navigation("CharacterRelation1"); b.Navigation("CharacterRelation2"); b.Navigation("CharacterSkill"); b.Navigation("FamilyCharacter"); b.Navigation("Inventory"); b.Navigation("Mail"); b.Navigation("Mail1"); b.Navigation("Mate"); b.Navigation("Miniland"); b.Navigation("QuicklistEntry"); b.Navigation("Respawn"); b.Navigation("StaticBonus"); b.Navigation("StaticBuff"); b.Navigation("Title"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Navigation("FamilyCharacters"); b.Navigation("FamilyLogs"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Navigation("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("ItemInstances"); b.Navigation("Recipe"); b.Navigation("RecipeItem"); b.Navigation("RollGeneratedItem"); b.Navigation("RollGeneratedItem2"); b.Navigation("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Navigation("BazaarItem"); b.Navigation("InventoryItemInstance"); b.Navigation("Mail"); b.Navigation("WarehouseItems"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Navigation("Character"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("MapTypeMap"); b.Navigation("Portal"); b.Navigation("Portal1"); b.Navigation("Respawn"); b.Navigation("RespawnMapType"); b.Navigation("ScriptedInstance"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Navigation("Recipe"); b.Navigation("Shop"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Navigation("Drops"); b.Navigation("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("Mate"); b.Navigation("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Navigation("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Navigation("MapTypes"); b.Navigation("MapTypes1"); b.Navigation("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Navigation("Characters"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Navigation("ShopItem"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Navigation("BCards"); b.Navigation("CharacterSkill"); b.Navigation("Combo"); b.Navigation("NpcMonsterSkill"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Navigation("WarehouseItems"); }); #pragma warning restore 612, 618 } } } ================================================ FILE: src/NosCore.Database/Migrations/20260424144528_AddMateCaptureItemEffect.cs ================================================ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace NosCore.Database.Migrations { /// <inheritdoc /> public partial class AddMateCaptureItemEffect : Migration { /// <inheritdoc /> protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AlterDatabase() .Annotation("Npgsql:Enum:audit_log_type", "account_creation,character_creation,email_update") .Annotation("Npgsql:Enum:authority_type", "user,moderator,game_master,administrator,root,closed,banned,unconfirmed") .Annotation("Npgsql:Enum:character_class_type", "adventurer,swordsman,archer,mage,martial_artist") .Annotation("Npgsql:Enum:character_relation_type", "friend,hidden_spouse,spouse,blocked") .Annotation("Npgsql:Enum:character_state", "active,inactive") .Annotation("Npgsql:Enum:element_type", "neutral,fire,water,light,dark") .Annotation("Npgsql:Enum:equipment_type", "main_weapon,armor,hat,gloves,boots,secondary_weapon,necklace,ring,bracelet,mask,fairy,amulet,sp,costume_suit,costume_hat,weapon_skin,wing_skin") .Annotation("Npgsql:Enum:family_authority", "head,assistant,manager,member") .Annotation("Npgsql:Enum:family_authority_type", "none,put,all") .Annotation("Npgsql:Enum:family_log_type", "daily_message,raid_won,rainbow_battle,family_xp,family_level_up,level_up,item_upgraded,right_changed,authority_changed,family_managed,user_managed,ware_house_added,ware_house_removed") .Annotation("Npgsql:Enum:family_member_rank", "nothing,old_uncle,old_aunt,father,mother,uncle,aunt,brother,sister,spouse,brother2,sister2,old_son,old_daugter,middle_son,middle_daughter,young_son,young_daugter,old_little_son,old_little_daughter,little_son,little_daughter,middle_little_son,middle_little_daugter") .Annotation("Npgsql:Enum:gender_type", "male,female") .Annotation("Npgsql:Enum:hair_color_type", "dark_purple,yellow,blue,purple,orange,brown,green,dark_grey,light_blue,pink_red,light_yellow,light_pink,light_green,light_grey,sky_blue,black,dark_orange,dark_orange_variant2,dark_orange_variant3,dark_orange_variant4,dark_orange_variant5,dark_orange_variant6,light_orange,light_light_orange,light_light_light_orange,light_light_light_light_orange,super_light_orange,dark_yellow,light_light_yellow,kaki_yellow,super_light_yellow,super_light_yellow2,super_light_yellow3,little_dark_yellow,yellow_variant,yellow_variant1,yellow_variant2,yellow_variant3,yellow_variant4,yellow_variant5,yellow_variant6,yellow_variant7,yellow_variant8,yellow_variant9,green_variant,green_variant1,dark_green_variant,green_more_dark_variant,green_variant2,green_variant3,green_variant4,green_variant5,green_variant6,green_variant7,green_variant8,green_variant9,green_variant10,green_variant11,green_variant12,green_variant13,green_variant14,green_variant15,green_variant16,green_variant17,green_variant18,green_variant19,green_variant20,light_blue_variant1,light_blue_variant2,light_blue_variant3,light_blue_variant4,light_blue_variant5,light_blue_variant6,light_blue_variant7,light_blue_variant8,light_blue_variant9,light_blue_variant10,light_blue_variant11,light_blue_variant12,light_blue_variant13,dark_black,light_blue_variant14,light_blue_variant15,light_blue_variant16,light_blue_variant17,blue_variant,blue_variant_dark,blue_variant_dark_dark,blue_variant_dark_dark2,flash_blue,flash_blue_dark,flash_blue_dark2,flash_blue_dark3,flash_blue_dark4,flash_blue_dark5,flash_blue_dark6,flash_blue_dark7,flash_blue_dark8,flash_blue_dark9,white,flash_blue_dark10,flash_blue1,flash_blue2,flash_blue3,flash_blue4,flash_blue5,flash_purple,flash_light_purple,flash_light_purple2,flash_light_purple3,flash_light_purple4,flash_light_purple5,light_purple,purple_variant1,purple_variant2,purple_variant3,purple_variant4,purple_variant5,purple_variant6,purple_variant7,purple_variant8,purple_variant9,purple_variant10,purple_variant11,purple_variant12,purple_variant13,purple_variant14,purple_variant15") .Annotation("Npgsql:Enum:hair_style_type", "hair_style_a,hair_style_b,hair_style_c,hair_style_d,no_hair") .Annotation("Npgsql:Enum:item_effect_type", "no_effect,teleport,apply_hair_die,apply_hair_style,speaker,marriage_proposal,undefined,sp_charger,mate_capture,dropped_sp_recharger,premium_sp_recharger,crafted_sp_recharger,specialist_medal,apply_skin_partner,change_gender,point_initialisation,sealed_tarot_card,tarot_card,red_amulet,blue_amulet,reinforcement_amulet,heroic,random_heroic,attack_amulet,defense_amulet,speed_booster,box_effect,vehicle,gold_nos_merchant_upgrade,silver_nos_merchant_upgrade,inventory_upgrade,pet_space_upgrade,pet_basket_upgrade,pet_backpack_upgrade,inventory_ticket_upgrade,buff_potions,marriage_separation") .Annotation("Npgsql:Enum:item_type", "weapon,armor,fashion,jewelery,specialist,box,shell,main,upgrade,production,map,special,potion,event,title,quest1,sell,food,snack,magical,part,teacher,ammo,quest2,house,garden,minigame,terrace,miniland_theme") .Annotation("Npgsql:Enum:mate_type", "partner,pet") .Annotation("Npgsql:Enum:miniland_state", "open,private,lock") .Annotation("Npgsql:Enum:monster_type", "unknown,partner,npc,well,portal,boss,elite,peapod,special,gem_space_time") .Annotation("Npgsql:Enum:noscore_pocket_type", "equipment,main,etc,miniland,specialist,costume,wear,mount,raid") .Annotation("Npgsql:Enum:penalty_type", "muted,banned,block_exp,block_f_exp,block_rep,warning") .Annotation("Npgsql:Enum:portal_type", "ts_normal,closed,open,miniland,ts_end,ts_end_closed,exit,exit_closed,raid,effect,blue_raid,dark_raid,time_space,shop_teleport,map_portal") .Annotation("Npgsql:Enum:quest_type", "hunt,special_collect,collect_in_raid,brings,capture_without_getting_the_monster,capture,times_space,product,number_of_kill,target_reput,ts_point,dialog1,collect_in_ts,required,wear,needed,collect,transmit_gold,go_to,collect_map_entity,use,dialog2,un_know,inspect,win_raid,flower_quest") .Annotation("Npgsql:Enum:region_type", "en,de,fr,it,pl,es,ru,cs,tr") .Annotation("Npgsql:Enum:scripted_instance_type", "time_space,raid,raid_act4") .Annotation("Npgsql:Enum:static_bonus_type", "bazaar_medal_gold,bazaar_medal_silver,back_pack,pet_basket,pet_back_pack,inventory_ticket_upgrade") .Annotation("Npgsql:Enum:teleporter_type", "teleporter,teleporter_on_map") .Annotation("Npgsql:Enum:warehouse_type", "warehouse,family_ware_house,pet_warehouse") .OldAnnotation("Npgsql:Enum:audit_log_type", "account_creation,character_creation,email_update") .OldAnnotation("Npgsql:Enum:authority_type", "user,moderator,game_master,administrator,root,closed,banned,unconfirmed") .OldAnnotation("Npgsql:Enum:character_class_type", "adventurer,swordsman,archer,mage,martial_artist") .OldAnnotation("Npgsql:Enum:character_relation_type", "friend,hidden_spouse,spouse,blocked") .OldAnnotation("Npgsql:Enum:character_state", "active,inactive") .OldAnnotation("Npgsql:Enum:element_type", "neutral,fire,water,light,dark") .OldAnnotation("Npgsql:Enum:equipment_type", "main_weapon,armor,hat,gloves,boots,secondary_weapon,necklace,ring,bracelet,mask,fairy,amulet,sp,costume_suit,costume_hat,weapon_skin,wing_skin") .OldAnnotation("Npgsql:Enum:family_authority", "head,assistant,manager,member") .OldAnnotation("Npgsql:Enum:family_authority_type", "none,put,all") .OldAnnotation("Npgsql:Enum:family_log_type", "daily_message,raid_won,rainbow_battle,family_xp,family_level_up,level_up,item_upgraded,right_changed,authority_changed,family_managed,user_managed,ware_house_added,ware_house_removed") .OldAnnotation("Npgsql:Enum:family_member_rank", "nothing,old_uncle,old_aunt,father,mother,uncle,aunt,brother,sister,spouse,brother2,sister2,old_son,old_daugter,middle_son,middle_daughter,young_son,young_daugter,old_little_son,old_little_daughter,little_son,little_daughter,middle_little_son,middle_little_daugter") .OldAnnotation("Npgsql:Enum:gender_type", "male,female") .OldAnnotation("Npgsql:Enum:hair_color_type", "dark_purple,yellow,blue,purple,orange,brown,green,dark_grey,light_blue,pink_red,light_yellow,light_pink,light_green,light_grey,sky_blue,black,dark_orange,dark_orange_variant2,dark_orange_variant3,dark_orange_variant4,dark_orange_variant5,dark_orange_variant6,light_orange,light_light_orange,light_light_light_orange,light_light_light_light_orange,super_light_orange,dark_yellow,light_light_yellow,kaki_yellow,super_light_yellow,super_light_yellow2,super_light_yellow3,little_dark_yellow,yellow_variant,yellow_variant1,yellow_variant2,yellow_variant3,yellow_variant4,yellow_variant5,yellow_variant6,yellow_variant7,yellow_variant8,yellow_variant9,green_variant,green_variant1,dark_green_variant,green_more_dark_variant,green_variant2,green_variant3,green_variant4,green_variant5,green_variant6,green_variant7,green_variant8,green_variant9,green_variant10,green_variant11,green_variant12,green_variant13,green_variant14,green_variant15,green_variant16,green_variant17,green_variant18,green_variant19,green_variant20,light_blue_variant1,light_blue_variant2,light_blue_variant3,light_blue_variant4,light_blue_variant5,light_blue_variant6,light_blue_variant7,light_blue_variant8,light_blue_variant9,light_blue_variant10,light_blue_variant11,light_blue_variant12,light_blue_variant13,dark_black,light_blue_variant14,light_blue_variant15,light_blue_variant16,light_blue_variant17,blue_variant,blue_variant_dark,blue_variant_dark_dark,blue_variant_dark_dark2,flash_blue,flash_blue_dark,flash_blue_dark2,flash_blue_dark3,flash_blue_dark4,flash_blue_dark5,flash_blue_dark6,flash_blue_dark7,flash_blue_dark8,flash_blue_dark9,white,flash_blue_dark10,flash_blue1,flash_blue2,flash_blue3,flash_blue4,flash_blue5,flash_purple,flash_light_purple,flash_light_purple2,flash_light_purple3,flash_light_purple4,flash_light_purple5,light_purple,purple_variant1,purple_variant2,purple_variant3,purple_variant4,purple_variant5,purple_variant6,purple_variant7,purple_variant8,purple_variant9,purple_variant10,purple_variant11,purple_variant12,purple_variant13,purple_variant14,purple_variant15") .OldAnnotation("Npgsql:Enum:hair_style_type", "hair_style_a,hair_style_b,hair_style_c,hair_style_d,no_hair") .OldAnnotation("Npgsql:Enum:item_effect_type", "no_effect,teleport,apply_hair_die,apply_hair_style,speaker,marriage_proposal,undefined,sp_charger,dropped_sp_recharger,premium_sp_recharger,crafted_sp_recharger,specialist_medal,apply_skin_partner,change_gender,point_initialisation,sealed_tarot_card,tarot_card,red_amulet,blue_amulet,reinforcement_amulet,heroic,random_heroic,attack_amulet,defense_amulet,speed_booster,box_effect,vehicle,gold_nos_merchant_upgrade,silver_nos_merchant_upgrade,inventory_upgrade,pet_space_upgrade,pet_basket_upgrade,pet_backpack_upgrade,inventory_ticket_upgrade,buff_potions,marriage_separation") .OldAnnotation("Npgsql:Enum:item_type", "weapon,armor,fashion,jewelery,specialist,box,shell,main,upgrade,production,map,special,potion,event,title,quest1,sell,food,snack,magical,part,teacher,ammo,quest2,house,garden,minigame,terrace,miniland_theme") .OldAnnotation("Npgsql:Enum:mate_type", "partner,pet") .OldAnnotation("Npgsql:Enum:miniland_state", "open,private,lock") .OldAnnotation("Npgsql:Enum:monster_type", "unknown,partner,npc,well,portal,boss,elite,peapod,special,gem_space_time") .OldAnnotation("Npgsql:Enum:noscore_pocket_type", "equipment,main,etc,miniland,specialist,costume,wear,mount,raid") .OldAnnotation("Npgsql:Enum:penalty_type", "muted,banned,block_exp,block_f_exp,block_rep,warning") .OldAnnotation("Npgsql:Enum:portal_type", "ts_normal,closed,open,miniland,ts_end,ts_end_closed,exit,exit_closed,raid,effect,blue_raid,dark_raid,time_space,shop_teleport,map_portal") .OldAnnotation("Npgsql:Enum:quest_type", "hunt,special_collect,collect_in_raid,brings,capture_without_getting_the_monster,capture,times_space,product,number_of_kill,target_reput,ts_point,dialog1,collect_in_ts,required,wear,needed,collect,transmit_gold,go_to,collect_map_entity,use,dialog2,un_know,inspect,win_raid,flower_quest") .OldAnnotation("Npgsql:Enum:region_type", "en,de,fr,it,pl,es,ru,cs,tr") .OldAnnotation("Npgsql:Enum:scripted_instance_type", "time_space,raid,raid_act4") .OldAnnotation("Npgsql:Enum:static_bonus_type", "bazaar_medal_gold,bazaar_medal_silver,back_pack,pet_basket,pet_back_pack,inventory_ticket_upgrade") .OldAnnotation("Npgsql:Enum:teleporter_type", "teleporter,teleporter_on_map") .OldAnnotation("Npgsql:Enum:warehouse_type", "warehouse,family_ware_house,pet_warehouse"); } /// <inheritdoc /> protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.AlterDatabase() .Annotation("Npgsql:Enum:audit_log_type", "account_creation,character_creation,email_update") .Annotation("Npgsql:Enum:authority_type", "user,moderator,game_master,administrator,root,closed,banned,unconfirmed") .Annotation("Npgsql:Enum:character_class_type", "adventurer,swordsman,archer,mage,martial_artist") .Annotation("Npgsql:Enum:character_relation_type", "friend,hidden_spouse,spouse,blocked") .Annotation("Npgsql:Enum:character_state", "active,inactive") .Annotation("Npgsql:Enum:element_type", "neutral,fire,water,light,dark") .Annotation("Npgsql:Enum:equipment_type", "main_weapon,armor,hat,gloves,boots,secondary_weapon,necklace,ring,bracelet,mask,fairy,amulet,sp,costume_suit,costume_hat,weapon_skin,wing_skin") .Annotation("Npgsql:Enum:family_authority", "head,assistant,manager,member") .Annotation("Npgsql:Enum:family_authority_type", "none,put,all") .Annotation("Npgsql:Enum:family_log_type", "daily_message,raid_won,rainbow_battle,family_xp,family_level_up,level_up,item_upgraded,right_changed,authority_changed,family_managed,user_managed,ware_house_added,ware_house_removed") .Annotation("Npgsql:Enum:family_member_rank", "nothing,old_uncle,old_aunt,father,mother,uncle,aunt,brother,sister,spouse,brother2,sister2,old_son,old_daugter,middle_son,middle_daughter,young_son,young_daugter,old_little_son,old_little_daughter,little_son,little_daughter,middle_little_son,middle_little_daugter") .Annotation("Npgsql:Enum:gender_type", "male,female") .Annotation("Npgsql:Enum:hair_color_type", "dark_purple,yellow,blue,purple,orange,brown,green,dark_grey,light_blue,pink_red,light_yellow,light_pink,light_green,light_grey,sky_blue,black,dark_orange,dark_orange_variant2,dark_orange_variant3,dark_orange_variant4,dark_orange_variant5,dark_orange_variant6,light_orange,light_light_orange,light_light_light_orange,light_light_light_light_orange,super_light_orange,dark_yellow,light_light_yellow,kaki_yellow,super_light_yellow,super_light_yellow2,super_light_yellow3,little_dark_yellow,yellow_variant,yellow_variant1,yellow_variant2,yellow_variant3,yellow_variant4,yellow_variant5,yellow_variant6,yellow_variant7,yellow_variant8,yellow_variant9,green_variant,green_variant1,dark_green_variant,green_more_dark_variant,green_variant2,green_variant3,green_variant4,green_variant5,green_variant6,green_variant7,green_variant8,green_variant9,green_variant10,green_variant11,green_variant12,green_variant13,green_variant14,green_variant15,green_variant16,green_variant17,green_variant18,green_variant19,green_variant20,light_blue_variant1,light_blue_variant2,light_blue_variant3,light_blue_variant4,light_blue_variant5,light_blue_variant6,light_blue_variant7,light_blue_variant8,light_blue_variant9,light_blue_variant10,light_blue_variant11,light_blue_variant12,light_blue_variant13,dark_black,light_blue_variant14,light_blue_variant15,light_blue_variant16,light_blue_variant17,blue_variant,blue_variant_dark,blue_variant_dark_dark,blue_variant_dark_dark2,flash_blue,flash_blue_dark,flash_blue_dark2,flash_blue_dark3,flash_blue_dark4,flash_blue_dark5,flash_blue_dark6,flash_blue_dark7,flash_blue_dark8,flash_blue_dark9,white,flash_blue_dark10,flash_blue1,flash_blue2,flash_blue3,flash_blue4,flash_blue5,flash_purple,flash_light_purple,flash_light_purple2,flash_light_purple3,flash_light_purple4,flash_light_purple5,light_purple,purple_variant1,purple_variant2,purple_variant3,purple_variant4,purple_variant5,purple_variant6,purple_variant7,purple_variant8,purple_variant9,purple_variant10,purple_variant11,purple_variant12,purple_variant13,purple_variant14,purple_variant15") .Annotation("Npgsql:Enum:hair_style_type", "hair_style_a,hair_style_b,hair_style_c,hair_style_d,no_hair") .Annotation("Npgsql:Enum:item_effect_type", "no_effect,teleport,apply_hair_die,apply_hair_style,speaker,marriage_proposal,undefined,sp_charger,dropped_sp_recharger,premium_sp_recharger,crafted_sp_recharger,specialist_medal,apply_skin_partner,change_gender,point_initialisation,sealed_tarot_card,tarot_card,red_amulet,blue_amulet,reinforcement_amulet,heroic,random_heroic,attack_amulet,defense_amulet,speed_booster,box_effect,vehicle,gold_nos_merchant_upgrade,silver_nos_merchant_upgrade,inventory_upgrade,pet_space_upgrade,pet_basket_upgrade,pet_backpack_upgrade,inventory_ticket_upgrade,buff_potions,marriage_separation") .Annotation("Npgsql:Enum:item_type", "weapon,armor,fashion,jewelery,specialist,box,shell,main,upgrade,production,map,special,potion,event,title,quest1,sell,food,snack,magical,part,teacher,ammo,quest2,house,garden,minigame,terrace,miniland_theme") .Annotation("Npgsql:Enum:mate_type", "partner,pet") .Annotation("Npgsql:Enum:miniland_state", "open,private,lock") .Annotation("Npgsql:Enum:monster_type", "unknown,partner,npc,well,portal,boss,elite,peapod,special,gem_space_time") .Annotation("Npgsql:Enum:noscore_pocket_type", "equipment,main,etc,miniland,specialist,costume,wear,mount,raid") .Annotation("Npgsql:Enum:penalty_type", "muted,banned,block_exp,block_f_exp,block_rep,warning") .Annotation("Npgsql:Enum:portal_type", "ts_normal,closed,open,miniland,ts_end,ts_end_closed,exit,exit_closed,raid,effect,blue_raid,dark_raid,time_space,shop_teleport,map_portal") .Annotation("Npgsql:Enum:quest_type", "hunt,special_collect,collect_in_raid,brings,capture_without_getting_the_monster,capture,times_space,product,number_of_kill,target_reput,ts_point,dialog1,collect_in_ts,required,wear,needed,collect,transmit_gold,go_to,collect_map_entity,use,dialog2,un_know,inspect,win_raid,flower_quest") .Annotation("Npgsql:Enum:region_type", "en,de,fr,it,pl,es,ru,cs,tr") .Annotation("Npgsql:Enum:scripted_instance_type", "time_space,raid,raid_act4") .Annotation("Npgsql:Enum:static_bonus_type", "bazaar_medal_gold,bazaar_medal_silver,back_pack,pet_basket,pet_back_pack,inventory_ticket_upgrade") .Annotation("Npgsql:Enum:teleporter_type", "teleporter,teleporter_on_map") .Annotation("Npgsql:Enum:warehouse_type", "warehouse,family_ware_house,pet_warehouse") .OldAnnotation("Npgsql:Enum:audit_log_type", "account_creation,character_creation,email_update") .OldAnnotation("Npgsql:Enum:authority_type", "user,moderator,game_master,administrator,root,closed,banned,unconfirmed") .OldAnnotation("Npgsql:Enum:character_class_type", "adventurer,swordsman,archer,mage,martial_artist") .OldAnnotation("Npgsql:Enum:character_relation_type", "friend,hidden_spouse,spouse,blocked") .OldAnnotation("Npgsql:Enum:character_state", "active,inactive") .OldAnnotation("Npgsql:Enum:element_type", "neutral,fire,water,light,dark") .OldAnnotation("Npgsql:Enum:equipment_type", "main_weapon,armor,hat,gloves,boots,secondary_weapon,necklace,ring,bracelet,mask,fairy,amulet,sp,costume_suit,costume_hat,weapon_skin,wing_skin") .OldAnnotation("Npgsql:Enum:family_authority", "head,assistant,manager,member") .OldAnnotation("Npgsql:Enum:family_authority_type", "none,put,all") .OldAnnotation("Npgsql:Enum:family_log_type", "daily_message,raid_won,rainbow_battle,family_xp,family_level_up,level_up,item_upgraded,right_changed,authority_changed,family_managed,user_managed,ware_house_added,ware_house_removed") .OldAnnotation("Npgsql:Enum:family_member_rank", "nothing,old_uncle,old_aunt,father,mother,uncle,aunt,brother,sister,spouse,brother2,sister2,old_son,old_daugter,middle_son,middle_daughter,young_son,young_daugter,old_little_son,old_little_daughter,little_son,little_daughter,middle_little_son,middle_little_daugter") .OldAnnotation("Npgsql:Enum:gender_type", "male,female") .OldAnnotation("Npgsql:Enum:hair_color_type", "dark_purple,yellow,blue,purple,orange,brown,green,dark_grey,light_blue,pink_red,light_yellow,light_pink,light_green,light_grey,sky_blue,black,dark_orange,dark_orange_variant2,dark_orange_variant3,dark_orange_variant4,dark_orange_variant5,dark_orange_variant6,light_orange,light_light_orange,light_light_light_orange,light_light_light_light_orange,super_light_orange,dark_yellow,light_light_yellow,kaki_yellow,super_light_yellow,super_light_yellow2,super_light_yellow3,little_dark_yellow,yellow_variant,yellow_variant1,yellow_variant2,yellow_variant3,yellow_variant4,yellow_variant5,yellow_variant6,yellow_variant7,yellow_variant8,yellow_variant9,green_variant,green_variant1,dark_green_variant,green_more_dark_variant,green_variant2,green_variant3,green_variant4,green_variant5,green_variant6,green_variant7,green_variant8,green_variant9,green_variant10,green_variant11,green_variant12,green_variant13,green_variant14,green_variant15,green_variant16,green_variant17,green_variant18,green_variant19,green_variant20,light_blue_variant1,light_blue_variant2,light_blue_variant3,light_blue_variant4,light_blue_variant5,light_blue_variant6,light_blue_variant7,light_blue_variant8,light_blue_variant9,light_blue_variant10,light_blue_variant11,light_blue_variant12,light_blue_variant13,dark_black,light_blue_variant14,light_blue_variant15,light_blue_variant16,light_blue_variant17,blue_variant,blue_variant_dark,blue_variant_dark_dark,blue_variant_dark_dark2,flash_blue,flash_blue_dark,flash_blue_dark2,flash_blue_dark3,flash_blue_dark4,flash_blue_dark5,flash_blue_dark6,flash_blue_dark7,flash_blue_dark8,flash_blue_dark9,white,flash_blue_dark10,flash_blue1,flash_blue2,flash_blue3,flash_blue4,flash_blue5,flash_purple,flash_light_purple,flash_light_purple2,flash_light_purple3,flash_light_purple4,flash_light_purple5,light_purple,purple_variant1,purple_variant2,purple_variant3,purple_variant4,purple_variant5,purple_variant6,purple_variant7,purple_variant8,purple_variant9,purple_variant10,purple_variant11,purple_variant12,purple_variant13,purple_variant14,purple_variant15") .OldAnnotation("Npgsql:Enum:hair_style_type", "hair_style_a,hair_style_b,hair_style_c,hair_style_d,no_hair") .OldAnnotation("Npgsql:Enum:item_effect_type", "no_effect,teleport,apply_hair_die,apply_hair_style,speaker,marriage_proposal,undefined,sp_charger,mate_capture,dropped_sp_recharger,premium_sp_recharger,crafted_sp_recharger,specialist_medal,apply_skin_partner,change_gender,point_initialisation,sealed_tarot_card,tarot_card,red_amulet,blue_amulet,reinforcement_amulet,heroic,random_heroic,attack_amulet,defense_amulet,speed_booster,box_effect,vehicle,gold_nos_merchant_upgrade,silver_nos_merchant_upgrade,inventory_upgrade,pet_space_upgrade,pet_basket_upgrade,pet_backpack_upgrade,inventory_ticket_upgrade,buff_potions,marriage_separation") .OldAnnotation("Npgsql:Enum:item_type", "weapon,armor,fashion,jewelery,specialist,box,shell,main,upgrade,production,map,special,potion,event,title,quest1,sell,food,snack,magical,part,teacher,ammo,quest2,house,garden,minigame,terrace,miniland_theme") .OldAnnotation("Npgsql:Enum:mate_type", "partner,pet") .OldAnnotation("Npgsql:Enum:miniland_state", "open,private,lock") .OldAnnotation("Npgsql:Enum:monster_type", "unknown,partner,npc,well,portal,boss,elite,peapod,special,gem_space_time") .OldAnnotation("Npgsql:Enum:noscore_pocket_type", "equipment,main,etc,miniland,specialist,costume,wear,mount,raid") .OldAnnotation("Npgsql:Enum:penalty_type", "muted,banned,block_exp,block_f_exp,block_rep,warning") .OldAnnotation("Npgsql:Enum:portal_type", "ts_normal,closed,open,miniland,ts_end,ts_end_closed,exit,exit_closed,raid,effect,blue_raid,dark_raid,time_space,shop_teleport,map_portal") .OldAnnotation("Npgsql:Enum:quest_type", "hunt,special_collect,collect_in_raid,brings,capture_without_getting_the_monster,capture,times_space,product,number_of_kill,target_reput,ts_point,dialog1,collect_in_ts,required,wear,needed,collect,transmit_gold,go_to,collect_map_entity,use,dialog2,un_know,inspect,win_raid,flower_quest") .OldAnnotation("Npgsql:Enum:region_type", "en,de,fr,it,pl,es,ru,cs,tr") .OldAnnotation("Npgsql:Enum:scripted_instance_type", "time_space,raid,raid_act4") .OldAnnotation("Npgsql:Enum:static_bonus_type", "bazaar_medal_gold,bazaar_medal_silver,back_pack,pet_basket,pet_back_pack,inventory_ticket_upgrade") .OldAnnotation("Npgsql:Enum:teleporter_type", "teleporter,teleporter_on_map") .OldAnnotation("Npgsql:Enum:warehouse_type", "warehouse,family_ware_house,pet_warehouse"); } } } ================================================ FILE: src/NosCore.Database/Migrations/NosCoreContextModelSnapshot.cs ================================================ // <auto-generated /> using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using NodaTime; using NosCore.Database; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace NosCore.Database.Migrations { [DbContext(typeof(NosCoreContext))] partial class NosCoreContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "10.0.6") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "audit_log_type", new[] { "account_creation", "character_creation", "email_update" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "authority_type", new[] { "user", "moderator", "game_master", "administrator", "root", "closed", "banned", "unconfirmed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_class_type", new[] { "adventurer", "swordsman", "archer", "mage", "martial_artist" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_relation_type", new[] { "friend", "hidden_spouse", "spouse", "blocked" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "character_state", new[] { "active", "inactive" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_type", new[] { "neutral", "fire", "water", "light", "dark" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "equipment_type", new[] { "main_weapon", "armor", "hat", "gloves", "boots", "secondary_weapon", "necklace", "ring", "bracelet", "mask", "fairy", "amulet", "sp", "costume_suit", "costume_hat", "weapon_skin", "wing_skin" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority", new[] { "head", "assistant", "manager", "member" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_authority_type", new[] { "none", "put", "all" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_log_type", new[] { "daily_message", "raid_won", "rainbow_battle", "family_xp", "family_level_up", "level_up", "item_upgraded", "right_changed", "authority_changed", "family_managed", "user_managed", "ware_house_added", "ware_house_removed" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "family_member_rank", new[] { "nothing", "old_uncle", "old_aunt", "father", "mother", "uncle", "aunt", "brother", "sister", "spouse", "brother2", "sister2", "old_son", "old_daugter", "middle_son", "middle_daughter", "young_son", "young_daugter", "old_little_son", "old_little_daughter", "little_son", "little_daughter", "middle_little_son", "middle_little_daugter" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "gender_type", new[] { "male", "female" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_color_type", new[] { "dark_purple", "yellow", "blue", "purple", "orange", "brown", "green", "dark_grey", "light_blue", "pink_red", "light_yellow", "light_pink", "light_green", "light_grey", "sky_blue", "black", "dark_orange", "dark_orange_variant2", "dark_orange_variant3", "dark_orange_variant4", "dark_orange_variant5", "dark_orange_variant6", "light_orange", "light_light_orange", "light_light_light_orange", "light_light_light_light_orange", "super_light_orange", "dark_yellow", "light_light_yellow", "kaki_yellow", "super_light_yellow", "super_light_yellow2", "super_light_yellow3", "little_dark_yellow", "yellow_variant", "yellow_variant1", "yellow_variant2", "yellow_variant3", "yellow_variant4", "yellow_variant5", "yellow_variant6", "yellow_variant7", "yellow_variant8", "yellow_variant9", "green_variant", "green_variant1", "dark_green_variant", "green_more_dark_variant", "green_variant2", "green_variant3", "green_variant4", "green_variant5", "green_variant6", "green_variant7", "green_variant8", "green_variant9", "green_variant10", "green_variant11", "green_variant12", "green_variant13", "green_variant14", "green_variant15", "green_variant16", "green_variant17", "green_variant18", "green_variant19", "green_variant20", "light_blue_variant1", "light_blue_variant2", "light_blue_variant3", "light_blue_variant4", "light_blue_variant5", "light_blue_variant6", "light_blue_variant7", "light_blue_variant8", "light_blue_variant9", "light_blue_variant10", "light_blue_variant11", "light_blue_variant12", "light_blue_variant13", "dark_black", "light_blue_variant14", "light_blue_variant15", "light_blue_variant16", "light_blue_variant17", "blue_variant", "blue_variant_dark", "blue_variant_dark_dark", "blue_variant_dark_dark2", "flash_blue", "flash_blue_dark", "flash_blue_dark2", "flash_blue_dark3", "flash_blue_dark4", "flash_blue_dark5", "flash_blue_dark6", "flash_blue_dark7", "flash_blue_dark8", "flash_blue_dark9", "white", "flash_blue_dark10", "flash_blue1", "flash_blue2", "flash_blue3", "flash_blue4", "flash_blue5", "flash_purple", "flash_light_purple", "flash_light_purple2", "flash_light_purple3", "flash_light_purple4", "flash_light_purple5", "light_purple", "purple_variant1", "purple_variant2", "purple_variant3", "purple_variant4", "purple_variant5", "purple_variant6", "purple_variant7", "purple_variant8", "purple_variant9", "purple_variant10", "purple_variant11", "purple_variant12", "purple_variant13", "purple_variant14", "purple_variant15" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "hair_style_type", new[] { "hair_style_a", "hair_style_b", "hair_style_c", "hair_style_d", "no_hair" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_effect_type", new[] { "no_effect", "teleport", "apply_hair_die", "apply_hair_style", "speaker", "marriage_proposal", "undefined", "sp_charger", "mate_capture", "dropped_sp_recharger", "premium_sp_recharger", "crafted_sp_recharger", "specialist_medal", "apply_skin_partner", "change_gender", "point_initialisation", "sealed_tarot_card", "tarot_card", "red_amulet", "blue_amulet", "reinforcement_amulet", "heroic", "random_heroic", "attack_amulet", "defense_amulet", "speed_booster", "box_effect", "vehicle", "gold_nos_merchant_upgrade", "silver_nos_merchant_upgrade", "inventory_upgrade", "pet_space_upgrade", "pet_basket_upgrade", "pet_backpack_upgrade", "inventory_ticket_upgrade", "buff_potions", "marriage_separation" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "item_type", new[] { "weapon", "armor", "fashion", "jewelery", "specialist", "box", "shell", "main", "upgrade", "production", "map", "special", "potion", "event", "title", "quest1", "sell", "food", "snack", "magical", "part", "teacher", "ammo", "quest2", "house", "garden", "minigame", "terrace", "miniland_theme" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "mate_type", new[] { "partner", "pet" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "miniland_state", new[] { "open", "private", "lock" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "monster_type", new[] { "unknown", "partner", "npc", "well", "portal", "boss", "elite", "peapod", "special", "gem_space_time" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "noscore_pocket_type", new[] { "equipment", "main", "etc", "miniland", "specialist", "costume", "wear", "mount", "raid" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "penalty_type", new[] { "muted", "banned", "block_exp", "block_f_exp", "block_rep", "warning" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "portal_type", new[] { "ts_normal", "closed", "open", "miniland", "ts_end", "ts_end_closed", "exit", "exit_closed", "raid", "effect", "blue_raid", "dark_raid", "time_space", "shop_teleport", "map_portal" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "quest_type", new[] { "hunt", "special_collect", "collect_in_raid", "brings", "capture_without_getting_the_monster", "capture", "times_space", "product", "number_of_kill", "target_reput", "ts_point", "dialog1", "collect_in_ts", "required", "wear", "needed", "collect", "transmit_gold", "go_to", "collect_map_entity", "use", "dialog2", "un_know", "inspect", "win_raid", "flower_quest" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "region_type", new[] { "en", "de", "fr", "it", "pl", "es", "ru", "cs", "tr" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "scripted_instance_type", new[] { "time_space", "raid", "raid_act4" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "static_bonus_type", new[] { "bazaar_medal_gold", "bazaar_medal_silver", "back_pack", "pet_basket", "pet_back_pack", "inventory_ticket_upgrade" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "teleporter_type", new[] { "teleporter", "teleporter_on_map" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "warehouse_type", new[] { "warehouse", "family_ware_house", "pet_warehouse" }); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Property<long>("AccountId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("AccountId")); b.Property<short>("Authority") .HasColumnType("smallint"); b.Property<long>("BankMoney") .HasColumnType("bigint"); b.Property<string>("Email") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ItemShopMoney") .HasColumnType("bigint"); b.Property<int>("Language") .HasColumnType("integer"); b.Property<string>("MfaSecret") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthPassword") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("NewAuthSalt") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<string>("Password") .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("RegistrationIp") .HasMaxLength(45) .HasColumnType("character varying(45)"); b.Property<string>("VerificationToken") .HasMaxLength(32) .HasColumnType("character varying(32)"); b.HasKey("AccountId"); b.HasIndex("Name") .IsUnique(); b.ToTable("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("Scene") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("ActId"); b.ToTable("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<byte>("ActId") .HasColumnType("smallint"); b.Property<byte>("ActPartNumber") .HasColumnType("smallint"); b.Property<byte>("MaxTs") .HasColumnType("smallint"); b.HasKey("ActPartId"); b.HasIndex("ActId"); b.ToTable("ActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.AuditLog", b => { b.Property<Guid>("AuditId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("AuditLogType") .HasColumnType("integer"); b.Property<string>("TargetId") .IsRequired() .HasMaxLength(80) .HasColumnType("character varying(80)"); b.Property<string>("TargetType") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)"); b.Property<Instant>("Time") .HasColumnType("timestamp with time zone"); b.Property<string>("Value") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("AuditId"); b.ToTable("AuditLog"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.Property<short>("BCardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("BCardId")); b.Property<short?>("CardId") .HasColumnType("smallint"); b.Property<byte>("CastType") .HasColumnType("smallint"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<bool>("IsLevelDivided") .HasColumnType("boolean"); b.Property<bool>("IsLevelScaled") .HasColumnType("boolean"); b.Property<short?>("ItemVNum") .HasColumnType("smallint"); b.Property<short?>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<int>("SecondData") .HasColumnType("integer"); b.Property<short?>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("SubType") .HasColumnType("smallint"); b.Property<int>("ThirdData") .HasColumnType("integer"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("BCardId"); b.HasIndex("CardId"); b.HasIndex("ItemVNum"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("BCard"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.Property<long>("BazaarItemId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("BazaarItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<bool>("IsPackage") .HasColumnType("boolean"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<bool>("MedalUsed") .HasColumnType("boolean"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<long>("SellerId") .HasColumnType("bigint"); b.HasKey("BazaarItemId"); b.HasIndex("ItemInstanceId"); b.HasIndex("SellerId"); b.ToTable("BazaarItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<byte>("BuffType") .HasColumnType("smallint"); b.Property<int>("Delay") .HasColumnType("integer"); b.Property<int>("Duration") .HasColumnType("integer"); b.Property<int>("EffectId") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("Propability") .HasColumnType("smallint"); b.Property<short>("TimeoutBuff") .HasColumnType("smallint"); b.Property<byte>("TimeoutBuffChance") .HasColumnType("smallint"); b.HasKey("CardId"); b.ToTable("Card"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Property<long>("CharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("CharacterId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<int>("Act4Dead") .HasColumnType("integer"); b.Property<int>("Act4Kill") .HasColumnType("integer"); b.Property<int>("Act4Points") .HasColumnType("integer"); b.Property<int>("ArenaWinner") .HasColumnType("integer"); b.Property<string>("Biography") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("BuffBlocked") .HasColumnType("boolean"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Compliment") .HasColumnType("smallint"); b.Property<Guid?>("CurrentScriptId") .HasColumnType("uuid"); b.Property<short>("Dignity") .HasColumnType("smallint"); b.Property<int>("Elo") .HasColumnType("integer"); b.Property<bool>("EmoticonsBlocked") .HasColumnType("boolean"); b.Property<bool>("ExchangeBlocked") .HasColumnType("boolean"); b.Property<byte>("Faction") .HasColumnType("smallint"); b.Property<bool>("FamilyRequestBlocked") .HasColumnType("boolean"); b.Property<bool>("FriendRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("Gender") .HasColumnType("smallint"); b.Property<long>("Gold") .HasColumnType("bigint"); b.Property<bool>("GroupRequestBlocked") .HasColumnType("boolean"); b.Property<byte>("HairColor") .HasColumnType("smallint"); b.Property<byte>("HairStyle") .HasColumnType("smallint"); b.Property<bool>("HeroChatBlocked") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<long>("HeroXp") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("HpBlocked") .HasColumnType("boolean"); b.Property<byte>("JobLevel") .HasColumnType("smallint"); b.Property<long>("JobLevelXp") .HasColumnType("bigint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<long>("LevelXp") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<int>("MasterPoints") .HasColumnType("integer"); b.Property<int>("MasterTicket") .HasColumnType("integer"); b.Property<byte>("MaxMateCount") .HasColumnType("smallint"); b.Property<bool>("MinilandInviteBlocked") .HasColumnType("boolean"); b.Property<bool>("MouseAimLock") .HasColumnType("boolean"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .IsUnicode(false) .HasColumnType("character varying(255)"); b.Property<string>("Prefix") .HasMaxLength(25) .HasColumnType("character varying(25)"); b.Property<bool>("QuickGetUp") .HasColumnType("boolean"); b.Property<long>("RagePoint") .HasColumnType("bigint"); b.Property<long>("Reput") .HasColumnType("bigint"); b.Property<byte>("ServerId") .HasColumnType("smallint"); b.Property<bool>("ShouldRename") .HasColumnType("boolean"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<int>("SpAdditionPoint") .HasColumnType("integer"); b.Property<int>("SpPoint") .HasColumnType("integer"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("TalentLose") .HasColumnType("integer"); b.Property<int>("TalentSurrender") .HasColumnType("integer"); b.Property<int>("TalentWin") .HasColumnType("integer"); b.Property<bool>("WhisperBlocked") .HasColumnType("boolean"); b.HasKey("CharacterId"); b.HasIndex("AccountId"); b.HasIndex("CurrentScriptId"); b.HasIndex("MapId"); b.ToTable("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("ActPartId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.HasKey("Id"); b.HasIndex("ActPartId"); b.HasIndex("CharacterId"); b.ToTable("CharacterActPart"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("CompletedOn") .HasColumnType("timestamp with time zone"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("QuestId"); b.ToTable("CharacterQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("CharacterQuestId") .HasColumnType("uuid"); b.Property<int>("Count") .HasColumnType("integer"); b.Property<Guid>("QuestObjectiveId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("QuestObjectiveId"); b.HasIndex("CharacterQuestId", "QuestObjectiveId") .IsUnique(); b.ToTable("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.Property<Guid>("CharacterRelationId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<long>("RelatedCharacterId") .HasColumnType("bigint"); b.Property<short>("RelationType") .HasColumnType("smallint"); b.HasKey("CharacterRelationId"); b.HasIndex("CharacterId"); b.HasIndex("RelatedCharacterId"); b.ToTable("CharacterRelation"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("SkillVNum"); b.ToTable("CharacterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.Property<int>("ComboId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ComboId")); b.Property<short>("Animation") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("Hit") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("ComboId"); b.HasIndex("SkillVNum"); b.ToTable("Combo"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.Property<short>("DropId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DropId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("DropChance") .HasColumnType("integer"); b.Property<short?>("MapTypeId") .HasColumnType("smallint"); b.Property<short?>("MonsterVNum") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("DropId"); b.HasIndex("MapTypeId"); b.HasIndex("MonsterVNum"); b.HasIndex("VNum"); b.ToTable("Drop"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<int>("Value") .HasColumnType("integer"); b.Property<Guid>("WearableInstanceId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("WearableInstanceId"); b.ToTable("EquipmentOption"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Property<long>("FamilyId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyId")); b.Property<int>("FamilyExperience") .HasColumnType("integer"); b.Property<byte>("FamilyFaction") .HasColumnType("smallint"); b.Property<byte>("FamilyHeadGender") .HasColumnType("smallint"); b.Property<byte>("FamilyLevel") .HasColumnType("smallint"); b.Property<string>("FamilyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("ManagerAuthorityType") .HasColumnType("integer"); b.Property<bool>("ManagerCanGetHistory") .HasColumnType("boolean"); b.Property<bool>("ManagerCanInvite") .HasColumnType("boolean"); b.Property<bool>("ManagerCanNotice") .HasColumnType("boolean"); b.Property<bool>("ManagerCanShout") .HasColumnType("boolean"); b.Property<byte>("MaxSize") .HasColumnType("smallint"); b.Property<int>("MemberAuthorityType") .HasColumnType("integer"); b.Property<bool>("MemberCanGetHistory") .HasColumnType("boolean"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("WarehouseSize") .HasColumnType("smallint"); b.HasKey("FamilyId"); b.ToTable("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.Property<long>("FamilyCharacterId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyCharacterId")); b.Property<byte>("Authority") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<string>("DailyMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Experience") .HasColumnType("integer"); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Rank") .HasColumnType("smallint"); b.HasKey("FamilyCharacterId"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("FamilyCharacter"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.Property<long>("FamilyLogId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("FamilyLogId")); b.Property<long>("FamilyId") .HasColumnType("bigint"); b.Property<string>("FamilyLogData") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<byte>("FamilyLogType") .HasColumnType("smallint"); b.Property<Instant>("Timestamp") .HasColumnType("timestamp with time zone"); b.HasKey("FamilyLogId"); b.HasIndex("FamilyId"); b.ToTable("FamilyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NActDesc", b => { b.Property<int>("I18NActDescId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NActDescId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NActDescId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NActDesc"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NBCard", b => { b.Property<int>("I18NbCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NbCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NbCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NBCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NCard", b => { b.Property<int>("I18NCardId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NCardId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NCardId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NCard"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NItem", b => { b.Property<int>("I18NItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NItemId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NItemId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NItem"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapIdData", b => { b.Property<int>("I18NMapIdDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapIdDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapIdDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapIdData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NMapPointData", b => { b.Property<int>("I18NMapPointDataId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NMapPointDataId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NMapPointDataId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NMapPointData"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonster", b => { b.Property<int>("I18NNpcMonsterId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NNpcMonsterTalk", b => { b.Property<int>("I18NNpcMonsterTalkId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NNpcMonsterTalkId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NNpcMonsterTalkId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NNpcMonsterTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NQuest", b => { b.Property<int>("I18NQuestId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NQuestId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NQuestId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NQuest"); }); modelBuilder.Entity("NosCore.Database.Entities.I18NSkill", b => { b.Property<int>("I18NSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("I18NSkillId")); b.Property<string>("Key") .IsRequired() .HasColumnType("text"); b.Property<int>("RegionType") .HasColumnType("integer"); b.Property<string>("Text") .IsRequired() .HasColumnType("text"); b.HasKey("I18NSkillId"); b.HasIndex("Key", "RegionType") .IsUnique(); b.ToTable("I18NSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("CharacterId", "Slot", "Type") .IsUnique(); b.ToTable("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Property<short>("VNum") .HasColumnType("smallint"); b.Property<byte>("BasicUpgrade") .HasColumnType("smallint"); b.Property<byte>("CellonLvl") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte>("DarkElement") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<int>("Effect") .HasColumnType("integer"); b.Property<int>("EffectValue") .HasColumnType("integer"); b.Property<int>("Element") .HasColumnType("integer"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<byte>("EquipmentSlot") .HasColumnType("smallint"); b.Property<byte>("FireElement") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<bool>("Flag1") .HasColumnType("boolean"); b.Property<bool>("Flag2") .HasColumnType("boolean"); b.Property<bool>("Flag3") .HasColumnType("boolean"); b.Property<bool>("Flag4") .HasColumnType("boolean"); b.Property<bool>("Flag6") .HasColumnType("boolean"); b.Property<bool>("Flag7") .HasColumnType("boolean"); b.Property<bool>("Flag8") .HasColumnType("boolean"); b.Property<bool>("Flag9") .HasColumnType("boolean"); b.Property<byte>("Height") .HasColumnType("smallint"); b.Property<short>("HitRate") .HasColumnType("smallint"); b.Property<short>("Hp") .HasColumnType("smallint"); b.Property<short>("HpRegeneration") .HasColumnType("smallint"); b.Property<bool>("IsColored") .HasColumnType("boolean"); b.Property<bool>("IsConsumable") .HasColumnType("boolean"); b.Property<bool>("IsDroppable") .HasColumnType("boolean"); b.Property<bool>("IsHeroic") .HasColumnType("boolean"); b.Property<bool>("IsMinilandActionable") .HasColumnType("boolean"); b.Property<bool>("IsSoldable") .HasColumnType("boolean"); b.Property<bool>("IsTradable") .HasColumnType("boolean"); b.Property<bool>("IsWarehouse") .HasColumnType("boolean"); b.Property<byte>("ItemSubType") .HasColumnType("smallint"); b.Property<byte>("ItemType") .HasColumnType("smallint"); b.Property<long>("ItemValidTime") .HasColumnType("bigint"); b.Property<byte>("LevelJobMinimum") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("LightElement") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<byte>("MaxCellon") .HasColumnType("smallint"); b.Property<byte>("MaxCellonLvl") .HasColumnType("smallint"); b.Property<short>("MaxElementRate") .HasColumnType("smallint"); b.Property<byte>("MaximumAmmo") .HasColumnType("smallint"); b.Property<int>("MinilandObjectPoint") .HasColumnType("integer"); b.Property<short>("MoreHp") .HasColumnType("smallint"); b.Property<short>("MoreMp") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("Mp") .HasColumnType("smallint"); b.Property<short>("MpRegeneration") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("Price") .HasColumnType("bigint"); b.Property<short>("PvpDefence") .HasColumnType("smallint"); b.Property<byte>("PvpStrength") .HasColumnType("smallint"); b.Property<short>("ReduceOposantResistance") .HasColumnType("smallint"); b.Property<long>("ReputPrice") .HasColumnType("bigint"); b.Property<byte>("ReputationMinimum") .HasColumnType("smallint"); b.Property<bool>("RequireBinding") .HasColumnType("boolean"); b.Property<short>("SecondMorph") .HasColumnType("smallint"); b.Property<int>("SecondaryElement") .HasColumnType("integer"); b.Property<byte>("Sex") .HasColumnType("smallint"); b.Property<byte>("SpType") .HasColumnType("smallint"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("WaitDelay") .HasColumnType("smallint"); b.Property<byte>("WaterElement") .HasColumnType("smallint"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<byte>("Width") .HasColumnType("smallint"); b.HasKey("VNum"); b.ToTable("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<long?>("BoundCharacterId") .HasColumnType("bigint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("Design") .HasColumnType("smallint"); b.Property<string>("Discriminator") .IsRequired() .HasMaxLength(21) .HasColumnType("character varying(21)"); b.Property<int>("DurabilityPoint") .HasColumnType("integer"); b.Property<Instant?>("ItemDeleteTime") .HasColumnType("timestamp with time zone"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("BoundCharacterId"); b.HasIndex("ItemVNum"); b.ToTable("ItemInstance"); b.HasDiscriminator<string>("Discriminator").HasValue("ItemInstance"); b.UseTphMappingStrategy(); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.Property<long>("MailId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MailId")); b.Property<short?>("Armor") .HasColumnType("smallint"); b.Property<short?>("CostumeHat") .HasColumnType("smallint"); b.Property<short?>("CostumeSuit") .HasColumnType("smallint"); b.Property<Instant>("Date") .HasColumnType("timestamp with time zone"); b.Property<short?>("Fairy") .HasColumnType("smallint"); b.Property<short?>("Hat") .HasColumnType("smallint"); b.Property<bool>("IsOpened") .HasColumnType("boolean"); b.Property<bool>("IsSenderCopy") .HasColumnType("boolean"); b.Property<Guid?>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short?>("MainWeapon") .HasColumnType("smallint"); b.Property<short?>("Mask") .HasColumnType("smallint"); b.Property<string>("Message") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("ReceiverId") .HasColumnType("bigint"); b.Property<short?>("SecondaryWeapon") .HasColumnType("smallint"); b.Property<byte?>("SenderCharacterClass") .HasColumnType("smallint"); b.Property<byte?>("SenderGender") .HasColumnType("smallint"); b.Property<byte?>("SenderHairColor") .HasColumnType("smallint"); b.Property<byte?>("SenderHairStyle") .HasColumnType("smallint"); b.Property<long?>("SenderId") .HasColumnType("bigint"); b.Property<short?>("SenderMorphId") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short?>("WeaponSkin") .HasColumnType("smallint"); b.Property<short?>("WingSkin") .HasColumnType("smallint"); b.HasKey("MailId"); b.HasIndex("ItemInstanceId"); b.HasIndex("ReceiverId"); b.HasIndex("SenderId"); b.ToTable("Mail"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<byte[]>("Data") .IsRequired() .HasColumnType("bytea"); b.Property<int>("Music") .HasColumnType("integer"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("ShopAllowed") .HasColumnType("boolean"); b.HasKey("MapId"); b.ToTable("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.Property<int>("MapMonsterId") .HasColumnType("integer"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapMonsterId"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short?>("Dialog") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<short>("EffectDelay") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<bool>("IsMoving") .HasColumnType("boolean"); b.Property<bool>("IsSitting") .HasColumnType("boolean"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MapNpcId"); b.HasIndex("Dialog"); b.HasIndex("MapId"); b.HasIndex("VNum"); b.ToTable("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.Property<string>("MapTypeName") .IsRequired() .HasColumnType("text"); b.Property<short>("PotionDelay") .HasColumnType("smallint"); b.Property<long?>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<long?>("ReturnMapTypeId") .HasColumnType("bigint"); b.HasKey("MapTypeId"); b.HasIndex("RespawnMapTypeId"); b.HasIndex("ReturnMapTypeId"); b.ToTable("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.Property<short>("MapTypeMapId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("MapTypeMapId")); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("MapTypeId") .HasColumnType("smallint"); b.HasKey("MapTypeMapId"); b.HasIndex("MapTypeId"); b.HasIndex("MapId", "MapTypeId") .IsUnique(); b.ToTable("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.Property<long>("MateId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("MateId")); b.Property<byte>("Attack") .HasColumnType("smallint"); b.Property<bool>("CanPickUp") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<byte>("Defence") .HasColumnType("smallint"); b.Property<byte>("Direction") .HasColumnType("smallint"); b.Property<long>("Experience") .HasColumnType("bigint"); b.Property<int>("Hp") .HasColumnType("integer"); b.Property<bool>("IsSummonable") .HasColumnType("boolean"); b.Property<bool>("IsTeamMember") .HasColumnType("boolean"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("Loyalty") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("MateType") .HasColumnType("smallint"); b.Property<int>("Mp") .HasColumnType("integer"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<short>("Skin") .HasColumnType("smallint"); b.Property<short>("VNum") .HasColumnType("smallint"); b.HasKey("MateId"); b.HasIndex("CharacterId"); b.HasIndex("VNum"); b.ToTable("Mate"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.Property<Guid>("MinilandId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("DailyVisitCount") .HasColumnType("integer"); b.Property<string>("MinilandMessage") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<long>("MinilandPoint") .HasColumnType("bigint"); b.Property<long>("OwnerId") .HasColumnType("bigint"); b.Property<byte>("State") .HasColumnType("smallint"); b.Property<int>("VisitCount") .HasColumnType("integer"); b.Property<short>("WelcomeMusicInfo") .HasColumnType("smallint"); b.HasKey("MinilandId"); b.HasIndex("OwnerId"); b.ToTable("Miniland"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.Property<Guid>("MinilandObjectId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<Guid?>("InventoryItemInstanceId") .HasColumnType("uuid"); b.Property<byte>("Level1BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level2BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level3BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level4BoxAmount") .HasColumnType("smallint"); b.Property<byte>("Level5BoxAmount") .HasColumnType("smallint"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.HasKey("MinilandObjectId"); b.HasIndex("InventoryItemInstanceId"); b.ToTable("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<bool>("AlwaysActive") .HasColumnType("boolean"); b.Property<byte>("AmountRequired") .HasColumnType("smallint"); b.Property<byte>("AttackClass") .HasColumnType("smallint"); b.Property<byte>("AttackUpgrade") .HasColumnType("smallint"); b.Property<byte>("BasicArea") .HasColumnType("smallint"); b.Property<short>("BasicCooldown") .HasColumnType("smallint"); b.Property<byte>("BasicHitChance") .HasColumnType("smallint"); b.Property<byte>("BasicRange") .HasColumnType("smallint"); b.Property<short>("BasicSkill") .HasColumnType("smallint"); b.Property<short>("CModeVNum") .HasColumnType("smallint"); b.Property<bool>("CanCatch") .HasColumnType("boolean"); b.Property<bool>("CanCollect") .HasColumnType("boolean"); b.Property<bool>("CanOnlyBeDmgedByJajamaruLastSkill") .HasColumnType("boolean"); b.Property<bool>("CanWalk") .HasColumnType("boolean"); b.Property<bool>("CantDebuff") .HasColumnType("boolean"); b.Property<bool>("CantTargetInfo") .HasColumnType("boolean"); b.Property<bool>("CantVoke") .HasColumnType("boolean"); b.Property<byte>("CellMinRange") .HasColumnType("smallint"); b.Property<byte>("CellSize") .HasColumnType("smallint"); b.Property<short>("CloseDefence") .HasColumnType("smallint"); b.Property<short>("Concentrate") .HasColumnType("smallint"); b.Property<byte>("CriticalChance") .HasColumnType("smallint"); b.Property<short>("CriticalRate") .HasColumnType("smallint"); b.Property<short>("DamageMaximum") .HasColumnType("smallint"); b.Property<short>("DamageMinimum") .HasColumnType("smallint"); b.Property<short>("DarkResistance") .HasColumnType("smallint"); b.Property<byte>("DashSpeed") .HasColumnType("smallint"); b.Property<short>("DefenceDodge") .HasColumnType("smallint"); b.Property<byte>("DefenceUpgrade") .HasColumnType("smallint"); b.Property<bool>("DisappearAfterHitting") .HasColumnType("boolean"); b.Property<bool>("DisappearAfterSeconds") .HasColumnType("boolean"); b.Property<bool>("DisappearAfterSecondsMana") .HasColumnType("boolean"); b.Property<short>("DistanceDefence") .HasColumnType("smallint"); b.Property<short>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<bool>("DontDrainHpAfterSeconds") .HasColumnType("boolean"); b.Property<short>("EffectIdConstantly") .HasColumnType("smallint"); b.Property<short>("EffectIdOnDeath") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<short>("ElementRate") .HasColumnType("smallint"); b.Property<short>("FireResistance") .HasColumnType("smallint"); b.Property<int>("GiveDamagePercentage") .HasColumnType("integer"); b.Property<byte>("GroupAttack") .HasColumnType("smallint"); b.Property<bool>("HasDash") .HasColumnType("boolean"); b.Property<bool>("HasMode") .HasColumnType("boolean"); b.Property<byte>("HeroLevel") .HasColumnType("smallint"); b.Property<int>("HeroXp") .HasColumnType("integer"); b.Property<short>("HpThreshold") .HasColumnType("smallint"); b.Property<short>("IconId") .HasColumnType("smallint"); b.Property<bool>("IsHostile") .HasColumnType("boolean"); b.Property<bool>("IsPercent") .HasColumnType("boolean"); b.Property<bool>("IsPercentileDmg") .HasColumnType("boolean"); b.Property<bool>("IsValhallaPartner") .HasColumnType("boolean"); b.Property<int>("JobXp") .HasColumnType("integer"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<short>("LightResistance") .HasColumnType("smallint"); b.Property<byte>("Limiter") .HasColumnType("smallint"); b.Property<short>("MagicDefence") .HasColumnType("smallint"); b.Property<int>("MaxHp") .HasColumnType("integer"); b.Property<int>("MaxMp") .HasColumnType("integer"); b.Property<int>("Midgard") .HasColumnType("integer"); b.Property<byte>("MonsterType") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<bool>("NoAggresiveIcon") .HasColumnType("boolean"); b.Property<byte>("NoticeRange") .HasColumnType("smallint"); b.Property<bool>("OnDefenseOnlyOnce") .HasColumnType("boolean"); b.Property<int>("PetInfoVal1") .HasColumnType("integer"); b.Property<int>("PetInfoVal2") .HasColumnType("integer"); b.Property<int>("PetInfoVal3") .HasColumnType("integer"); b.Property<int>("PetInfoVal4") .HasColumnType("integer"); b.Property<byte>("Race") .HasColumnType("smallint"); b.Property<byte>("RaceType") .HasColumnType("smallint"); b.Property<short>("RangeThreshold") .HasColumnType("smallint"); b.Property<bool>("RegenerateHpOverTime") .HasColumnType("boolean"); b.Property<int>("RespawnTime") .HasColumnType("integer"); b.Property<int>("SpawnMobOrColor") .HasColumnType("integer"); b.Property<byte>("Speed") .HasColumnType("smallint"); b.Property<short>("SpriteSize") .HasColumnType("smallint"); b.Property<int>("TakeDamages") .HasColumnType("integer"); b.Property<short>("VNumRequired") .HasColumnType("smallint"); b.Property<bool>("VisibleOnMinimapAsGreenDot") .HasColumnType("boolean"); b.Property<short>("WaterResistance") .HasColumnType("smallint"); b.Property<int>("Xp") .HasColumnType("integer"); b.HasKey("NpcMonsterVNum"); b.ToTable("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.Property<long>("NpcMonsterSkillId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("NpcMonsterSkillId")); b.Property<byte>("Force") .HasColumnType("smallint"); b.Property<short>("NpcMonsterVNum") .HasColumnType("smallint"); b.Property<short>("Rate") .HasColumnType("smallint"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.HasKey("NpcMonsterSkillId"); b.HasIndex("NpcMonsterVNum"); b.HasIndex("SkillVNum"); b.ToTable("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Property<short>("DialogId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("DialogId")); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("DialogId"); b.ToTable("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.Property<int>("PenaltyLogId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PenaltyLogId")); b.Property<long>("AccountId") .HasColumnType("bigint"); b.Property<string>("AdminName") .IsRequired() .HasColumnType("text"); b.Property<Instant>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<Instant>("DateStart") .HasColumnType("timestamp with time zone"); b.Property<byte>("Penalty") .HasColumnType("smallint"); b.Property<string>("Reason") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("PenaltyLogId"); b.HasIndex("AccountId"); b.ToTable("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.Property<int>("PortalId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("PortalId")); b.Property<short>("DestinationMapId") .HasColumnType("smallint"); b.Property<short>("DestinationX") .HasColumnType("smallint"); b.Property<short>("DestinationY") .HasColumnType("smallint"); b.Property<bool>("IsDisabled") .HasColumnType("boolean"); b.Property<short>("SourceMapId") .HasColumnType("smallint"); b.Property<short>("SourceX") .HasColumnType("smallint"); b.Property<short>("SourceY") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("PortalId"); b.HasIndex("DestinationMapId"); b.HasIndex("SourceMapId"); b.ToTable("Portal"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<bool>("AutoFinish") .HasColumnType("boolean"); b.Property<string>("Desc") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int?>("EndDialogId") .HasColumnType("integer"); b.Property<bool>("IsDaily") .HasColumnType("boolean"); b.Property<bool>("IsSecondary") .HasColumnType("boolean"); b.Property<byte>("LevelMax") .HasColumnType("smallint"); b.Property<byte>("LevelMin") .HasColumnType("smallint"); b.Property<short?>("NextQuestId") .HasColumnType("smallint"); b.Property<short>("QuestType") .HasColumnType("smallint"); b.Property<short?>("RequiredQuestId") .HasColumnType("smallint"); b.Property<int?>("SpecialData") .HasColumnType("integer"); b.Property<int?>("StartDialogId") .HasColumnType("integer"); b.Property<short?>("TargetMap") .HasColumnType("smallint"); b.Property<short?>("TargetX") .HasColumnType("smallint"); b.Property<short?>("TargetY") .HasColumnType("smallint"); b.Property<string>("Title") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("QuestId"); b.ToTable("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Property<Guid>("QuestObjectiveId") .ValueGeneratedOnAdd() .HasColumnType("uuid"); b.Property<int>("FirstData") .HasColumnType("integer"); b.Property<int?>("FourthData") .HasColumnType("integer"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<int?>("SecondData") .HasColumnType("integer"); b.Property<int?>("ThirdData") .HasColumnType("integer"); b.HasKey("QuestObjectiveId"); b.HasIndex("QuestId"); b.ToTable("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short>("QuestId") .HasColumnType("smallint"); b.Property<short>("QuestRewardId") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("QuestId"); b.HasIndex("QuestRewardId"); b.ToTable("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Property<short>("QuestRewardId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("QuestRewardId")); b.Property<int>("Amount") .HasColumnType("integer"); b.Property<int>("Data") .HasColumnType("integer"); b.Property<byte>("Design") .HasColumnType("smallint"); b.Property<byte>("Rarity") .HasColumnType("smallint"); b.Property<byte>("RewardType") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("QuestRewardId"); b.ToTable("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("IconType") .HasColumnType("smallint"); b.Property<short>("IconVNum") .HasColumnType("smallint"); b.Property<short>("Morph") .HasColumnType("smallint"); b.Property<short>("QuickListIndex") .HasColumnType("smallint"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<short>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.ToTable("QuicklistEntry"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Property<short>("RecipeId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeId")); b.Property<byte>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.HasKey("RecipeId"); b.HasIndex("ItemVNum"); b.HasIndex("MapNpcId"); b.ToTable("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.Property<short>("RecipeItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RecipeItemId")); b.Property<short>("Amount") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("RecipeId") .HasColumnType("smallint"); b.HasKey("RecipeItemId"); b.HasIndex("ItemVNum"); b.HasIndex("RecipeId"); b.ToTable("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.Property<long>("RespawnId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("RespawnId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("X") .HasColumnType("smallint"); b.Property<short>("Y") .HasColumnType("smallint"); b.HasKey("RespawnId"); b.HasIndex("CharacterId"); b.HasIndex("MapId"); b.HasIndex("RespawnMapTypeId"); b.ToTable("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Property<long>("RespawnMapTypeId") .HasColumnType("bigint"); b.Property<short>("DefaultX") .HasColumnType("smallint"); b.Property<short>("DefaultY") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<string>("Name") .HasMaxLength(255) .HasColumnType("character varying(255)"); b.HasKey("RespawnMapTypeId"); b.HasIndex("MapId"); b.ToTable("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.Property<short>("RollGeneratedItemId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("RollGeneratedItemId")); b.Property<bool>("IsRareRandom") .HasColumnType("boolean"); b.Property<bool>("IsSuperReward") .HasColumnType("boolean"); b.Property<byte>("ItemGeneratedAmount") .HasColumnType("smallint"); b.Property<byte>("ItemGeneratedUpgrade") .HasColumnType("smallint"); b.Property<short>("ItemGeneratedVNum") .HasColumnType("smallint"); b.Property<short>("MaximumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("MinimumOriginalItemRare") .HasColumnType("smallint"); b.Property<short>("OriginalItemDesign") .HasColumnType("smallint"); b.Property<short>("OriginalItemVNum") .HasColumnType("smallint"); b.Property<short>("Probability") .HasColumnType("smallint"); b.HasKey("RollGeneratedItemId"); b.HasIndex("ItemGeneratedVNum"); b.HasIndex("OriginalItemVNum"); b.ToTable("RollGeneratedItem"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<short?>("Argument1") .HasColumnType("smallint"); b.Property<short?>("Argument2") .HasColumnType("smallint"); b.Property<short?>("Argument3") .HasColumnType("smallint"); b.Property<byte>("ScriptId") .HasColumnType("smallint"); b.Property<short>("ScriptStepId") .HasColumnType("smallint"); b.Property<string>("StepType") .IsRequired() .HasColumnType("text"); b.Property<string>("StringArgument") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("ScriptId", "ScriptStepId") .IsUnique(); b.ToTable("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.Property<short>("ScriptedInstanceId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("ScriptedInstanceId")); b.Property<string>("Label") .HasColumnType("text"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<short>("PositionX") .HasColumnType("smallint"); b.Property<short>("PositionY") .HasColumnType("smallint"); b.Property<string>("Script") .HasMaxLength(2147483647) .HasColumnType("text"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ScriptedInstanceId"); b.HasIndex("MapId"); b.ToTable("ScriptedInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Property<int>("ShopId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopId")); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<byte>("MenuType") .HasColumnType("smallint"); b.Property<byte>("ShopType") .HasColumnType("smallint"); b.HasKey("ShopId"); b.HasIndex("MapNpcId"); b.ToTable("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.Property<int>("ShopItemId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopItemId")); b.Property<byte>("Color") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<short>("Rare") .HasColumnType("smallint"); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<byte>("Upgrade") .HasColumnType("smallint"); b.HasKey("ShopItemId"); b.HasIndex("ItemVNum"); b.HasIndex("ShopId"); b.ToTable("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.Property<int>("ShopSkillId") .ValueGeneratedOnAdd() .HasColumnType("integer"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("ShopSkillId")); b.Property<int>("ShopId") .HasColumnType("integer"); b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<byte>("Slot") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("ShopSkillId"); b.HasIndex("ShopId"); b.HasIndex("SkillVNum"); b.ToTable("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Property<short>("SkillVNum") .HasColumnType("smallint"); b.Property<short>("AttackAnimation") .HasColumnType("smallint"); b.Property<short>("CastAnimation") .HasColumnType("smallint"); b.Property<short>("CastEffect") .HasColumnType("smallint"); b.Property<short>("CastId") .HasColumnType("smallint"); b.Property<short>("CastTime") .HasColumnType("smallint"); b.Property<byte>("Class") .HasColumnType("smallint"); b.Property<short>("Cooldown") .HasColumnType("smallint"); b.Property<byte>("CpCost") .HasColumnType("smallint"); b.Property<short>("Duration") .HasColumnType("smallint"); b.Property<short>("Effect") .HasColumnType("smallint"); b.Property<byte>("Element") .HasColumnType("smallint"); b.Property<byte>("HitType") .HasColumnType("smallint"); b.Property<short>("ItemVNum") .HasColumnType("smallint"); b.Property<byte>("Level") .HasColumnType("smallint"); b.Property<byte>("LevelMinimum") .HasColumnType("smallint"); b.Property<byte>("MinimumAdventurerLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumArcherLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumMagicianLevel") .HasColumnType("smallint"); b.Property<byte>("MinimumSwordmanLevel") .HasColumnType("smallint"); b.Property<short>("MpCost") .HasColumnType("smallint"); b.Property<string>("Name") .IsRequired() .HasMaxLength(255) .HasColumnType("character varying(255)"); b.Property<int>("Price") .HasColumnType("integer"); b.Property<byte>("Range") .HasColumnType("smallint"); b.Property<byte>("SkillType") .HasColumnType("smallint"); b.Property<byte>("TargetRange") .HasColumnType("smallint"); b.Property<byte>("TargetType") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.Property<short>("UpgradeSkill") .HasColumnType("smallint"); b.Property<short>("UpgradeType") .HasColumnType("smallint"); b.HasKey("SkillVNum"); b.ToTable("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.Property<long>("StaticBonusId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBonusId")); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<Instant?>("DateEnd") .HasColumnType("timestamp with time zone"); b.Property<byte>("StaticBonusType") .HasColumnType("smallint"); b.HasKey("StaticBonusId"); b.HasIndex("CharacterId"); b.ToTable("StaticBonus"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.Property<long>("StaticBuffId") .ValueGeneratedOnAdd() .HasColumnType("bigint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("StaticBuffId")); b.Property<short>("CardId") .HasColumnType("smallint"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<int>("RemainingTime") .HasColumnType("integer"); b.HasKey("StaticBuffId"); b.HasIndex("CardId"); b.HasIndex("CharacterId"); b.ToTable("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.Property<short>("TeleporterId") .ValueGeneratedOnAdd() .HasColumnType("smallint"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<short>("TeleporterId")); b.Property<short>("Index") .HasColumnType("smallint"); b.Property<short>("MapId") .HasColumnType("smallint"); b.Property<int>("MapNpcId") .HasColumnType("integer"); b.Property<short>("MapX") .HasColumnType("smallint"); b.Property<short>("MapY") .HasColumnType("smallint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("TeleporterId"); b.HasIndex("MapId"); b.HasIndex("MapNpcId"); b.ToTable("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<bool>("Active") .HasColumnType("boolean"); b.Property<long>("CharacterId") .HasColumnType("bigint"); b.Property<short>("TitleType") .HasColumnType("smallint"); b.Property<bool>("Visible") .HasColumnType("boolean"); b.HasKey("Id"); b.HasIndex("CharacterId", "TitleType") .IsUnique(); b.ToTable("Title"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<long?>("CharacterId") .HasColumnType("bigint"); b.Property<long?>("FamilyId") .HasColumnType("bigint"); b.Property<byte>("Type") .HasColumnType("smallint"); b.HasKey("Id"); b.HasIndex("CharacterId"); b.HasIndex("FamilyId"); b.ToTable("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.Property<Guid>("Id") .HasColumnType("uuid"); b.Property<Guid>("ItemInstanceId") .HasColumnType("uuid"); b.Property<short>("Slot") .HasColumnType("smallint"); b.Property<Guid>("WarehouseId") .HasColumnType("uuid"); b.HasKey("Id"); b.HasIndex("ItemInstanceId"); b.HasIndex("WarehouseId"); b.ToTable("WarehouseItem"); }); modelBuilder.Entity("NosCore.Database.Entities.UsableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.ToTable("ItemInstance", t => { t.Property("Hp") .HasColumnName("UsableInstance_Hp"); t.Property("Mp") .HasColumnName("UsableInstance_Mp"); }); b.HasDiscriminator().HasValue("UsableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.WearableInstance", b => { b.HasBaseType("NosCore.Database.Entities.ItemInstance"); b.Property<byte?>("Ammo") .HasColumnType("smallint"); b.Property<byte?>("Cellon") .HasColumnType("smallint"); b.Property<short?>("CloseDefence") .HasColumnType("smallint"); b.Property<short?>("Concentrate") .HasColumnType("smallint"); b.Property<short?>("CriticalDodge") .HasColumnType("smallint"); b.Property<byte?>("CriticalLuckRate") .HasColumnType("smallint"); b.Property<short?>("CriticalRate") .HasColumnType("smallint"); b.Property<short?>("DamageMaximum") .HasColumnType("smallint"); b.Property<short?>("DamageMinimum") .HasColumnType("smallint"); b.Property<byte?>("DarkElement") .HasColumnType("smallint"); b.Property<short?>("DarkResistance") .HasColumnType("smallint"); b.Property<short?>("DefenceDodge") .HasColumnType("smallint"); b.Property<short?>("DistanceDefence") .HasColumnType("smallint"); b.Property<short?>("DistanceDefenceDodge") .HasColumnType("smallint"); b.Property<short?>("ElementRate") .HasColumnType("smallint"); b.Property<byte?>("FireElement") .HasColumnType("smallint"); b.Property<short?>("FireResistance") .HasColumnType("smallint"); b.Property<short?>("HitRate") .HasColumnType("smallint"); b.Property<short?>("Hp") .HasColumnType("smallint"); b.Property<bool?>("IsEmpty") .HasColumnType("boolean"); b.Property<bool?>("IsFixed") .HasColumnType("boolean"); b.Property<byte?>("LightElement") .HasColumnType("smallint"); b.Property<short?>("LightResistance") .HasColumnType("smallint"); b.Property<short?>("MagicDefence") .HasColumnType("smallint"); b.Property<short?>("MaxElementRate") .HasColumnType("smallint"); b.Property<short?>("Mp") .HasColumnType("smallint"); b.Property<byte?>("ShellRarity") .HasColumnType("smallint"); b.Property<byte?>("WaterElement") .HasColumnType("smallint"); b.Property<short?>("WaterResistance") .HasColumnType("smallint"); b.Property<long?>("Xp") .HasColumnType("bigint"); b.HasDiscriminator().HasValue("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.SpecialistInstance", b => { b.HasBaseType("NosCore.Database.Entities.WearableInstance"); b.Property<short>("SlDamage") .HasColumnType("smallint"); b.Property<short>("SlDefence") .HasColumnType("smallint"); b.Property<short>("SlElement") .HasColumnType("smallint"); b.Property<short>("SlHp") .HasColumnType("smallint"); b.Property<byte>("SpDamage") .HasColumnType("smallint"); b.Property<byte>("SpDark") .HasColumnType("smallint"); b.Property<byte>("SpDefence") .HasColumnType("smallint"); b.Property<byte>("SpElement") .HasColumnType("smallint"); b.Property<byte>("SpFire") .HasColumnType("smallint"); b.Property<byte>("SpHp") .HasColumnType("smallint"); b.Property<byte>("SpLevel") .HasColumnType("smallint"); b.Property<byte>("SpLight") .HasColumnType("smallint"); b.Property<byte>("SpStoneUpgrade") .HasColumnType("smallint"); b.Property<byte>("SpWater") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("SpecialistInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.BoxInstance", b => { b.HasBaseType("NosCore.Database.Entities.SpecialistInstance"); b.Property<short?>("HoldingVNum") .HasColumnType("smallint"); b.HasDiscriminator().HasValue("BoxInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.HasOne("NosCore.Database.Entities.Act", "Act") .WithMany("ActParts") .HasForeignKey("ActId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Act"); }); modelBuilder.Entity("NosCore.Database.Entities.BCard", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("BCards") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("BCards") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("BCards") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("BCards") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Card"); b.Navigation("Item"); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.BazaarItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("BazaarItem") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Seller") .WithMany("BazaarItem") .HasForeignKey("SellerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Seller"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("Character") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Script", "Script") .WithMany("Characters") .HasForeignKey("CurrentScriptId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Character") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); b.Navigation("Map"); b.Navigation("Script"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterActPart", b => { b.HasOne("NosCore.Database.Entities.ActPart", "ActPart") .WithMany("CharacterActParts") .HasForeignKey("ActPartId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterActParts") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ActPart"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterQuest") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("CharacterQuest") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuestObjective", b => { b.HasOne("NosCore.Database.Entities.CharacterQuest", "CharacterQuest") .WithMany("CharacterQuestObjective") .HasForeignKey("CharacterQuestId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestObjective", "QuestObjective") .WithMany("CharacterQuestObjective") .HasForeignKey("QuestObjectiveId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterRelation", b => { b.HasOne("NosCore.Database.Entities.Character", "Character1") .WithMany("CharacterRelation1") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character2") .WithMany("CharacterRelation2") .HasForeignKey("RelatedCharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character1"); b.Navigation("Character2"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterSkill", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("CharacterSkill") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("CharacterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Combo", b => { b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("Combo") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.Drop", b => { b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("Drops") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Drop") .HasForeignKey("MonsterVNum") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Drop") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapType"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.EquipmentOption", b => { b.HasOne("NosCore.Database.Entities.WearableInstance", "WearableInstance") .WithMany() .HasForeignKey("WearableInstanceId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("WearableInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyCharacter", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("FamilyCharacter") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyCharacters") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.FamilyLog", b => { b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("FamilyLogs") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Inventory") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("InventoryItemInstance") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("ItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.HasOne("NosCore.Database.Entities.Character", "BoundCharacter") .WithMany() .HasForeignKey("BoundCharacterId"); b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ItemInstances") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("BoundCharacter"); b.Navigation("Item"); }); modelBuilder.Entity("NosCore.Database.Entities.Mail", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("Mail") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Character", "Receiver") .WithMany("Mail1") .HasForeignKey("ReceiverId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Sender") .WithMany("Mail") .HasForeignKey("SenderId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("ItemInstance"); b.Navigation("Receiver"); b.Navigation("Sender"); }); modelBuilder.Entity("NosCore.Database.Entities.MapMonster", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapMonster") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapMonster") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.HasOne("NosCore.Database.Entities.NpcTalk", "NpcTalk") .WithMany("MapNpc") .HasForeignKey("Dialog") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapNpc") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("MapNpc") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("NpcMonster"); b.Navigation("NpcTalk"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("MapTypes") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.RespawnMapType", "ReturnMapType") .WithMany("MapTypes1") .HasForeignKey("ReturnMapTypeId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("RespawnMapType"); b.Navigation("ReturnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.MapTypeMap", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("MapTypeMap") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapType", "MapType") .WithMany("MapTypeMap") .HasForeignKey("MapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapType"); }); modelBuilder.Entity("NosCore.Database.Entities.Mate", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Mate") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("Mate") .HasForeignKey("VNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("NpcMonster"); }); modelBuilder.Entity("NosCore.Database.Entities.Miniland", b => { b.HasOne("NosCore.Database.Entities.Character", "Owner") .WithMany("Miniland") .HasForeignKey("OwnerId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Owner"); }); modelBuilder.Entity("NosCore.Database.Entities.MinilandObject", b => { b.HasOne("NosCore.Database.Entities.InventoryItemInstance", "InventoryItemInstance") .WithMany("MinilandObject") .HasForeignKey("InventoryItemInstanceId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("InventoryItemInstance"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonsterSkill", b => { b.HasOne("NosCore.Database.Entities.NpcMonster", "NpcMonster") .WithMany("NpcMonsterSkill") .HasForeignKey("NpcMonsterVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("NpcMonsterSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("NpcMonster"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.PenaltyLog", b => { b.HasOne("NosCore.Database.Entities.Account", "Account") .WithMany("PenaltyLog") .HasForeignKey("AccountId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Account"); }); modelBuilder.Entity("NosCore.Database.Entities.Portal", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Portal") .HasForeignKey("DestinationMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map1") .WithMany("Portal1") .HasForeignKey("SourceMapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("Map1"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestObjective") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestQuestReward", b => { b.HasOne("NosCore.Database.Entities.Quest", "Quest") .WithMany("QuestQuestReward") .HasForeignKey("QuestId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.QuestReward", "QuestReward") .WithMany("QuestQuestReward") .HasForeignKey("QuestRewardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Quest"); b.Navigation("QuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuicklistEntry", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("QuicklistEntry") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("Recipe") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Recipe") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.RecipeItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("RecipeItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Recipe", "Recipe") .WithMany("RecipeItem") .HasForeignKey("RecipeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Recipe"); }); modelBuilder.Entity("NosCore.Database.Entities.Respawn", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Respawn") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Respawn") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.RespawnMapType", "RespawnMapType") .WithMany("Respawn") .HasForeignKey("RespawnMapTypeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); b.Navigation("Map"); b.Navigation("RespawnMapType"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("RespawnMapType") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.RollGeneratedItem", b => { b.HasOne("NosCore.Database.Entities.Item", "ItemGenerated") .WithMany("RollGeneratedItem2") .HasForeignKey("ItemGeneratedVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Item", "OriginalItem") .WithMany("RollGeneratedItem") .HasForeignKey("OriginalItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemGenerated"); b.Navigation("OriginalItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ScriptedInstance", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("ScriptedInstance") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Shop") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopItem", b => { b.HasOne("NosCore.Database.Entities.Item", "Item") .WithMany("ShopItem") .HasForeignKey("ItemVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopItem") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Item"); b.Navigation("Shop"); }); modelBuilder.Entity("NosCore.Database.Entities.ShopSkill", b => { b.HasOne("NosCore.Database.Entities.Shop", "Shop") .WithMany("ShopSkill") .HasForeignKey("ShopId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Skill", "Skill") .WithMany("ShopSkill") .HasForeignKey("SkillVNum") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Shop"); b.Navigation("Skill"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBonus", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBonus") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.StaticBuff", b => { b.HasOne("NosCore.Database.Entities.Card", "Card") .WithMany("StaticBuff") .HasForeignKey("CardId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("StaticBuff") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Card"); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Teleporter", b => { b.HasOne("NosCore.Database.Entities.Map", "Map") .WithMany("Teleporter") .HasForeignKey("MapId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.MapNpc", "MapNpc") .WithMany("Teleporter") .HasForeignKey("MapNpcId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Map"); b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Title", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Title") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Character"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.HasOne("NosCore.Database.Entities.Character", "Character") .WithMany("Warehouses") .HasForeignKey("CharacterId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NosCore.Database.Entities.Family", "Family") .WithMany("Warehouses") .HasForeignKey("FamilyId") .OnDelete(DeleteBehavior.Restrict); b.Navigation("Character"); b.Navigation("Family"); }); modelBuilder.Entity("NosCore.Database.Entities.WarehouseItem", b => { b.HasOne("NosCore.Database.Entities.ItemInstance", "ItemInstance") .WithMany("WarehouseItems") .HasForeignKey("ItemInstanceId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("NosCore.Database.Entities.Warehouse", "Warehouse") .WithMany("WarehouseItems") .HasForeignKey("WarehouseId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("ItemInstance"); b.Navigation("Warehouse"); }); modelBuilder.Entity("NosCore.Database.Entities.Account", b => { b.Navigation("Character"); b.Navigation("PenaltyLog"); }); modelBuilder.Entity("NosCore.Database.Entities.Act", b => { b.Navigation("ActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.ActPart", b => { b.Navigation("CharacterActParts"); }); modelBuilder.Entity("NosCore.Database.Entities.Card", b => { b.Navigation("BCards"); b.Navigation("StaticBuff"); }); modelBuilder.Entity("NosCore.Database.Entities.Character", b => { b.Navigation("BazaarItem"); b.Navigation("CharacterActParts"); b.Navigation("CharacterQuest"); b.Navigation("CharacterRelation1"); b.Navigation("CharacterRelation2"); b.Navigation("CharacterSkill"); b.Navigation("FamilyCharacter"); b.Navigation("Inventory"); b.Navigation("Mail"); b.Navigation("Mail1"); b.Navigation("Mate"); b.Navigation("Miniland"); b.Navigation("QuicklistEntry"); b.Navigation("Respawn"); b.Navigation("StaticBonus"); b.Navigation("StaticBuff"); b.Navigation("Title"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.CharacterQuest", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.Family", b => { b.Navigation("FamilyCharacters"); b.Navigation("FamilyLogs"); b.Navigation("Warehouses"); }); modelBuilder.Entity("NosCore.Database.Entities.InventoryItemInstance", b => { b.Navigation("MinilandObject"); }); modelBuilder.Entity("NosCore.Database.Entities.Item", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("ItemInstances"); b.Navigation("Recipe"); b.Navigation("RecipeItem"); b.Navigation("RollGeneratedItem"); b.Navigation("RollGeneratedItem2"); b.Navigation("ShopItem"); }); modelBuilder.Entity("NosCore.Database.Entities.ItemInstance", b => { b.Navigation("BazaarItem"); b.Navigation("InventoryItemInstance"); b.Navigation("Mail"); b.Navigation("WarehouseItems"); }); modelBuilder.Entity("NosCore.Database.Entities.Map", b => { b.Navigation("Character"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("MapTypeMap"); b.Navigation("Portal"); b.Navigation("Portal1"); b.Navigation("Respawn"); b.Navigation("RespawnMapType"); b.Navigation("ScriptedInstance"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapNpc", b => { b.Navigation("Recipe"); b.Navigation("Shop"); b.Navigation("Teleporter"); }); modelBuilder.Entity("NosCore.Database.Entities.MapType", b => { b.Navigation("Drops"); b.Navigation("MapTypeMap"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcMonster", b => { b.Navigation("BCards"); b.Navigation("Drop"); b.Navigation("MapMonster"); b.Navigation("MapNpc"); b.Navigation("Mate"); b.Navigation("NpcMonsterSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.NpcTalk", b => { b.Navigation("MapNpc"); }); modelBuilder.Entity("NosCore.Database.Entities.Quest", b => { b.Navigation("CharacterQuest"); b.Navigation("QuestObjective"); b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestObjective", b => { b.Navigation("CharacterQuestObjective"); }); modelBuilder.Entity("NosCore.Database.Entities.QuestReward", b => { b.Navigation("QuestQuestReward"); }); modelBuilder.Entity("NosCore.Database.Entities.Recipe", b => { b.Navigation("RecipeItem"); }); modelBuilder.Entity("NosCore.Database.Entities.RespawnMapType", b => { b.Navigation("MapTypes"); b.Navigation("MapTypes1"); b.Navigation("Respawn"); }); modelBuilder.Entity("NosCore.Database.Entities.Script", b => { b.Navigation("Characters"); }); modelBuilder.Entity("NosCore.Database.Entities.Shop", b => { b.Navigation("ShopItem"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Skill", b => { b.Navigation("BCards"); b.Navigation("CharacterSkill"); b.Navigation("Combo"); b.Navigation("NpcMonsterSkill"); b.Navigation("ShopSkill"); }); modelBuilder.Entity("NosCore.Database.Entities.Warehouse", b => { b.Navigation("WarehouseItems"); }); #pragma warning restore 612, 618 } } } ================================================ FILE: src/NosCore.Database/NosCore.Database.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net10.0</TargetFramework> <TieredCompilation>true</TieredCompilation> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <ItemGroup> <Compile Remove="Interfaces\**" /> <EmbeddedResource Remove="Interfaces\**" /> <None Remove="Interfaces\**" /> </ItemGroup> <ItemGroup> <PackageReference Include="Autofac" /> <PackageReference Include="Microsoft.EntityFrameworkCore" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Design"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Microsoft.Extensions.Configuration.Json" /> <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" /> <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" /> <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime" /> <PackageReference Include="Npgsql.NodaTime" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\NosCore.Core\NosCore.Core.csproj" /> </ItemGroup> <ItemGroup> <AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo"> <_Parameter1>NosCore.Tests</_Parameter1> </AssemblyAttribute> </ItemGroup> <ItemGroup> <Folder Include="Migrations\" /> </ItemGroup> <ItemGroup> <PackageReference Include="NosCore.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> </Project> ================================================ FILE: src/NosCore.Database/NosCoreContext.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.EntityFrameworkCore; using NosCore.Dao.Extensions; using NosCore.Database.Entities; using Npgsql; using System; using System.Linq; namespace NosCore.Database { public class NosCoreContext : DbContext { public NosCoreContext(DbContextOptions options) : base(options) { typeof(NosCoreContext).Assembly .GetTypes() .Where(t => t.IsEnum && t.IsPublic) .ToList().ForEach(t => { #pragma warning disable CS0618 var method = NpgsqlConnection.GlobalTypeMapper.GetType().GetMethods().First(o => o.Name == nameof(NpgsqlConnection.GlobalTypeMapper.MapEnum)); #pragma warning restore CS0618 var generic = method.MakeGenericMethod(t); #pragma warning disable CS0618 generic.Invoke(NpgsqlConnection.GlobalTypeMapper, new object?[] { null, null }); #pragma warning restore CS0618 }); } public virtual DbSet<Account>? Account { get; set; } public virtual DbSet<AuditLog>? AuditLog { get; set; } public virtual DbSet<Script>? Script { get; set; } public virtual DbSet<BazaarItem>? BazaarItem { get; set; } public virtual DbSet<Card>? Card { get; set; } public virtual DbSet<Miniland>? Miniland { get; set; } public virtual DbSet<BCard>? BCard { get; set; } public virtual DbSet<EquipmentOption>? EquipmentOption { get; set; } public virtual DbSet<Character>? Character { get; set; } public virtual DbSet<CharacterQuest>? CharacterQuest { get; set; } public virtual DbSet<CharacterQuestObjective>? CharacterQuestObjective { get; set; } public virtual DbSet<CharacterRelation>? CharacterRelation { get; set; } public virtual DbSet<CharacterSkill>? CharacterSkill { get; set; } public virtual DbSet<RollGeneratedItem>? RollGeneratedItem { get; set; } public virtual DbSet<Combo>? Combo { get; set; } public virtual DbSet<Drop>? Drop { get; set; } public virtual DbSet<Family>? Family { get; set; } public virtual DbSet<FamilyCharacter>? FamilyCharacter { get; set; } public virtual DbSet<FamilyLog>? FamilyLog { get; set; } public virtual DbSet<Item>? Item { get; set; } public virtual DbSet<ItemInstance>? ItemInstance { get; set; } public virtual DbSet<Mail>? Mail { get; set; } public virtual DbSet<Map>? Map { get; set; } public virtual DbSet<MapMonster>? MapMonster { get; set; } public virtual DbSet<MapNpc>? MapNpc { get; set; } public virtual DbSet<MapType>? MapType { get; set; } public virtual DbSet<MapTypeMap>? MapTypeMap { get; set; } public virtual DbSet<Mate>? Mate { get; set; } public virtual DbSet<MinilandObject>? MinilandObject { get; set; } public virtual DbSet<NpcMonster>? NpcMonster { get; set; } public virtual DbSet<NpcMonsterSkill>? NpcMonsterSkill { get; set; } public virtual DbSet<PenaltyLog>? PenaltyLog { get; set; } public virtual DbSet<CharacterActPart>? CharacterActPart { get; set; } public virtual DbSet<ActPart>? ActPart { get; set; } public virtual DbSet<Act>? Act { get; set; } public virtual DbSet<Portal>? Portal { get; set; } public virtual DbSet<Quest>? Quest { get; set; } public virtual DbSet<QuestReward>? QuestReward { get; set; } public virtual DbSet<QuicklistEntry>? QuicklistEntry { get; set; } public virtual DbSet<Recipe>? Recipe { get; set; } public virtual DbSet<RecipeItem>? RecipeItem { get; set; } public virtual DbSet<Respawn>? Respawn { get; set; } public virtual DbSet<RespawnMapType>? RespawnMapType { get; set; } public virtual DbSet<ScriptedInstance>? ScriptedInstance { get; set; } public virtual DbSet<Shop>? Shop { get; set; } public virtual DbSet<ShopItem>? ShopItem { get; set; } public virtual DbSet<ShopSkill>? ShopSkill { get; set; } public virtual DbSet<Skill>? Skill { get; set; } public virtual DbSet<StaticBonus>? StaticBonus { get; set; } public virtual DbSet<Teleporter>? Teleporter { get; set; } public virtual DbSet<StaticBuff>? StaticBuff { get; set; } public virtual DbSet<I18NActDesc>? I18NActDesc { get; set; } public virtual DbSet<I18NBCard>? I18NbCard { get; set; } public virtual DbSet<I18NCard>? I18NCard { get; set; } public virtual DbSet<I18NItem>? I18NItem { get; set; } public virtual DbSet<I18NMapIdData>? I18NMapIdData { get; set; } public virtual DbSet<I18NMapPointData>? I18NMapPointData { get; set; } public virtual DbSet<I18NNpcMonster>? I18NNpcMonster { get; set; } public virtual DbSet<I18NNpcMonsterTalk>? I18NNpcMonsterTalk { get; set; } public virtual DbSet<I18NQuest>? I18NQuest { get; set; } public virtual DbSet<I18NSkill>? I18NSkill { get; set; } public virtual DbSet<NpcTalk>? NpcTalk { get; set; } static void HasPostgresEnum(ModelBuilder modelBuilder, Type type) { #pragma warning disable CS0618 var translator = NpgsqlConnection.GlobalTypeMapper.DefaultNameTranslator; #pragma warning restore CS0618 modelBuilder.HasPostgresEnum(translator.TranslateTypeName(type.Name), Enum.GetNames(type) .Select(x => translator.TranslateMemberName(x)).ToArray()); } protected override void OnModelCreating(ModelBuilder modelBuilder) { typeof(NosCoreContext).Assembly .GetTypes() .SelectMany(t => t.GetProperties()) .Where(t => t.PropertyType.IsEnum && t.PropertyType.IsPublic) .Select(t => t.PropertyType) .Distinct() .ToList().ForEach(t => HasPostgresEnum(modelBuilder, t)); // remove automatic pluralization modelBuilder.RemovePluralizingTableNameConvention(); // build TPH tables for inheritance modelBuilder.Entity<ItemInstance>() .HasDiscriminator<string>("Discriminator") .HasValue<WearableInstance>("WearableInstance") .HasValue<SpecialistInstance>("SpecialistInstance") .HasValue<UsableInstance>("UsableInstance") .HasValue<BoxInstance>("BoxInstance"); modelBuilder.Entity<InventoryItemInstance>() .HasIndex(e => new { e.CharacterId, e.Slot, e.Type }) .IsUnique(); modelBuilder.Entity<MapTypeMap>() .HasIndex(e => new { e.MapId, e.MapTypeId }) .IsUnique(); modelBuilder.Entity<Account>() .HasIndex(e => new { e.Name }) .IsUnique(); modelBuilder.Entity<Script>() .HasIndex(e => new { e.ScriptId, e.ScriptStepId }) .IsUnique(); modelBuilder.Entity<I18NActDesc>() .HasIndex(e => new { e.Key, e.RegionType }) .IsUnique(); modelBuilder.Entity<I18NBCard>() .HasIndex(e => new { e.Key, e.RegionType }) .IsUnique(); modelBuilder.Entity<I18NCard>() .HasIndex(e => new { e.Key, e.RegionType }) .IsUnique(); modelBuilder.Entity<I18NItem>() .HasIndex(e => new { e.Key, e.RegionType }) .IsUnique(); modelBuilder.Entity<I18NMapIdData>() .HasIndex(e => new { e.Key, e.RegionType }) .IsUnique(); modelBuilder.Entity<I18NMapPointData>() .HasIndex(e => new { e.Key, e.RegionType }) .IsUnique(); modelBuilder.Entity<I18NNpcMonster>() .HasIndex(e => new { e.Key, e.RegionType }) .IsUnique(); modelBuilder.Entity<I18NNpcMonsterTalk>() .HasIndex(e => new { e.Key, e.RegionType }) .IsUnique(); modelBuilder.Entity<I18NQuest>() .HasIndex(e => new { e.Key, e.RegionType }) .IsUnique(); modelBuilder.Entity<I18NSkill>() .HasIndex(e => new { e.Key, e.RegionType }) .IsUnique(); modelBuilder.Entity<Title>() .HasIndex(e => new { e.CharacterId, e.TitleType }) .IsUnique(); modelBuilder.Entity<Map>() .HasMany(e => e.MapTypeMap) .WithOne(e => e.Map) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<MapType>() .HasMany(e => e.MapTypeMap) .WithOne(e => e.MapType) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Account>() .Property(e => e.Password) .IsUnicode(false); modelBuilder.Entity<Account>() .HasMany(e => e.Character) .WithOne(e => e.Account) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Account>() .HasMany(e => e.PenaltyLog) .WithOne(e => e.Account) .HasForeignKey(e => e.AccountId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Character>() .Property(e => e.Name) .IsUnicode(false); modelBuilder.Entity<Character>() .HasMany(e => e.Inventory) .WithOne(e => e.Character) .HasForeignKey(e => e.CharacterId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Character>() .HasMany(e => e.Mate) .WithOne(e => e.Character) .HasForeignKey(e => e.CharacterId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Character>() .HasMany(e => e.CharacterQuest) .WithOne(e => e.Character) .HasForeignKey(e => e.CharacterId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Character>() .HasMany(e => e.CharacterSkill) .WithOne(e => e.Character) .HasForeignKey(e => e.CharacterId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Character>() .HasMany(e => e.StaticBonus) .WithOne(e => e.Character) .HasForeignKey(e => e.CharacterId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<NpcTalk>() .HasMany(e => e.MapNpc) .WithOne(e => e.NpcTalk!) .HasForeignKey(e => e.Dialog) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Character>() .HasMany(e => e.Title) .WithOne(e => e.Character) .HasForeignKey(e => e.CharacterId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Character>() .HasMany(e => e.CharacterRelation1) .WithOne(e => e.Character1) .HasForeignKey(e => e.CharacterId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Character>() .HasMany(e => e.CharacterRelation2) .WithOne(e => e.Character2) .HasForeignKey(e => e.RelatedCharacterId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Character>() .HasOne(e => e.Script) .WithMany(e => e.Characters) .HasForeignKey(e => e.CurrentScriptId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Character>() .HasMany(e => e.StaticBuff) .WithOne(e => e.Character) .HasForeignKey(e => e.CharacterId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Card>() .HasMany(e => e.StaticBuff) .WithOne(e => e.Card) .HasForeignKey(e => e.CardId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Character>() .HasMany(e => e.QuicklistEntry) .WithOne(e => e.Character) .HasForeignKey(e => e.CharacterId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Character>() .HasMany(e => e.Respawn) .WithOne(e => e.Character) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Character>() .HasMany(e => e.Mail) .WithOne(e => e.Sender!) .IsRequired(false) .HasForeignKey(e => e.SenderId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Miniland>() .HasOne(e => e.Owner) .WithMany(e => e.Miniland) .HasForeignKey(e => e.OwnerId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Character>() .HasMany(e => e.Mail1) .WithOne(e => e.Receiver) .HasForeignKey(e => e.ReceiverId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Family>() .HasMany(e => e.FamilyLogs) .WithOne(e => e.Family) .HasForeignKey(e => e.FamilyId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<FamilyCharacter>() .HasOne(e => e.Character) .WithMany(e => e.FamilyCharacter) .HasForeignKey(e => e.CharacterId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<BazaarItem>() .HasOne(e => e.Seller) .WithMany(e => e.BazaarItem) .HasForeignKey(e => e.SellerId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<BazaarItem>() .HasOne(e => e.ItemInstance) .WithMany(e => e.BazaarItem) .HasForeignKey(e => e.ItemInstanceId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<InventoryItemInstance>() .HasOne(e => e.ItemInstance) .WithMany(e => e.InventoryItemInstance) .HasForeignKey(e => e.ItemInstanceId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Mail>() .HasOne(e => e.ItemInstance) .WithMany(e => e.Mail) .HasForeignKey(e => e.ItemInstanceId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<MinilandObject>() .HasOne(e => e.InventoryItemInstance) .WithMany(e => e.MinilandObject) .HasForeignKey(e => e.InventoryItemInstanceId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<FamilyCharacter>() .HasOne(e => e.Family) .WithMany(e => e.FamilyCharacters) .HasForeignKey(e => e.FamilyId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Item>() .HasMany(e => e.Drop) .WithOne(e => e.Item) .HasForeignKey(e => e.VNum) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Item>() .HasMany(e => e.Recipe) .WithOne(e => e.Item) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Item>() .HasMany(e => e.RecipeItem) .WithOne(e => e.Item) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Item>() .HasMany(e => e.ItemInstances) .WithOne(e => e.Item) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Item>() .HasMany(e => e.ShopItem) .WithOne(e => e.Item) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Mail>() .HasOne(e => e.ItemInstance) .WithMany(e => e.Mail) .HasForeignKey(e => e.ItemInstanceId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<RollGeneratedItem>() .HasOne(e => e.OriginalItem) .WithMany(e => e.RollGeneratedItem) .HasForeignKey(e => e.OriginalItemVNum) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<RollGeneratedItem>() .HasOne(e => e.ItemGenerated) .WithMany(e => e.RollGeneratedItem2) .HasForeignKey(e => e.ItemGeneratedVNum) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Map>() .HasMany(e => e.Character) .WithOne(e => e.Map) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Map>() .HasMany(e => e.MapMonster) .WithOne(e => e.Map) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Respawn>() .HasOne(e => e.Map) .WithMany(e => e.Respawn) .HasForeignKey(e => e.MapId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Respawn>() .HasOne(e => e.RespawnMapType) .WithMany(e => e.Respawn) .HasForeignKey(e => e.RespawnMapTypeId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<RespawnMapType>() .HasOne(e => e.Map) .WithMany(e => e.RespawnMapType) .HasForeignKey(e => e.MapId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<MapType>() .HasOne(e => e.RespawnMapType) .WithMany(e => e.MapTypes) .HasForeignKey(e => e.RespawnMapTypeId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<MapType>() .HasOne(e => e.ReturnMapType) .WithMany(e => e.MapTypes1) .HasForeignKey(e => e.ReturnMapTypeId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Map>() .HasMany(e => e.MapNpc) .WithOne(e => e.Map) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Map>() .HasMany(e => e.Portal) .WithOne(e => e.Map) .HasForeignKey(e => e.DestinationMapId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Map>() .HasMany(e => e.Portal1) .WithOne(e => e.Map1) .HasForeignKey(e => e.SourceMapId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Map>() .HasMany(e => e.ScriptedInstance) .WithOne(e => e.Map) .HasForeignKey(e => e.MapId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Map>() .HasMany(e => e.Teleporter) .WithOne(e => e.Map) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<BCard>() .HasOne(e => e.Skill) .WithMany(e => e.BCards) .HasForeignKey(e => e.SkillVNum) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<BCard>() .HasOne(e => e.NpcMonster) .WithMany(e => e.BCards) .HasForeignKey(e => e.NpcMonsterVNum) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<BCard>() .HasOne(e => e.Card) .WithMany(e => e.BCards) .HasForeignKey(e => e.CardId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Quest>() .HasMany(e => e.QuestObjective) .WithOne(e => e.Quest) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<QuestObjective>() .HasOne(e => e.Quest) .WithMany(e => e.QuestObjective) .HasForeignKey(e => e.QuestId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<BCard>() .HasOne(e => e.Item) .WithMany(e => e.BCards) .HasForeignKey(e => e.ItemVNum) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<MapTypeMap>() .HasOne(e => e.Map) .WithMany(e => e.MapTypeMap) .HasForeignKey(e => e.MapId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<MapTypeMap>() .HasOne(e => e.MapType) .WithMany(e => e.MapTypeMap) .HasForeignKey(e => e.MapTypeId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<MapType>() .HasMany(e => e.Drops) .WithOne(e => e.MapType!) .HasForeignKey(e => e.MapTypeId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<MapNpc>() .HasMany(e => e.Recipe) .WithOne(e => e.MapNpc) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<MapNpc>() .HasMany(e => e.Shop) .WithOne(e => e.MapNpc) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<MapNpc>() .HasMany(e => e.Teleporter) .WithOne(e => e.MapNpc) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<NpcMonster>() .HasMany(e => e.Drop) .WithOne(e => e.NpcMonster!) .HasForeignKey(e => e.MonsterVNum) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<NpcMonster>() .HasMany(e => e.Mate) .WithOne(e => e.NpcMonster) .HasForeignKey(e => e.VNum) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Quest>() .HasMany(e => e.CharacterQuest) .WithOne(e => e.Quest) .HasForeignKey(e => e.QuestId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<CharacterQuest>() .HasMany(e => e.CharacterQuestObjective) .WithOne(e => e.CharacterQuest) .HasForeignKey(e => e.CharacterQuestId) .OnDelete(DeleteBehavior.Cascade); modelBuilder.Entity<CharacterQuestObjective>() .HasOne(e => e.QuestObjective) .WithMany(e => e.CharacterQuestObjective) .HasForeignKey(e => e.QuestObjectiveId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<CharacterQuestObjective>() .HasIndex(e => new { e.CharacterQuestId, e.QuestObjectiveId }) .IsUnique(); modelBuilder.Entity<QuestQuestReward>() .HasOne(e => e.Quest) .WithMany(e => e.QuestQuestReward) .HasForeignKey(e => e.QuestId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<QuestQuestReward>() .HasOne(e => e.QuestReward) .WithMany(e => e.QuestQuestReward) .HasForeignKey(e => e.QuestRewardId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<NpcMonster>() .HasMany(e => e.MapMonster) .WithOne(e => e.NpcMonster) .HasForeignKey(e => e.VNum) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<NpcMonster>() .HasMany(e => e.MapNpc) .WithOne(e => e.NpcMonster) .HasForeignKey(e => e.VNum) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<NpcMonster>() .HasMany(e => e.NpcMonsterSkill) .WithOne(e => e.NpcMonster) .HasForeignKey(e => e.NpcMonsterVNum) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Recipe>() .HasMany(e => e.RecipeItem) .WithOne(e => e.Recipe) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Shop>() .HasMany(e => e.ShopItem) .WithOne(e => e.Shop) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Shop>() .HasMany(e => e.ShopSkill) .WithOne(e => e.Shop) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Skill>() .HasMany(e => e.CharacterSkill) .WithOne(e => e.Skill) .HasForeignKey(e => e.SkillVNum) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Skill>() .HasMany(e => e.Combo) .WithOne(e => e.Skill) .HasForeignKey(e => e.SkillVNum) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Skill>() .HasMany(e => e.NpcMonsterSkill) .WithOne(e => e.Skill) .HasForeignKey(e => e.SkillVNum) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Skill>() .HasMany(e => e.ShopSkill) .WithOne(e => e.Skill) .HasForeignKey(e => e.SkillVNum) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Character>() .HasMany(e => e.Warehouses) .WithOne(e => e.Character!) .HasForeignKey(e => e.CharacterId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<Family>() .HasMany(e => e.Warehouses) .WithOne(e => e.Family!) .HasForeignKey(e => e.FamilyId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<WarehouseItem>() .HasOne(e => e.Warehouse) .WithMany(e => e.WarehouseItems) .HasForeignKey(e => e.WarehouseId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<ActPart>() .HasOne(e => e.Act) .WithMany(e => e.ActParts) .HasForeignKey(e => e.ActId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<CharacterActPart>() .HasOne(e => e.Character) .WithMany(e => e.CharacterActParts) .HasForeignKey(e => e.CharacterId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<CharacterActPart>() .HasOne(e => e.ActPart) .WithMany(e => e.CharacterActParts) .HasForeignKey(e => e.ActPartId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity<WarehouseItem>() .HasOne(e => e.ItemInstance) .WithMany(e => e.WarehouseItems) .HasForeignKey(e => e.ItemInstanceId) .OnDelete(DeleteBehavior.Restrict); } } } ================================================ FILE: src/NosCore.GameObject/Ecs/Attributes/ComponentBundleAttribute.cs ================================================ using System; namespace NosCore.GameObject.Ecs.Attributes; [AttributeUsage(AttributeTargets.Struct)] public class ComponentBundleAttribute : Attribute { public Type[] Components { get; } public ComponentBundleAttribute(params Type[] components) { Components = components; } } ================================================ FILE: src/NosCore.GameObject/Ecs/Components/AggroComponent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Ecs.Components; // Aggro bookkeeping for monsters/pets. TargetVisualId 0 means "no target". UntilLeash is // the moment aggro drops if the target has not been seen/hit again, giving the AI a // natural cooldown without a separate timer. public record struct AggroComponent( VisualType TargetVisualType, long TargetVisualId, int ThreatScore, Instant UntilLeash); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/AppearanceComponent.cs ================================================ using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Ecs.Components; public record struct AppearanceComponent( GenderType Gender, HairStyleType HairStyle, HairColorType HairColor, CharacterClassType Class, byte Face, byte Size); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/BuffStateComponent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Concurrent; using NosCore.GameObject.Services.BattleService.Model; namespace NosCore.GameObject.Ecs.Components; // Buffs are keyed by CardId so re-applying a card refreshes its duration instead of // stacking indefinitely. Concurrent so tick / apply / expire can run on different tasks. public record struct BuffStateComponent(ConcurrentDictionary<short, BuffInstance> ActiveBuffs); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/CombatComponent.cs ================================================ using Arch.Core; using System.Collections.Concurrent; using System.Threading; namespace NosCore.GameObject.Ecs.Components; public record struct CombatComponent( int HitRate, int CriticalChance, int CriticalRate, int MinHit, int MaxHit, int MinDistance, int MaxDistance, int DistanceCriticalChance, int DistanceCriticalRate, int DistanceRate, int FireResistance, int WaterResistance, int LightResistance, int DarkResistance, int Defence, int DefenceRate, int DistanceDefence, int DistanceDefenceRate, int MagicDefence, int Element, int ElementRate, SemaphoreSlim HitSemaphore, ConcurrentDictionary<Entity, int> HitList); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/EffectComponent.cs ================================================ namespace NosCore.GameObject.Ecs.Components; public record struct EffectComponent(short Effect, short EffectDelay); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/EntityIdentityComponent.cs ================================================ using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Ecs.Components; public record struct EntityIdentityComponent(long VisualId, VisualType VisualType, long CharacterId); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/ExperienceComponent.cs ================================================ namespace NosCore.GameObject.Ecs.Components; public record struct ExperienceComponent(byte Level, long LevelXp, byte JobLevel, long JobLevelXp, byte HeroLevel, long HeroLevelXp); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/GoldComponent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.GameObject.Ecs.Components; public record struct GoldComponent(long Gold); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/HealthComponent.cs ================================================ namespace NosCore.GameObject.Ecs.Components; public record struct HealthComponent(int Hp, int MaxHp, bool IsAlive); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/ManaComponent.cs ================================================ namespace NosCore.GameObject.Ecs.Components; public record struct ManaComponent(int Mp, int MaxMp); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/MapItemDataComponent.cs ================================================ using System; using NodaTime; using NosCore.GameObject.Services.ItemGenerationService.Item; namespace NosCore.GameObject.Ecs.Components; public record struct MapItemDataComponent(short VNum, short Amount, long? OwnerId, Instant DroppedAt, Guid ItemInstanceId, IItemInstance? ItemInstance); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/NameComponent.cs ================================================ namespace NosCore.GameObject.Ecs.Components; public record struct NameComponent(string Name); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/NpcDataComponent.cs ================================================ namespace NosCore.GameObject.Ecs.Components; public record struct NpcDataComponent(short VNum, short Race, byte Level, byte HeroLevel, byte Speed, byte Size); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/NpcMovementComponent.cs ================================================ namespace NosCore.GameObject.Ecs.Components; public record struct NpcMovementComponent(short FirstX, short FirstY, bool IsMoving, bool IsHostile); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/NpcStateComponent.cs ================================================ using Arch.Core; using NosCore.Data.StaticEntities; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.GameObject.Services.ShopService; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Reactive.Subjects; using System.Threading; namespace NosCore.GameObject.Ecs.Components; public record struct NpcStateComponent( NpcMonsterDto NpcMonster, MapInstance MapInstance, SemaphoreSlim HitSemaphore, ConcurrentDictionary<Entity, int> HitList, Shop? Shop, Dictionary<int, Shop>? Shops, IDisposable? Life, Dictionary<Type, Subject<RequestData>> Requests, short? Dialog, bool IsDisabled ); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/PlayerComponent.cs ================================================ namespace NosCore.GameObject.Ecs.Components; public record struct PlayerComponent(long AccountId, long CharacterId, bool IsGm, int ServerId); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/PlayerContextComponent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.GroupService; using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.GameObject.Services.ShopService; namespace NosCore.GameObject.Ecs.Components; public record struct PlayerContextComponent( MapInstance MapInstance, Group Group, Shop? Shop); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/PlayerFlagsComponent.cs ================================================ using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Ecs.Components; public record struct PlayerFlagsComponent( bool ExchangeBlocked, bool FriendRequestBlocked, bool WhisperBlocked, bool GroupRequestBlocked, bool HeroChatBlocked, bool FamilyRequestBlocked, bool EmoticonsBlocked, bool QuickGetUp, bool HpBlocked, bool MinilandInviteBlocked, bool MouseAimLock, AuthorityType Authority, bool UseSp, bool IsVehicled, bool Invisible, bool Camouflage); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/PlayerInventoryComponent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.QuestService; using System; using System.Collections.Concurrent; using System.Collections.Generic; namespace NosCore.GameObject.Ecs.Components; public record struct PlayerInventoryComponent( IInventoryService InventoryService, ConcurrentDictionary<short, CharacterSkill> Skills, ConcurrentDictionary<Guid, CharacterQuest> Quests, List<QuicklistEntryDto> QuicklistEntries, List<StaticBonusDto> StaticBonusList, List<TitleDto> Titles, List<RespawnDto> Respawns); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/PlayerNetworkComponent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.BroadcastService; using NosCore.Networking; namespace NosCore.GameObject.Ecs.Components; public record struct PlayerNetworkComponent(IPacketSender? Sender, IChannel? Channel); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/PlayerRequestsComponent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Networking.ClientSession; using System; using System.Collections.Generic; using System.Reactive.Subjects; namespace NosCore.GameObject.Ecs.Components; public record struct PlayerRequestsComponent( Dictionary<Type, Subject<RequestData>> Requests); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/PlayerSocialComponent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using System.Collections.Concurrent; namespace NosCore.GameObject.Ecs.Components; public record struct PlayerSocialComponent( ConcurrentDictionary<long, long> GroupRequestCharacterIds, Instant? LastGroupRequest); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/PlayerStateComponent.cs ================================================ using NodaTime; using NosCore.Data.Dto; using NosCore.Data.StaticEntities; namespace NosCore.GameObject.Ecs.Components; public record struct PlayerStateComponent( CharacterDto CharacterDto, AccountDto Account, ScriptDto? Script, bool IsChangingMapInstance, bool IsDisconnecting, bool InShop, bool InExchange, bool CanFight, Instant LastPortal, Instant LastSp, byte VehicleSpeed ); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/PositionComponent.cs ================================================ using System; namespace NosCore.GameObject.Ecs.Components; public record struct PositionComponent(short PositionX, short PositionY, byte Direction, Guid MapInstanceId); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/ReputationComponent.cs ================================================ namespace NosCore.GameObject.Ecs.Components; public record struct ReputationComponent(long Reputation, short Dignity, short Compliment); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/SkillCooldownComponent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Concurrent; using NodaTime; namespace NosCore.GameObject.Ecs.Components; // Per-skill cooldown tracker for non-player entities (monsters, pets, NPCs). Characters // keep cooldown state on their CharacterSkill instances, so they don't need this. public record struct SkillCooldownComponent(ConcurrentDictionary<short, Instant> NextUsableAt); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/SpComponent.cs ================================================ namespace NosCore.GameObject.Ecs.Components; public record struct SpComponent(short SpCooldown, int SpPoint, int SpAdditionPoint); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/SpawnComponent.cs ================================================ namespace NosCore.GameObject.Ecs.Components; public record struct SpawnComponent(short FirstX, short FirstY, bool IsMoving, bool IsHostile); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/SpeedComponent.cs ================================================ namespace NosCore.GameObject.Ecs.Components; public record struct SpeedComponent(byte Speed); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/TimingComponent.cs ================================================ using NodaTime; namespace NosCore.GameObject.Ecs.Components; public record struct TimingComponent(Instant LastMove, Instant LastAttack); ================================================ FILE: src/NosCore.GameObject/Ecs/Components/VisualComponent.cs ================================================ namespace NosCore.GameObject.Ecs.Components; public record struct VisualComponent(short Morph, byte MorphUpgrade, short MorphDesign, byte MorphBonus, bool NoAttack, bool NoMove, bool IsSitting); ================================================ FILE: src/NosCore.GameObject/Ecs/DignityLevels.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Ecs; public static class DignityLevels { public static DignityType FromDignity(short dignity) => dignity switch { <= -801 => DignityType.Failed, <= -601 => DignityType.Useless, <= -401 => DignityType.Unqualified, <= -201 => DignityType.Dreadful, <= -100 => DignityType.Dubious, _ => DignityType.Default }; } ================================================ FILE: src/NosCore.GameObject/Ecs/Extensions/AliveEntityExtension.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Data.Enumerations; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Networking; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Entities; using NosCore.Packets.ServerPackets.Groups; using NosCore.Packets.ServerPackets.Inventory; using NosCore.Packets.ServerPackets.Movement; using NosCore.Packets.ServerPackets.Player; using NosCore.Packets.ServerPackets.Shop; using NosCore.PathFinder.Interfaces; using NosCore.Shared.Enumerations; using NosCore.Shared.Helpers; using System; using System.Collections.Generic; using System.Linq; using System.Reactive.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Ecs.Extensions { public static class AliveEntityExtension { public static Task ChangeDirAsync(this IAliveEntity aliveEntity, byte direction) { aliveEntity.Direction = direction; return aliveEntity.MapInstance.SendPacketAsync( aliveEntity.GenerateChangeDir()); } public static DirPacket GenerateChangeDir(this IAliveEntity namedEntity) { return new DirPacket { VisualType = namedEntity.VisualType, VisualId = namedEntity.VisualId, Direction = namedEntity.Direction }; } public static RequestNpcPacket GenerateNpcReq(this IAliveEntity namedEntity, long dialog) { return new RequestNpcPacket { Type = namedEntity.VisualType, TargetId = namedEntity.VisualId, Data = dialog }; } public static PinitSubPacket GenerateSubPinit(this INamedEntity namedEntity, int groupPosition) { return new PinitSubPacket { VisualType = namedEntity.VisualType, VisualId = namedEntity.VisualId, GroupPosition = groupPosition, Level = namedEntity.Level, Name = namedEntity.Name, Gender = (namedEntity as ICharacterEntity)?.Gender ?? GenderType.Male, Race = namedEntity.Race, Morph = namedEntity.Morph, HeroLevel = namedEntity.HeroLevel }; } public static PidxSubPacket GenerateSubPidx(this IAliveEntity playableEntity) { return playableEntity.GenerateSubPidx(false); } public static PidxSubPacket GenerateSubPidx(this IAliveEntity playableEntity, bool isMemberOfGroup) { return new PidxSubPacket { IsGrouped = isMemberOfGroup, VisualId = playableEntity.VisualId }; } public static StPacket GenerateStatInfo(this IAliveEntity aliveEntity) { return new StPacket { Type = aliveEntity.VisualType, VisualId = aliveEntity.VisualId, Level = aliveEntity.Level, HeroLvl = aliveEntity.HeroLevel, HpPercentage = aliveEntity.MaxHp > 0 ? (int)(aliveEntity.Hp / (float)aliveEntity.MaxHp * 100) : 0, MpPercentage = aliveEntity.MaxMp > 0 ? (int)(aliveEntity.Mp / (float)aliveEntity.MaxMp * 100) : 0, CurrentHp = aliveEntity.Hp, CurrentMp = aliveEntity.Mp, MaxHp = aliveEntity.MaxHp, MaxMp = aliveEntity.MaxMp, BuffIds = null }; } public static Task MoveAsync(this INonPlayableEntity nonPlayableEntity, IHeuristic distanceCalculator, IClock clock) { if (!nonPlayableEntity.IsAlive) { return Task.CompletedTask; } if (!nonPlayableEntity.IsMoving || (nonPlayableEntity.Speed <= 0)) { return Task.CompletedTask; } var time = (clock.GetCurrentInstant().Minus(nonPlayableEntity.LastMove)).TotalMilliseconds; if (!(time > RandomHelper.Instance.RandomNumber(400, 3200))) { return Task.CompletedTask; } var mapX = nonPlayableEntity.MapX; var mapY = nonPlayableEntity.MapY; if (!nonPlayableEntity.MapInstance.Map.GetFreePosition(ref mapX, ref mapY, (byte)RandomHelper.Instance.RandomNumber(0, 3), (byte)RandomHelper.Instance.RandomNumber(0, 3))) { return Task.CompletedTask; } var distance = (int)distanceCalculator.GetDistance((nonPlayableEntity.PositionX, nonPlayableEntity.PositionY), (mapX, mapY)); var value = 1000d * distance / (2 * nonPlayableEntity.Speed); Observable.Timer(TimeSpan.FromMilliseconds(value)) .Subscribe( _ => { nonPlayableEntity.PositionX = mapX; nonPlayableEntity.PositionY = mapY; }); nonPlayableEntity.LastMove = clock.GetCurrentInstant().Plus(Duration.FromMilliseconds(value)); return nonPlayableEntity.MapInstance.SendPacketAsync( nonPlayableEntity.GenerateMove(mapX, mapY)); } public static Task RestAsync(this IAliveEntity aliveEntity) { aliveEntity.IsSitting = !aliveEntity.IsSitting; return aliveEntity.MapInstance.SendPacketAsync( aliveEntity.GenerateRest()); } public static CondPacket GenerateCond(this IAliveEntity aliveEntity) { return new CondPacket { VisualType = aliveEntity.VisualType, VisualId = aliveEntity.VisualId, NoAttack = aliveEntity.NoAttack, NoMove = aliveEntity.NoMove, Speed = aliveEntity.Speed }; } public static SayPacket GenerateSay(this IAliveEntity aliveEntity, string message, SayColorType type) { return new SayPacket { VisualType = aliveEntity.VisualType, VisualId = aliveEntity.VisualId, Type = type, Message = message }; } public static SayItemPacket GenerateSayItem(this IAliveEntity aliveEntity, string message, InventoryItemInstance item) { var isNormalItem = item.Type != NoscorePocketType.Equipment && item.Type != NoscorePocketType.Specialist; return new SayItemPacket { VisualType = aliveEntity.VisualType, VisualId = aliveEntity.VisualId, OratorSlot = 17, Message = message, IconInfo = isNormalItem ? new IconInfoPacket { IconId = item.ItemInstance.ItemVNum } : null, EquipmentInfo = isNormalItem ? null : new EInfoPacket(), SlInfo = item.Type != NoscorePocketType.Specialist ? null : new SlInfoPacket() }; } public static ShopPacket GenerateShop(this IAliveEntity visualEntity, RegionType language) { return new ShopPacket { VisualType = visualEntity.VisualType, VisualId = visualEntity.VisualId, ShopId = visualEntity.Shop?.ShopId ?? 0, MenuType = visualEntity.Shop?.MenuType ?? 0, ShopType = visualEntity.Shop?.ShopType, Name = visualEntity.Shop?.Name[language] }; } public static UseItemPacket GenerateUseItem(this IAliveEntity aliveEntity, PocketType type, short slot, byte mode, byte parameter) { return new UseItemPacket { VisualId = aliveEntity.VisualId, VisualType = aliveEntity.VisualType, Type = type, Slot = slot, Mode = mode, Parameter = parameter }; } public static PairyPacket GeneratePairy(this IAliveEntity aliveEntity, WearableInstance? fairy) { var isBuffed = false; //TODO aliveEntity.Buff.Any(b => b.Card.CardId == 131); return new PairyPacket { VisualType = aliveEntity.VisualType, VisualId = aliveEntity.VisualId, FairyMoveType = fairy == null ? 0 : 4, Element = fairy?.Item?.Element ?? 0, ElementRate = fairy?.ElementRate + fairy?.Item?.ElementRate ?? 0, Morph = fairy?.Item?.Morph ?? 0 + (isBuffed ? 5 : 0) }; } public static CModePacket GenerateCMode(this IAliveEntity aliveEntity) { return new CModePacket { VisualType = aliveEntity.VisualType, VisualId = aliveEntity.VisualId, Morph = aliveEntity.Morph, MorphUpgrade = aliveEntity.MorphUpgrade, MorphDesign = aliveEntity.MorphDesign, MorphBonus = aliveEntity.MorphBonus, Size = aliveEntity.Size }; } public static CharScPacket GenerateCharSc(this IAliveEntity aliveEntity) { return new CharScPacket { VisualType = aliveEntity.VisualType, VisualId = aliveEntity.VisualId, Size = aliveEntity.Size }; } public static MovePacket GenerateMove(this IAliveEntity aliveEntity) { return aliveEntity.GenerateMove(null, null); } public static MovePacket GenerateMove(this IAliveEntity aliveEntity, short? mapX, short? mapY) { return new MovePacket { VisualEntityId = aliveEntity.VisualId, MapX = mapX ?? aliveEntity.PositionX, MapY = mapY ?? aliveEntity.PositionY, Speed = aliveEntity.Speed, VisualType = aliveEntity.VisualType }; } public static EffectPacket GenerateEff(this IAliveEntity aliveEntity, int effectid) { return new EffectPacket { EffectType = aliveEntity.VisualType, VisualEntityId = aliveEntity.VisualId, Id = effectid }; } public static SayPacket GenerateSay(this IAliveEntity aliveEntity, SayPacket packet) { return new SayPacket { VisualType = aliveEntity.VisualType, VisualId = aliveEntity.VisualId, Type = packet.Type, Message = packet.Message }; } public static RestPacket GenerateRest(this IAliveEntity aliveEntity) { return new RestPacket { VisualType = aliveEntity.VisualType, VisualId = aliveEntity.VisualId, IsSitting = aliveEntity.IsSitting }; } public static PflagPacket GeneratePFlag(this IAliveEntity aliveEntity) { return new PflagPacket { VisualType = aliveEntity.VisualType, VisualId = aliveEntity.VisualId, Flag = aliveEntity.Shop?.ShopId ?? 0 }; } public static void SetLevel(this INamedEntity experiencedEntity, byte level) { experiencedEntity.Level = level; experiencedEntity.LevelXp = 0; experiencedEntity.Hp = experiencedEntity.MaxHp; experiencedEntity.Mp = experiencedEntity.MaxMp; } public static NInvPacket GenerateNInv(this IAliveEntity aliveEntity, double percent, short typeshop) { var shopItemList = new List<NInvItemSubPacket?>(); var list = aliveEntity.Shop!.ShopItems.Values.Where(s => s.Type == typeshop).ToList(); for (var i = 0; i < aliveEntity.Shop.Size; i++) { var item = list.Find(s => s.Slot == i); if (item == null) { shopItemList.Add(null); } else { shopItemList.Add(new NInvItemSubPacket { Type = (PocketType)item.ItemInstance!.Item.Type, Slot = item.Slot, Price = (int)(item.Price ?? (item.ItemInstance.Item.ReputPrice > 0 ? item.ItemInstance.Item.ReputPrice : item.ItemInstance.Item.Price * percent)), RareAmount = item.ItemInstance.Item.Type == (byte)NoscorePocketType.Equipment ? item.ItemInstance.Rare : item.Amount, UpgradeDesign = item.ItemInstance.Item.Type == (byte)NoscorePocketType.Equipment ? item.ItemInstance.Item.IsColored ? item.ItemInstance.Item.Color : item.ItemInstance.Upgrade : (short?)null, VNum = item.ItemInstance.Item.VNum }); } } return new NInvPacket { VisualType = aliveEntity.VisualType, VisualId = aliveEntity.VisualId, ShopKind = (byte)(percent * 100), Unknown = 0, Items = shopItemList }; } } } ================================================ FILE: src/NosCore.GameObject/Ecs/Extensions/CharacterEntityExtension.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Data; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Group; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Interaction; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.GroupService; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.ShopService; using NosCore.Networking; using NosCore.Networking.SessionGroup; using NosCore.Packets.ClientPackets.Player; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Shop; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Entities; using NosCore.Packets.ServerPackets.Exchanges; using NosCore.Packets.ServerPackets.Inventory; using NosCore.Packets.ServerPackets.MiniMap; using NosCore.Packets.ServerPackets.Player; using NosCore.Packets.ServerPackets.Quest; using NosCore.Packets.ServerPackets.Quicklist; using NosCore.Packets.ServerPackets.Relations; using NosCore.Packets.ServerPackets.UI; using NosCore.Packets.ServerPackets.Visibility; using NosCore.Shared.Enumerations; using NosCore.Core.I18N; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using PostedPacket = NosCore.GameObject.InterChannelCommunication.Messages.PostedPacket; namespace NosCore.GameObject.Ecs.Extensions { public static class CharacterEntityExtension { [Obsolete( "GenerateStartupInventory should be used only on startup, for refreshing an inventory slot please use GenerateInventoryAdd instead.")] public static IEnumerable<IPacket> GenerateInv(this ICharacterEntity characterEntity, ILogger logger, ILogLanguageLocalizer<LogLanguageKey> logLanguageLocalizer) { var inv0 = new InvPacket { Type = PocketType.Equipment, IvnSubPackets = new List<IvnSubPacket>() }; var inv1 = new InvPacket { Type = PocketType.Main, IvnSubPackets = new List<IvnSubPacket>() }; var inv2 = new InvPacket { Type = PocketType.Etc, IvnSubPackets = new List<IvnSubPacket>() }; var inv3 = new InvPacket { Type = PocketType.Miniland, IvnSubPackets = new List<IvnSubPacket>() }; var inv6 = new InvPacket { Type = PocketType.Specialist, IvnSubPackets = new List<IvnSubPacket>() }; var inv7 = new InvPacket { Type = PocketType.Costume, IvnSubPackets = new List<IvnSubPacket>() }; var inv9 = new InvPacket { Type = (PocketType)NoscorePocketType.Mount, IvnSubPackets = new List<IvnSubPacket>() }; var inv10 = new InvPacket { Type = (PocketType)NoscorePocketType.Raid, IvnSubPackets = new List<IvnSubPacket>() }; if (characterEntity.InventoryService == null) { return new List<IPacket> { inv0, inv1, inv2, inv3, inv6, inv7, inv9, inv10 }; } foreach (var inv in characterEntity.InventoryService.Select(s => s.Value)) { switch (inv.Type) { case NoscorePocketType.Equipment: if (inv.ItemInstance.Item.EquipmentSlot == EquipmentType.Sp) { if (inv.ItemInstance is SpecialistInstance specialistInstance) { inv7.IvnSubPackets.Add(new IvnSubPacket { Slot = inv.Slot, VNum = inv.ItemInstance.ItemVNum, RareAmount = specialistInstance.Rare, UpgradeDesign = specialistInstance.Upgrade, SecondUpgrade = specialistInstance.SpStoneUpgrade }); } } else { if (inv.ItemInstance is WearableInstance wearableInstance) { inv0.IvnSubPackets.Add(new IvnSubPacket { Slot = inv.Slot, VNum = inv.ItemInstance.ItemVNum, RareAmount = wearableInstance.Rare, UpgradeDesign = inv.ItemInstance.Item.IsColored ? wearableInstance.Design : wearableInstance.Upgrade }); } } break; case NoscorePocketType.Main: inv1.IvnSubPackets.Add(new IvnSubPacket { Slot = inv.Slot, VNum = inv.ItemInstance.ItemVNum, RareAmount = inv.ItemInstance.Amount }); break; case NoscorePocketType.Etc: inv2.IvnSubPackets.Add(new IvnSubPacket { Slot = inv.Slot, VNum = inv.ItemInstance.ItemVNum, RareAmount = inv.ItemInstance.Amount }); break; case NoscorePocketType.Miniland: inv3.IvnSubPackets.Add(new IvnSubPacket { Slot = inv.Slot, VNum = inv.ItemInstance.ItemVNum, RareAmount = inv.ItemInstance.Amount }); break; case NoscorePocketType.Specialist: if (inv.ItemInstance is SpecialistInstance specialist) { inv6.IvnSubPackets.Add(new IvnSubPacket { Slot = inv.Slot, VNum = inv.ItemInstance.ItemVNum, RareAmount = specialist.Rare, UpgradeDesign = specialist.Upgrade, SecondUpgrade = specialist.SpStoneUpgrade }); } break; case NoscorePocketType.Costume: if (inv.ItemInstance is WearableInstance costumeInstance) { inv7.IvnSubPackets.Add(new IvnSubPacket { Slot = inv.Slot, VNum = inv.ItemInstance.ItemVNum, RareAmount = costumeInstance.Rare, UpgradeDesign = costumeInstance.Upgrade }); } break; case NoscorePocketType.Mount: inv9.IvnSubPackets.Add(new IvnSubPacket { Slot = inv.Slot, VNum = inv.ItemInstance.ItemVNum, RareAmount = inv.ItemInstance.Amount }); break; case NoscorePocketType.Raid: inv10.IvnSubPackets.Add(new IvnSubPacket { Slot = inv.Slot, VNum = inv.ItemInstance.ItemVNum, RareAmount = inv.ItemInstance.Amount }); break; case NoscorePocketType.Wear: break; default: logger.LogInformation( logLanguageLocalizer[LogLanguageKey.POCKETTYPE_UNKNOWN]); break; } } return new List<IPacket> { inv0, inv1, inv2, inv3, inv6, inv7, inv9, inv10 }; } public static SkiPacket GenerateSki(this ICharacterEntity characterEntity) { List<CharacterSkill> characterSkills = characterEntity.Skills.Values.OrderBy(s => s.Skill?.CastId).ToList(); var spStarter = characterSkills.FirstOrDefault()?.SkillVNum ?? 0; return new SkiPacket { PrimarySkillVnum = (short)(!characterEntity.UseSp ? 201 + 20 * (byte)characterEntity.Class : spStarter), SecondarySkillVnum = (short)(!characterEntity.UseSp ? 200 + 20 * (byte)characterEntity.Class : spStarter), SkillVnums = characterSkills.Select(x => (short)x.SkillVNum).ToList(), }; } public static IEnumerable<QSlotPacket> GenerateQuicklist(this ICharacterEntity characterEntity) { var pktQs = new QSlotPacket[2]; for (var i = 0; i < pktQs.Length; i++) { var subpacket = new List<QsetClientSubPacket?>(); for (var j = 0; j < 30; j++) { var qi = characterEntity.QuicklistEntries.FirstOrDefault(n => (n.QuickListIndex == i) && (n.Slot == j) && (n.Morph == (characterEntity.UseSp ? characterEntity.Morph : 0))); subpacket.Add(new QsetClientSubPacket { OriginQuickList = qi?.Type ?? 7, OriginQuickListSlot = qi?.IconType ?? -1, Data = qi?.IconVNum ?? -1 }); } pktQs[i] = new QSlotPacket { Slot = i, Data = subpacket }; } return pktQs; } public static NosCore.Packets.ServerPackets.Player.RsfiPacket GenerateRsfi(this ICharacterEntity characterEntity) { return new NosCore.Packets.ServerPackets.Player.RsfiPacket { Act = 1, ActPart = 1, Unknown1 = 0, Unknown2 = 9, Ts = 0, TsMax = 9 }; } public static ServerExcListPacket GenerateServerExcListPacket(this ICharacterEntity aliveEntity, long? gold, long? bankGold, List<ServerExcListSubPacket?>? subPackets) { return new ServerExcListPacket { VisualType = aliveEntity.VisualType, VisualId = aliveEntity.VisualId, Gold = gold, SubPackets = subPackets, BankGold = bankGold }; } public static ClPacket GenerateInvisible(this ICharacterEntity visualEntity) { return new ClPacket { VisualId = visualEntity.VisualId, Camouflage = visualEntity.Camouflage, Invisible = visualEntity.Invisible }; } public static async Task SendFinfoAsync(this ICharacterEntity visualEntity, IFriendHub friendHttpClient, IPubSubHub pubSubHub, ISerializer packetSerializer, bool isConnected) { var friendlist = await friendHttpClient.GetFriendsAsync(visualEntity.VisualId); await Task.WhenAll(friendlist.Select(friend => pubSubHub.SendMessageAsync(new PostedPacket { Packet = packetSerializer.Serialize(new[] { new FinfoPacket { FriendList = new List<FinfoSubPackets?> { new() { CharacterId = visualEntity.VisualId, IsConnected = isConnected } } } }), ReceiverType = ReceiverType.OnlySomeone, SenderCharacter = new Data.WebApi.Character { Id = visualEntity.VisualId, Name = visualEntity.Name! }, ReceiverCharacter = new Data.WebApi.Character { Id = friend.CharacterId, Name = friend.CharacterName! } }))); } public static QstlistPacket GenerateQuestPacket(this ICharacterEntity visualEntity, bool showDialog = false) { return new QstlistPacket(visualEntity.Quests.Values .Where(s => s.CompletedOn == null).Select(quest => quest.GenerateQuestSubPacket(showDialog)).ToList()); } public static InEquipmentSubPacket GetEquipmentSubPacket(this ICharacterEntity visualEntity) => new() { Armor = visualEntity.InventoryService.LoadBySlotAndType((short)EquipmentType.Armor, NoscorePocketType.Wear)?.ItemInstance? .ItemVNum, CostumeHat = visualEntity.InventoryService.LoadBySlotAndType((short)EquipmentType.CostumeHat, NoscorePocketType.Wear) ?.ItemInstance?.ItemVNum, CostumeSuit = visualEntity.InventoryService.LoadBySlotAndType((short)EquipmentType.CostumeSuit, NoscorePocketType.Wear) ?.ItemInstance?.ItemVNum, Fairy = visualEntity.InventoryService.LoadBySlotAndType((short)EquipmentType.Fairy, NoscorePocketType.Wear)?.ItemInstance? .ItemVNum, Hat = visualEntity.InventoryService.LoadBySlotAndType((short)EquipmentType.Hat, NoscorePocketType.Wear)?.ItemInstance?.ItemVNum, MainWeapon = visualEntity.InventoryService.LoadBySlotAndType((short)EquipmentType.MainWeapon, NoscorePocketType.Wear) ?.ItemInstance?.ItemVNum, Mask = visualEntity.InventoryService.LoadBySlotAndType((short)EquipmentType.Mask, NoscorePocketType.Wear)?.ItemInstance? .ItemVNum, SecondaryWeapon = visualEntity.InventoryService .LoadBySlotAndType((short)EquipmentType.SecondaryWeapon, NoscorePocketType.Wear)?.ItemInstance? .ItemVNum, WeaponSkin = visualEntity.InventoryService.LoadBySlotAndType((short)EquipmentType.WeaponSkin, NoscorePocketType.Wear) ?.ItemInstance?.ItemVNum, WingSkin = visualEntity.InventoryService.LoadBySlotAndType((short)EquipmentType.WingSkin, NoscorePocketType.Wear) ?.ItemInstance?.ItemVNum }; private static GoldPacket GenerateGoldPacket(ICharacterEntity characterEntity) => new() { Gold = characterEntity.Gold }; private static LevPacket GenerateLevPacket(ICharacterEntity characterEntity, IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService) => new() { Level = characterEntity.Level, LevelXp = characterEntity.LevelXp, JobLevel = characterEntity.JobLevel, JobLevelXp = characterEntity.JobLevelXp, XpLoad = experienceService.GetExperience(characterEntity.Level), JobXpLoad = jobExperienceService.GetJobExperience(characterEntity.Class, characterEntity.JobLevel), Reputation = characterEntity.Reput, SkillCp = 0, HeroXp = characterEntity.HeroXp, HeroLevel = characterEntity.HeroLevel, HeroXpLoad = characterEntity.HeroLevel == 0 ? 0 : heroExperienceService.GetHeroExperience(characterEntity.HeroLevel) }; private static StatPacket GenerateStatPacket(ICharacterEntity characterEntity) => new() { Hp = characterEntity.Hp, HpMaximum = characterEntity.MaxHp, Mp = characterEntity.Mp, MpMaximum = characterEntity.MaxMp, Unknown = 0, Option = 0 }; private static FdPacket GenerateFdPacket(ICharacterEntity characterEntity) => new() { Reput = characterEntity.Reput, Dignity = characterEntity.Dignity, ReputIcon = (int)characterEntity.ReputIcon, DignityIcon = (int)characterEntity.DignityIcon }; public static Task AddGoldAsync(this ICharacterEntity characterEntity) { return characterEntity.SendPacketAsync(GenerateGoldPacket(characterEntity)); } public static async Task AddGoldAsync(this ICharacterEntity characterEntity, long gold, IGameLanguageLocalizer localizer) { characterEntity.Gold += gold; await characterEntity.SendPacketAsync(GenerateGoldPacket(characterEntity)); await characterEntity.SendPacketAsync(GenerateUpdateGoldSayPacket(characterEntity, localizer)); } public static async Task RemoveGoldAsync(this ICharacterEntity characterEntity, long gold, IGameLanguageLocalizer localizer) { characterEntity.Gold -= gold; await characterEntity.SendPacketAsync(GenerateGoldPacket(characterEntity)); await characterEntity.SendPacketAsync(GenerateUpdateGoldSayPacket(characterEntity, localizer)); } private static SayPacket GenerateUpdateGoldSayPacket(ICharacterEntity characterEntity, IGameLanguageLocalizer localizer) { return new SayPacket { VisualType = VisualType.Player, VisualId = characterEntity.VisualId, Type = SayColorType.Red, Message = localizer[LanguageKey.UPDATE_GOLD, characterEntity.AccountLanguage] }; } public static async Task SetJobLevelAsync(this ICharacterEntity characterEntity, byte jobLevel, IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService) { characterEntity.JobLevel = (byte)((characterEntity.Class == CharacterClassType.Adventurer) && (jobLevel > 20) ? 20 : jobLevel); characterEntity.JobLevelXp = 0; await characterEntity.SendPacketAsync(GenerateLevPacket(characterEntity, experienceService, jobExperienceService, heroExperienceService)); await characterEntity.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.JobLevelIncreased }); } public static async Task SetHeroLevelAsync(this ICharacterEntity characterEntity, byte level, IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService) { characterEntity.HeroLevel = level; characterEntity.HeroXp = 0; await characterEntity.SendPacketAsync(GenerateStatPacket(characterEntity)); await characterEntity.SendPacketAsync(characterEntity.GenerateStatInfo()); await characterEntity.SendPacketAsync(GenerateLevPacket(characterEntity, experienceService, jobExperienceService, heroExperienceService)); await characterEntity.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.HeroLevelIncreased }); } public static void JoinGroup(this ICharacterEntity characterEntity, Group group) { characterEntity.Group = group; group.JoinGroup(characterEntity); } public static async Task LeaveGroupAsync(this ICharacterEntity characterEntity, ISessionGroupFactory sessionGroupFactory, ISessionRegistry sessionRegistry) { characterEntity.Group.LeaveGroup(characterEntity); foreach (var entry in characterEntity.Group.Values.Where(s => s.Item2.VisualType == VisualType.Player && s.Item2.VisualId != characterEntity.VisualId)) { if (entry.Item2 is not ICharacterEntity groupMember) { continue; } if (characterEntity.Group.Count == 1) { await groupMember.LeaveGroupAsync(sessionGroupFactory, sessionRegistry); await groupMember.SendPacketAsync(characterEntity.Group.GeneratePidx(groupMember)); await groupMember.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.PartyDisbanded }); } await groupMember.SendPacketAsync(groupMember.Group.GeneratePinit()); } characterEntity.Group = new Group(GroupType.Group, sessionGroupFactory); characterEntity.Group.JoinGroup(characterEntity); } public static void AddBankGold(this ICharacterEntity characterEntity, long bankGold) { characterEntity.BankGold += bankGold; } public static void RemoveBankGold(this ICharacterEntity characterEntity, long bankGold) { characterEntity.BankGold -= bankGold; } public static async Task CloseShopAsync(this ICharacterEntity characterEntity) { characterEntity.Shop = null; await characterEntity.MapInstance.SendPacketAsync(characterEntity.GenerateShop(characterEntity.AccountLanguage)); await characterEntity.MapInstance.SendPacketAsync(characterEntity.GeneratePFlag()); characterEntity.IsSitting = false; await characterEntity.SendPacketAsync(characterEntity.GenerateCond()); await characterEntity.MapInstance.SendPacketAsync(characterEntity.GenerateRest()); } public static async Task BuyAsync(this ICharacterEntity characterEntity, Shop shop, short slot, short amount, Microsoft.Extensions.Options.IOptions<NosCore.Core.Configuration.WorldConfiguration> worldConfiguration, IItemGenerationService itemProvider, IGameLanguageLocalizer localizer) { if (amount <= 0) { return; } var item = shop.ShopItems.Values.FirstOrDefault(it => it.Slot == slot); if (item == null) { return; } var itemPrice = item.Price ?? item.ItemInstance!.Item.Price; if (itemPrice < 0 || itemPrice > long.MaxValue / amount) { return; } var price = itemPrice * amount; var itemReputPrice = item.Price == null ? item.ItemInstance!.Item.ReputPrice : 0; if (itemReputPrice < 0 || itemReputPrice > long.MaxValue / amount) { return; } var reputprice = itemReputPrice * amount; var percent = characterEntity.DignityIcon switch { DignityType.Dreadful => 1.1, DignityType.Unqualified => 1.2, DignityType.Failed => 1.5, DignityType.Useless => 1.5, _ => 1.0, }; if (amount > item.Amount) { return; } if ((reputprice == 0) && (price * percent > characterEntity.Gold)) { await characterEntity.SendPacketAsync(new SMemoiPacket { Type = SMemoType.FailNpc, Message = Game18NConstString.NotEnoughGold5 }); return; } if (reputprice > characterEntity.Reput) { await characterEntity.SendPacketAsync(new SMemoiPacket { Type = SMemoType.FailNpc, Message = Game18NConstString.ReputationNotHighEnough }); return; } short slotChar = item.Slot; List<InventoryItemInstance>? inv; if (shop.OwnerCharacter == null) { inv = characterEntity.InventoryService.AddItemToPocket(InventoryItemInstance.Create( itemProvider.Create(item.ItemInstance!.ItemVNum, amount), characterEntity.CharacterId)); } else { if (price + shop.OwnerCharacter.Gold > worldConfiguration.Value.MaxGoldAmount) { await characterEntity.SendPacketAsync(new SMemoPacket { Type = SMemoType.FailPlayer, Message = localizer[LanguageKey.TOO_RICH_SELLER, characterEntity.AccountLanguage] }); return; } if (amount == item.ItemInstance?.Amount) { inv = characterEntity.InventoryService.AddItemToPocket(InventoryItemInstance.Create(item.ItemInstance, characterEntity.CharacterId)); } else { inv = characterEntity.InventoryService.AddItemToPocket(InventoryItemInstance.Create( itemProvider.Create(item.ItemInstance?.ItemVNum ?? 0, amount), characterEntity.CharacterId)); } } if (inv?.Count > 0) { inv.ForEach(it => it.CharacterId = characterEntity.CharacterId); var packet = await (shop.OwnerCharacter == null ? Task.FromResult((NInvPacket?)null) : BuyFromOwnerAsync(shop.OwnerCharacter, item, amount, slotChar)); if (packet != null) { await characterEntity.SendPacketAsync(packet); } await characterEntity.SendPacketsAsync(inv.Select(invItem => invItem.GeneratePocketChange((PocketType)invItem.Type, invItem.Slot))); await characterEntity.SendPacketAsync(new SMemoiPacket { Type = SMemoType.SuccessNpc, Message = Game18NConstString.TradeSuccessfull }); if (reputprice == 0) { characterEntity.Gold -= (long)(price * percent); await characterEntity.SendPacketAsync(GenerateGoldPacket(characterEntity)); } else { characterEntity.Reput -= reputprice; await characterEntity.SendPacketAsync(GenerateFdPacket(characterEntity)); await characterEntity.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = characterEntity.CharacterId, Type = SayColorType.Red, Message = Game18NConstString.ReputationReduced, ArgumentType = 4, Game18NArguments = { reputprice } }); } } else { await characterEntity.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.NotEnoughSpace }); } } private static async Task<NInvPacket?> BuyFromOwnerAsync(ICharacterEntity characterEntity, ShopItem item, short amount, short slotChar) { var type = item.Type; var itemInstance = amount == item.ItemInstance?.Amount ? characterEntity.InventoryService.DeleteById(item.ItemInstance.Id) : characterEntity.InventoryService.RemoveItemAmountFromInventory(amount, item.ItemInstance!.Id); var slot = item.Slot; item.Amount = (short)((item.Amount ?? 0) - amount); if ((item?.Amount ?? 0) == 0) { characterEntity.Shop!.ShopItems.TryRemove(slot, out _); } await characterEntity.SendPacketAsync(itemInstance.GeneratePocketChange((PocketType)type, slotChar)); var sellAmount = (item?.Price ?? 0) * amount; characterEntity.Gold += sellAmount; await characterEntity.SendPacketAsync(GenerateGoldPacket(characterEntity)); characterEntity.Shop!.Sell += sellAmount; if (!characterEntity.Shop.ShopItems.IsEmpty) { return characterEntity.GenerateNInv(1, 0); } await characterEntity.CloseShopAsync(); return null; } } } ================================================ FILE: src/NosCore.GameObject/Ecs/Extensions/GroupExtension.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Services.GroupService; using NosCore.Packets.ServerPackets.Shop; using System.Collections.Generic; using System.Linq; namespace NosCore.GameObject.Ecs.Extensions { public static class GroupExtension { public static PidxPacket GeneratePidx(this Group group, INamedEntity entity) { return new PidxPacket { GroupId = group.Count == 1 ? -1 : group.GroupId, SubPackets = group.Count == 1 ? new List<PidxSubPacket?> { entity.GenerateSubPidx(true) } : group.Values.Select(s => s.Item2.GenerateSubPidx()).ToList() as List<PidxSubPacket?> }; } public static PidxPacket GeneratePidx(this Group group, PlayerComponentBundle player) { return new PidxPacket { GroupId = group.Count == 1 ? -1 : group.GroupId, SubPackets = group.Count == 1 ? new List<PidxSubPacket?> { player.GenerateSubPidx(true) } : group.Values.Select(s => s.Item2.GenerateSubPidx()).ToList() as List<PidxSubPacket?> }; } } } ================================================ FILE: src/NosCore.GameObject/Ecs/Extensions/ItemInstanceExtension.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Inventory; using System.Collections.Generic; using System.Linq; namespace NosCore.GameObject.Ecs.Extensions { public static class IItemInstanceExtension { public static IvnSubPacket GenerateIvnSubPacket(this IItemInstance? itemInstance, PocketType type, short slot) { if (itemInstance == null) { return new IvnSubPacket { Slot = slot }; } return new IvnSubPacket { Slot = slot, VNum = itemInstance.ItemVNum, RareAmount = type != PocketType.Equipment ? itemInstance.Amount : itemInstance.Rare, UpgradeDesign = itemInstance.Upgrade }; } public static IvnPacket GeneratePocketChange(this InventoryItemInstance? itemInstance, PocketType type, short slot) { if (itemInstance == null) { return new IvnPacket { Type = type, IvnSubPackets = new List<IvnSubPacket> { ((IItemInstance?)null).GenerateIvnSubPacket(type, slot) } }; } return new IvnPacket { Type = type, IvnSubPackets = new List<IvnSubPacket> { new() { Slot = slot, VNum = itemInstance.ItemInstance.ItemVNum, RareAmount = itemInstance.Type != NoscorePocketType.Equipment ? itemInstance.ItemInstance.Amount : itemInstance.ItemInstance.Rare, UpgradeDesign = itemInstance.ItemInstance.Upgrade } } }; } public static IvnPacket? GeneratePocketChange(this List<InventoryItemInstance> itemInstance) { if (itemInstance.Count <= 0) { return null; } var type = (PocketType)itemInstance[0].Type; return new IvnPacket { Type = type, IvnSubPackets = itemInstance.Select(item => item.ItemInstance.GenerateIvnSubPacket(type, item.Slot)) .ToList() }; } } } ================================================ FILE: src/NosCore.GameObject/Ecs/Extensions/MapItemBundleExtensions.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.ServerPackets.Entities; using NosCore.Packets.ServerPackets.Visibility; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Ecs.Extensions; public static class MapItemBundleExtensions { public static InPacket GenerateIn(this MapItemComponentBundle item) { return new InPacket { VisualType = VisualType.Object, VisualId = item.VisualId, VNum = item.VNum == 0 ? string.Empty : item.VNum.ToString(), PositionX = item.PositionX, PositionY = item.PositionY, InItemSubPacket = new InItemSubPacket { Amount = item.Amount, IsQuestRelative = false, Owner = item.OwnerId ?? 0 } }; } public static DropPacket GenerateDrop(this MapItemComponentBundle item) { return new DropPacket { VNum = item.VNum, VisualId = item.VisualId, PositionX = item.PositionX, PositionY = item.PositionY, Amount = item.Amount, OwnerId = item.OwnerId }; } } ================================================ FILE: src/NosCore.GameObject/Ecs/Extensions/MonsterBundleExtensions.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Entities; using NosCore.Packets.ServerPackets.Movement; using NosCore.Packets.ServerPackets.Player; using NosCore.Packets.ServerPackets.Visibility; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Ecs.Extensions; public static class MonsterBundleExtensions { public static InPacket GenerateIn(this MonsterComponentBundle monster) { return new InPacket { VisualType = VisualType.Monster, VisualId = monster.VisualId, VNum = monster.VNum == 0 ? string.Empty : monster.VNum.ToString(), PositionX = monster.PositionX, PositionY = monster.PositionY, Direction = monster.Direction, InNonPlayerSubPacket = new InNonPlayerSubPacket { Dialog = 0, InAliveSubPacket = new InAliveSubPacket { Hp = monster.MaxHp > 0 ? (int)(monster.Hp / (float)monster.MaxHp * 100) : 100, Mp = monster.MaxMp > 0 ? (int)(monster.Mp / (float)monster.MaxMp * 100) : 100 }, SpawnEffect = SpawnEffectType.Summon, IsSitting = monster.IsSitting, } }; } public static CondPacket GenerateCond(this MonsterComponentBundle monster) { return new CondPacket { VisualType = VisualType.Monster, VisualId = monster.VisualId, NoAttack = monster.NoAttack, NoMove = monster.NoMove, Speed = monster.Speed }; } public static MovePacket GenerateMove(this MonsterComponentBundle monster, short? mapX = null, short? mapY = null) { return new MovePacket { VisualType = VisualType.Monster, VisualEntityId = monster.VisualId, MapX = mapX ?? monster.PositionX, MapY = mapY ?? monster.PositionY, Speed = monster.Speed }; } public static CharScPacket GenerateCharSc(this MonsterComponentBundle monster) { return new CharScPacket { VisualType = VisualType.Monster, VisualId = monster.VisualId, Size = monster.Size }; } } ================================================ FILE: src/NosCore.GameObject/Ecs/Extensions/NonPlayableEntityExtension.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using NodaTime; using NosCore.Data.Dto; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs; using NosCore.GameObject.Map; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ShopService; using NosCore.Packets.ClientPackets.Shops; using NosCore.Packets.Enumerations; using NosCore.PathFinder.Interfaces; using NosCore.Shared.Enumerations; using Microsoft.Extensions.Logging; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Reactive.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Ecs.Extensions { public static class NonPlayableEntityExtension { public static void InitializeShopAndDialog(this NpcComponentBundle bundle, IReadOnlyList<ShopDto> shopDtos, NpcTalkDto? npcTalkDto, List<ShopItemDto> shopItemsDto, IItemGenerationService itemProvider) { var dialogId = bundle.Dialog ?? 0; if (bundle.Requests.TryGetValue(typeof(NpcDialogRequestSubject), out var subject)) { var visualId = bundle.VisualId; Task RequestExecAsync(RequestData request) { if (dialogId != 0) { return ((INonPlayableEntity)bundle).ShowDialogAsync(request, dialogId); } if (bundle.Shop != null) { return request.ClientSession.HandlePacketsAsync(new[] { new ShoppingPacket { VisualType = VisualType.Npc, VisualId = visualId, ShopType = 0, Unknown = 0 } }); } return Task.CompletedTask; } subject.Select(RequestExecAsync).Subscribe(); } if (shopDtos.Count == 0) { return; } var shops = new Dictionary<int, Shop>(); foreach (var shopDto in shopDtos) { var shopItemsList = new ConcurrentDictionary<int, ShopItem>(); foreach (var shopItemDto in shopItemsDto.Where(si => si.ShopId == shopDto.ShopId)) { var shopItem = shopItemDto.Adapt<ShopItem>(); shopItem.ItemInstance = itemProvider.Create(shopItemDto.ItemVNum, -1); shopItemsList[shopItemDto.ShopItemId] = shopItem; } var shop = shopDto.Adapt<Shop>(); shop.Name = npcTalkDto?.Name ?? bundle.NpcMonster?.Name ?? new I18NString(); shop.OwnerCharacter = null; shop.ShopItems = shopItemsList; shops[shop.ShopId] = shop; } bundle.Shops = shops; bundle.Shop = shops.Values.First(); } public static void StopLife(this INonPlayableEntity entity) { entity.Life?.Dispose(); entity.Life = null; } public static Task StartLifeAsync(this INonPlayableEntity entity, IHeuristic distanceCalculator, IClock clock, ILogger logger) => entity.StartLifeAsync(monsterAi: null, distanceCalculator, clock, logger); // Overload that lets the caller wire in the aggro-driven AI. When the AI is // absent (or the entity has no aggro target this tick) we fall back to the // original random-wander behaviour. Both monsters (targeting players) and // NPCs (targeting hostile mobs) flow through the same TickAsync — the AI // implementation decides what counts as a target based on the entity's // race/hostility. public static Task StartLifeAsync(this INonPlayableEntity entity, IMonsterAi? monsterAi, IHeuristic distanceCalculator, IClock clock, ILogger logger) { entity.Life?.Dispose(); async Task LifeAsync() { try { if (entity.MapInstance.IsSleeping) return; var acted = false; if (monsterAi != null) { acted = await monsterAi.TickAsync(entity); } if (!acted) { await entity.MoveAsync(distanceCalculator, clock); } } catch (Exception e) { logger.LogError(e.Message, e); } } entity.Life = Observable.Interval(TimeSpan.FromMilliseconds(400)).Select(_ => LifeAsync()).Subscribe(); return Task.CompletedTask; } public static Task ShowDialogAsync(this INonPlayableEntity entity, RequestData requestData, long dialog) { return requestData.ClientSession.SendPacketAsync(AliveEntityExtension.GenerateNpcReq(entity, dialog)); } } } ================================================ FILE: src/NosCore.GameObject/Ecs/Extensions/NpcBundleExtensions.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Entities; using NosCore.Packets.ServerPackets.Movement; using NosCore.Packets.ServerPackets.Player; using NosCore.Packets.ServerPackets.Visibility; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Ecs.Extensions; public static class NpcBundleExtensions { public static InPacket GenerateIn(this NpcComponentBundle npc, short? dialog = null) { return new InPacket { VisualType = VisualType.Npc, VisualId = npc.VisualId, VNum = npc.VNum == 0 ? string.Empty : npc.VNum.ToString(), PositionX = npc.PositionX, PositionY = npc.PositionY, Direction = npc.Direction, InNonPlayerSubPacket = new InNonPlayerSubPacket { Dialog = dialog ?? npc.Dialog ?? 0, InAliveSubPacket = new InAliveSubPacket { Hp = npc.MaxHp > 0 ? (int)(npc.Hp / (float)npc.MaxHp * 100) : 100, Mp = npc.MaxMp > 0 ? (int)(npc.Mp / (float)npc.MaxMp * 100) : 100 }, SpawnEffect = (SpawnEffectType)1, IsSitting = npc.IsSitting, } }; } public static CondPacket GenerateCond(this NpcComponentBundle npc) { return new CondPacket { VisualType = VisualType.Npc, VisualId = npc.VisualId, NoAttack = npc.NoAttack, NoMove = npc.NoMove, Speed = npc.Speed }; } public static MovePacket GenerateMove(this NpcComponentBundle npc, short? mapX = null, short? mapY = null) { return new MovePacket { VisualType = VisualType.Npc, VisualEntityId = npc.VisualId, MapX = mapX ?? npc.PositionX, MapY = mapY ?? npc.PositionY, Speed = npc.Speed }; } public static CharScPacket GenerateCharSc(this NpcComponentBundle npc) { return new CharScPacket { VisualType = VisualType.Npc, VisualId = npc.VisualId, Size = npc.Size }; } } ================================================ FILE: src/NosCore.GameObject/Ecs/Extensions/NpcInfoExtensions.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using NosCore.Data.StaticEntities; using NosCore.Packets.ServerPackets.Inventory; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Ecs.Extensions; public static class NpcInfoExtensions { // Builds the e_info response for a req_info 5 (NPC) or req_info 6 (monster/mate). // OpenNos's NpcMonster.GenerateEInfo AND Mate.GenerateEInfo both emit: // `e_info 10 <vnum> <level> <element> <attackClass> <elementRate> <atkUp> // <dmgMin> <dmgMax> <concentrate> <critChance> <critRate> <defUp> <closeDef> // <defDodge> <distDef> <distDodge> <magicDef> <fire> <water> <light> <dark> // <maxHp> <maxMp> -1 <name>` // — the leading 10 is the format discriminator and the trailing -1 is a constant // the client expects before the name field. Without either, the client can't align // fields and falls back to defaults (Level=0, HP=100/100) in the target info card. public static EInfoNpcMonsterPacket GenerateNpcInfo(this NpcMonsterDto npc, RegionType language) { return new EInfoNpcMonsterPacket { SubType = 10, NpcMonsterVNum = npc.NpcMonsterVNum, Level = npc.Level, Element = npc.Element, AttackClass = npc.AttackClass, ElementRate = npc.ElementRate, AttackUpgrade = npc.AttackUpgrade, DamageMinimum = npc.DamageMinimum, DamageMaximum = npc.DamageMaximum, Concentrate = npc.Concentrate, CriticalChance = npc.CriticalChance, CriticalRate = npc.CriticalRate, DefenceUpgrade = npc.DefenceUpgrade, CloseDefence = npc.CloseDefence, DefenceDodge = npc.DefenceDodge, DistanceDefence = npc.DistanceDefence, DistanceDefenceDodge = npc.DistanceDefenceDodge, MagicDefence = npc.MagicDefence, FireResistance = npc.FireResistance, WaterResistance = npc.WaterResistance, LightResistance = npc.LightResistance, DarkResistance = npc.DarkResistance, MaxHp = npc.MaxHp, MaxMp = npc.MaxMp, }; } public static EInfoNpcMonsterPacket GenerateMateInfo(this MateDto mate, NpcMonsterDto npcMonster) { var packet = npcMonster.GenerateNpcInfo(RegionType.EN); packet.Level = mate.Level; packet.MaxHp = npcMonster.MaxHp; packet.MaxMp = npcMonster.MaxMp; return packet; } } ================================================ FILE: src/NosCore.GameObject/Ecs/Extensions/PlayerBundleExtensions.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Data.Enumerations.I18N; using NosCore.Algorithm.JobExperienceService; using NosCore.Core.Configuration; using NosCore.Core.I18N; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.GroupService; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Networking; using NosCore.Networking.SessionGroup; using NosCore.Networking.SessionGroup.ChannelMatcher; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Inventory; using NosCore.Packets.ServerPackets.MiniMap; using NosCore.Packets.ServerPackets.Miniland; using NosCore.Packets.ServerPackets.Player; using NosCore.Packets.ServerPackets.Entities; using NosCore.Packets.ServerPackets.Relations; using NosCore.Packets.ServerPackets.Specialists; using NosCore.Packets.ServerPackets.Visibility; using NosCore.Packets.ServerPackets.UI; using NosCore.Packets.ServerPackets.Shop; using NosCore.Packets.ServerPackets.Groups; using NosCore.Packets.ServerPackets.Movement; using NosCore.Data.Enumerations.Buff; using NosCore.Shared.Enumerations; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Ecs.Extensions; public static class PlayerBundleExtensions { public static Task SendPacketAsync(this PlayerComponentBundle player, IPacket? packet) { return player.Sender?.SendPacketAsync(packet) ?? Task.CompletedTask; } public static Task SendPacketsAsync(this PlayerComponentBundle player, IEnumerable<IPacket?> packets) { return player.Sender?.SendPacketsAsync(packets) ?? Task.CompletedTask; } public static async Task RestAsync(this PlayerComponentBundle player) { player.IsSitting = !player.IsSitting; await player.MapInstance.SendPacketAsync(player.GenerateRest()); } public static TalkPacket GenerateTalk(this PlayerComponentBundle player, string message) { return new TalkPacket { CharacterId = player.VisualId, Message = message }; } public static SpeakPacket GenerateSpk(this PlayerComponentBundle player, SpeakPacket speakPacket) { return new SpeakPacket { VisualType = VisualType.Player, VisualId = player.VisualId, SpeakType = speakPacket.SpeakType, Message = speakPacket.Message, EntityName = player.Name }; } public static SayPacket GenerateSay(this PlayerComponentBundle player, SayPacket sayPacket) { return new SayPacket { VisualType = VisualType.Player, VisualId = player.VisualId, Type = sayPacket.Type, Message = sayPacket.Message }; } public static async Task<FinitPacket> GenerateFinitAsync(this PlayerComponentBundle player, IFriendHub friendHub, IChannelHub channelHub, IPubSubHub pubSubHub) { var friends = await friendHub.GetFriendsAsync(player.CharacterId); var friendSubPackets = new List<FinitSubPacket?>(); foreach (var relation in friends) { var isOnline = (await pubSubHub.GetSubscribersAsync()) .Any(s => s.ConnectedCharacter?.Id == relation.CharacterId); friendSubPackets.Add(new FinitSubPacket { CharacterId = relation.CharacterId, RelationType = relation.RelationType, IsOnline = isOnline, CharacterName = relation.CharacterName }); } return new FinitPacket { SubPackets = friendSubPackets }; } public static async Task<BlinitPacket> GenerateBlinitAsync(this PlayerComponentBundle player, IBlacklistHub blacklistHub) { var subpackets = new List<BlinitSubPacket?>(); var blacklist = await blacklistHub.GetBlacklistedAsync(player.CharacterId); foreach (var b in blacklist) { subpackets.Add(new BlinitSubPacket { RelatedCharacterId = b.CharacterId, CharacterName = b.CharacterName }); } return new BlinitPacket { SubPackets = subpackets }; } public static async Task SetReputationAsync(this PlayerComponentBundle player, long reputation, IGameLanguageLocalizer localizer) { player.Reputation = reputation; await player.SendPacketAsync(player.GenerateFd()); await player.SendPacketAsync(player.GenerateSay( localizer[LanguageKey.REPUTATION_CHANGED, player.Account.Language], SayColorType.Red)); await player.MapInstance.SendPacketAsync(player.GenerateIn("")); } public static async Task SetLevelAsync(this PlayerComponentBundle player, byte level, IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService, ISessionRegistry sessionRegistry, IGameLanguageLocalizer localizer) { player.Level = level; player.LevelXp = 0; player.Hp = player.MaxHp; player.Mp = player.MaxMp; await player.SendPacketAsync(player.GenerateStat()); await player.SendPacketAsync(player.GenerateStatInfo()); await player.SendPacketAsync(player.GenerateLev(experienceService, jobExperienceService, heroExperienceService)); var visualId = player.VisualId; var authority = player.Authority; var supportPrefix = authority == AuthorityType.Moderator ? localizer[LanguageKey.SUPPORT, player.Account.Language] : string.Empty; var inPacket = player.GenerateIn(supportPrefix); var eff6 = player.GenerateEff(6); var eff198 = player.GenerateEff(198); var mapInstance = player.MapInstance; var mapSessions = sessionRegistry.GetCharacters(s => s.MapInstance == mapInstance).ToList(); await Task.WhenAll(mapSessions.Select(async s => { if (s.VisualId != visualId) { await s.SendPacketAsync(inPacket); } await s.SendPacketAsync(eff6); await s.SendPacketAsync(eff198); })); var group = player.Group; if (group != null) { foreach (var member in group.Keys) { if (member.Item1 != VisualType.Player) { continue; } if (sessionRegistry.TryGetCharacter(s => s.VisualId == member.Item2, out var groupMember)) { await groupMember.SendPacketAsync(group.GeneratePinit()); } } await player.SendPacketAsync(group.GeneratePinit()); } await player.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.LevelIncreased }); } public static InPacket GenerateIn(this PlayerComponentBundle player, string prefix) { return new InPacket { VisualType = VisualType.Player, Name = prefix + player.Name, VisualId = player.VisualId, PositionX = player.PositionX, PositionY = player.PositionY, Direction = player.Direction, InCharacterSubPacket = new InCharacterSubPacket { Authority = player.Authority >= AuthorityType.Administrator ? AuthorityType.Administrator : AuthorityType.User, Gender = player.Gender, HairStyle = player.HairStyle, HairColor = player.HairColor, Class = player.Class, Equipment = player.GetEquipmentSubPacket(), InAliveSubPacket = new InAliveSubPacket { Hp = player.MaxHp > 0 ? (int)(player.Hp / (float)player.MaxHp * 100) : 100, Mp = player.MaxMp > 0 ? (int)(player.Mp / (float)player.MaxMp * 100) : 100 }, IsSitting = player.IsSitting, GroupId = player.Group.Count == 1 ? -1 : player.Group.GroupId, Fairy = 0, FairyElement = 0, FairyBooster = false, FairyMorph = 0, ShowInEffect = false, Morph = 0, WeaponUpgradeRareSubPacket = player.GetWeaponUpgradeRareSubPacket(), ArmorUpgradeRareSubPacket = player.GetArmorUpgradeRareSubPacket(), FamilySubPacket = new FamilySubPacket(), FamilyName = null, ReputIco = (byte)(GetDignityIcon(player.Dignity) == 0 ? GetReputationIcon(player.Reputation) : -GetDignityIcon(player.Dignity)), Invisible = false, MorphUpgrade = 0, Faction = 0, MorphUpgrade2 = 0, Level = player.Level, FamilyLevel = 0, FamilyIcons = new List<bool> { false, false, false }, ArenaWinner = false, Compliment = (short)(player.Authority >= AuthorityType.Moderator ? 500 : player.Compliment), Size = player.Size, HeroLevel = player.HeroLevel } }; } public static InEquipmentSubPacket GetEquipmentSubPacket(this PlayerComponentBundle player) { var inventory = player.InventoryService; return new InEquipmentSubPacket { Armor = inventory.LoadBySlotAndType((short)EquipmentType.Armor, NoscorePocketType.Wear)?.ItemInstance?.ItemVNum, CostumeHat = inventory.LoadBySlotAndType((short)EquipmentType.CostumeHat, NoscorePocketType.Wear)?.ItemInstance?.ItemVNum, CostumeSuit = inventory.LoadBySlotAndType((short)EquipmentType.CostumeSuit, NoscorePocketType.Wear)?.ItemInstance?.ItemVNum, Fairy = inventory.LoadBySlotAndType((short)EquipmentType.Fairy, NoscorePocketType.Wear)?.ItemInstance?.ItemVNum, Hat = inventory.LoadBySlotAndType((short)EquipmentType.Hat, NoscorePocketType.Wear)?.ItemInstance?.ItemVNum, MainWeapon = inventory.LoadBySlotAndType((short)EquipmentType.MainWeapon, NoscorePocketType.Wear)?.ItemInstance?.ItemVNum, Mask = inventory.LoadBySlotAndType((short)EquipmentType.Mask, NoscorePocketType.Wear)?.ItemInstance?.ItemVNum, SecondaryWeapon = inventory.LoadBySlotAndType((short)EquipmentType.SecondaryWeapon, NoscorePocketType.Wear)?.ItemInstance?.ItemVNum, WeaponSkin = inventory.LoadBySlotAndType((short)EquipmentType.WeaponSkin, NoscorePocketType.Wear)?.ItemInstance?.ItemVNum, WingSkin = inventory.LoadBySlotAndType((short)EquipmentType.WingSkin, NoscorePocketType.Wear)?.ItemInstance?.ItemVNum }; } public static UpgradeRareSubPacket GetWeaponUpgradeRareSubPacket(this PlayerComponentBundle player) { var weapon = player.InventoryService.LoadBySlotAndType((short)EquipmentType.MainWeapon, NoscorePocketType.Wear); return new UpgradeRareSubPacket { Upgrade = weapon?.ItemInstance?.Upgrade ?? 0, Rare = (sbyte)(weapon?.ItemInstance?.Rare ?? 0) }; } public static UpgradeRareSubPacket GetArmorUpgradeRareSubPacket(this PlayerComponentBundle player) { var armor = player.InventoryService.LoadBySlotAndType((short)EquipmentType.Armor, NoscorePocketType.Wear); return new UpgradeRareSubPacket { Upgrade = armor?.ItemInstance?.Upgrade ?? 0, Rare = (sbyte)(armor?.ItemInstance?.Rare ?? 0) }; } public static StatPacket GenerateStat(this PlayerComponentBundle player) { return new StatPacket { Hp = player.Hp, HpMaximum = player.MaxHp, Mp = player.Mp, MpMaximum = player.MaxMp, Unknown = 0, Option = 0 }; } public static GoldPacket GenerateGold(this PlayerComponentBundle player) { return new GoldPacket { Gold = player.Gold }; } public static LevPacket GenerateLev(this PlayerComponentBundle player, IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService) { return new LevPacket { Level = player.Level, LevelXp = player.LevelXp, JobLevel = player.JobLevel, JobLevelXp = player.JobLevelXp, XpLoad = experienceService.GetExperience(player.Level), JobXpLoad = jobExperienceService.GetJobExperience(player.Class, player.JobLevel), Reputation = player.Reputation, SkillCp = 0, HeroXp = player.HeroLevelXp, HeroLevel = player.HeroLevel, HeroXpLoad = player.HeroLevel == 0 ? 0 : heroExperienceService.GetHeroExperience(player.HeroLevel) }; } public static FdPacket GenerateFd(this PlayerComponentBundle player) { return new FdPacket { Reput = player.Reputation, ReputIcon = (int)GetReputationIcon(player.Reputation), Dignity = player.Dignity, DignityIcon = (int)GetDignityIcon(player.Dignity) }; } // Mirrors OpenNos's Character.GenerateReqInfo (Character.cs:3433). Returns the tc_info // packet sent in response to a client req_info on a player target — the right-click // info card showing class, level, equipped gear rare/upgrade, faction, PvP stats, etc. // Family / talent / Act4 fields default to 0 because those subsystems aren't wired in // NosCore yet; once they are, populate from the corresponding character state. public static TcInfoPacket GenerateReqInfo(this PlayerComponentBundle player) { var inv = player.InventoryService; var weapon = (inv.LoadBySlotAndType((short)EquipmentType.MainWeapon, NoscorePocketType.Wear) ?.ItemInstance) as WearableInstance; var secondary = (inv.LoadBySlotAndType((short)EquipmentType.SecondaryWeapon, NoscorePocketType.Wear) ?.ItemInstance) as WearableInstance; var armor = (inv.LoadBySlotAndType((short)EquipmentType.Armor, NoscorePocketType.Wear) ?.ItemInstance) as WearableInstance; var fairy = (inv.LoadBySlotAndType((short)EquipmentType.Fairy, NoscorePocketType.Wear) ?.ItemInstance) as WearableInstance; return new TcInfoPacket { Level = player.Level, Name = player.Name, Element = (ElementType)(fairy?.Item?.Element ?? 0), ElementRate = fairy?.Item?.ElementRate ?? 0, Class = player.Class, Gender = player.Gender, // No family system yet; OpenNos sends "{familyId} {name}({rank})" or "-1 -" when none. Family = "-1 -", ReputationIco = (ExtendedReputationType)GetReputationIcon(player.Reputation), DignityIco = (CharacterDignity)GetDignityIcon(player.Dignity), HaveWeapon = weapon != null ? 1 : 0, WeaponRare = weapon?.Rare ?? 0, WeaponUpgrade = weapon?.Upgrade ?? 0, HaveSecondary = secondary != null ? 1 : 0, SecondaryRare = secondary?.Rare ?? 0, SecondaryUpgrade = secondary?.Upgrade ?? 0, HaveArmor = armor != null ? 1 : 0, ArmorRare = armor?.Rare ?? 0, ArmorUpgrade = armor?.Upgrade ?? 0, Act4Kill = 0, Act4Dead = 0, Reputation = player.Reputation, Morph = 0, TalentWin = 0, TalentLose = 0, TalentSurrender = 0, MasterPoints = 0, Compliments = player.Compliment, Act4Points = 0, IsPvpPrimary = false, IsPvpSecondary = false, IsPvpArmor = false, HeroLevel = player.HeroLevel, Biography = string.Empty, }; } public static AtPacket GenerateAt(this PlayerComponentBundle player, short mapId, int music = 0) { return new AtPacket { CharacterId = player.VisualId, MapId = mapId, PositionX = player.PositionX, PositionY = player.PositionY, Direction = player.Direction, Unknown1 = 0, Music = music, Unknown2 = 0, Unknown3 = -1 }; } public static CInfoPacket GenerateCInfo(this PlayerComponentBundle player, IGameLanguageLocalizer localizer) { return new CInfoPacket { Name = player.Authority == AuthorityType.Moderator ? $"[{localizer[LanguageKey.SUPPORT, player.Account.Language]}]" + player.Name : player.Name, Unknown1 = null, GroupId = -1, FamilyId = -1, FamilyName = null, CharacterId = player.VisualId, Authority = player.Authority, Gender = player.Gender, HairStyle = player.HairStyle, HairColor = player.HairColor, Class = player.Class, Icon = (byte)(GetDignityIcon(player.Dignity) == 0 ? GetReputationIcon(player.Reputation) : -GetDignityIcon(player.Dignity)), Compliment = (short)(player.Authority == AuthorityType.Moderator ? 500 : player.Compliment), Morph = 0, Invisible = false, FamilyLevel = 0, MorphUpgrade = 0, ArenaWinner = false }; } public static CondPacket GenerateCond(this PlayerComponentBundle player) { return new CondPacket { VisualType = VisualType.Player, VisualId = player.VisualId, NoAttack = player.NoAttack, NoMove = player.NoMove, Speed = player.Speed }; } public static CModePacket GenerateCMode(this PlayerComponentBundle player) { return new CModePacket { VisualType = VisualType.Player, VisualId = player.VisualId, Morph = player.Morph, MorphUpgrade = player.MorphUpgrade, MorphDesign = player.MorphDesign, MorphBonus = player.MorphBonus, Size = player.Size }; } public static OutPacket GenerateOut(this PlayerComponentBundle player) { return new OutPacket { VisualType = VisualType.Player, VisualId = player.VisualId }; } public static RestPacket GenerateRest(this PlayerComponentBundle player) { return new RestPacket { VisualType = VisualType.Player, VisualId = player.VisualId, IsSitting = player.IsSitting }; } private static int GetReputationIcon(long reputation) { return reputation switch { >= 5000001 => 28, >= 2500001 => 27, >= 500001 => 26, >= 250001 => 25, >= 100001 => 24, >= 50001 => 23, >= 10001 => 22, >= 5001 => 21, >= 2501 => 20, >= 501 => 19, >= 251 => 18, >= 1 => 17, _ => 16 }; } // Matches OpenNos Character.GetDignityIco ordering: Dignity 0 → 1 (Basic), stepping up // with each loss threshold. OpenNos tops out at 7 for <= -1000 but NosCore.Packets's // CharacterDignity enum only defines 1..6, so we collapse the worst two tiers to 6 // (StupidMinded) — otherwise tc_info fails validation with "Invalid Enum value". private static int GetDignityIcon(int dignity) { return dignity switch { <= -800 => 6, <= -600 => 5, <= -400 => 4, <= -200 => 3, <= -100 => 2, _ => 1 }; } public static EffectPacket GenerateEff(this PlayerComponentBundle player, int effectId) { return new EffectPacket { EffectType = VisualType.Player, VisualEntityId = player.VisualId, Id = effectId }; } public static SayPacket GenerateSay(this PlayerComponentBundle player, string message, SayColorType type) { return new SayPacket { VisualType = VisualType.Player, VisualId = player.VisualId, Type = type, Message = message }; } public static UseItemPacket GenerateUseItem(this PlayerComponentBundle player, PocketType type, short slot, byte mode, byte parameter) { return new UseItemPacket { VisualId = player.VisualId, VisualType = VisualType.Player, Type = type, Slot = slot, Mode = mode, Parameter = parameter }; } public static EqPacket GenerateEq(this PlayerComponentBundle player) { return new EqPacket { VisualId = player.VisualId, Visibility = (byte)(player.Authority < AuthorityType.GameMaster ? 0 : 2), Gender = player.Gender, HairStyle = player.HairStyle, Haircolor = player.HairColor, ClassType = player.Class, EqSubPacket = player.GetEquipmentSubPacket(), WeaponUpgradeRarePacket = player.GetWeaponUpgradeRareSubPacket(), ArmorUpgradeRarePacket = player.GetArmorUpgradeRareSubPacket(), Size = player.Size }; } public static EquipPacket GenerateEquipment(this PlayerComponentBundle player) { var inventory = player.InventoryService; EquipmentSubPacket? GenerateEquipmentSubPacket(EquipmentType eqType) { var eq = inventory.LoadBySlotAndType((short)eqType, NoscorePocketType.Wear); if (eq == null) { return null; } return new EquipmentSubPacket { EquipmentType = eqType, VNum = eq.ItemInstance.ItemVNum, Rare = eq.ItemInstance.Rare, Upgrade = (eq.ItemInstance.Item.IsColored ? eq.ItemInstance?.Design : eq.ItemInstance.Upgrade) ?? 0, Unknown = 0 }; } return new EquipPacket { WeaponUpgradeRareSubPacket = player.GetWeaponUpgradeRareSubPacket(), ArmorUpgradeRareSubPacket = player.GetArmorUpgradeRareSubPacket(), Armor = GenerateEquipmentSubPacket(EquipmentType.Armor), WeaponSkin = GenerateEquipmentSubPacket(EquipmentType.WeaponSkin), SecondaryWeapon = GenerateEquipmentSubPacket(EquipmentType.SecondaryWeapon), Sp = GenerateEquipmentSubPacket(EquipmentType.Sp), Amulet = GenerateEquipmentSubPacket(EquipmentType.Amulet), Boots = GenerateEquipmentSubPacket(EquipmentType.Boots), CostumeHat = GenerateEquipmentSubPacket(EquipmentType.CostumeHat), CostumeSuit = GenerateEquipmentSubPacket(EquipmentType.CostumeSuit), Fairy = GenerateEquipmentSubPacket(EquipmentType.Fairy), Gloves = GenerateEquipmentSubPacket(EquipmentType.Gloves), Hat = GenerateEquipmentSubPacket(EquipmentType.Hat), MainWeapon = GenerateEquipmentSubPacket(EquipmentType.MainWeapon), Mask = GenerateEquipmentSubPacket(EquipmentType.Mask), Necklace = GenerateEquipmentSubPacket(EquipmentType.Necklace), Ring = GenerateEquipmentSubPacket(EquipmentType.Ring), Bracelet = GenerateEquipmentSubPacket(EquipmentType.Bracelet), WingSkin = GenerateEquipmentSubPacket(EquipmentType.WingSkin) }; } public static SpPacket GenerateSpPoint(this PlayerComponentBundle player, IOptions<WorldConfiguration> worldConfiguration) { return new SpPacket { AdditionalPoint = player.SpAdditionPoint, MaxAdditionalPoint = worldConfiguration.Value.MaxAdditionalSpPoints, SpPoint = player.SpPoint, MaxSpPoint = worldConfiguration.Value.MaxSpPoints }; } public static TitleInfoPacket GenerateTitInfo(this PlayerComponentBundle player) { var visibleTitle = player.Titles.FirstOrDefault(s => s.Visible)?.TitleType; var effectiveTitle = player.Titles.FirstOrDefault(s => s.Active)?.TitleType; return new TitleInfoPacket { VisualId = player.VisualId, EffectiveTitle = effectiveTitle ?? 0, VisualType = VisualType.Player, VisibleTitle = visibleTitle ?? 0 }; } public static PairyPacket GeneratePairy(this PlayerComponentBundle player, WearableInstance? fairy) { var isBuffed = false; return new PairyPacket { VisualType = VisualType.Player, VisualId = player.VisualId, FairyMoveType = fairy == null ? 0 : 4, Element = fairy?.Item?.Element ?? 0, // `??` has LOWER precedence than `+`, so the naive // `fairy?.ElementRate + fairy?.Item?.ElementRate ?? 0` groups as // `(fairy?.ElementRate + fairy?.Item?.ElementRate) ?? 0` — and int? + int? is // null when either side is null, so a fairy with no Item fallback drops to 0 // instead of keeping the character's ElementRate. Same precedence trap on // Morph: `Morph ?? 0 + (isBuffed ? 5 : 0)` parsed as `Morph ?? (0 + 5)`, which // applied the +5 buff only when Morph was null (i.e. never in practice). ElementRate = (fairy?.ElementRate ?? 0) + (fairy?.Item?.ElementRate ?? 0), Morph = (fairy?.Item?.Morph ?? 0) + (isBuffed ? 5 : 0) }; } public static TitlePacket GenerateTitle(this PlayerComponentBundle player) { var data = player.Titles.Select(s => new TitleSubPacket { TitleId = (short)(s.TitleType - 9300), TitleStatus = (byte)((s.Visible ? 2 : 0) + (s.Active ? 4 : 0) + 1) }).ToList() as List<TitleSubPacket?>; return new TitlePacket { Data = data.Any() ? data : null }; } public static IconPacket GenerateIcon(this PlayerComponentBundle player, byte iconType, short iconParameter) { return new IconPacket { VisualType = VisualType.Player, VisualId = player.VisualId, IconParameter = iconParameter, IconType = iconType }; } public static ServerGetPacket GenerateGet(this PlayerComponentBundle player, long itemId) { return new ServerGetPacket { VisualType = VisualType.Player, VisualId = player.VisualId, ItemId = itemId }; } public static MlobjlstPacket GenerateMlobjlst(this PlayerComponentBundle player) { var mlobj = new List<MlobjlstSubPacket?>(); foreach (var item in player.InventoryService.Where(s => s.Value.Type == NoscorePocketType.Miniland) .OrderBy(s => s.Value.Slot).Select(s => s.Value)) { var used = player.MapInstance.MapDesignObjects.ContainsKey(item.Id); var mp = used ? player.MapInstance.MapDesignObjects[item.Id] : null; mlobj.Add(new MlobjlstSubPacket { InUse = used, Slot = item.Slot, MlObjSubPacket = new MlobjSubPacket { MapX = used ? mp!.MapX : (short)0, MapY = used ? mp!.MapY : (short)0, Width = item.ItemInstance.Item.Width != 0 ? item.ItemInstance.Item.Width : (byte)1, Height = item.ItemInstance.Item.Height != 0 ? item.ItemInstance.Item.Height : (byte)1, DurabilityPoint = used ? item.ItemInstance.DurabilityPoint : 0, Unknown = 100, Unknown2 = false, IsWarehouse = item.ItemInstance.Item.IsWarehouse } }); } return new MlobjlstPacket { MlobjlstSubPacket = mlobj }; } public static SayItemPacket GenerateSayItem(this PlayerComponentBundle player, string message, InventoryItemInstance item) { var isNormalItem = item.Type != NoscorePocketType.Equipment && item.Type != NoscorePocketType.Specialist; return new SayItemPacket { VisualType = VisualType.Player, VisualId = player.VisualId, OratorSlot = 17, Message = message, IconInfo = isNormalItem ? new IconInfoPacket { IconId = item.ItemInstance.ItemVNum } : null, EquipmentInfo = isNormalItem ? null : new EInfoPacket(), SlInfo = item.Type != NoscorePocketType.Specialist ? null : new SlInfoPacket() }; } public static StPacket GenerateStatInfo(this PlayerComponentBundle player) { return new StPacket { Type = VisualType.Player, VisualId = player.VisualId, Level = player.Level, HeroLvl = player.HeroLevel, HpPercentage = (int)(player.Hp / (float)player.MaxHp * 100), MpPercentage = (int)(player.Mp / (float)player.MaxMp * 100), CurrentHp = player.Hp, CurrentMp = player.Mp, MaxHp = player.MaxHp, MaxMp = player.MaxMp, BuffIds = null }; } public static PflagPacket GeneratePFlag(this PlayerComponentBundle player) { return new PflagPacket { VisualType = VisualType.Player, VisualId = player.VisualId, Flag = player.Shop?.ShopId ?? 0 }; } public static ShopPacket GenerateShop(this PlayerComponentBundle player, RegionType language) { return new ShopPacket { VisualType = VisualType.Player, VisualId = player.VisualId, ShopId = player.Shop?.ShopId ?? 0, MenuType = player.Shop?.MenuType ?? 0, ShopType = player.Shop?.ShopType, Name = player.Shop?.Name[language] }; } public static DirPacket GenerateChangeDir(this PlayerComponentBundle player) { return new DirPacket { VisualType = VisualType.Player, VisualId = player.VisualId, Direction = player.Direction }; } public static MovePacket GenerateMove(this PlayerComponentBundle player) { return player.GenerateMove(null, null); } public static MovePacket GenerateMove(this PlayerComponentBundle player, short? mapX, short? mapY) { return new MovePacket { VisualEntityId = player.VisualId, MapX = mapX ?? player.PositionX, MapY = mapY ?? player.PositionY, Speed = player.Speed, VisualType = VisualType.Player }; } public static PidxSubPacket GenerateSubPidx(this PlayerComponentBundle player) { return player.GenerateSubPidx(false); } public static PidxSubPacket GenerateSubPidx(this PlayerComponentBundle player, bool isMemberOfGroup) { return new PidxSubPacket { IsGrouped = isMemberOfGroup, VisualId = player.VisualId }; } public static PinitSubPacket GenerateSubPinit(this PlayerComponentBundle player, int groupPosition) { return new PinitSubPacket { VisualType = VisualType.Player, VisualId = player.VisualId, GroupPosition = groupPosition, Level = player.Level, Name = player.Name, Gender = player.Gender, Race = player.Race, Morph = player.Morph, HeroLevel = player.HeroLevel }; } public static void LoadExpensions(this PlayerComponentBundle player) { var backpack = player.StaticBonusList.Any(s => s.StaticBonusType == StaticBonusType.BackPack); var backpackticket = player.StaticBonusList.Any(s => s.StaticBonusType == StaticBonusType.InventoryTicketUpgrade); var expension = (byte)((backpack ? 12 : 0) + (backpackticket ? 60 : 0)); player.InventoryService.Expensions[NoscorePocketType.Main] += expension; player.InventoryService.Expensions[NoscorePocketType.Equipment] += expension; player.InventoryService.Expensions[NoscorePocketType.Etc] += expension; } public static ExtsPacket GenerateExts(this PlayerComponentBundle player, IOptions<WorldConfiguration> conf) { return new ExtsPacket { EquipmentExtension = (byte)(player.InventoryService.Expensions[NoscorePocketType.Equipment] + conf.Value.BackpackSize), MainExtension = (byte)(player.InventoryService.Expensions[NoscorePocketType.Main] + conf.Value.BackpackSize), EtcExtension = (byte)(player.InventoryService.Expensions[NoscorePocketType.Etc] + conf.Value.BackpackSize) }; } public static void AddSpPoints(this PlayerComponentBundle player, int spPointToAdd, IOptions<WorldConfiguration> worldConfiguration) { var newValue = player.SpPoint + spPointToAdd; player.SpPoint = newValue > worldConfiguration.Value.MaxSpPoints ? worldConfiguration.Value.MaxSpPoints : newValue; } public static void AddAdditionalSpPoints(this PlayerComponentBundle player, int spPointToAdd, IOptions<WorldConfiguration> worldConfiguration) { var newValue = player.SpAdditionPoint + spPointToAdd; player.SpAdditionPoint = newValue > worldConfiguration.Value.MaxAdditionalSpPoints ? worldConfiguration.Value.MaxAdditionalSpPoints : newValue; } public static void RemoveGold(this PlayerComponentBundle player, long gold) { player.Gold -= gold; } public static TitPacket GenerateTit(this PlayerComponentBundle player) { return new TitPacket { ClassType = (Game18NConstString)Enum.Parse(typeof(Game18NConstString), player.Class.ToString()), Name = player.Name }; } } public static class ClientSessionMailExtensions { public static async Task GenerateMailAsync(this ClientSession session, IEnumerable<MailData> mails) { var playerName = session.Character.Name; foreach (var mail in mails) { if (!mail.MailDto.IsSenderCopy && (mail.ReceiverName == playerName)) { if (mail.ItemInstance != null) { await session.SendPacketAsync(mail.GeneratePost(0)!); } else { await session.SendPacketAsync(mail.GeneratePost(1)!); } } else { if (mail.ItemInstance != null) { await session.SendPacketAsync(mail.GeneratePost(3)!); } else { await session.SendPacketAsync(mail.GeneratePost(2)!); } } } } public static async Task ChangeClassAsync(this ClientSession session, CharacterClassType classType, IOptions<WorldConfiguration> worldConfiguration, IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService, IItemGenerationService itemProvider) { var character = session.Character; var inventoryService = character.InventoryService; var characterId = character.CharacterId; var mapInstance = character.MapInstance; var group = character.Group; if (inventoryService.Any(s => s.Value.Type == NoscorePocketType.Wear)) { await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = characterId, Type = SayColorType.Yellow, Message = Game18NConstString.RemoveEquipment }); return; } character = session.Character; character.JobLevel = 1; character.JobLevelXp = 0; await session.SendPacketAsync(new NpInfoPacket()); await session.SendPacketAsync(new PclearPacket()); if (classType == CharacterClassType.Adventurer) { character = session.Character; var currentHairStyle = character.HairStyle; character.HairStyle = currentHairStyle > HairStyleType.HairStyleB ? 0 : currentHairStyle; } character = session.Character; character.Class = classType; character.Hp = character.MaxHp; character.Mp = character.MaxMp; var itemsToAdd = worldConfiguration.Value.BasicEquipments.TryGetValue(classType.ToString(), out var byOrigin) && byOrigin.TryGetValue(StarterOrigin.CreateAndUpgrade, out var pack) ? pack : new List<BasicEquipment>(); foreach (var itemToAdd in itemsToAdd) { var inv = inventoryService.AddItemToPocket( InventoryItemInstance.Create(itemProvider.Create(itemToAdd.VNum, itemToAdd.Amount), characterId), itemToAdd.NoscorePocketType); if (inv != null) { await session.SendPacketsAsync( inv.Select(invItem => invItem.GeneratePocketChange((PocketType)invItem.Type, invItem.Slot))); } } character = session.Character; var titPacket = character.GenerateTit(); var statPacket = character.GenerateStat(); var eqPacket = character.GenerateEq(); var effPacket8 = character.GenerateEff(8); var condPacket = character.GenerateCond(); var levPacket = character.GenerateLev(experienceService, jobExperienceService, heroExperienceService); var cmodePacket = character.GenerateCMode(); var msgiPacket = new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.ClassChanged }; await session.SendPacketAsync(titPacket); await session.SendPacketAsync(statPacket); await mapInstance.SendPacketAsync(eqPacket); await mapInstance.SendPacketAsync(effPacket8); await session.SendPacketAsync(condPacket); await session.SendPacketAsync(levPacket); await session.SendPacketAsync(cmodePacket); await session.SendPacketAsync(msgiPacket); character = session.Character; character.QuicklistEntries = new List<QuicklistEntryDto> { new() { Id = Guid.NewGuid(), CharacterId = characterId, QuickListIndex = 0, Slot = 9, Type = 1, IconType = 3, IconVNum = 1 } }; character = session.Character; var channelId = session.Channel!.Id; var inPacket = character.GenerateIn(""); var pidxPacket = group!.GeneratePidx(character); var effPacket6 = character.GenerateEff(6); var effPacket198 = character.GenerateEff(198); await mapInstance.SendPacketAsync(inPacket, new EveryoneBut(channelId)); await mapInstance.SendPacketAsync(pidxPacket); await mapInstance.SendPacketAsync(effPacket6); await mapInstance.SendPacketAsync(effPacket198); } } ================================================ FILE: src/NosCore.GameObject/Ecs/Extensions/VisualEntityExtension.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.Ecs.Interfaces; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Visibility; namespace NosCore.GameObject.Ecs.Extensions { public static class VisualEntityExtension { //Pet Monster in packet public static InPacket GenerateIn(this INonPlayableEntity visualEntity) { return new InPacket { VisualType = visualEntity.VisualType, Name = visualEntity is INamedEntity namedEntity ? namedEntity.Name : null, VisualId = visualEntity.VisualId, VNum = visualEntity.VNum == 0 ? string.Empty : visualEntity.VNum.ToString(), PositionX = visualEntity.PositionX, PositionY = visualEntity.PositionY, Direction = visualEntity.Direction, InNonPlayerSubPacket = new InNonPlayerSubPacket { Dialog = visualEntity is NpcComponentBundle bundle ? bundle.Dialog ?? 0 : (short)0, InAliveSubPacket = new InAliveSubPacket { Mp = (int)(visualEntity.Mp / (float)(visualEntity.NpcMonster?.MaxMp ?? 1) * 100), Hp = (int)(visualEntity.Hp / (float)(visualEntity.NpcMonster?.MaxHp ?? 1) * 100) }, IsSitting = visualEntity.IsSitting, SpawnEffect = SpawnEffectType.NoEffect, Unknow1 = 2 } }; } public static SpeakPacket GenerateSpk(this INamedEntity visualEntity, SpeakPacket packet) { return new SpeakPacket { VisualType = visualEntity.VisualType, VisualId = visualEntity.VisualId, SpeakType = packet.SpeakType, EntityName = visualEntity.Name, Message = packet.Message }; } } } ================================================ FILE: src/NosCore.GameObject/Ecs/Interfaces/IAliveEntity.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Arch.Core; using NosCore.GameObject.Services.ShopService; using System.Collections.Concurrent; using System.Threading; namespace NosCore.GameObject.Ecs.Interfaces { public interface IAliveEntity : IVisualEntity { Entity Handle { get; } bool IsSitting { get; set; } byte Speed { get; } byte Size { get; set; } int Mp { get; set; } int Hp { get; set; } short Morph { get; } byte MorphUpgrade { get; } short MorphDesign { get; } byte MorphBonus { get; } bool NoAttack { get; } bool NoMove { get; } bool IsAlive { get; } short MapX { get; } short MapY { get; } int MaxHp { get; } int MaxMp { get; } byte Level { get; set; } byte HeroLevel { get; } short Race { get; } Shop? Shop { get; set; } SemaphoreSlim HitSemaphore { get; } ConcurrentDictionary<Entity, int> HitList { get; } } } ================================================ FILE: src/NosCore.GameObject/Ecs/Interfaces/ICharacterEntity.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.GroupService; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.QuestService; using NosCore.Networking; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Shared.Enumerations; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Threading.Tasks; using MailData = NosCore.GameObject.InterChannelCommunication.Messages.MailData; namespace NosCore.GameObject.Ecs.Interfaces { public interface ICharacterEntity : INamedEntity { bool FriendRequestBlocked { get; } bool UseSp { get; } AuthorityType Authority { get; } short MapId { get; set; } bool IsVehicled { get; } byte? VehicleSpeed { get; } GenderType Gender { get; } HairStyleType HairStyle { get; set; } HairColorType HairColor { get; } CharacterClassType Class { get; set; } ReputationType ReputIcon { get; } DignityType DignityIcon { get; } bool Camouflage { get; } long JobLevelXp { get; set; } long HeroXp { get; set; } byte JobLevel { get; set; } new byte HeroLevel { get; set; } int SpPoint { get; set; } int SpAdditionPoint { get; set; } bool Invisible { get; } IChannel? Channel { get; } bool GroupRequestBlocked { get; } ConcurrentDictionary<long, long> GroupRequestCharacterIds { get; } List<QuicklistEntryDto> QuicklistEntries { get; set; } List<RespawnDto> Respawns { get; set; } ConcurrentDictionary<short, CharacterSkill> Skills { get; } long Gold { get; set; } IInventoryService InventoryService { get; } RegionType AccountLanguage { get; } List<StaticBonusDto> StaticBonusList { get; } List<TitleDto> Titles { get; } bool IsDisconnecting { get; } ScriptDto? Script { get; set; } Guid? CurrentScriptId { get; } ConcurrentDictionary<Guid, CharacterQuest> Quests { get; } short Compliment { get; } long Reput { get; set; } short Dignity { get; } long CharacterId { get; } long BankGold { get; set; } string? Prefix { get; } Task SendPacketAsync(IPacket packetDefinition); Task SendPacketsAsync(IEnumerable<IPacket> packetDefinitions); } } ================================================ FILE: src/NosCore.GameObject/Ecs/Interfaces/INamedEntity.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.GroupService; namespace NosCore.GameObject.Ecs.Interfaces { public interface INamedEntity : IAliveEntity { Group Group { get; set; } string? Name { get; } long LevelXp { get; set; } } } ================================================ FILE: src/NosCore.GameObject/Ecs/Interfaces/INonPlayableEntity.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Data.StaticEntities; using System; namespace NosCore.GameObject.Ecs.Interfaces { public interface INonPlayableEntity : IAliveEntity { bool IsMoving { get; } short Effect { get; } short EffectDelay { get; } bool IsDisabled { get; } NpcMonsterDto NpcMonster { get; set; } Instant LastMove { get; set; } IDisposable? Life { get; set; } new bool IsAlive { get; set; } new byte Speed { get; set; } } } ================================================ FILE: src/NosCore.GameObject/Ecs/Interfaces/IVisualEntity.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.Shared.Enumerations; using System; namespace NosCore.GameObject.Ecs.Interfaces { public interface IVisualEntity { VisualType VisualType { get; } short VNum { get; } long VisualId { get; } byte Direction { get; set; } Guid MapInstanceId { get; } MapInstance MapInstance { get; } short PositionX { get; set; } short PositionY { get; set; } } } ================================================ FILE: src/NosCore.GameObject/Ecs/MapItemComponentBundle.cs ================================================ using NosCore.GameObject.Ecs.Attributes; using NosCore.GameObject.Ecs.Components; namespace NosCore.GameObject.Ecs; [ComponentBundle( typeof(EntityIdentityComponent), typeof(PositionComponent), typeof(MapItemDataComponent) )] public partial struct MapItemComponentBundle { } ================================================ FILE: src/NosCore.GameObject/Ecs/MapWorld.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Reactive.Subjects; using System.Threading; using Arch.Core; using NodaTime; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Components; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.BattleService.Model; using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.GameObject.Services.ShopService; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Ecs; public class MapWorld : IDisposable { public World World { get; } public MapWorld() { World = World.Create(); } public T? TryGetComponent<T>(Entity entity) where T : struct { if (!World.IsAlive(entity)) { return null; } if (World.Has<T>(entity)) { return World.Get<T>(entity); } return null; } public void SetComponent<T>(Entity entity, T component) where T : struct { World.Set(entity, component); } public bool HasComponent<T>(Entity entity) where T : struct { return World.IsAlive(entity) && World.Has<T>(entity); } public void AddComponent<T>(Entity entity, T component) where T : struct { World.Add(entity, component); } public void RemoveComponent<T>(Entity entity) where T : struct { World.Remove<T>(entity); } public Entity CreateMonster( int monsterId, NpcMonsterDto npcMonster, MapInstance mapInstance, short positionX, short positionY, byte direction, short firstX, short firstY, bool isMoving, bool isHostile, bool isDisabled) { var now = SystemClock.Instance.GetCurrentInstant(); var entity = World.Create( new EntityIdentityComponent(monsterId, VisualType.Monster, 0), new HealthComponent(npcMonster.MaxHp, npcMonster.MaxHp, true), new ManaComponent(npcMonster.MaxMp, npcMonster.MaxMp), new PositionComponent(positionX, positionY, direction, mapInstance.MapInstanceId), new VisualComponent(0, 0, 0, 0, false, false, false), new NpcDataComponent(npcMonster.NpcMonsterVNum, npcMonster.Race, npcMonster.Level, npcMonster.HeroLevel, npcMonster.Speed, 10), new SpawnComponent(firstX, firstY, isMoving, isHostile), new EffectComponent(0, 0), new TimingComponent(now, now), new NpcStateComponent(npcMonster, mapInstance, new SemaphoreSlim(1, 1), new ConcurrentDictionary<Entity, int>(), null, null, null, new Dictionary<Type, Subject<RequestData>>(), null, isDisabled), new BuffStateComponent(new ConcurrentDictionary<short, BuffInstance>()), new AggroComponent(VisualType.Object, 0, 0, Instant.MinValue), new SkillCooldownComponent(new ConcurrentDictionary<short, Instant>()) ); return entity; } public Entity CreateNpc( int npcId, NpcMonsterDto npcMonster, MapInstance mapInstance, short positionX, short positionY, byte direction, short firstX, short firstY, bool isMoving, bool isDisabled, short? dialog, short effect, short effectDelay, Shop? shop) { var now = SystemClock.Instance.GetCurrentInstant(); var entity = World.Create( new EntityIdentityComponent(npcId, VisualType.Npc, 0), new HealthComponent(npcMonster.MaxHp, npcMonster.MaxHp, true), new ManaComponent(npcMonster.MaxMp, npcMonster.MaxMp), new PositionComponent(positionX, positionY, direction, mapInstance.MapInstanceId), // NoAttack is strictly a "locked/untargetable" state flag here (the faction // rule in BattleService.CanAttack is what actually protects NPCs from // players — NPCs and players are allies). NPCs default to unlocked so // monsters can land hits on them. new VisualComponent(0, 0, 0, 0, false, false, false), new NpcDataComponent(npcMonster.NpcMonsterVNum, npcMonster.Race, npcMonster.Level, 0, npcMonster.Speed, 10), new SpawnComponent(firstX, firstY, isMoving, false), new EffectComponent(effect, effectDelay), new TimingComponent(now, now), new NpcStateComponent(npcMonster, mapInstance, new SemaphoreSlim(1, 1), new ConcurrentDictionary<Entity, int>(), shop, null, null, new Dictionary<Type, Subject<RequestData>> { [typeof(NpcDialogRequestSubject)] = new() }, dialog, isDisabled), new BuffStateComponent(new ConcurrentDictionary<short, BuffInstance>()), new AggroComponent(VisualType.Object, 0, 0, Instant.MinValue), new SkillCooldownComponent(new ConcurrentDictionary<short, Instant>()) ); return entity; } public Entity CreateMapItem( long visualId, short vNum, short amount, Guid mapInstanceId, short positionX, short positionY, long? ownerId, Instant droppedAt, Guid itemInstanceId, IItemInstance? itemInstance) { var entity = World.Create( new EntityIdentityComponent(visualId, VisualType.Object, 0), new PositionComponent(positionX, positionY, 0, mapInstanceId), new MapItemDataComponent(vNum, amount, ownerId, droppedAt, itemInstanceId, itemInstance) ); return entity; } public Entity CreatePlayer( int visaulId, long characterId, long accountId, string name, Guid mapInstanceId, short positionX, short positionY, byte direction, int hp, int maxHp, int mp, int maxMp, byte level, long levelXp, byte jobLevel, long jobLevelXp, byte heroLevel, long heroLevelXp, long gold, long reputation, short dignity, short compliment, GenderType gender, HairStyleType hairStyle, HairColorType hairColor, CharacterClassType characterClass, byte face, byte speed, AuthorityType authority, bool isGm, int serverId) { var now = SystemClock.Instance.GetCurrentInstant(); var entity = World.Create( new EntityIdentityComponent(visaulId, VisualType.Player, characterId), new HealthComponent(hp, maxHp, true), new ManaComponent(mp, maxMp), new PositionComponent(positionX, positionY, direction, mapInstanceId), new VisualComponent(0, 0, 0, 0, false, false, false), new AppearanceComponent(gender, hairStyle, hairColor, characterClass, face, 100), new ExperienceComponent(level, levelXp, jobLevel, jobLevelXp, heroLevel, heroLevelXp), new GoldComponent(gold), new ReputationComponent(reputation, dignity, compliment), new SpComponent(0, 0, 0), new NameComponent(name), new CombatComponent(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, new SemaphoreSlim(1, 1), new ConcurrentDictionary<Entity, int>()), new BuffStateComponent(new ConcurrentDictionary<short, BuffInstance>()), new PlayerComponent(accountId, characterId, isGm, serverId), new PlayerFlagsComponent(false, false, false, false, false, false, false, false, false, false, false, authority, false, false, false, false), new TimingComponent(now, now), new SpeedComponent(speed) ); return entity; } public Entity ClonePlayer( EntityIdentityComponent identity, HealthComponent health, ManaComponent mana, PositionComponent position, VisualComponent visual, AppearanceComponent appearance, ExperienceComponent experience, GoldComponent gold, ReputationComponent reputation, SpComponent sp, NameComponent name, CombatComponent combat, BuffStateComponent buffs, PlayerComponent player, PlayerFlagsComponent playerFlags, TimingComponent timing, SpeedComponent speed, PlayerStateComponent state, PlayerNetworkComponent network, PlayerContextComponent context, PlayerInventoryComponent inventory, PlayerSocialComponent social, PlayerRequestsComponent requests) { return World.Create(identity, health, mana, position, visual, appearance, experience, gold, reputation, sp, name, combat, buffs, player, playerFlags, timing, speed, state, network, context, inventory, social, requests); } public void DestroyEntity(Entity entity) { World.Destroy(entity); } public void Dispose() { World.Dispose(); GC.SuppressFinalize(this); } } ================================================ FILE: src/NosCore.GameObject/Ecs/MonsterComponentBundle.cs ================================================ using NosCore.GameObject.Ecs.Attributes; using NosCore.GameObject.Ecs.Components; using NosCore.GameObject.Ecs.Interfaces; namespace NosCore.GameObject.Ecs; [ComponentBundle( typeof(EntityIdentityComponent), typeof(HealthComponent), typeof(ManaComponent), typeof(PositionComponent), typeof(VisualComponent), typeof(NpcDataComponent), typeof(SpawnComponent), typeof(EffectComponent), typeof(TimingComponent), typeof(NpcStateComponent), typeof(BuffStateComponent), typeof(AggroComponent), typeof(SkillCooldownComponent) )] public readonly partial struct MonsterComponentBundle : INonPlayableEntity { public Arch.Core.Entity Handle => Entity; public short MapX => FirstX; public short MapY => FirstY; } ================================================ FILE: src/NosCore.GameObject/Ecs/NpcComponentBundle.cs ================================================ using NosCore.GameObject.Ecs.Attributes; using NosCore.GameObject.Ecs.Components; using NosCore.GameObject.Ecs.Interfaces; namespace NosCore.GameObject.Ecs; [ComponentBundle( typeof(EntityIdentityComponent), typeof(HealthComponent), typeof(ManaComponent), typeof(PositionComponent), typeof(VisualComponent), typeof(NpcDataComponent), typeof(SpawnComponent), typeof(EffectComponent), typeof(TimingComponent), typeof(NpcStateComponent), typeof(BuffStateComponent), typeof(AggroComponent), typeof(SkillCooldownComponent) )] public readonly partial struct NpcComponentBundle : INonPlayableEntity { public Arch.Core.Entity Handle => Entity; public short MapX => FirstX; public short MapY => FirstY; } ================================================ FILE: src/NosCore.GameObject/Ecs/PlayerComponentBundle.cs ================================================ using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Ecs.Attributes; using NosCore.GameObject.Ecs.Components; using NosCore.Packets.Interfaces; using NosCore.Shared.Enumerations; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.Ecs; [ComponentBundle( typeof(EntityIdentityComponent), typeof(HealthComponent), typeof(ManaComponent), typeof(PositionComponent), typeof(VisualComponent), typeof(AppearanceComponent), typeof(ExperienceComponent), typeof(GoldComponent), typeof(ReputationComponent), typeof(SpComponent), typeof(NameComponent), typeof(CombatComponent), typeof(BuffStateComponent), typeof(PlayerComponent), typeof(PlayerFlagsComponent), typeof(TimingComponent), typeof(SpeedComponent), typeof(PlayerStateComponent), typeof(PlayerNetworkComponent), typeof(PlayerContextComponent), typeof(PlayerInventoryComponent), typeof(PlayerSocialComponent), typeof(PlayerRequestsComponent) )] public readonly partial struct PlayerComponentBundle : ICharacterEntity { public Arch.Core.Entity Handle => Entity; public long CharacterId => PlayerCharacterId; public bool InExchangeOrShop => InShop || InExchange; public long HeroXp { get => HeroLevelXp; set => HeroLevelXp = value; } public long Reput { get => Reputation; set => Reputation = value; } public RegionType AccountLanguage => Account.Language; // IVisualEntity - VisualId and VisualType are generated public short VNum => 0; public short Race => (short)Class; // INamedEntity - LevelXp is generated // ICharacterEntity byte? ICharacterEntity.VehicleSpeed => VehicleSpeed; public short MapId { get => CharacterDto.MapId; set => CharacterDto.MapId = value; } public short MapX { get => CharacterDto.MapX; set => CharacterDto.MapX = value; } public short MapY { get => CharacterDto.MapY; set => CharacterDto.MapY = value; } public byte Slot => CharacterDto.Slot; public Guid? CurrentScriptId => Script?.Id; public long BankGold { get => Account.BankMoney; set => Account.BankMoney = value; } public string? Prefix => null; ReputationType ICharacterEntity.ReputIcon => ReputationLevels.FromReputation(Reputation); DignityType ICharacterEntity.DignityIcon => DignityLevels.FromDignity(Dignity); public int ReputIconValue => (int)ReputationLevels.FromReputation(Reputation); public Task SendPacketAsync(IPacket? packet) { return Sender?.SendPacketAsync(packet) ?? Task.CompletedTask; } public Task SendPacketsAsync(IEnumerable<IPacket?> packets) { return Sender?.SendPacketsAsync(packets) ?? Task.CompletedTask; } } ================================================ FILE: src/NosCore.GameObject/Ecs/ReputationLevels.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Ecs; public static class ReputationLevels { public static ReputationType FromReputation(long reputation) => reputation switch { >= 5_000_001 => ReputationType.RedElite, >= 4_950_001 => ReputationType.BlueElite, >= 2_500_001 => ReputationType.GreenElite, >= 2_450_001 => ReputationType.RedNos, >= 500_001 => ReputationType.BlueNos, >= 495_001 => ReputationType.GreenNos, >= 245_001 => ReputationType.BlueMaster, >= 95_001 => ReputationType.GreenLeader, >= 45_001 => ReputationType.BlueExpert, >= 25_001 => ReputationType.GreenExpert, >= 19_001 => ReputationType.RedSoldier, >= 9_501 => ReputationType.BlueSoldier, >= 5_001 => ReputationType.GreenSoldier, >= 4_901 => ReputationType.RedExperienced, >= 2_251 => ReputationType.BlueExperienced, >= 2_001 => ReputationType.GreenExperienced, >= 501 => ReputationType.BlueTrainee, >= 251 => ReputationType.GreenTrainee, >= 201 => ReputationType.RedBeginner, _ => ReputationType.GreenBeginner }; } ================================================ FILE: src/NosCore.GameObject/Ecs/Systems/MovementSystem.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using Arch.Core; using NodaTime; using NosCore.GameObject.Ecs.Components; using NosCore.PathFinder.Interfaces; using NosCore.Shared.Helpers; namespace NosCore.GameObject.Ecs.Systems; public class MovementSystem { private readonly IClock _clock; private readonly IHeuristic _distanceCalculator; private readonly QueryDescription _movableQuery; public MovementSystem(IClock clock, IHeuristic distanceCalculator) { _clock = clock; _distanceCalculator = distanceCalculator; _movableQuery = new QueryDescription() .WithAll<PositionComponent, NpcDataComponent, SpawnComponent, TimingComponent, HealthComponent>(); } public void Update(MapWorld world, Map.Map map, Action<Entity, MoveData> onMove) { var now = _clock.GetCurrentInstant(); world.World.Query(in _movableQuery, (Entity entity, ref PositionComponent position, ref NpcDataComponent npcData, ref SpawnComponent spawn, ref TimingComponent timing, ref HealthComponent health) => { if (!health.IsAlive || !spawn.IsMoving || npcData.Speed <= 0) { return; } var timeSinceLastMove = (now - timing.LastMove).TotalMilliseconds; if (timeSinceLastMove <= RandomHelper.Instance.RandomNumber(400, 3200)) { return; } var mapX = position.PositionX; var mapY = position.PositionY; if (!map.GetFreePosition(ref mapX, ref mapY, (byte)RandomHelper.Instance.RandomNumber(0, 3), (byte)RandomHelper.Instance.RandomNumber(0, 3))) { return; } var distance = (int)_distanceCalculator.GetDistance( (position.PositionX, position.PositionY), (mapX, mapY)); var moveDuration = 1000d * distance / (2 * npcData.Speed); timing = timing with { LastMove = now.Plus(Duration.FromMilliseconds(moveDuration)) }; position = position with { PositionX = mapX, PositionY = mapY }; onMove(entity, new MoveData(mapX, mapY, npcData.Speed)); }); } } public readonly record struct MoveData(short MapX, short MapY, byte Speed); ================================================ FILE: src/NosCore.GameObject/Ecs/Systems/VisibilitySystem.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using Arch.Core; using NosCore.GameObject.Ecs.Components; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Ecs.Systems; public class VisibilitySystem { private readonly QueryDescription _npcDataQuery; private readonly QueryDescription _itemsQuery; private readonly QueryDescription _positionQuery; public VisibilitySystem() { _npcDataQuery = new QueryDescription() .WithAll<EntityIdentityComponent, PositionComponent, HealthComponent, NpcDataComponent, VisualComponent, SpawnComponent>(); _itemsQuery = new QueryDescription() .WithAll<EntityIdentityComponent, PositionComponent, MapItemDataComponent>(); _positionQuery = new QueryDescription().WithAll<PositionComponent>(); } public IEnumerable<Entity> GetMonsterEntities(MapWorld world) { var monsters = new List<Entity>(); world.World.Query(in _npcDataQuery, (Entity entity) => { var identity = world.World.Get<EntityIdentityComponent>(entity); if (identity.VisualType == VisualType.Monster) { monsters.Add(entity); } }); return monsters; } public IEnumerable<Entity> GetNpcEntities(MapWorld world) { var npcs = new List<Entity>(); world.World.Query(in _npcDataQuery, (Entity entity) => { var identity = world.World.Get<EntityIdentityComponent>(entity); if (identity.VisualType == VisualType.Npc) { npcs.Add(entity); } }); return npcs; } public IEnumerable<Entity> GetMapItemEntities(MapWorld world) { var items = new List<Entity>(); world.World.Query(in _itemsQuery, (Entity entity) => { items.Add(entity); }); return items; } public IEnumerable<Entity> GetEntitiesInRange(MapWorld world, short centerX, short centerY, int range) { var entities = new List<Entity>(); world.World.Query(in _positionQuery, (Entity entity, ref PositionComponent position) => { var dx = Math.Abs(position.PositionX - centerX); var dy = Math.Abs(position.PositionY - centerY); if (dx <= range && dy <= range) { entities.Add(entity); } }); return entities; } } ================================================ FILE: src/NosCore.GameObject/Hosting/Modules/NetworkingModule.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using System.Threading.Tasks; using Autofac; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.CharacterService; using NosCore.GameObject.Services.PacketHandlerService; using NosCore.Networking; using NosCore.Networking.Encoding; using NosCore.Networking.Encoding.Filter; using NosCore.Networking.Resource; using NosCore.Networking.SessionRef; using NosCore.Shared.Configuration; using NosCore.Shared.I18N; namespace NosCore.GameObject.Hosting.Modules; public sealed class NetworkingModule : Module { protected override void Load(ContainerBuilder builder) { builder.RegisterType<ClientSession>().AsSelf().AsImplementedInterfaces(); builder.RegisterType<SessionRefHolder>().AsImplementedInterfaces().SingleInstance(); builder.RegisterType<SessionRegistry>().As<ISessionRegistry>().SingleInstance(); builder.RegisterType<PacketBroadcaster>().As<IPacketBroadcaster>().SingleInstance(); builder.RegisterType<PacketHandlerRegistry>().As<IPacketHandlerRegistry>().SingleInstance(); builder.RegisterType<CharacterInitializationService>().As<ICharacterInitializationService>().SingleInstance(); builder.Register(c => { var lifetimeScope = c.Resolve<ILifetimeScope>(); var logger = c.Resolve<ILogger<PipelineFactory>>(); return new PipelineFactory( c.Resolve<IDecoder>(), c.Resolve<ISessionRefHolder>(), c.Resolve<IEnumerable<IRequestFilter>>(), c.Resolve<IPipelineConfiguration>(), () => lifetimeScope.Resolve<ClientSession>(), (package, client) => _ = DispatchPacketAsync((ClientSession)client, package, logger), client => _ = DispatchDisconnectAsync((ClientSession)client, logger), logger, c.Resolve<ILogLanguageLocalizer<LogLanguageKey>>() ); }).SingleInstance(); builder.Register(c => new NetworkManager( c.Resolve<IOptions<ServerConfiguration>>(), c.Resolve<PipelineFactory>(), c.Resolve<ILogger<NetworkManager>>(), c.Resolve<ILogLanguageLocalizer<LogLanguageKey>>() )); } private static async Task DispatchPacketAsync(ClientSession session, NosPackageInfo package, ILogger logger) { try { await session.HandlePacketAsync(package); } catch (Exception ex) { logger.LogError(ex, "Unhandled exception while processing packet for session {SessionId}", session.SessionId); } } private static async Task DispatchDisconnectAsync(ClientSession session, ILogger logger) { try { await session.OnDisconnectedAsync(); } catch (Exception ex) { logger.LogError(ex, "Unhandled exception while disconnecting session {SessionId}", session.SessionId); } } } ================================================ FILE: src/NosCore.GameObject/Infastructure/IPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.Interfaces; using System.Threading.Tasks; namespace NosCore.GameObject.Infastructure { public interface IPacketHandler { Task ExecuteAsync(IPacket packet, ClientSession clientSession); } public interface ILoginPacketHandler { } public interface IWorldPacketHandler { } public interface IPacketHandler<in TPacket> : IPacketHandler where TPacket : IPacket { Task ExecuteAsync(TPacket packet, ClientSession clientSession); } public abstract class PacketHandler<TPacket> : IPacketHandler<TPacket> where TPacket : IPacket { public abstract Task ExecuteAsync(TPacket packet, ClientSession clientSession); public Task ExecuteAsync(IPacket packet, ClientSession clientSession) { return ExecuteAsync((TPacket)packet, clientSession); } } } ================================================ FILE: src/NosCore.GameObject/Infastructure/ISingletonService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.GameObject.Infastructure; // Marker interface: classes that implement this are registered as Singleton by the // name-convention scan in WolverineDependencyRegistrar. Everything else picked up // by the *Service / *Queue / *Catalog / *Ai naming convention stays Transient. // // Use sparingly — only for things that genuinely own shared state (channel // dictionaries, lookup caches, per-entity state maps). Stateless helpers stay // transient so a stray mutation doesn't leak across requests. public interface ISingletonService { } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/HubConnectionFactory.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Tokens; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.Shared.Authentication; using NosCore.Shared.Configuration; using NosCore.Shared.Enumerations; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication; public class HubConnectionFactory(IOptions<ServerConfiguration> serverConfiguration, IOptions<WebApiConfiguration> configuration, IHasher hasher) { public HubConnection Create(string name) { var claims = new ClaimsIdentity(new[] { new Claim(ClaimTypes.NameIdentifier, serverConfiguration.Value.ToString()), new Claim(ClaimTypes.Role, nameof(AuthorityType.Root)) }); var password = hasher.Hash(configuration.Value.Password!, configuration.Value.Salt); var keyByteArray = Encoding.Default.GetBytes(password); var signinKey = new SymmetricSecurityKey(keyByteArray); var handler = new JwtSecurityTokenHandler(); var securityToken = handler.CreateToken(new SecurityTokenDescriptor { Subject = claims, Issuer = "Issuer", Audience = "Audience", SigningCredentials = new SigningCredentials(signinKey, SecurityAlgorithms.HmacSha256Signature) }); return new HubConnectionBuilder() .WithAutomaticReconnect() .WithUrl($"{configuration.Value}/{name}", options => { options.AccessTokenProvider = () => Task.FromResult((string?)handler.WriteToken(securityToken)); }) .AddJsonProtocol(options => { options.PayloadSerializerOptions.Converters.Add(new PolymorphicJsonConverter<IMessage>()); }) .Build(); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/AuthHub/AuthHub.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.SignalR; using NosCore.GameObject.Services.AuthService; using System; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub { [Authorize] public class AuthHub : Hub, IAuthHub { private readonly IAuthCodeService _authCodeService; public AuthHub(IAuthCodeService authCodeService) { _authCodeService = authCodeService; } public Task<string?> GetAwaitingConnectionAsync(string? id, string? token, int sessionId) { if (token != "thisisgfmode") { if (token == null || token == "NONE_SESSION_TICKET") { return Task.FromResult<string?>(null); } var sessionGuid = HexStringToString(token); var username = _authCodeService.GetAccountByAuthCode(sessionGuid); if (username == null) { return Task.FromResult<string?>(null); } _authCodeService.MarkReadyForAuth(username, sessionId); return Task.FromResult<string?>(username); } if (id != null && _authCodeService.IsReadyForAuth(id, sessionId)) { return Task.FromResult<string?>("true"); } return Task.FromResult<string?>("false"); } private static string HexStringToString(string hexString) { // Older clients hex-encoded each ASCII char of the auth code (36 // GUID chars → 72 hex chars); modern builds hand the raw GUID // string straight through. Detect the GUID form via the dashes // so Convert.ToByte doesn't choke on them. if (Guid.TryParse(hexString, out _)) { return hexString; } var bb = Enumerable.Range(0, hexString.Length) .Where(x => x % 2 == 0) .Select(x => Convert.ToByte(hexString.Substring(x, 2), 16)) .ToArray(); return Encoding.UTF8.GetString(bb); } public Task SetAwaitingConnectionAsync(long sessionId, string accountName) { _authCodeService.MarkReadyForAuth(accountName, sessionId); return Task.CompletedTask; } public Task StoreAuthCodeAsync(string authCode, string accountName) { _authCodeService.StoreAuthCode(authCode, accountName); return Task.CompletedTask; } public Task RegisterSessionIpAsync(string accountName, string ipAddress) { _authCodeService.RegisterSessionIp(accountName, ipAddress); return Task.CompletedTask; } public Task UnregisterSessionIpAsync(string accountName) { _authCodeService.UnregisterSessionIp(accountName); return Task.CompletedTask; } public Task<string?> GetSessionIpAsync(string accountName) { return Task.FromResult(_authCodeService.GetSessionIp(accountName)); } } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/AuthHub/AuthHubClient.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.AspNetCore.SignalR.Client; using System; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub { public class AuthHubClient(HubConnectionFactory hubConnectionFactory) : IAuthHub, IAsyncDisposable { private readonly HubConnection _hubConnection = hubConnectionFactory.Create(nameof(AuthHub)); public ValueTask DisposeAsync() => _hubConnection.DisposeAsync(); public async Task<string?> GetAwaitingConnectionAsync(string? name, string? packetPassword, int clientSessionSessionId) { await _hubConnection.StartAsync(); try { return await _hubConnection.InvokeAsync<string?>(nameof(GetAwaitingConnectionAsync), name, packetPassword, clientSessionSessionId); } finally { await _hubConnection.StopAsync(); } } public async Task SetAwaitingConnectionAsync(long sessionId, string accountName) { await _hubConnection.StartAsync(); try { await _hubConnection.InvokeAsync(nameof(SetAwaitingConnectionAsync), sessionId, accountName); } finally { await _hubConnection.StopAsync(); } } public async Task StoreAuthCodeAsync(string authCode, string accountName) { await _hubConnection.StartAsync(); try { await _hubConnection.InvokeAsync(nameof(StoreAuthCodeAsync), authCode, accountName); } finally { await _hubConnection.StopAsync(); } } public async Task RegisterSessionIpAsync(string accountName, string ipAddress) { await _hubConnection.StartAsync(); try { await _hubConnection.InvokeAsync(nameof(RegisterSessionIpAsync), accountName, ipAddress); } finally { await _hubConnection.StopAsync(); } } public async Task UnregisterSessionIpAsync(string accountName) { await _hubConnection.StartAsync(); try { await _hubConnection.InvokeAsync(nameof(UnregisterSessionIpAsync), accountName); } finally { await _hubConnection.StopAsync(); } } public async Task<string?> GetSessionIpAsync(string accountName) { await _hubConnection.StartAsync(); try { return await _hubConnection.InvokeAsync<string?>(nameof(GetSessionIpAsync), accountName); } finally { await _hubConnection.StopAsync(); } } } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/AuthHub/IAuthHub.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; public interface IAuthHub { Task<string?> GetAwaitingConnectionAsync(string? name, string? packetPassword, int clientSessionSessionId); Task SetAwaitingConnectionAsync(long sessionId, string accountName); /// <summary> /// Push an auth code issued by the WebApi into the shared auth-code /// store on the MasterServer so every other process (LoginServer /// first) can validate it via <see cref="GetAwaitingConnectionAsync"/>. /// </summary> Task StoreAuthCodeAsync(string authCode, string accountName); Task RegisterSessionIpAsync(string accountName, string ipAddress); Task UnregisterSessionIpAsync(string accountName); Task<string?> GetSessionIpAsync(string accountName); } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/BaseHubClient.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Extensions.Logging; using Polly; using Polly.Retry; using System; using System.Threading; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs; public abstract class BaseHubClient : IAsyncDisposable { private readonly HubConnection _hubConnection; private readonly SemaphoreSlim _connectionLock = new(1, 1); private readonly ILogger _logger; private readonly AsyncRetryPolicy _retryPolicy; private bool _isStarted; protected BaseHubClient(HubConnectionFactory hubConnectionFactory, string hubName, ILogger logger) { _logger = logger; _retryPolicy = Policy .Handle<Exception>() .WaitAndRetryAsync( 3, attempt => TimeSpan.FromSeconds(Math.Pow(2, attempt)), (exception, timeSpan, retryCount, _) => { _logger.LogWarning(exception, "Hub call failed. Retry {RetryCount} in {TimeSpan}", retryCount, timeSpan); }); _hubConnection = hubConnectionFactory.Create(hubName); _hubConnection.Reconnecting += error => { _logger.LogWarning("Hub {HubName} reconnecting...", hubName); return Task.CompletedTask; }; _hubConnection.Reconnected += connectionId => { _logger.LogInformation("Hub {HubName} reconnected", hubName); return Task.CompletedTask; }; _hubConnection.Closed += error => { _isStarted = false; _logger.LogWarning("Hub {HubName} connection closed", hubName); return Task.CompletedTask; }; } protected async Task EnsureConnectedAsync() { if (_hubConnection.State == HubConnectionState.Connected) { return; } await _connectionLock.WaitAsync(); try { if (!_isStarted || _hubConnection.State == HubConnectionState.Disconnected) { await _hubConnection.StartAsync(); _isStarted = true; } } finally { _connectionLock.Release(); } } protected async Task<T> InvokeAsync<T>(string methodName, params object?[] args) { return await _retryPolicy.ExecuteAsync(async () => { await EnsureConnectedAsync(); return await _hubConnection.InvokeCoreAsync<T>(methodName, args); }); } protected async Task InvokeAsync(string methodName, params object?[] args) { await _retryPolicy.ExecuteAsync(async () => { await EnsureConnectedAsync(); await _hubConnection.InvokeCoreAsync(methodName, args); }); } public async ValueTask DisposeAsync() { await _connectionLock.WaitAsync(); try { if (_hubConnection.State != HubConnectionState.Disconnected) { await _hubConnection.StopAsync(); _isStarted = false; } } finally { _connectionLock.Release(); } await _hubConnection.DisposeAsync(); _connectionLock.Dispose(); GC.SuppressFinalize(this); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/BazaarHub/BazaarHub.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.AspNetCore.SignalR; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.Services.BazaarService; using NosCore.Packets.Enumerations; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub { public class BazaarHub(IBazaarService bazaarService) : Hub, IBazaarHub { public Task<List<BazaarLink>> GetBazaar(long id, byte? index, byte? pageSize, BazaarListType? typeFilter, byte? subTypeFilter, byte? levelFilter, byte? rareFilter, byte? upgradeFilter, long? sellerFilter) => Task.FromResult(bazaarService.GetBazaar(id, index, pageSize, typeFilter, subTypeFilter, levelFilter, rareFilter, upgradeFilter, sellerFilter)); public Task<bool> DeleteBazaarAsync(long id, short count, string requestCharacterName, long? requestCharacterId = null) => bazaarService.DeleteBazaarAsync(id, count, requestCharacterName, requestCharacterId); public Task<LanguageKey> AddBazaarAsync(BazaarRequest bazaarRequest) => bazaarService.AddBazaarAsync(bazaarRequest.ItemInstanceId, bazaarRequest.CharacterId, bazaarRequest.CharacterName, bazaarRequest.HasMedal, bazaarRequest.Price, bazaarRequest.IsPackage, bazaarRequest.Duration, bazaarRequest.Amount); public Task<BazaarLink?> ModifyBazaarAsync(long id, Json.Patch.JsonPatch bzMod) => bazaarService.ModifyBazaarAsync(id, bzMod); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/BazaarHub/BazaarHubClient.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.Packets.Enumerations; using Microsoft.Extensions.Logging; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub { public class BazaarHubClient(HubConnectionFactory hubConnectionFactory, ILogger<BazaarHubClient> logger) : BaseHubClient(hubConnectionFactory, nameof(BazaarHub), logger), IBazaarHub { public Task<List<BazaarLink>> GetBazaar(long id, byte? index, byte? pageSize, BazaarListType? typeFilter, byte? subTypeFilter, byte? levelFilter, byte? rareFilter, byte? upgradeFilter, long? sellerFilter) => InvokeAsync<List<BazaarLink>>(nameof(GetBazaar), id, index, pageSize, typeFilter, subTypeFilter, levelFilter, rareFilter, upgradeFilter, sellerFilter); public Task<bool> DeleteBazaarAsync(long id, short count, string requestCharacterName, long? requestCharacterId = null) => InvokeAsync<bool>(nameof(DeleteBazaarAsync), id, count, requestCharacterName, requestCharacterId); public Task<LanguageKey> AddBazaarAsync(BazaarRequest bazaarRequest) => InvokeAsync<LanguageKey>(nameof(AddBazaarAsync), bazaarRequest); public Task<BazaarLink?> ModifyBazaarAsync(long id, Json.Patch.JsonPatch bzMod) => InvokeAsync<BazaarLink?>(nameof(ModifyBazaarAsync), id, bzMod); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/BazaarHub/IBazaarHub.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.Packets.Enumerations; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub; public interface IBazaarHub { Task<List<BazaarLink>> GetBazaar(long id, byte? index, byte? pageSize, BazaarListType? typeFilter, byte? subTypeFilter, byte? levelFilter, byte? rareFilter, byte? upgradeFilter, long? sellerFilter); Task<bool> DeleteBazaarAsync(long id, short count, string requestCharacterName, long? requestCharacterId = null); Task<LanguageKey> AddBazaarAsync(BazaarRequest bazaarRequest); Task<BazaarLink?> ModifyBazaarAsync(long id, Json.Patch.JsonPatch bzMod); } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/BlacklistHub/BlacklistHub.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.AspNetCore.SignalR; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.Services.BlackListService; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub { public class BlacklistHub(IBlacklistService blacklistService) : Hub, IBlacklistHub { public Task<LanguageKey> AddBlacklistAsync(BlacklistRequest blacklistRequest) => blacklistService.BlacklistPlayerAsync(blacklistRequest.CharacterId, blacklistRequest.BlInsPacket!.CharacterId); public Task<List<CharacterRelationStatus>> GetBlacklistedAsync(long id) => blacklistService.GetBlacklistedListAsync(id); public async Task<bool> DeleteAsync(Guid id) => await blacklistService.UnblacklistAsync(id); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/BlacklistHub/BlacklistHubClient.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub { public class BlacklistHubClient(HubConnectionFactory hubConnectionFactory, ILogger<BlacklistHubClient> logger) : BaseHubClient(hubConnectionFactory, nameof(BlacklistHub), logger), IBlacklistHub { public Task<LanguageKey> AddBlacklistAsync(BlacklistRequest blacklistRequest) => InvokeAsync<LanguageKey>(nameof(AddBlacklistAsync), blacklistRequest); public Task<List<CharacterRelationStatus>> GetBlacklistedAsync(long id) => InvokeAsync<List<CharacterRelationStatus>>(nameof(GetBlacklistedAsync), id); public Task<bool> DeleteAsync(Guid id) => InvokeAsync<bool>(nameof(DeleteAsync), id); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/BlacklistHub/IBlacklistHub.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; public interface IBlacklistHub { Task<LanguageKey> AddBlacklistAsync(BlacklistRequest blacklistRequest); Task<List<CharacterRelationStatus>> GetBlacklistedAsync(long id); Task<bool> DeleteAsync(Guid id); } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/ChannelHub/ChannelHub.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.Logging; using NosCore.Core; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.Shared.I18N; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub { public class ChannelHub(ILogger<PubSubHub> logger, MasterClientList masterClientList, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : Hub, IChannelHub { public override async Task OnDisconnectedAsync(Exception? exception) { var data = masterClientList.Channels.TryGetValue(Context.UserIdentifier ?? throw new InvalidOperationException(), out var channel) ? channel : null; if (data != null) { logger.LogDebug(logLanguage[LogLanguageKey.CONNECTION_LOST], data.Id.ToString(CultureInfo.CurrentCulture), data.Name); masterClientList.Channels.Remove(Context.UserIdentifier ?? throw new InvalidOperationException(), out _); masterClientList.ConnectedAccounts.Remove(Context.UserIdentifier ?? throw new InvalidOperationException(), out _); await Groups.RemoveFromGroupAsync(Context.UserIdentifier ?? throw new InvalidOperationException(), data.Type.ToString()); } await base.OnDisconnectedAsync(exception); } public Task Bind(Channel data) { var id = ++masterClientList.ConnectionCounter; logger.LogDebug(logLanguage[LogLanguageKey.AUTHENTICATED_SUCCESS], id.ToString(CultureInfo.CurrentCulture), data.ClientName); masterClientList.ConnectedAccounts.TryAdd(Context.UserIdentifier ?? throw new InvalidOperationException(), new ConcurrentDictionary<long, Subscriber>()); var serv = new ChannelInfo { Name = data.ClientName, Host = data.Host, Port = data.Port, DisplayPort = (ushort?)data.DisplayPort, DisplayHost = data.DisplayHost, IsMaintenance = data.StartInMaintenance, Id = id, ConnectedAccountLimit = data.ConnectedAccountLimit, Type = data.ClientType, }; masterClientList.Channels.AddOrUpdate(Context.UserIdentifier ?? throw new InvalidOperationException(), serv, (_, _) => serv); return Task.CompletedTask; } public Task<List<ChannelInfo>> GetCommunicationChannels() { return Task.FromResult(masterClientList.Channels.Values.ToList()); } public Task<bool> Ping() => Task.FromResult(true); public Task SetMaintenance(bool isGlobal, bool value) { if (isGlobal) { foreach (var channel in masterClientList.Channels) { channel.Value.IsMaintenance = value; } return Task.CompletedTask; } masterClientList.Channels[Context.UserIdentifier ?? throw new InvalidOperationException()].IsMaintenance = value; return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/ChannelHub/ChannelHubClient.cs ================================================ using Microsoft.AspNetCore.SignalR.Client; using NosCore.Core; using NosCore.Data.Enumerations.I18N; using NosCore.Shared.I18N; using Polly; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub { public class ChannelHubClient(HubConnectionFactory hubConnectionFactory, ILogger<ChannelHubClient> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : IChannelHub { private readonly HubConnection _hubConnection = hubConnectionFactory.Create(nameof(ChannelHub)); public async Task Bind(Channel data) { await _hubConnection.StartAsync(); await _hubConnection.InvokeAsync(nameof(Bind), data); logger.LogDebug(logLanguage[LogLanguageKey.REGISTRED_ON_MASTER]); await Policy .HandleResult<bool>(ping => ping) .WaitAndRetryForeverAsync(retryAttempt => TimeSpan.FromSeconds(1), (_, __, timeSpan) => logger.LogTrace( logLanguage[LogLanguageKey.MASTER_SERVER_PING]) ).ExecuteAsync(Ping); logger.LogError( logLanguage[LogLanguageKey.MASTER_SERVER_PING_FAILED]); Environment.Exit(0); } public Task<List<ChannelInfo>> GetCommunicationChannels() { return _hubConnection.InvokeAsync<List<ChannelInfo>>(nameof(GetCommunicationChannels)); } public Task<bool> Ping() { return _hubConnection.InvokeAsync<bool>(nameof(Ping)); } public Task SetMaintenance(bool isGlobal, bool value) { return _hubConnection.InvokeAsync(nameof(SetMaintenance), isGlobal, value); } } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/ChannelHub/IChannelHub.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Core; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; public interface IChannelHub { Task Bind(Channel data); Task<List<ChannelInfo>> GetCommunicationChannels(); Task SetMaintenance(bool isGlobal, bool value); Task<bool> Ping(); } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/FriendHub/FriendHub.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.AspNetCore.SignalR; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.Services.FriendService; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub { public class FriendHub(IFriendService friendService) : Hub, IFriendHub { public Task<LanguageKey> AddFriendAsync(FriendShipRequest friendPacket) => friendService.AddFriendAsync(friendPacket.CharacterId, friendPacket.FinsPacket!.CharacterId, friendPacket.FinsPacket.Type); public Task<List<CharacterRelationStatus>> GetFriendsAsync(long id) => friendService.GetFriendsAsync(id); public async Task<bool> DeleteAsync(Guid id) => await friendService.DeleteAsync(id); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/FriendHub/FriendHubClient.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub { public class FriendHubClient(HubConnectionFactory hubConnectionFactory, ILogger<FriendHubClient> logger) : BaseHubClient(hubConnectionFactory, nameof(FriendHub), logger), IFriendHub { public Task<LanguageKey> AddFriendAsync(FriendShipRequest friendPacket) => InvokeAsync<LanguageKey>(nameof(AddFriendAsync), friendPacket); public Task<List<CharacterRelationStatus>> GetFriendsAsync(long id) => InvokeAsync<List<CharacterRelationStatus>>(nameof(GetFriendsAsync), id); public Task<bool> DeleteAsync(Guid id) => InvokeAsync<bool>(nameof(DeleteAsync), id); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/FriendHub/IFriendHub.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; public interface IFriendHub { Task<LanguageKey> AddFriendAsync(FriendShipRequest friendPacket); Task<List<CharacterRelationStatus>> GetFriendsAsync(long id); Task<bool> DeleteAsync(Guid id); } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/MailHub/IMailHub.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Json.Patch; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Messages; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.MailHub; public interface IMailHub { Task<List<MailData>> GetMails(long id, long characterId, bool senderCopy); Task<bool> DeleteMailAsync(long id, long characterId, bool senderCopy); Task<MailData?> ViewMailAsync(long id, JsonPatch mailData); Task<bool> SendMailAsync(MailRequest mail); } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/MailHub/MailHub.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Json.Patch; using Microsoft.AspNetCore.SignalR; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Services.MailService; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.MailHub { public class MailHub(IMailService mailService) : Hub, IMailHub { public Task<List<MailData>> GetMails(long id, long characterId, bool senderCopy) => Task.FromResult(mailService.GetMails(id, characterId, senderCopy)); public Task<bool> DeleteMailAsync(long id, long characterId, bool senderCopy) => mailService.DeleteMailAsync(id, characterId, senderCopy); public Task<MailData?> ViewMailAsync(long id, JsonPatch mailData) => mailService.EditMailAsync(id, mailData); public Task<bool> SendMailAsync(MailRequest mail) => mailService.SendMailAsync(mail.Mail!, mail.VNum, mail.Amount, mail.Rare, mail.Upgrade); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/MailHub/MailHubClient.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Json.Patch; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Messages; using Microsoft.Extensions.Logging; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.MailHub { public class MailHubClient(HubConnectionFactory hubConnectionFactory, ILogger<MailHubClient> logger) : BaseHubClient(hubConnectionFactory, nameof(MailHub), logger), IMailHub { public Task<List<MailData>> GetMails(long id, long characterId, bool senderCopy) => InvokeAsync<List<MailData>>(nameof(GetMails), id, characterId, senderCopy); public Task<bool> DeleteMailAsync(long id, long characterId, bool senderCopy) => InvokeAsync<bool>(nameof(DeleteMailAsync), id, characterId, senderCopy); public Task<MailData?> ViewMailAsync(long id, JsonPatch mailData) => InvokeAsync<MailData?>(nameof(ViewMailAsync), id, mailData); public Task<bool> SendMailAsync(MailRequest mail) => InvokeAsync<bool>(nameof(SendMailAsync), mail); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/PubSub/IPubSubHub.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Messages; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; public interface IPubSubHub { Task<bool> SendMessageAsync(IMessage message); Task<bool> SendMessagesAsync(List<IMessage> messages); Task<List<Subscriber>> GetSubscribersAsync(); Task<bool> SubscribeAsync(Subscriber subscriber); Task<bool> UnsubscribeAsync(long id); } public interface IPubSubHubClient : IPubSubHub { event Action<IMessage>? OnMessageReceived; Task StartAsync(); Task StopAsync(); bool IsConnected { get; } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/PubSub/PubSubHub.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.AspNetCore.SignalR; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Messages; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.PubSub { public class PubSubHub(MasterClientList masterClientList) : Hub, IPubSubHub { public async Task<bool> SendMessageAsync(IMessage message) { await Clients.Others.SendAsync("ReceiveMessage", message); return true; } public async Task<bool> SendMessagesAsync(List<IMessage> messages) { foreach (var message in messages) { await Clients.Others.SendAsync("ReceiveMessage", message); } return true; } public Task<List<Subscriber>> GetSubscribersAsync() { return Task.FromResult(masterClientList.ConnectedAccounts.SelectMany(x => x.Value.Values).ToList()); } public Task<bool> SubscribeAsync(Subscriber subscriber) { if (!masterClientList.ConnectedAccounts.ContainsKey(Context.UserIdentifier ?? throw new InvalidOperationException()) || !masterClientList.Channels.ContainsKey(Context.UserIdentifier ?? throw new InvalidOperationException())) { return Task.FromResult(false); } subscriber.ChannelId = masterClientList.Channels[Context.UserIdentifier].Id; masterClientList.ConnectedAccounts[Context.UserIdentifier].AddOrUpdate(subscriber.Id, subscriber, (_, _) => subscriber); return Task.FromResult(true); } public Task<bool> UnsubscribeAsync(long id) { if (!masterClientList.ConnectedAccounts.ContainsKey(Context.UserIdentifier ?? throw new InvalidOperationException())) { return Task.FromResult(false); } return Task.FromResult(masterClientList.ConnectedAccounts[Context.UserIdentifier].TryRemove(id, out _)); } } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/PubSub/PubSubHubClient.cs ================================================ using Microsoft.AspNetCore.SignalR.Client; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.PubSub { public class PubSubHubClient : IPubSubHubClient, IAsyncDisposable { private readonly HubConnection _hubConnection; private readonly ILogger<PubSubHubClient> _logger; private readonly ILogLanguageLocalizer<LogLanguageKey> _logLanguage; private readonly SemaphoreSlim _connectionLock = new(1, 1); private bool _isStarted; public event Action<IMessage>? OnMessageReceived; public bool IsConnected => _hubConnection.State == HubConnectionState.Connected; public PubSubHubClient(HubConnectionFactory hubConnectionFactory, ILogger<PubSubHubClient> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { _logger = logger; _logLanguage = logLanguage; _hubConnection = hubConnectionFactory.Create(nameof(PubSubHub)); _hubConnection.On<IMessage>("ReceiveMessage", message => { OnMessageReceived?.Invoke(message); }); _hubConnection.Reconnecting += error => { _logger.LogWarning(_logLanguage[LogLanguageKey.PUBSUB_RECONNECTING]); return Task.CompletedTask; }; _hubConnection.Reconnected += connectionId => { _logger.LogInformation(_logLanguage[LogLanguageKey.PUBSUB_RECONNECTED]); return Task.CompletedTask; }; _hubConnection.Closed += error => { _logger.LogWarning(_logLanguage[LogLanguageKey.PUBSUB_CONNECTION_CLOSED]); return Task.CompletedTask; }; } public async Task StartAsync() { await _connectionLock.WaitAsync(); try { if (_isStarted && _hubConnection.State == HubConnectionState.Connected) { return; } if (_hubConnection.State == HubConnectionState.Disconnected) { await _hubConnection.StartAsync(); _isStarted = true; _logger.LogInformation(_logLanguage[LogLanguageKey.PUBSUB_CONNECTION_STARTED]); } } finally { _connectionLock.Release(); } } public async Task StopAsync() { await _connectionLock.WaitAsync(); try { if (_hubConnection.State != HubConnectionState.Disconnected) { await _hubConnection.StopAsync(); _isStarted = false; _logger.LogInformation(_logLanguage[LogLanguageKey.PUBSUB_CONNECTION_STOPPED]); } } finally { _connectionLock.Release(); } } private async Task EnsureConnectedAsync() { if (_hubConnection.State == HubConnectionState.Disconnected) { await StartAsync(); } } public async Task<bool> SendMessageAsync(IMessage message) { await EnsureConnectedAsync(); return await _hubConnection.InvokeAsync<bool>(nameof(SendMessageAsync), message); } public async Task<bool> SendMessagesAsync(List<IMessage> messages) { await EnsureConnectedAsync(); return await _hubConnection.InvokeAsync<bool>(nameof(SendMessagesAsync), messages); } public async Task<List<Subscriber>> GetSubscribersAsync() { await EnsureConnectedAsync(); return await _hubConnection.InvokeAsync<List<Subscriber>>(nameof(GetSubscribersAsync)); } public async Task<bool> SubscribeAsync(Subscriber subscriber) { await EnsureConnectedAsync(); return await _hubConnection.InvokeAsync<bool>(nameof(SubscribeAsync), subscriber); } public async Task<bool> UnsubscribeAsync(long id) { await EnsureConnectedAsync(); return await _hubConnection.InvokeAsync<bool>(nameof(UnsubscribeAsync), id); } public async ValueTask DisposeAsync() { await StopAsync(); await _hubConnection.DisposeAsync(); _connectionLock.Dispose(); } } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/WarehouseHub/IWarehouseHub.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.Miniland; using NosCore.Data.WebApi; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.WarehouseHub; public interface IWarehouseHub { Task<List<WarehouseLink>> GetWarehouseItems(Guid? id, long? ownerId, WarehouseType warehouseType, byte? slot); Task<bool> DeleteWarehouseItemAsync(Guid id); Task<bool> AddWarehouseItemAsync(WareHouseDepositRequest depositRequest); } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/WarehouseHub/WarehouseHub.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.AspNetCore.SignalR; using NosCore.Data.Enumerations.Miniland; using NosCore.Data.WebApi; using NosCore.GameObject.Services.WarehouseService; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.WarehouseHub { public class WarehouseHub(IWarehouseService warehouseService) : Hub, IWarehouseHub { public Task<List<WarehouseLink>> GetWarehouseItems(Guid? id, long? ownerId, WarehouseType warehouseType, byte? slot) => warehouseService.GetItemsAsync(id, ownerId, warehouseType, slot); public Task<bool> DeleteWarehouseItemAsync(Guid id) => warehouseService.WithdrawItemAsync(id); public Task<bool> AddWarehouseItemAsync(WareHouseDepositRequest depositRequest) => warehouseService.DepositItemAsync(depositRequest.OwnerId, depositRequest.WarehouseType, depositRequest.ItemInstance, depositRequest.Slot); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/WarehouseHub/WarehouseHubClient.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.Miniland; using NosCore.Data.WebApi; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.InterChannelCommunication.Hubs.WarehouseHub { public class WarehouseHubClient(HubConnectionFactory hubConnectionFactory, ILogger<WarehouseHubClient> logger) : BaseHubClient(hubConnectionFactory, nameof(WarehouseHub), logger), IWarehouseHub { public Task<List<WarehouseLink>> GetWarehouseItems(Guid? id, long? ownerId, WarehouseType warehouseType, byte? slot) => InvokeAsync<List<WarehouseLink>>(nameof(GetWarehouseItems), id, ownerId, warehouseType, slot); public Task<bool> DeleteWarehouseItemAsync(Guid id) => InvokeAsync<bool>(nameof(DeleteWarehouseItemAsync), id); public Task<bool> AddWarehouseItemAsync(WareHouseDepositRequest depositRequest) => InvokeAsync<bool>(nameof(AddWarehouseItemAsync), depositRequest); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/MasterClientList.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Core; using NosCore.Data.WebApi; using System.Collections.Concurrent; namespace NosCore.GameObject.InterChannelCommunication; public class MasterClientList { public readonly ConcurrentDictionary<string, ChannelInfo> Channels = new(); public readonly ConcurrentDictionary<string, ConcurrentDictionary<long, Subscriber>> ConnectedAccounts = new(); public int ConnectionCounter { get; set; } public ConcurrentDictionary<string, long> ReadyForAuth { get; } = new(); public ConcurrentDictionary<string, string> AuthCodes { get; } = new(); } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Messages/DeleteMailData.cs ================================================ using System; namespace NosCore.GameObject.InterChannelCommunication.Messages { public class DeleteMailData : IMessage { public long CharacterId { get; set; } public short MailId { get; set; } public byte PostType { get; set; } public Guid Id { get; set; } = Guid.NewGuid(); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Messages/DisconnectData.cs ================================================ using System; namespace NosCore.GameObject.InterChannelCommunication.Messages { public class DisconnectData : IMessage { public long CharacterId { get; set; } public Guid Id { get; set; } = Guid.NewGuid(); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Messages/IMessage.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; namespace NosCore.GameObject.InterChannelCommunication.Messages { public interface IMessage { public Guid Id { get; set; } } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Messages/MailData.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Parcel; using NosCore.Packets.ServerPackets.Visibility; using NosCore.Shared.Enumerations; using System; using System.Globalization; namespace NosCore.GameObject.InterChannelCommunication.Messages { public class MailData : IMessage { public string? ReceiverName { get; set; } public string? SenderName { get; set; } public long MailId { get; set; } public MailDto MailDto { get; set; } = new(); public ItemInstanceDto? ItemInstance { get; set; } public short ItemType { get; set; } public PostPacket GeneratePostMessage(int type) { return new PostPacket { Type = 5, PostType = (byte)type, Id = (short)MailId, Unknown = 0, PostSubPacket = new PostSubPacket { Class = MailDto.SenderCharacterClass ?? CharacterClassType.Adventurer, Gender = MailDto.SenderGender ?? GenderType.Female, MorphId = MailDto.SenderMorphId ?? 0, HairStyle = MailDto.SenderHairStyle ?? HairStyleType.HairStyleA, HairColor = MailDto.SenderHairColor ?? HairColorType.Black, Equipment = new InEquipmentSubPacket { Armor = MailDto.Armor, CostumeHat = MailDto.CostumeHat, CostumeSuit = MailDto.CostumeSuit, Fairy = MailDto.Fairy, Hat = MailDto.Hat, MainWeapon = MailDto.MainWeapon, Mask = MailDto.Mask, SecondaryWeapon = MailDto.SecondaryWeapon, WeaponSkin = MailDto.WeaponSkin, WingSkin = MailDto.WingSkin } }, SenderName = SenderName, Title = MailDto.Title, Message = MailDto.Message }; } public IPacket? GeneratePost(byte type) { switch (type) { case 3: case 0: return ItemInstance == null ? null : new ParcelPacket { Type = 1, Unknown = type == 0 ? (byte)1 : (byte)2, Id = (short)MailId, ParcelAttachment = new ParcelAttachmentSubPacket { TitleType = MailDto.Title == "NOSMALL" ? (byte)1 : (byte)4, Unknown2 = 0, Date = MailDto.Date.ToString("yyMMddHHmm", new DateTimeFormatInfo()), Title = MailDto.Title, AttachmentVNum = ItemInstance.ItemVNum, AttachmentAmount = ItemInstance.Amount, ItemType = ItemType } }; case 1: case 2: return new PostPacket { Type = 1, PostType = type, Id = (short)MailId, Unknown = 0, IsOpened = MailDto.IsOpened, DateTime = MailDto.Date.ToString("yyMMddHHmm", new DateTimeFormatInfo()), SenderName = type == 2 ? ReceiverName : SenderName, Title = MailDto.Title, Message = MailDto.Message }; default: throw new ArgumentException(); } } public Guid Id { get; set; } = Guid.NewGuid(); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Messages/PostedPacket.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.Interaction; using System; namespace NosCore.GameObject.InterChannelCommunication.Messages { public class PostedPacket : IMessage { public string? Packet { get; set; } public Data.WebApi.Character? SenderCharacter { get; set; } public Data.WebApi.Character? ReceiverCharacter { get; set; } public long OriginWorldId { get; set; } public ReceiverType ReceiverType { get; set; } public Guid Id { get; set; } = Guid.NewGuid(); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/Messages/StatData.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations; using System; namespace NosCore.GameObject.InterChannelCommunication.Messages { public class StatData : IMessage { public Data.WebApi.Character? Character { get; set; } public UpdateStatActionType ActionType { get; set; } public long Data { get; set; } //TODO: find other type(s) public Guid Id { get; set; } = Guid.NewGuid(); } } ================================================ FILE: src/NosCore.GameObject/InterChannelCommunication/PolymorphicConverter.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Text.Json; using System.Text.Json.Serialization; namespace NosCore.GameObject.InterChannelCommunication; public class PolymorphicJsonConverter<T> : JsonConverter<T> { //Inspired by https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/converters-how-to?pivots=dotnet-6-0#support-polymorphic-deserialization public override bool CanConvert(Type typeToConvert) { return typeof(T).IsAssignableFrom(typeToConvert); } public override T? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { if (reader.TokenType != JsonTokenType.StartObject) { throw new JsonException(); } reader.Read(); if (reader.TokenType != JsonTokenType.PropertyName) { throw new JsonException(); } string? propertyName = reader.GetString(); if (propertyName != "_type") { throw new JsonException(); } reader.Read(); if (reader.TokenType != JsonTokenType.String) { throw new JsonException(); } var type = reader.GetString(); var tp = Type.GetType(type ?? throw new InvalidOperationException()); reader.Read(); if (reader.TokenType != JsonTokenType.PropertyName) { throw new JsonException(); } propertyName = reader.GetString(); if (propertyName != "_object") { throw new JsonException(); } var rt = (T?)JsonSerializer.Deserialize(ref reader, tp ?? throw new InvalidOperationException(), new JsonSerializerOptions()); while (reader.Read()) { if (reader.TokenType == JsonTokenType.EndObject) return rt; } return rt; } public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options) { writer.WriteStartObject(); writer.WriteString("_type", value?.GetType().AssemblyQualifiedName ?? throw new InvalidOperationException()); writer.WritePropertyName("_object"); JsonSerializer.Serialize(writer, value, value.GetType()); writer.WriteEndObject(); } } ================================================ FILE: src/NosCore.GameObject/Map/Map.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.StaticEntities; using NosCore.PathFinder.Interfaces; using NosCore.Shared.Helpers; using System; using System.Collections.Generic; using System.Linq; namespace NosCore.GameObject.Map { public class Map : MapDto, IMapGrid { private short _width; private short _height; public short Width { get { if (_width == 0) { _width = BitConverter.ToInt16(Data.AsSpan().Slice(0, 2).ToArray(), 0); } return _width; } } public short Height { get { if (_height == 0) { _height = BitConverter.ToInt16(Data.AsSpan().Slice(2, 2).ToArray(), 0); } return _height; } } public byte this[short x, short y] => Data.AsSpan().Slice(4 + y * Width + x, 1)[0]; internal bool GetFreePosition(ref short firstX, ref short firstY, byte xpoint, byte ypoint) { var minX = (short)(-xpoint + firstX); var maxX = (short)(xpoint + firstX); var minY = (short)(-ypoint + firstY); var maxY = (short)(ypoint + firstY); var cells = new List<(short X, short Y)>(); for (var y = minY; y <= maxY; y++) { for (var x = minX; x <= maxX; x++) { if ((x != firstX) || (y != firstY)) { cells.Add((x, y)); } } } foreach (var cell in cells.OrderBy(_ => RandomHelper.Instance.RandomNumber(0, int.MaxValue))) { if (IsBlockedZone(firstX, firstY, cell.X, cell.Y)) { continue; } firstX = cell.X; firstY = cell.Y; return true; } return false; } public bool IsBlockedZone(short firstX, short firstY, short mapX, short mapY) { var posX = (short)Math.Abs(mapX - firstX); var posY = (short)Math.Abs(mapY - firstY); var positiveX = mapX > firstX; var positiveY = mapY > firstY; for (var i = 0; i <= posX; i++) { if (!IsWalkable((short)((positiveX ? i : -i) + firstX), firstY)) { return true; } } for (var i = 0; i <= posY; i++) { if (!IsWalkable(firstX, (short)((positiveY ? i : -i) + firstY))) { return true; } } return false; } public bool IsWalkable(short mapX, short mapY) { if ((mapX > Width) || (mapX < 0) || (mapY > Height) || (mapY < 0)) { return false; } return IsWalkable(this[mapX, mapY]); } private static bool IsWalkable(byte value) { return (value == 0) || (value == 2) || ((value >= 16) && (value <= 19)); } } } ================================================ FILE: src/NosCore.GameObject/Map/Portal.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.StaticEntities; using NosCore.Packets.ServerPackets.Portals; using System; namespace NosCore.GameObject.Map { public class Portal : PortalDto { public Guid DestinationMapInstanceId { get; set; } public Guid SourceMapInstanceId { get; set; } public GpPacket GenerateGp() { return new GpPacket { SourceX = SourceX, SourceY = SourceY, MapId = DestinationMapId, PortalType = Type, PortalId = PortalId, IsDisabled = IsDisabled }; } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Events/CharacterMovedEvent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs.Interfaces; namespace NosCore.GameObject.Messaging.Events { // Fired by WalkPacketHandler after the character's position has been updated // on the server. Subscribers decide what to do with the new coordinates: // GoTo quest validators, proximity triggers, aggro range checks, etc. The // packet handler itself knows nothing about any of them. public sealed record CharacterMovedEvent(ICharacterEntity Character, short X, short Y, short MapId); } ================================================ FILE: src/NosCore.GameObject/Messaging/Events/EntityCapturedEvent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs.Interfaces; namespace NosCore.GameObject.Messaging.Events { // Published by CaptureService after a successful pet capture. Intentionally // separate from EntityDiedEvent so capture doesn't inherit the kill pipeline's // side effects (xp/gold rewards, death bcards, kill-count quest credit). // Capture-specific quest objectives and any other capture-only reactions // subscribe to this instead. public sealed record EntityCapturedEvent(IAliveEntity Victim, IAliveEntity Captor); } ================================================ FILE: src/NosCore.GameObject/Messaging/Events/EntityDamagedEvent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs.Interfaces; namespace NosCore.GameObject.Messaging.Events { // Published after every landed hit. Aggro, quest trackers and anything else that // wants to react to damage without sitting on the hot path subscribes here. public sealed record EntityDamagedEvent(IAliveEntity Attacker, IAliveEntity Target, int Damage, bool Killed); } ================================================ FILE: src/NosCore.GameObject/Messaging/Events/EntityDiedEvent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Linq; using Arch.Core; using NosCore.GameObject.Ecs.Interfaces; namespace NosCore.GameObject.Messaging.Events { public sealed record EntityDiedEvent( IAliveEntity Victim, IAliveEntity? Killer, IReadOnlyDictionary<Entity, int> HitSnapshot, RevivalMode RevivalMode = RevivalMode.Normal) { public EntityDiedEvent(IAliveEntity victim, IAliveEntity? killer, RevivalMode revivalMode = RevivalMode.Normal) : this(victim, killer, SnapshotHits(victim), revivalMode) { } private static IReadOnlyDictionary<Entity, int> SnapshotHits(IAliveEntity victim) => victim.HitList is { } list ? list.ToArray().ToDictionary(kv => kv.Key, kv => kv.Value) : new Dictionary<Entity, int>(); } // Normal = in-session death → town warp after the death-pose delay (OpenNos // default when the revive dialog's "return to town" option is picked / the // dialog times out). // ResumeInPlace = we detected a persisted-dead character on login: the player // already "declined" the dialog by disconnecting, so just refill and leave // them at the saved position instead of warping. public enum RevivalMode { Normal, ResumeInPlace, } } ================================================ FILE: src/NosCore.GameObject/Messaging/Events/GuriPacketReceivedEvent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.UI; namespace NosCore.GameObject.Messaging.Events { // Published by GuriPacketHandler when a guri packet arrives. Wolverine fans out to every handler // with a Handle/HandleAsync(GuriPacketReceivedEvent) method; each handler filters internally // (no central Condition() registry). public sealed record GuriPacketReceivedEvent(ClientSession ClientSession, GuriPacket Packet); } ================================================ FILE: src/NosCore.GameObject/Messaging/Events/ItemUsedEvent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.Packets.ClientPackets.Inventory; namespace NosCore.GameObject.Messaging.Events { // Published by UseItemPacketHandler when a player uses an inventory item. Wolverine fans out // to every handler with a Handle/HandleAsync(ItemUsedEvent) method; each handler filters by // ItemType/Effect internally. public sealed record ItemUsedEvent(ClientSession ClientSession, InventoryItemInstance InventoryItem, UseItemPacket Packet); } ================================================ FILE: src/NosCore.GameObject/Messaging/Events/MapInstanceEnteredEvent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MapInstanceGenerationService; namespace NosCore.GameObject.Messaging.Events { // Published by MapChangeService when a player finishes changing into a new map instance. // Wolverine fans out to every handler with a Handle/HandleAsync(MapInstanceEnteredEvent) // method; each handler filters by map type / state internally. public sealed record MapInstanceEnteredEvent(ClientSession ClientSession, MapInstance MapInstance); } ================================================ FILE: src/NosCore.GameObject/Messaging/Events/MapItemPickedUpEvent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.ClientPackets.Drops; namespace NosCore.GameObject.Messaging.Events { // Carries a data snapshot (not the live MapItemComponentBundle) because Wolverine // fans out to multiple handlers and the first one that calls TryRemoveMapItem // destroys the ECS entity. Any later handler still reading via the bundle would // hit "EntityIdentityComponent missing" on the implicit cast. public sealed record MapItemPickedUpEvent( ClientSession ClientSession, long VisualId, short VNum, short Amount, IItemInstance? ItemInstance, GetPacket Packet); } ================================================ FILE: src/NosCore.GameObject/Messaging/Events/QuestCompletedEvent.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.QuestService; namespace NosCore.GameObject.Messaging.Events { // Published once per quest when CompletedOn transitions from null. The quest- // completion packet handler sends the client-side UI packets; the quest-chain // handler walks NextQuestId and grants the follow-up quest. Anything else that // cares about a quest finishing (rewards, achievements, cutscenes) should also // subscribe here so the kill / move / item / dialog paths never need to know. public sealed record QuestCompletedEvent(ICharacterEntity Character, CharacterQuest Quest); } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Battle/DeathBCardHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.Data.Enumerations.Buff; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.BattleService; using NosCore.Networking; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Messaging.Handlers.Battle { [UsedImplicitly] public sealed class DeathBCardHandler(INpcCombatCatalog catalog, ILogger<DeathBCardHandler> logger) { [UsedImplicitly] public async Task Handle(EntityDiedEvent evt) { if (evt.Killer is not PlayerComponentBundle killer) return; if (evt.Victim is not INonPlayableEntity victim || victim.NpcMonster == null) return; var bcards = catalog.GetDeathBCards(victim.NpcMonster.NpcMonsterVNum); if (bcards.Count == 0) return; var changed = false; foreach (var bcard in bcards) { if ((BCardType.CardType)bcard.Type != BCardType.CardType.SpecialEffects) continue; var sub = (AdditionalTypes.SpecialEffects)bcard.SubType; switch (sub) { case AdditionalTypes.SpecialEffects.DecreaseKillerHp: var damage = killer.MaxHp * bcard.FirstData / 100; killer.Hp = Math.Max(1, killer.Hp - damage); changed = true; break; case AdditionalTypes.SpecialEffects.IncreaseKillerHp: var heal = killer.MaxHp * bcard.FirstData / 100; killer.Hp = Math.Min(killer.MaxHp, killer.Hp + heal); changed = true; break; } } if (!changed) return; // HP mutation above is already committed. Make the notifications // best-effort — if Wolverine retries the handler after a send // failure we'd double-apply the damage/heal. try { await killer.SendPacketAsync(killer.GenerateStat()).ConfigureAwait(false); if (killer.MapInstance != null) { await killer.MapInstance.SendPacketAsync(killer.GenerateStatInfo()).ConfigureAwait(false); } } catch (Exception ex) { logger.LogWarning(ex, "Failed to broadcast death-BCard stat update for character {CharacterId}", killer.CharacterId); } } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Battle/MonsterAggroHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.BattleService; namespace NosCore.GameObject.Messaging.Handlers.Battle { // When a monster takes damage, bump its aggro toward the attacker. Players getting // hit is ignored here — player UI/combat feedback is handled by the SuPacket // broadcast in BattleService. Wolverine auto-discovers this handler by convention. [UsedImplicitly] public sealed class MonsterAggroHandler(IAggroService aggroService) { [UsedImplicitly] public Task Handle(EntityDamagedEvent evt) { if (evt.Target is not INonPlayableEntity) { return Task.CompletedTask; } aggroService.AddThreat(evt.Target, evt.Attacker, evt.Damage); return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Battle/MonsterRespawnHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Threading.Tasks; using JetBrains.Annotations; using NodaTime; using NosCore.GameObject.Ecs; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.BattleService; namespace NosCore.GameObject.Messaging.Handlers.Battle { // Monster kills are driven by the closing SuPacket (alive=0, hp%=0) — the client // plays the death animation from that alone and auto-despawns the sprite. Sending // an OutPacket here would cut the animation short, so we only clear aggro and // register the respawn timestamp on the map; the map's 400ms life loop reads the // pending-respawn table and revives monsters whose time is up. [UsedImplicitly] public sealed class MonsterRespawnHandler(IAggroService aggroService, IClock clock) { [UsedImplicitly] public Task Handle(EntityDiedEvent evt) { if (evt.Victim is not MonsterComponentBundle monster) return Task.CompletedTask; if (monster.NpcMonster == null) return Task.CompletedTask; if (monster.MapInstance == null) return Task.CompletedTask; aggroService.Clear(monster); var respawnMs = Math.Max(1000, monster.NpcMonster.RespawnTime); monster.MapInstance.ScheduleRespawn(monster, clock.GetCurrentInstant().Plus(Duration.FromMilliseconds(respawnMs))); return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Battle/PlayerRevivalHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.Networking; using NosCore.Packets.ClientPackets.Event; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Messaging.Handlers.Battle { // Player death flow: zero HP/MP, apply the dignity penalty, broadcast the // refreshed stats, then ask the client which revive branch to take via a `dlgi` // dialog. The client routes the yes/no answer back as a `revival` client packet, // which RevivalPacketHandler turns into the actual tp + revive + stat sequence. // // Dialog text id depends on level: // - lvl <= 20: ContinueHereFree (570) — revive in place is free. // - lvl > 20: ContinueHereTenSeeds (571) — costs 10x Seed of Power (item 1012). // // TODO: post-revive protection (card 684, ~30s invuln) isn't granted — the // buff/card application layer isn't wired up yet. See death.txt line 6352. [UsedImplicitly] public sealed class PlayerRevivalHandler(ILogger<PlayerRevivalHandler> logger) { // Canonical NosTale fork default for dignity penalty on death. private const short DignityLossPerDeath = 50; private const short DignityFloor = -1000; [UsedImplicitly] public async Task Handle(EntityDiedEvent evt) { if (evt.Victim.VisualType != VisualType.Player) return; if (evt.Victim is not PlayerComponentBundle player) return; try { player.IsAlive = false; player.Hp = 0; player.Mp = 0; player.Dignity = (short)Math.Max(DignityFloor, player.Dignity - DignityLossPerDeath); if (evt.Killer is PlayerComponentBundle killer && killer.CharacterId != player.CharacterId && player.Reput >= 50000) { var transfer = player.Level * 50L; player.Reput -= transfer; killer.Reput += transfer; await killer.SendPacketAsync(killer.GenerateFd()).ConfigureAwait(false); } await player.SendPacketAsync(player.GenerateStat()).ConfigureAwait(false); await player.SendPacketAsync(player.GenerateFd()).ConfigureAwait(false); var question = player.Level > 20 ? Game18NConstString.ContinueHereTenSeeds : Game18NConstString.ContinueHereFree; await player.SendPacketAsync(new DlgiPacket { YesPacket = new RevivalPacket { Type = 0 }, NoPacket = new RevivalPacket { Type = 1 }, Question = question, }).ConfigureAwait(false); } catch (Exception ex) { logger.LogWarning(ex, "PlayerRevivalHandler failed for {CharacterId}", player.CharacterId); } } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Battle/RewardDistributionHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.BattleService; namespace NosCore.GameObject.Messaging.Handlers.Battle { // Single responsibility: when an entity dies, hand the HitList to the reward service // so it can credit XP/gold/drops. Split out of the damage hot path as a Wolverine // handler so slow drops / XP calculations never block an in-flight hit. [UsedImplicitly] public sealed class RewardDistributionHandler(IRewardService rewardService) { [UsedImplicitly] public Task Handle(EntityDiedEvent evt) { return rewardService.DistributeAsync(evt.Victim, evt.Killer, evt.HitSnapshot); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Guri/EmoticonHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Networking; using NosCore.Networking; using NosCore.Packets.Enumerations; namespace NosCore.GameObject.Messaging.Handlers.Guri { [UsedImplicitly] public sealed class EmoticonHandler { [UsedImplicitly] public Task Handle(GuriPacketReceivedEvent evt) { var packet = evt.Packet; if (packet.Type != GuriPacketType.TextInput || packet.Data < 973 || packet.Data > 999) { return Task.CompletedTask; } var session = evt.ClientSession; if (session.Character.EmoticonsBlocked) { return Task.CompletedTask; } if (packet.VisualId.GetValueOrDefault() != session.Character.CharacterId) { return Task.CompletedTask; } return session.Character.MapInstance.SendPacketAsync( session.Character.GenerateEff(Convert.ToInt32(packet.Data) + 4099)); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Guri/MfaHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.Data.CommandPackets; using NosCore.GameObject.Messaging.Events; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using TwoFactorAuthNet; namespace NosCore.GameObject.Messaging.Handlers.Guri { [UsedImplicitly] public sealed class MfaHandler { [UsedImplicitly] public async Task Handle(GuriPacketReceivedEvent evt) { var packet = evt.Packet; if (packet.Type != GuriPacketType.TextInput || packet.Argument != 3 || packet.VisualId != 0) { return; } var session = evt.ClientSession; if (session.MfaValidated || session.Account.MfaSecret == null) { return; } var tfa = new TwoFactorAuth(); if (tfa.VerifyCode(session.Account.MfaSecret, packet.Value)) { session.MfaValidated = true; await session.HandlePacketsAsync(new[] { new EntryPointPacket { Name = session.Account.Name } }); return; } await session.SendPacketAsync(new NosCore.Packets.ServerPackets.UI.GuriPacket { Type = GuriPacketType.TextInput, Argument = 3, EntityId = 0 }); await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.IncorrectPassword }); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Guri/SpeakerHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.Core.I18N; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.InventoryService; using NosCore.Packets.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Messaging.Handlers.Guri { [UsedImplicitly] public sealed class SpeakerHandler( ILogger<SpeakerHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage, IGameLanguageLocalizer gameLanguageLocalizer, ISessionRegistry sessionRegistry) { private static string CraftMessage(string message, string[] valueSplit) { message = valueSplit.Aggregate(message, (current, t) => current + t + " "); if (message.Length > 120) { message = message.Substring(0, 120); } return message.Trim(); } [UsedImplicitly] public async Task Handle(GuriPacketReceivedEvent evt) { var packet = evt.Packet; if (packet.Type != GuriPacketType.TextInput || packet.Argument != 3 || packet.VisualId == 0) { return; } var session = evt.ClientSession; var inv = session.Character.InventoryService.LoadBySlotAndType( (short)(packet.VisualId ?? 0), NoscorePocketType.Etc); if (inv?.ItemInstance?.Item?.Effect != ItemEffectType.Speaker) { logger.LogError(string.Format(logLanguage[LogLanguageKey.ITEM_NOT_FOUND], NoscorePocketType.Etc, (short)(packet.VisualId ?? 0))); return; } var data = packet.Value; var valueSplit = (data ?? string.Empty).Split(' '); var message = $"<{gameLanguageLocalizer[LanguageKey.SPEAKER, session.Account.Language]}> [{session.Character.Name}]:"; if (packet.Data == 999) { InventoryItemInstance? deeplink = null; if (short.TryParse(valueSplit[1], out var slot) & Enum.TryParse(typeof(NoscorePocketType), valueSplit[0], out var type)) { deeplink = session.Character.InventoryService.LoadBySlotAndType(slot, (NoscorePocketType)type!); } if (deeplink == null) { logger.LogError(string.Format(logLanguage[LogLanguageKey.ITEM_NOT_FOUND], type, slot)); return; } message = CraftMessage(message, valueSplit.Skip(2).ToArray()).Replace(' ', '|'); await sessionRegistry.BroadcastPacketAsync( session.Character.GenerateSayItem(message, deeplink), session.Channel!.Id); } else { message = CraftMessage(message, valueSplit); await sessionRegistry.BroadcastPacketAsync( session.Character.GenerateSay(message, (SayColorType)13), session.Channel!.Id); } session.Character.InventoryService.RemoveItemAmountFromInventory(1, inv.ItemInstanceId); await session.SendPacketAsync(inv.GeneratePocketChange(PocketType.Etc, (short)(packet.VisualId ?? 0))); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Guri/TitleHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.Networking; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; namespace NosCore.GameObject.Messaging.Handlers.Guri { [UsedImplicitly] public sealed class TitleHandler { [UsedImplicitly] public async Task Handle(GuriPacketReceivedEvent evt) { if (evt.Packet.Type != GuriPacketType.Title) { return; } var session = evt.ClientSession; var inv = session.Character.InventoryService.LoadBySlotAndType( (short)(evt.Packet.VisualId ?? 0), NoscorePocketType.Main); if (inv?.ItemInstance?.Item?.ItemType != ItemType.Title || session.Character.Titles.Any(s => s.TitleType == inv.ItemInstance?.ItemVNum)) { return; } session.Character.Titles.Add(new TitleDto { Id = Guid.NewGuid(), TitleType = inv.ItemInstance.ItemVNum, Visible = false, Active = false, CharacterId = session.Character.VisualId }); await session.Character.MapInstance.SendPacketAsync(session.Character.GenerateTitle()); await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.TitleChangedOrHidden }); session.Character.InventoryService.RemoveItemAmountFromInventory(1, inv.ItemInstanceId); await session.SendPacketAsync(inv.GeneratePocketChange((PocketType)inv.Type, inv.Slot)); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Map/MinilandEntranceHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.MinilandService; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; #pragma warning disable 618 //TODO drop obsolete usage namespace NosCore.GameObject.Messaging.Handlers.Map { [UsedImplicitly] public sealed class MinilandEntranceHandler(IMinilandService minilandProvider) { [UsedImplicitly] public async Task Handle(MapInstanceEnteredEvent evt) { var miniland = minilandProvider.GetMinilandFromMapInstanceId(evt.MapInstance.MapInstanceId); if (miniland == null) { return; } var session = evt.ClientSession; if (miniland.OwnerId != session.Character.CharacterId) { await session.SendPacketAsync(new MsgPacket { Message = miniland.MinilandMessage!.Replace(' ', '^') }); miniland.DailyVisitCount++; miniland.VisitCount++; await session.SendPacketAsync(miniland.GenerateMlinfobr()); } else { await session.SendPacketAsync(miniland.GenerateMlinfo()); await session.SendPacketAsync(session.Character.GenerateMlobjlst()); } await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.TotalVisitors, ArgumentType = 4, Game18NArguments = { miniland.VisitCount } }); await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.TodayVisitors, ArgumentType = 4, Game18NArguments = { miniland.DailyVisitCount } }); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/MapItem/DropHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Linq; using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.Data.Enumerations.Items; using NosCore.Data.Enumerations.Map; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.InventoryService; using NosCore.Networking; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Messaging.Handlers.MapItem { [UsedImplicitly] public sealed class DropHandler { [UsedImplicitly] public async Task Handle(MapItemPickedUpEvent evt) { var item = evt.ItemInstance; if (item == null || item.Item.ItemType == ItemType.Map || evt.VNum == 1046) { return; } var session = evt.ClientSession; var visualId = evt.VisualId; var amount = evt.Amount; var itemInstance = InventoryItemInstance.Create(item, session.Character.CharacterId); var inv = session.Character.InventoryService.AddItemToPocket(itemInstance)?.FirstOrDefault(); if (inv != null) { await session.SendPacketAsync(inv.GeneratePocketChange((PocketType)inv.Type, inv.Slot)); await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Green, Message = Game18NConstString.ReceivedThisItem, ArgumentType = 2, Game18NArguments = { inv.ItemInstance.ItemVNum.ToString(), amount } }); await session.SendPacketAsync(session.Character.GenerateIcon(1, inv.ItemInstance.ItemVNum)); session.Character.MapInstance.TryRemoveMapItem(visualId); await session.Character.MapInstance.SendPacketAsync(session.Character.GenerateGet(visualId)); if (session.Character.MapInstance.MapInstanceType == MapInstanceType.LodInstance) { await session.Character.MapInstance.SendPacketAsync(new Sayi2Packet { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.CharacterHasReceivedItem, ArgumentType = 13, Game18NArguments = { $"{session.Character.Name} {inv.ItemInstance.Item.VNum}" } }); } } else { await session.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.NotEnoughSpace }); } } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/MapItem/GoldDropHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using JetBrains.Annotations; using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.Networking; using NosCore.Packets; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Battle; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Messaging.Handlers.MapItem { [UsedImplicitly] public sealed class GoldDropHandler(IOptions<WorldConfiguration> worldConfiguration, List<ItemDto> items) { [UsedImplicitly] public async Task Handle(MapItemPickedUpEvent evt) { if (evt.VNum != 1046) { return; } var session = evt.ClientSession; var maxGold = worldConfiguration.Value.MaxGoldAmount; var character = session.Character; var visualId = evt.VisualId; var amount = evt.Amount; var vnum = evt.VNum; if (character.Gold + amount <= maxGold) { if (evt.Packet.PickerType == VisualType.Npc) { await session.SendPacketAsync(character.GenerateIcon(1, vnum)); } character = session.Character; character.Gold += amount; var goldName = items.First(i => i.VNum == vnum).Name[session.Account.Language]; #pragma warning disable NosCoreAnalyzers var characterId = character.CharacterId; await session.SendPacketAsync(new Sayi2Packet { VisualType = VisualType.Player, VisualId = characterId, Type = SayColorType.Green, Message = Game18NConstString.ItemReceived, ArgumentType = 9, Game18NArguments = new Game18NArguments(2) { amount, goldName } }); #pragma warning restore NosCoreAnalyzers } else { character = session.Character; character.Gold = maxGold; await session.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.MaxGoldReached }); } character = session.Character; var mapInstance = character.MapInstance; await session.SendPacketAsync(character.GenerateGold()); mapInstance.TryRemoveMapItem(visualId); await mapInstance.SendPacketAsync(character.GenerateGet(visualId)); await session.SendPacketAsync(new CancelPacket { Type = CancelPacketType.CancelPicking, TargetId = visualId, Unknow = -1 }); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/MapItem/SpChargerHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.Networking; namespace NosCore.GameObject.Messaging.Handlers.MapItem { [UsedImplicitly] public sealed class SpChargerHandler(IOptions<WorldConfiguration> worldConfiguration) { [UsedImplicitly] public async Task Handle(MapItemPickedUpEvent evt) { var item = evt.ItemInstance; if (item?.Item.ItemType != ItemType.Map || item.Item.Effect != ItemEffectType.SpCharger) { return; } var session = evt.ClientSession; var character = session.Character; var mapInstance = character.MapInstance; var visualId = evt.VisualId; if (!mapInstance.TryRemoveMapItem(visualId)) { return; } character.AddSpPoints(item.Item.EffectValue, worldConfiguration); await session.SendPacketAsync(character.GenerateSpPoint(worldConfiguration)); await mapInstance.SendPacketAsync(character.GenerateGet(visualId)); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/BazaarHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Linq; using System.Threading.Tasks; using JetBrains.Annotations; using NodaTime; using NosCore.Data.Enumerations.Buff; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; namespace NosCore.GameObject.Messaging.Handlers.Nrun { [UsedImplicitly] public sealed class BazaarHandler(IClock clock) : INrunEventHandler { public NrunRunnerType Runner => NrunRunnerType.OpenNosBazaar; public Task HandleAsync(ClientSession session, IAliveEntity? target, NrunPacket packet) { if (target is not NpcComponentBundle) { return Task.CompletedTask; } var medalBonus = session.Character.StaticBonusList.FirstOrDefault(s => s.StaticBonusType == StaticBonusType.BazaarMedalGold || s.StaticBonusType == StaticBonusType.BazaarMedalSilver); var medal = medalBonus != null ? medalBonus.StaticBonusType == StaticBonusType.BazaarMedalGold ? (byte)MedalType.Gold : (byte)MedalType.Silver : (byte)0; var time = medalBonus != null ? (int)(medalBonus.DateEnd == null ? 720 : medalBonus.DateEnd.Value.Minus(clock.GetCurrentInstant()).ToTimeSpan().TotalHours) : 0; return session.SendPacketAsync(new WopenPacket { Type = WindowType.NosBazaar, Unknown = medal, Unknown2 = (byte)time }); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/CellonItemHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; namespace NosCore.GameObject.Messaging.Handlers.Nrun { [UsedImplicitly] public sealed class CellonItemHandler : INrunEventHandler { public NrunRunnerType Runner => NrunRunnerType.CellonItem; public Task HandleAsync(ClientSession session, IAliveEntity? target, NrunPacket packet) { if (target == null) { return Task.CompletedTask; } return session.SendPacketAsync(new WopenPacket { Type = WindowType.CellonItem, }); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/ChangeClassHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using Microsoft.Extensions.Options; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Core.Configuration; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Messaging.Handlers.Nrun { [UsedImplicitly] public sealed class ChangeClassHandler( ILogger<ChangeClassHandler> logger, ILogLanguageLocalizer<LogLanguageKey> languageLocalizer, IOptions<WorldConfiguration> worldConfiguration, IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService, NosCore.GameObject.Services.ItemGenerationService.IItemGenerationService itemProvider) : INrunEventHandler { public NrunRunnerType Runner => NrunRunnerType.ChangeClass; public async Task HandleAsync(ClientSession session, IAliveEntity? target, NrunPacket packet) { if (packet.Type is null or <= 0 or >= 4 || target == null) { return; } if (session.Character.Class != (byte)CharacterClassType.Adventurer) { return; } if (!session.Character.Group.IsEmpty) { await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Red, Message = Game18NConstString.CantUseInGroup }); return; } if (session.Character.Level < 15 || session.Character.JobLevel < 20) { await session.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.CanNotChangeJobAtThisLevel }); await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.CanNotChangeJobAtThisJobLevel }); return; } var classType = (CharacterClassType)(packet.Type ?? 0); if ((CharacterClassType)session.Character.Class == classType) { logger.LogError(languageLocalizer[LogLanguageKey.CANT_CHANGE_SAME_CLASS]); return; } await session.ChangeClassAsync(classType, worldConfiguration, experienceService, jobExperienceService, heroExperienceService, itemProvider); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/FinishedTsDialogHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.QuestService; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Packets.ClientPackets.Quest; using NosCore.Packets.Enumerations; namespace NosCore.GameObject.Messaging.Handlers.Nrun { internal static class TsDialogAdvance { public static Task AdvanceAsync(IQuestService questService, ClientSession session) { var script = session.Character.Script; if (script == null) { return Task.CompletedTask; } return questService.RunScriptAsync(session.Character, new ScriptClientPacket { Type = QuestActionType.Dialog, FirstArgument = script.ScriptId, SecondArgument = script.ScriptStepId, }); } } [UsedImplicitly] public sealed class FinishedTsDialogHandler(IQuestService questService) : INrunEventHandler { public NrunRunnerType Runner => NrunRunnerType.FinishedTSDialog; public Task HandleAsync(ClientSession session, IAliveEntity? target, NrunPacket packet) => TsDialogAdvance.AdvanceAsync(questService, session); } [UsedImplicitly] public sealed class FinishedTsDialog2Handler(IQuestService questService) : INrunEventHandler { public NrunRunnerType Runner => NrunRunnerType.FinishedTSDialog2; public Task HandleAsync(ClientSession session, IAliveEntity? target, NrunPacket packet) => TsDialogAdvance.AdvanceAsync(questService, session); } [UsedImplicitly] public sealed class FinishedTsHandler(IQuestService questService) : INrunEventHandler { public NrunRunnerType Runner => NrunRunnerType.FinishedTs; public Task HandleAsync(ClientSession session, IAliveEntity? target, NrunPacket packet) => TsDialogAdvance.AdvanceAsync(questService, session); } [UsedImplicitly] public sealed class FinishedTs2Handler(IQuestService questService) : INrunEventHandler { public NrunRunnerType Runner => NrunRunnerType.FinishedTS2; public Task HandleAsync(ClientSession session, IAliveEntity? target, NrunPacket packet) => TsDialogAdvance.AdvanceAsync(questService, session); } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/INrunEventHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Packets.Enumerations; namespace NosCore.GameObject.Messaging.Handlers.Nrun; public interface INrunEventHandler { NrunRunnerType Runner { get; } Task HandleAsync(ClientSession session, IAliveEntity? target, NrunPacket packet); } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/OpenProductionHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; namespace NosCore.GameObject.Messaging.Handlers.Nrun { [UsedImplicitly] public sealed class OpenProductionHandler : INrunEventHandler { public NrunRunnerType Runner => NrunRunnerType.OpenProduction; public Task HandleAsync(ClientSession session, IAliveEntity? target, NrunPacket packet) { if (target is not NpcComponentBundle) { return Task.CompletedTask; } return session.SendPacketAsync(new WopenPacket { Type = WindowType.Production, }); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/OpenShopHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Messaging.Handlers.Nrun { [UsedImplicitly] public sealed class OpenShopHandler(ILogger<OpenShopHandler> logger) : INrunEventHandler { public NrunRunnerType Runner => NrunRunnerType.ProbabilityUIs; public Task HandleAsync(ClientSession session, IAliveEntity? target, NrunPacket packet) { if (target is not NpcComponentBundle npc) { return Task.CompletedTask; } var raw = (byte)(packet.Type ?? 0); if (!Enum.IsDefined(typeof(WindowType), raw)) { logger.LogWarning( "n_run ProbabilityUIs requested unknown WindowType={Raw} (NPC visualId={VisualId}); extend WindowType or add a mapping", raw, npc.VisualId); return Task.CompletedTask; } return session.SendPacketAsync(new WopenPacket { Type = (WindowType)raw, }); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/SetPlaceOfRevivalHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BattleService; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Messaging.Handlers.Nrun { [UsedImplicitly] public sealed class SetPlaceOfRevivalHandler(IRespawnService respawnService) : INrunEventHandler { public NrunRunnerType Runner => NrunRunnerType.SetPlaceOfRevival; public async Task HandleAsync(ClientSession session, IAliveEntity? target, NrunPacket packet) { if (packet.Type == 2) { await session.SendPacketAsync(new QnaPacket { YesPacket = new NrunPacket { Runner = NrunRunnerType.SetPlaceOfRevival, Type = 1, VisualType = packet.VisualType, VisualId = packet.VisualId, }, Question = "#n_run^15^1^1 Do you want to save this location as your respawn point?", }).ConfigureAwait(false); return; } var character = session.Character; if (target is not NpcComponentBundle npc || character.MapInstance == null) { return; } respawnService.SetRespawnPoint(character, character.MapInstance.Map.MapId, npc.PositionX, npc.PositionY); #pragma warning disable CS0618 await session.SendPacketAsync(new MsgPacket { Type = MessageType.Default, Message = "Your respawn location has been changed." }).ConfigureAwait(false); #pragma warning restore CS0618 } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/TeleporterHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MapChangeService; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Shared.Enumerations; using NosCore.Shared.Helpers; namespace NosCore.GameObject.Messaging.Handlers.Nrun { [UsedImplicitly] public sealed class TeleporterHandler(IMapChangeService mapChangeService) : INrunEventHandler { public NrunRunnerType Runner => NrunRunnerType.Teleport; public Task HandleAsync(ClientSession session, IAliveEntity? target, NrunPacket packet) { if (target is not NpcComponentBundle mapNpc || !((mapNpc.Dialog >= 439 && mapNpc.Dialog <= 441) || mapNpc.Dialog == 11 || mapNpc.Dialog == 16 || mapNpc.Dialog == 9768)) { return Task.CompletedTask; } return packet.Type switch { 1 => RemoveGoldAndTeleportAsync(session, 20, 1000, 7, 11, 90, 94), 2 => RemoveGoldAndTeleportAsync(session, 145, 2000, 11, 15, 108, 112), _ => RemoveGoldAndTeleportAsync(session, 1, 0, 77, 82, 113, 119), }; } private async Task RemoveGoldAndTeleportAsync(ClientSession session, short mapId, long goldToPay, short x1, short x2, short y1, short y2) { var character = session.Character; if (character.Gold >= goldToPay) { character.RemoveGold(goldToPay); await session.SendPacketAsync(character.GenerateGold()); await mapChangeService.ChangeMapAsync(session, mapId, (short)RandomHelper.Instance.RandomNumber(x1, x2), (short)RandomHelper.Instance.RandomNumber(y1, y2)); return; } await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.NotEnoughGold }); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/UpgradeItemHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; namespace NosCore.GameObject.Messaging.Handlers.Nrun { [UsedImplicitly] public sealed class UpgradeItemHandler : INrunEventHandler { public NrunRunnerType Runner => NrunRunnerType.UpgradeItem; public Task HandleAsync(ClientSession session, IAliveEntity? target, NrunPacket packet) { if (target is not NpcComponentBundle) { return Task.CompletedTask; } return session.SendPacketAsync(new WopenPacket { Type = WindowType.UpgradeItem, }); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Quest/OnCharacterMovedHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.QuestService; using NosCore.Packets.Enumerations; namespace NosCore.GameObject.Messaging.Handlers.Quest { // Closes the movement side of the event-driven quest pipeline: on each // player step, look at every open GoTo-style quest and ask its handler // whether the new position satisfies the target. If yes, hand the quest // to QuestService so CompletedOn + the UI packet trio + QuestCompletedEvent // all run through the same, ordered path the kill flow uses. [UsedImplicitly] public sealed class OnCharacterMovedHandler( IQuestService questService, IEnumerable<IQuestTypeHandler> questTypeHandlers) { [UsedImplicitly] public async Task Handle(CharacterMovedEvent evt) { foreach (var quest in evt.Character.Quests.Values.Where(q => q.ObjectivesCompletedOn is null && q.CompletedOn is null).ToList()) { if (quest.Quest.QuestType != QuestType.GoTo) { continue; } var handler = questTypeHandlers.FirstOrDefault(h => h.QuestType == quest.Quest.QuestType); if (handler == null || !await handler.ValidateAsync(evt.Character, quest)) { continue; } await questService.CompleteQuestAsync(evt.Character, quest); } } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Quest/OnEntityCapturedHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.QuestService; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Messaging.Handlers.Quest { // Capture counterpart to OnEntityDiedHandler: forwards the captor's capture // to the quest layer so capture-specific quest objectives (CAPTURE_AND_KEEP / // CAPTURE_WITHOUT_KEEPING equivalents) can be progressed. [UsedImplicitly] public sealed class OnEntityCapturedHandler(IQuestService questService, ILogger<OnEntityCapturedHandler> logger) { [UsedImplicitly] public async Task Handle(EntityCapturedEvent evt) { if (evt.Captor is not ICharacterEntity character) return; if (evt.Victim is not INonPlayableEntity npc || npc.NpcMonster is null) return; try { await questService.OnMonsterCapturedAsync(character, npc.NpcMonster).ConfigureAwait(false); } catch (Exception ex) { logger.LogWarning(ex, "Failed to progress capture quest for character {CharacterId}", character.VisualId); } } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Quest/OnEntityDiedHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Threading.Tasks; using Arch.Core; using JetBrains.Annotations; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Components; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.QuestService; using NosCore.Shared.Enumerations; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Messaging.Handlers.Quest { // Bumps kill-count quests (Hunt / NumberOfKill) for each character that // contributed damage to the dead NPC. Runs off the same EntityDiedEvent // the reward distributor uses so the quest logic never has to be called // from BattleService or RewardService directly. [UsedImplicitly] public sealed class OnEntityDiedHandler(IQuestService questService, ILogger<OnEntityDiedHandler> logger) { [UsedImplicitly] public async Task Handle(EntityDiedEvent evt) { if (evt.Victim is not INonPlayableEntity npc || npc.NpcMonster is null) { return; } var mob = npc.NpcMonster; // Process contributors independently so one failure doesn't abort // the rest; Wolverine would retry the whole event and double-count // the contributors that already succeeded. foreach (var (handle, _) in evt.HitSnapshot) { if (!TryFindCharacter(evt.Victim, handle, out var character)) { continue; } try { await questService.OnMonsterKilledAsync(character, mob).ConfigureAwait(false); } catch (Exception ex) { logger.LogWarning(ex, "Failed to progress kill quest for character {CharacterId}", character.VisualId); } } } private static bool TryFindCharacter(IAliveEntity victim, Entity handle, out ICharacterEntity character) { if (victim.MapInstance is not null) { var world = victim.MapInstance.EcsWorld; if (world.World.IsAlive(handle)) { var identity = world.TryGetComponent<EntityIdentityComponent>(handle); if (identity is { VisualType: VisualType.Player }) { character = new PlayerComponentBundle(handle, world); return true; } } } character = null!; return false; } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/Quest/OnQuestCompletedHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.QuestService; using NosCore.Packets.Enumerations; namespace NosCore.GameObject.Messaging.Handlers.Quest { [UsedImplicitly] public sealed class OnQuestCompletedHandler(IQuestService questService) { [UsedImplicitly] public async Task Handle(QuestCompletedEvent evt) { if (evt.Quest.Quest.NextQuestId is { } next) { await questService.AddQuestAsync(evt.Character, QuestActionType.Achieve, next); } } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/BackPackHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Linq; using System.Threading.Tasks; using JetBrains.Annotations; using Microsoft.Extensions.Options; using NodaTime; using NosCore.Core.Configuration; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Buff; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.InventoryService; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Messaging.Handlers.UseItem { [UsedImplicitly] public sealed class BackPackHandler(IOptions<WorldConfiguration> conf, IClock clock) { [UsedImplicitly] public async Task Handle(ItemUsedEvent evt) { var itemInstance = evt.InventoryItem; var effect = itemInstance.ItemInstance.Item.Effect; if (effect != ItemEffectType.InventoryUpgrade && effect != ItemEffectType.InventoryTicketUpgrade) { return; } var session = evt.ClientSession; if (effect == ItemEffectType.InventoryUpgrade && session.Character.StaticBonusList.Any(s => s.StaticBonusType == StaticBonusType.BackPack)) { await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Green, Message = Game18NConstString.NotInPair }); return; } if (effect == ItemEffectType.InventoryTicketUpgrade && session.Character.StaticBonusList.Any(s => s.StaticBonusType == StaticBonusType.InventoryTicketUpgrade)) { await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Green, Message = Game18NConstString.NotInPair }); return; } session.Character.StaticBonusList.Add(new StaticBonusDto { CharacterId = session.Character.CharacterId, DateEnd = itemInstance.ItemInstance.Item.EffectValue == 0 ? null : clock.GetCurrentInstant().Plus(Duration.FromDays(itemInstance.ItemInstance.Item.EffectValue)), StaticBonusType = effect == ItemEffectType.InventoryTicketUpgrade ? StaticBonusType.InventoryTicketUpgrade : StaticBonusType.BackPack }); await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Green, Message = Game18NConstString.EffectActivated, ArgumentType = 2, Game18NArguments = { itemInstance.ItemInstance.Item.VNum.ToString() } }); await session.SendPacketAsync(itemInstance.GeneratePocketChange((PocketType)itemInstance.Type, itemInstance.Slot)); session.Character.InventoryService.RemoveItemAmountFromInventory(1, itemInstance.ItemInstanceId); session.Character.LoadExpensions(); await session.SendPacketAsync(session.Character.GenerateExts(conf)); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/BazaarMedalsHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Linq; using System.Threading.Tasks; using JetBrains.Annotations; using NodaTime; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Buff; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.InventoryService; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Messaging.Handlers.UseItem { [UsedImplicitly] public sealed class BazaarMedalsHandler(IClock clock) { [UsedImplicitly] public async Task Handle(ItemUsedEvent evt) { var effect = evt.InventoryItem.ItemInstance.Item.Effect; if (effect != ItemEffectType.SilverNosMerchantUpgrade && effect != ItemEffectType.GoldNosMerchantUpgrade) { return; } var session = evt.ClientSession; if (session.Character.StaticBonusList.Any(s => s.StaticBonusType == StaticBonusType.BazaarMedalGold || s.StaticBonusType == StaticBonusType.BazaarMedalSilver)) { return; } var itemInstance = evt.InventoryItem; session.Character.StaticBonusList.Add(new StaticBonusDto { CharacterId = session.Character.CharacterId, DateEnd = clock.GetCurrentInstant().Plus(Duration.FromDays(itemInstance.ItemInstance.Item.EffectValue)), StaticBonusType = effect == ItemEffectType.SilverNosMerchantUpgrade ? StaticBonusType.BazaarMedalSilver : StaticBonusType.BazaarMedalGold }); await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Green, Message = Game18NConstString.EffectActivated, ArgumentType = 2, Game18NArguments = { itemInstance.ItemInstance.Item.VNum.ToString() } }); await session.SendPacketAsync(itemInstance.GeneratePocketChange((PocketType)itemInstance.Type, itemInstance.Slot)); session.Character.InventoryService.RemoveItemAmountFromInventory(1, itemInstance.ItemInstanceId); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/BoxEffectHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Linq; using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Shared.Helpers; namespace NosCore.GameObject.Messaging.Handlers.UseItem { [UsedImplicitly] public sealed class BoxEffectHandler( IItemGenerationService itemProvider, IDao<RollGeneratedItemDto, short> rollGeneratedItemDao) { [UsedImplicitly] public async Task Handle(ItemUsedEvent evt) { var source = evt.InventoryItem; if (source.ItemInstance.Item.Effect != ItemEffectType.BoxEffect) { return; } var session = evt.ClientSession; var character = session.Character; var boxVNum = source.ItemInstance.ItemVNum; var boxRare = source.ItemInstance.Rare; var boxDesign = source.ItemInstance.Design; var pool = (rollGeneratedItemDao.Where(r => r.OriginalItemVNum == boxVNum && r.MinimumOriginalItemRare <= boxRare && r.MaximumOriginalItemRare >= boxRare && r.OriginalItemDesign == boxDesign && r.Probability > 0) ?? Enumerable.Empty<RollGeneratedItemDto>()) .OrderBy(r => r.ItemGeneratedVNum) .ToList(); if (pool.Count == 0) { return; } var sum = pool.Sum(r => (int)r.Probability); if (sum <= 0) { return; } var roll = RandomHelper.Instance.RandomNumber(0, sum); var cumulative = 0; RollGeneratedItemDto? chosen = null; foreach (var entry in pool) { cumulative += entry.Probability; if (roll < cumulative) { chosen = entry; break; } } if (chosen == null) return; var reward = itemProvider.Create( chosen.ItemGeneratedVNum, chosen.ItemGeneratedAmount, chosen.IsRareRandom ? (sbyte)boxRare : (sbyte)0, chosen.ItemGeneratedUpgrade); if (reward == null) return; var added = character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(reward, character.CharacterId)); if (added == null || added.Count == 0) { await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.NotEnoughSpace }); return; } foreach (var inv in added) { await session.SendPacketAsync(inv.GeneratePocketChange((PocketType)inv.Type, inv.Slot)); } await session.SendPacketAsync(new RdiPacket { ItemVNum = chosen.ItemGeneratedVNum, Amount = chosen.ItemGeneratedAmount, }); await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = character.CharacterId, Type = SayColorType.Green, Message = Game18NConstString.ItemReceived, ArgumentType = 2, Game18NArguments = { chosen.ItemGeneratedVNum.ToString(), chosen.ItemGeneratedAmount } }); character.InventoryService.RemoveItemAmountFromInventory(1, source.ItemInstanceId); await session.SendPacketAsync(source.GeneratePocketChange((PocketType)source.Type, source.Slot)); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/ChangeGenderHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Linq; using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Networking; using NosCore.Networking; using NosCore.Packets.Enumerations; namespace NosCore.GameObject.Messaging.Handlers.UseItem { [UsedImplicitly] public sealed class ChangeGenderHandler { [UsedImplicitly] public async Task Handle(ItemUsedEvent evt) { var item = evt.InventoryItem.ItemInstance.Item; if (item.Effect != ItemEffectType.ChangeGender) { return; } var session = evt.ClientSession; var character = session.Character; if (character.IsVehicled || character.InventoryService.Values.Any(v => v.Type == NoscorePocketType.Wear)) { return; } character.Gender = character.Gender == GenderType.Female ? GenderType.Male : GenderType.Female; await session.SendPacketAsync(character.GenerateEq()); await character.MapInstance.SendPacketAsync(character.GenerateIn(string.Empty)); await character.MapInstance.SendPacketAsync(character.GenerateCMode()); await character.MapInstance.SendPacketAsync(character.GenerateEff(196)); character.InventoryService.RemoveItemAmountFromInventory(1, evt.InventoryItem.ItemInstanceId); await session.SendPacketAsync(evt.InventoryItem.GeneratePocketChange((PocketType)evt.InventoryItem.Type, evt.InventoryItem.Slot)); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/HairDieHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Networking; using NosCore.Networking; using NosCore.Packets.Enumerations; using NosCore.Shared.Helpers; namespace NosCore.GameObject.Messaging.Handlers.UseItem { [UsedImplicitly] public sealed class HairDieHandler { [UsedImplicitly] public async Task Handle(ItemUsedEvent evt) { var item = evt.InventoryItem.ItemInstance.Item; var isColor = item.Effect == ItemEffectType.ApplyHairDie; var isStyle = item.Effect == ItemEffectType.ApplyHairStyle; if (!isColor && !isStyle) { return; } var session = evt.ClientSession; if (session.Character.IsVehicled) { return; } if (isColor) { var next = item.EffectValue == 99 ? (byte)RandomHelper.Instance.RandomNumber(0, 128) : (byte)item.EffectValue; session.Character.HairColor = Enum.IsDefined(typeof(HairColorType), next) ? (HairColorType)next : HairColorType.DarkPurple; } else { var next = (byte)item.EffectValue; session.Character.HairStyle = Enum.IsDefined(typeof(HairStyleType), next) ? (HairStyleType)next : HairStyleType.HairStyleA; } await session.SendPacketAsync(session.Character.GenerateEq()); await session.Character.MapInstance.SendPacketAsync(session.Character.GenerateIn(string.Empty)); session.Character.InventoryService.RemoveItemAmountFromInventory(1, evt.InventoryItem.ItemInstanceId); await session.SendPacketAsync(evt.InventoryItem.GeneratePocketChange((PocketType)evt.InventoryItem.Type, evt.InventoryItem.Slot)); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/MinilandBellHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.Data.Enumerations.Items; using NosCore.Data.Enumerations.Map; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.MapChangeService; using NosCore.GameObject.Services.MinilandService; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Messaging.Handlers.UseItem { [UsedImplicitly] public sealed class MinilandBellHandler(IMinilandService minilandProvider, IMapChangeService mapChangeService) { [UsedImplicitly] public async Task Handle(ItemUsedEvent evt) { var item = evt.InventoryItem.ItemInstance.Item; if (item.Effect != ItemEffectType.Teleport || item.EffectValue != 2) { return; } var session = evt.ClientSession; var itemInstance = evt.InventoryItem; var packet = evt.Packet; var character = session.Character; if (character.MapInstance.MapInstanceType != MapInstanceType.BaseMapInstance) { await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.CanNotBeUsedHere }); return; } character = session.Character; if (character.IsVehicled) { await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.OnlyPotionInVehicle }); return; } if (packet.Mode == 0) { character = session.Character; await session.SendPacketAsync(new DelayPacket { Delay = 5000, Type = DelayPacketType.ItemInUse, Packet = character.GenerateUseItem((PocketType)itemInstance.Type, itemInstance.Slot, 2, 0) }); return; } character = session.Character; character.InventoryService.RemoveItemAmountFromInventory(1, itemInstance.ItemInstanceId); var characterId = character.CharacterId; await session.SendPacketAsync(itemInstance.GeneratePocketChange((PocketType)itemInstance.Type, itemInstance.Slot)); var miniland = minilandProvider.GetMiniland(characterId); await mapChangeService.ChangeMapInstanceAsync(session, miniland.MapInstanceId, 5, 8); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/PetBasketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Linq; using System.Threading.Tasks; using JetBrains.Annotations; using Microsoft.Extensions.Options; using NodaTime; using NosCore.Core.Configuration; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Buff; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.InventoryService; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Messaging.Handlers.UseItem { [UsedImplicitly] public sealed class PetBasketHandler(IOptions<WorldConfiguration> conf, IClock clock) { [UsedImplicitly] public async Task Handle(ItemUsedEvent evt) { var itemInstance = evt.InventoryItem; var effect = itemInstance.ItemInstance.Item.Effect; var bonus = effect switch { ItemEffectType.PetSpaceUpgrade => StaticBonusType.PetBasket, ItemEffectType.PetBasketUpgrade => StaticBonusType.PetBasket, ItemEffectType.PetBackpackUpgrade => StaticBonusType.PetBackPack, _ => (StaticBonusType?)null, }; if (bonus == null) { return; } var session = evt.ClientSession; if (session.Character.StaticBonusList.Any(s => s.StaticBonusType == bonus.Value)) { await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Green, Message = Game18NConstString.NotInPair }); return; } session.Character.StaticBonusList.Add(new StaticBonusDto { CharacterId = session.Character.CharacterId, DateEnd = itemInstance.ItemInstance.Item.EffectValue == 0 ? null : clock.GetCurrentInstant().Plus(Duration.FromDays(itemInstance.ItemInstance.Item.EffectValue)), StaticBonusType = bonus.Value }); await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Green, Message = Game18NConstString.EffectActivated, ArgumentType = 2, Game18NArguments = { itemInstance.ItemInstance.Item.VNum.ToString() } }); session.Character.InventoryService.RemoveItemAmountFromInventory(1, itemInstance.ItemInstanceId); await session.SendPacketAsync(itemInstance.GeneratePocketChange((PocketType)itemInstance.Type, itemInstance.Slot)); session.Character.LoadExpensions(); await session.SendPacketAsync(session.Character.GenerateExts(conf)); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/SealedTarotCardHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Linq; using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Messaging.Handlers.UseItem { [UsedImplicitly] public sealed class SealedTarotCardHandler(IItemGenerationService itemProvider) { [UsedImplicitly] public async Task Handle(ItemUsedEvent evt) { var item = evt.InventoryItem.ItemInstance.Item; if (item.Effect != ItemEffectType.SealedTarotCard || item.EffectValue <= 0) { return; } var session = evt.ClientSession; var character = session.Character; var gift = itemProvider.Create((short)item.EffectValue, 1); if (gift == null) return; var added = character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(gift, character.CharacterId))?.FirstOrDefault(); if (added == null) { await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.NotEnoughSpace }); return; } await session.SendPacketAsync(added.GeneratePocketChange((PocketType)added.Type, added.Slot)); await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = character.CharacterId, Type = SayColorType.Green, Message = Game18NConstString.ItemReceived, ArgumentType = 2, Game18NArguments = { gift.ItemVNum.ToString(), 1 } }); character.InventoryService.RemoveItemAmountFromInventory(1, evt.InventoryItem.ItemInstanceId); await session.SendPacketAsync(evt.InventoryItem.GeneratePocketChange((PocketType)evt.InventoryItem.Type, evt.InventoryItem.Slot)); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/SpRechargerHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; namespace NosCore.GameObject.Messaging.Handlers.UseItem { [UsedImplicitly] public sealed class SpRechargerHandler(IOptions<WorldConfiguration> worldConfiguration) { [UsedImplicitly] public async Task Handle(ItemUsedEvent evt) { var item = evt.InventoryItem.ItemInstance.Item; if (item.ItemType != ItemType.Special || item.Effect < ItemEffectType.DroppedSpRecharger || item.Effect > ItemEffectType.CraftedSpRecharger) { return; } var session = evt.ClientSession; var character = session.Character; if (character.SpAdditionPoint < worldConfiguration.Value.MaxAdditionalSpPoints) { var itemInstance = evt.InventoryItem; character.InventoryService.RemoveItemAmountFromInventory(1, itemInstance.ItemInstanceId); await session.SendPacketAsync(itemInstance.GeneratePocketChange((PocketType)itemInstance.Type, itemInstance.Slot)); character = session.Character; character.AddAdditionalSpPoints(itemInstance.ItemInstance.Item.EffectValue, worldConfiguration); await session.SendPacketAsync(character.GenerateSpPoint(worldConfiguration)); } else { await session.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.CannotBeUsedExceedsCapacity }); } } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/SpeakerHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Messaging.Events; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; namespace NosCore.GameObject.Messaging.Handlers.UseItem { [UsedImplicitly] public sealed class SpeakerHandler { [UsedImplicitly] public Task Handle(ItemUsedEvent evt) { var item = evt.InventoryItem.ItemInstance.Item; if (item.ItemType != ItemType.Magical || item.Effect != ItemEffectType.Speaker) { return Task.CompletedTask; } return evt.ClientSession.SendPacketAsync(new GuriPacket { Type = GuriPacketType.TextInput, Argument = 3, SecondArgument = 1, EntityId = evt.InventoryItem.Slot }); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/TitleHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Messaging.Events; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; namespace NosCore.GameObject.Messaging.Handlers.UseItem { [UsedImplicitly] public sealed class TitleHandler { [UsedImplicitly] public Task Handle(ItemUsedEvent evt) { if (evt.InventoryItem.ItemInstance.Item.ItemType != ItemType.Title) { return Task.CompletedTask; } return evt.ClientSession.SendPacketAsync(new QnaiPacket { YesPacket = new GuriPacket { Type = GuriPacketType.Title, Argument = (uint)evt.InventoryItem.ItemInstance.ItemVNum, EntityId = evt.InventoryItem.Slot }, Question = Game18NConstString.AskAddTitle }); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/VehicleHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.TransformationService; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Messaging.Handlers.UseItem { [UsedImplicitly] public sealed class VehicleHandler( ILogger<VehicleHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage, ITransformationService transformationService) { [UsedImplicitly] public async Task Handle(ItemUsedEvent evt) { var item = evt.InventoryItem.ItemInstance.Item; if (item.ItemType != ItemType.Special || item.Effect != ItemEffectType.Vehicle) { return; } var session = evt.ClientSession; var itemInstance = evt.InventoryItem; var packet = evt.Packet; var character = session.Character; if (character.InExchangeOrShop) { logger.LogError(logLanguage[LogLanguageKey.CANT_USE_ITEM_IN_SHOP]); return; } character = session.Character; if (packet.Mode == 1 && !character.IsVehicled) { await session.SendPacketAsync(new DelayPacket { Type = DelayPacketType.Locomotion, Delay = 3000, Packet = character.GenerateUseItem((PocketType)itemInstance.Type, itemInstance.Slot, 2, 0) }); return; } character = session.Character; if (packet.Mode == 2 && !character.IsVehicled) { await transformationService.ChangeVehicleAsync(session, itemInstance.ItemInstance.Item); return; } await transformationService.RemoveVehicleAsync(session); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/WearHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Threading.Tasks; using JetBrains.Annotations; using Microsoft.Extensions.Options; using NodaTime; using NosCore.Core.Configuration; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Networking; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Messaging.Handlers.UseItem { [UsedImplicitly] public sealed class WearHandler( ILogger<WearHandler> logger, IClock clock, ILogLanguageLocalizer<LogLanguageKey> logLanguage, IOptions<WorldConfiguration> worldConfiguration) { [UsedImplicitly] public async Task Handle(ItemUsedEvent evt) { var itemType = evt.InventoryItem.ItemInstance.Item.ItemType; if (itemType != ItemType.Weapon && itemType != ItemType.Jewelery && itemType != ItemType.Armor && itemType != ItemType.Fashion && itemType != ItemType.Specialist) { return; } var session = evt.ClientSession; var itemInstance = evt.InventoryItem; var packet = evt.Packet; await session.SendPacketAsync(session.Character.GenerateEff(123)); if (session.Character.InExchangeOrShop) { logger.LogError(logLanguage[LogLanguageKey.CANT_USE_ITEM_IN_SHOP]); return; } if (itemInstance.ItemInstance.BoundCharacterId == null && packet.Mode == 0 && itemInstance.ItemInstance.Item.RequireBinding) { await session.SendPacketAsync(new QnaPacket { YesPacket = session.Character.GenerateUseItem( (PocketType)itemInstance.Type, itemInstance.Slot, 1, (byte)(packet.Parameter ?? 0)), Question = session.GetMessageFromKey(LanguageKey.ASK_BIND) }); return; } if (itemInstance.ItemInstance.Item.LevelMinimum > (itemInstance.ItemInstance.Item.IsHeroic ? session.Character.HeroLevel : session.Character.Level) || (itemInstance.ItemInstance.Item.Sex != 0 && ((itemInstance.ItemInstance.Item.Sex >> (byte)session.Character.Gender) & 1) != 1) || (itemInstance.ItemInstance.Item.Class != 0 && ((itemInstance.ItemInstance.Item.Class >> (byte)session.Character.Class) & 1) != 1) || (itemInstance.ItemInstance.Item.ReputationMinimum > 0 && session.Character.ReputIconValue < itemInstance.ItemInstance.Item.ReputationMinimum)) { await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.CanNotWearThat }); return; } if (session.Character.UseSp && itemInstance.ItemInstance.Item.EquipmentSlot == EquipmentType.Fairy) { var sp = session.Character.InventoryService.LoadBySlotAndType( (byte)EquipmentType.Sp, NoscorePocketType.Wear); if (sp != null && sp.ItemInstance.Item.Element != 0 && itemInstance.ItemInstance.Item.Element != sp.ItemInstance.Item.Element && itemInstance.ItemInstance.Item.Element != sp.ItemInstance.Item.SecondaryElement) { await session.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.SpecialistAndFairyDifferentElement }); return; } } if (itemInstance.ItemInstance.Item.EquipmentSlot == EquipmentType.Sp) { var timeSpanSinceLastSpUsage = clock.GetCurrentInstant().Minus(session.Character.LastSp).TotalSeconds; var sp = session.Character.InventoryService.LoadBySlotAndType( (byte)EquipmentType.Sp, NoscorePocketType.Wear); if (timeSpanSinceLastSpUsage < session.Character.SpCooldown && sp != null) { await session.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.CantTrasformWithSideEffect, ArgumentType = 4, Game18NArguments = { session.Character.SpCooldown - (int)Math.Round(timeSpanSinceLastSpUsage) } }); return; } if (session.Character.UseSp) { await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.SpecialistCardsCannotBeTradedWhileTransformed }); return; } if (itemInstance.ItemInstance.Rare == -2) { await session.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.CantUseBecauseSoulDestroyed }); return; } } if (session.Character.JobLevel < itemInstance.ItemInstance.Item.LevelJobMinimum) { await session.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.CanNotBeWornDifferentClass }); return; } session.Character.InventoryService.MoveInPocket(packet.Slot, (NoscorePocketType)packet.Type, NoscorePocketType.Wear, (short)itemInstance.ItemInstance.Item.EquipmentSlot, true); var newItem = session.Character.InventoryService .LoadBySlotAndType(packet.Slot, (NoscorePocketType)packet.Type); await session.SendPacketAsync(newItem.GeneratePocketChange(packet.Type, packet.Slot)); await session.Character.MapInstance.SendPacketAsync(session.Character.GenerateEq()); await session.SendPacketAsync(session.Character.GenerateEquipment()); if (itemInstance.ItemInstance.Item.EquipmentSlot == EquipmentType.Sp) { await session.SendPacketAsync(session.Character.GenerateSpPoint(worldConfiguration)); } if (itemInstance.ItemInstance.Item.EquipmentSlot == EquipmentType.Fairy) { await session.Character.MapInstance.SendPacketAsync( session.Character.GeneratePairy(itemInstance.ItemInstance as WearableInstance)); } if (itemInstance.ItemInstance.Item.EquipmentSlot == EquipmentType.Amulet) { await session.SendPacketAsync(session.Character.GenerateEff(39)); } itemInstance.ItemInstance.BoundCharacterId = session.Character.CharacterId; if (itemInstance.ItemInstance.Item.ItemValidTime > 0 && itemInstance.ItemInstance.BoundCharacterId != null) { itemInstance.ItemInstance.ItemDeleteTime = clock.GetCurrentInstant().Plus(Duration.FromSeconds(itemInstance.ItemInstance.Item.ItemValidTime)); } } } } ================================================ FILE: src/NosCore.GameObject/Messaging/RecurringMessagePublisher.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Wolverine; namespace NosCore.GameObject.Messaging { // Hosted service that publishes a fresh instance of TMessage every Interval. Use one registration // per recurring job — Wolverine handles the actual handler dispatch, retries, and tracing. public sealed class RecurringMessagePublisher<TMessage>( IMessageBus bus, ILogger<RecurringMessagePublisher<TMessage>> logger, TimeSpan interval) : BackgroundService where TMessage : new() { protected override async Task ExecuteAsync(CancellationToken stoppingToken) { using var timer = new PeriodicTimer(interval); while (await timer.WaitForNextTickAsync(stoppingToken).ConfigureAwait(false)) { try { await bus.PublishAsync(new TMessage()).ConfigureAwait(false); } catch (Exception ex) when (ex is not OperationCanceledException) { logger.LogError(ex, "Recurring publish of {Message} failed", typeof(TMessage).Name); } } } } } ================================================ FILE: src/NosCore.GameObject/Messaging/ScheduledJobs/RemoveTimeoutStaticBonusesHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NodaTime; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; namespace NosCore.GameObject.Messaging.ScheduledJobs { [UsedImplicitly] public sealed class RemoveTimeoutStaticBonusesHandler( IClock clock, ISessionRegistry sessionRegistry) { [UsedImplicitly] public async Task Handle(RemoveTimeoutStaticBonusesMessage _) { var now = clock.GetCurrentInstant(); foreach (var character in sessionRegistry.GetCharacters()) { if (character.StaticBonusList.RemoveAll(s => s.DateEnd != null && s.DateEnd < now) > 0) { await character.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.MagicItemExpired }); } } } } } ================================================ FILE: src/NosCore.GameObject/Messaging/ScheduledJobs/RemoveTimeoutStaticBonusesMessage.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.GameObject.Messaging.ScheduledJobs { public sealed record RemoveTimeoutStaticBonusesMessage; } ================================================ FILE: src/NosCore.GameObject/Messaging/ScheduledJobs/SaveAllSessionsHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Linq; using System.Threading.Tasks; using JetBrains.Annotations; using Microsoft.Extensions.Logging; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.SaveService; using NosCore.Shared.I18N; namespace NosCore.GameObject.Messaging.ScheduledJobs { [UsedImplicitly] public sealed class SaveAllSessionsHandler( ILogger<SaveAllSessionsHandler> logger, ISaveService saveService, ILogLanguageLocalizer<LogLanguageKey> logLanguage, ISessionRegistry sessionRegistry) { [UsedImplicitly] public async Task Handle(SaveAllSessionsMessage _) { logger.LogInformation(logLanguage[LogLanguageKey.SAVING_ALL]); await Task.WhenAll(sessionRegistry.GetSessions().Select(saveService.SaveAsync)); } } } ================================================ FILE: src/NosCore.GameObject/Messaging/ScheduledJobs/SaveAllSessionsMessage.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.GameObject.Messaging.ScheduledJobs { public sealed record SaveAllSessionsMessage; } ================================================ FILE: src/NosCore.GameObject/Messaging/WolverineDependencyRegistrar.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using Microsoft.Extensions.DependencyInjection; using NosCore.Core; using NosCore.Core.Services.IdService; using NosCore.GameObject.Ecs; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.Messaging.Handlers.Nrun; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.ExchangeService; using NosCore.GameObject.Services.GroupService; using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.GameObject.Services.MinilandService; using NosCore.Networking; using NosCore.Networking.SessionGroup; using NosCore.PathFinder.Heuristic; using NosCore.PathFinder.Interfaces; namespace NosCore.GameObject.Messaging; // Single source of truth for every GameObject-side registration that both MSDI // (for Wolverine codegen) and Autofac (for runtime resolution) need to see. // // AutofacServiceProviderFactory.Populate() copies MSDI registrations into the // Autofac container at host-build time, so anything registered here becomes // visible to both: Wolverine at codegen, Autofac at runtime. Registering a // service here and again on the Autofac side duplicates the registration and // is the most common cause of "An item with the same key..." style drift // bugs — so bootstrap and tests both call this and nowhere else. // // DAO/DbContext side is mirrored separately by PersistenceModule.MirrorTo so // this assembly doesn't have to reference NosCore.Database. public static class WolverineDependencyRegistrar { public static void RegisterDependencies(IServiceCollection services) { // ID generators — one per scoped entity family. Seed values come from // production behaviour: map items start at 100k to avoid colliding with // monster/npc visual ids that live below that. services.AddSingleton<IIdService<Group>>(_ => new IdService<Group>(1)); services.AddSingleton<IIdService<MapItemComponentBundle>>(_ => new IdService<MapItemComponentBundle>(100000)); services.AddSingleton<IIdService<ChannelInfo>>(_ => new IdService<ChannelInfo>(1)); // Pathfinder / heuristic — OctileDistance is the standard NosTale grid // metric (diagonal moves cost sqrt(2), orthogonal cost 1). services.AddSingleton<IHeuristic, OctileDistanceHeuristic>(); // Session / map registries. Singletons because they own global state // keyed by channel id and map instance id respectively. services.AddSingleton<ISessionRegistry, SessionRegistry>(); services.AddSingleton<IMinilandRegistry, MinilandRegistry>(); services.AddSingleton<IMapInstanceRegistry, MapInstanceRegistry>(); services.AddSingleton<IExchangeRequestRegistry, ExchangeRequestRegistry>(); services.AddSingleton<ISessionGroupFactory, SessionGroupFactory>(); // Inter-channel hub clients — one instance per concrete HubClient, each // exposed as all of its implemented interfaces so features that depend on // a specific hub contract (IFriendHub, IBlacklistHub, …) resolve cleanly. foreach (var hubType in typeof(ChannelHubClient).Assembly.GetTypes() .Where(t => t.Name.EndsWith("HubClient") && t.IsClass && !t.IsAbstract)) { foreach (var iface in hubType.GetInterfaces()) { services.AddSingleton(iface, hubType); } services.AddSingleton(hubType); } // Convention-based scan for the rest of the game-object services. Naming // tells us WHAT a class is, not HOW to resolve it — so lifetime comes from // the ISingletonService marker interface (implemented by classes that own // shared state: caches, queues, per-entity maps). Everything else is // transient so short-lived handlers don't accidentally share mutable state. // // Matched suffixes cover the vocabulary we actually use across the codebase: // *Service, *Provider, *Resolver, *Calculator, *Catalog, *Queue, *Ai. // New classes can add a suffix here if they want auto-discovery, or they // can be registered explicitly above. var gameObjectAssembly = typeof(WolverineDependencyRegistrar).Assembly; foreach (var impl in gameObjectAssembly.GetTypes() .Where(t => t.IsClass && !t.IsAbstract && t.IsPublic) .Where(t => typeof(INrunEventHandler).IsAssignableFrom(t))) { services.AddTransient(typeof(INrunEventHandler), impl); services.AddTransient(impl); } foreach (var impl in gameObjectAssembly.GetTypes() .Where(t => t.IsClass && !t.IsAbstract && t.IsPublic) .Where(t => typeof(Services.QuestService.IQuestTypeHandler).IsAssignableFrom(t))) { services.AddTransient(typeof(Services.QuestService.IQuestTypeHandler), impl); services.AddTransient(impl); } var suffixes = new[] { "Service", "Provider", "Resolver", "Calculator", "Catalog", "Queue", "Ai" }; foreach (var impl in gameObjectAssembly.GetTypes() .Where(t => t.IsClass && !t.IsAbstract && t.IsPublic) .Where(t => suffixes.Any(suffix => t.Name.EndsWith(suffix)))) { var lifetime = typeof(ISingletonService).IsAssignableFrom(impl) ? ServiceLifetime.Singleton : ServiceLifetime.Transient; foreach (var iface in impl.GetInterfaces() .Where(i => i != typeof(ISingletonService) && !IsSystemInterface(i))) { services.Add(new ServiceDescriptor(iface, impl, lifetime)); } services.Add(new ServiceDescriptor(impl, impl, lifetime)); } } // Filter out framework interfaces (IDisposable, IAsyncDisposable, IEquatable, …) // so the scan only registers domain-facing contracts. private static bool IsSystemInterface(Type iface) => iface.Namespace?.StartsWith("System", StringComparison.Ordinal) == true; } ================================================ FILE: src/NosCore.GameObject/Messaging/WolverineHostExtensions.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Reflection; using Microsoft.Extensions.Hosting; using Wolverine; namespace NosCore.GameObject.Messaging { public static class WolverineHostExtensions { // Local in-process message bus. Handlers are auto-discovered by convention // (any class with a Handle/HandleAsync method whose first parameter is the // message type) from ApplicationAssembly + any extra handler assemblies. // // Pinning ApplicationAssembly scopes Wolverine's default scan so it doesn't // sweep every loaded native runtime DLL looking for IWolverineExtension impls // — that's what produced the "To disable automatic Wolverine extension finding" // startup notice. Handler convention stays enabled so new *Handler classes are // picked up without needing an explicit registration. public static IHostBuilder UseNosCoreWolverine(this IHostBuilder builder, string serviceName, params Assembly[] handlerAssemblies) { return builder.UseWolverine(opts => { opts.ServiceName = serviceName; opts.ApplicationAssembly = typeof(WolverineHostExtensions).Assembly; foreach (var asm in handlerAssemblies) { opts.Discovery.IncludeAssembly(asm); } }, ExtensionDiscovery.ManualOnly); } } } ================================================ FILE: src/NosCore.GameObject/Networking/Broadcaster.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.WebApi; using NosCore.Networking.SessionGroup; using NosCore.Packets.Interfaces; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; namespace NosCore.GameObject.Networking { public class Broadcaster : IBroadcastable { public short MaxPacketsBuffer { get; } = 250; private static Broadcaster? _instance; private static ISessionGroupFactory? _sessionGroupFactory; private Broadcaster(ISessionGroupFactory sessionGroupFactory) { Sessions = sessionGroupFactory.Create(); } private ConcurrentDictionary<long, ClientSession.ClientSession> ClientSessions { get; } = new(); public static void Initialize(ISessionGroupFactory sessionGroupFactory) { _sessionGroupFactory = sessionGroupFactory; } public static Broadcaster Instance => _instance ??= new Broadcaster(_sessionGroupFactory ?? throw new InvalidOperationException("Broadcaster.Initialize must be called before accessing Instance")); public ISessionGroup Sessions { get; set; } public ConcurrentQueue<IPacket> LastPackets { get; } = new(); public void UnregisterSession(ClientSession.ClientSession clientSession) { ClientSessions.TryRemove(clientSession.SessionId, out _); if (clientSession.Channel?.Id != null) { Sessions.Remove(clientSession.Channel); } } public void RegisterSession(ClientSession.ClientSession clientSession) { if (clientSession.Channel?.Id != null) { Sessions.Add(clientSession.Channel); } ClientSessions.TryAdd(clientSession.SessionId, clientSession); } public IEnumerable<ClientSession.ClientSession> GetSessions() { return GetSessions(null); } public IEnumerable<ClientSession.ClientSession> GetSessions(Func<ClientSession.ClientSession, bool>? func) { var selection = ClientSessions.Values.Where(s => s.HasSelectedCharacter); return func == null ? selection : selection.Where(func); } public ClientSession.ClientSession? GetSession(Func<ClientSession.ClientSession, bool>? func) { var selection = ClientSessions.Values.Where(s => s.HasSelectedCharacter); return func == null ? selection.FirstOrDefault() : selection.FirstOrDefault(func); } public static void Reset() { _instance = null; } public List<Subscriber> ConnectedAccounts() { return ClientSessions.Values.Select(s => new Subscriber { Name = s.Account.Name, Language = s.Account.Language, ConnectedCharacter = !s.HasSelectedCharacter ? null : new Data.WebApi.Character { Name = s.Character.Name, Id = s.Character.CharacterId, FriendRequestBlocked = s.Character.FriendRequestBlocked } }).ToList(); } } } ================================================ FILE: src/NosCore.GameObject/Networking/ClientSession/ClientSession.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Arch.Core; using NosCore.Core.Concurrency; using NosCore.Core.I18N; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.PacketHandlerService; using NosCore.Networking; using NosCore.Networking.Encoding; using NosCore.Packets.Attributes; using NosCore.Packets.Interfaces; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace NosCore.GameObject.Networking.ClientSession { public class ClientSession( ILogger<ClientSession> logger, IPacketHandlerRegistry packetHandlerRegistry, ILogLanguageLocalizer<NosCore.Networking.Resource.LogLanguageKey> networkingLogLanguage, ILogLanguageLocalizer<LogLanguageKey> logLanguage, IPubSubHub pubSubHub, IEncoder encoder, IPacketHandlingStrategy packetHandlingStrategy, IEnumerable<ISessionDisconnectHandler> disconnectHandlers, ISessionRegistry sessionRegistry, IAuthHub authHub, IGameLanguageLocalizer? gameLanguageLocalizer = null) : NetworkClient(logger, networkingLogLanguage, encoder), IPacketSender { private readonly AsyncLock _handlingPacketLock = new(); private readonly ILogger<ClientSession> _logger = logger; private PlayerComponentBundle _characterBundle; public bool HasPlayerEntity => _characterBundle.Entity != default && _characterBundle.World != null && _characterBundle.World.World.IsAlive(_characterBundle.Entity); public ref PlayerComponentBundle Character { get { if (_characterBundle.Entity == default) { throw new InvalidOperationException("Character entity not initialized"); } if (_characterBundle.World == null || !_characterBundle.World.World.IsAlive(_characterBundle.Entity)) { // Entity handle still looks valid but the underlying chunk is gone — // happens if the map world was disposed, or the entity was destroyed // without ClearPlayerEntity running. Reading components would silently // return default structs with null reference fields (see the // PlayerComponentBundle -> PlayerStateComponent implicit cast that // swallows a null TryGetComponent with `?? default`), so NREs fire // downstream instead of here. Fail fast so the caller can disconnect // or rehydrate the session. throw new InvalidOperationException("Character entity handle is stale (destroyed or in a disposed world)"); } return ref _characterBundle; } } public bool GameStarted { get; set; } public bool MfaValidated { get; set; } public int LastKeepAliveIdentity { get; set; } public IList<IPacket> WaitForPacketList { get; } = new List<IPacket>(); public int LastPulse { get; set; } public AccountDto Account { get; set; } = null!; public int? WaitForPacketsAmount { get; set; } public IPacketHandler? GetHandler(Type packetType) { return packetHandlerRegistry.GetHandler(packetType); } public PacketHeaderAttribute? GetPacketAttribute(Type packetType) { return packetHandlerRegistry.GetPacketAttribute(packetType); } public ValueTask<AsyncLock.Releaser> AcquirePacketLockAsync(CancellationToken ct = default) => _handlingPacketLock.AcquireAsync(ct); public void InitializeAccount(AccountDto accountDto) { Account = accountDto; IsAuthenticated = true; if (Channel != null) { sessionRegistry.Register(new SessionInfo { ChannelId = Channel.Id, SessionId = SessionId, Sender = this, AccountName = accountDto.Name, Disconnect = DisconnectAsync }); var remoteAddress = Channel.RemoteAddress; if (remoteAddress != null) { _ = authHub.RegisterSessionIpAsync(accountDto.Name, remoteAddress); } } } public void SetPlayerEntity(Entity entity, MapWorld world) { _characterBundle = new PlayerComponentBundle(entity, world); HasSelectedCharacter = true; if (Channel != null) { sessionRegistry.UpdateCharacter(Channel.Id, _characterBundle.CharacterId, _characterBundle.MapInstance?.MapInstanceId ?? Guid.Empty); } } public void ClearPlayerEntity() { if (_characterBundle.Entity != default && _characterBundle.World != null) { _characterBundle.World.DestroyEntity(_characterBundle.Entity); } _characterBundle = default; HasSelectedCharacter = false; } public async Task HandlePacketAsync(NosPackageInfo package) { try { await HandlePacketsAsync(package.Packets, true); } catch (Exception ex) { _logger.LogError(logLanguage[LogLanguageKey.PACKET_HANDLING_ERROR], ex); await pubSubHub.UnsubscribeAsync(SessionId); await DisconnectAsync(); } } public async Task OnDisconnectedAsync() { try { if (!HasSelectedCharacter) { return; } var character = Character; if (character.IsDisconnecting) { return; } character.IsDisconnecting = true; foreach (var handler in disconnectHandlers .OrderBy(h => h.Order) .ThenBy(h => h.GetType().FullName, StringComparer.Ordinal)) { await handler.HandleDisconnectAsync(this); } } catch (Exception ex) { _logger.LogInformation(logLanguage[LogLanguageKey.CLIENT_DISCONNECTED], ex); } finally { // Destroy the ECS entity so it doesn't linger in the map world as a // zombie bundle. Without this the session's Arch.Entity handle stays // live in memory — any later lookup produces a bundle whose // PlayerStateComponent resolves to default (CharacterDto = null) and // NREs on the first property read. ClearPlayerEntity(); if (Channel != null) { sessionRegistry.Unregister(Channel.Id); } if (Account != null!) { try { await authHub.UnregisterSessionIpAsync(Account.Name); } catch (Exception ex) { _logger.LogWarning(ex, "Failed to unregister session IP for {Account}", Account.Name); } } await pubSubHub.UnsubscribeAsync(SessionId); _logger.LogInformation(logLanguage[LogLanguageKey.CLIENT_DISCONNECTED]); } } public string GetMessageFromKey(LanguageKey languageKey) { if (gameLanguageLocalizer == null) { throw new InvalidOperationException("GameLanguageLocalizer not available in this session type"); } return gameLanguageLocalizer[languageKey, Account.Language]; } public Task HandlePacketsAsync(IEnumerable<IPacket> packetConcatenated, bool isFromNetwork = false) { return Task.WhenAll(packetConcatenated.Select(packet => packetHandlingStrategy.HandlePacketAsync(packet, this, isFromNetwork))); } } } ================================================ FILE: src/NosCore.GameObject/Networking/ClientSession/DisconnectHandlers/ExchangeDisconnectHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.ExchangeService; using NosCore.Packets.Enumerations; using System.Threading.Tasks; namespace NosCore.GameObject.Networking.ClientSession.DisconnectHandlers; public class ExchangeDisconnectHandler(IExchangeService exchangeService, ISessionRegistry sessionRegistry) : ISessionDisconnectHandler { public async Task HandleDisconnectAsync(ClientSession session) { if (!session.HasSelectedCharacter) { return; } var targetId = exchangeService.GetTargetId(session.Character.VisualId); if (!targetId.HasValue) { return; } var closeExchange = exchangeService.CloseExchange(session.Character.VisualId, ExchangeResultType.Failure); var targetSender = sessionRegistry.GetSenderByCharacterId(targetId.Value); if (targetSender != null) { await targetSender.SendPacketAsync(closeExchange); } } } ================================================ FILE: src/NosCore.GameObject/Networking/ClientSession/DisconnectHandlers/FriendNotificationDisconnectHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.Interaction; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Relations; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Networking.ClientSession.DisconnectHandlers; public class FriendNotificationDisconnectHandler(IFriendHub friendHub, IPubSubHub pubSubHub, ISerializer serializer) : ISessionDisconnectHandler { public async Task HandleDisconnectAsync(ClientSession session) { if (!session.HasSelectedCharacter) { return; } var character = session.Character; var characterId = character.CharacterId; var friends = await friendHub.GetFriendsAsync(characterId); var disconnectPacket = serializer.Serialize(new[] { new FinfoPacket { FriendList = new List<FinfoSubPackets?> { new() { CharacterId = characterId, IsConnected = false } } } }); var messages = friends.Select(friend => new PostedPacket { ReceiverType = ReceiverType.OnlySomeone, SenderCharacter = new Data.WebApi.Character { Id = characterId }, ReceiverCharacter = new Data.WebApi.Character { Id = friend.CharacterId }, Packet = disconnectPacket }).Cast<IMessage>().ToList(); if (messages.Count > 0) { await pubSubHub.SendMessagesAsync(messages); } } } ================================================ FILE: src/NosCore.GameObject/Networking/ClientSession/DisconnectHandlers/MapDisconnectHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs.Extensions; using NosCore.Networking; using System.Threading.Tasks; namespace NosCore.GameObject.Networking.ClientSession.DisconnectHandlers; public class MapDisconnectHandler : ISessionDisconnectHandler { public async Task HandleDisconnectAsync(ClientSession session) { if (!session.HasSelectedCharacter) { return; } if (session.Channel != null) { session.Character.MapInstance?.Sessions.Remove(session.Channel); } if (session.HasPlayerEntity) { await session.Character.MapInstance!.SendPacketAsync(session.Character.GenerateOut()); } } } ================================================ FILE: src/NosCore.GameObject/Networking/ClientSession/DisconnectHandlers/MinilandDisconnectHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.GameObject.Services.MinilandService; using System; using System.Threading.Tasks; namespace NosCore.GameObject.Networking.ClientSession.DisconnectHandlers; public class MinilandDisconnectHandler(IMinilandService minilandService, IMapInstanceGeneratorService mapInstanceGeneratorService) : ISessionDisconnectHandler { public int Order => 100; public async Task HandleDisconnectAsync(ClientSession session) { if (!session.HasSelectedCharacter) { return; } var minilandId = await minilandService.DeleteMinilandAsync(session.Character.CharacterId); if (minilandId != null) { await mapInstanceGeneratorService.RemoveMapAsync((Guid)minilandId); } } } ================================================ FILE: src/NosCore.GameObject/Networking/ClientSession/DisconnectHandlers/SaveDisconnectHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.SaveService; using System.Threading.Tasks; namespace NosCore.GameObject.Networking.ClientSession.DisconnectHandlers; public class SaveDisconnectHandler(ISaveService saveService) : ISessionDisconnectHandler { public int Order => 0; public async Task HandleDisconnectAsync(ClientSession session) { if (!session.HasSelectedCharacter) { return; } await saveService.SaveAsync(session); } } ================================================ FILE: src/NosCore.GameObject/Networking/ClientSession/IPacketHandlingStrategy.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Interfaces; using System.Threading.Tasks; namespace NosCore.GameObject.Networking.ClientSession; public interface IPacketHandlingStrategy { Task HandlePacketAsync(IPacket packet, ClientSession session, bool isFromNetwork); } ================================================ FILE: src/NosCore.GameObject/Networking/ClientSession/ISessionDisconnectHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; namespace NosCore.GameObject.Networking.ClientSession; public interface ISessionDisconnectHandler { int Order => 0; Task HandleDisconnectAsync(ClientSession session); } ================================================ FILE: src/NosCore.GameObject/Networking/ClientSession/LoginPacketHandlingStrategy.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Threading.Tasks; namespace NosCore.GameObject.Networking.ClientSession; public class LoginPacketHandlingStrategy(ILogger<LoginPacketHandlingStrategy> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : IPacketHandlingStrategy { public async Task HandlePacketAsync(IPacket packet, ClientSession session, bool isFromNetwork) { var packetHeader = packet.Header; if (string.IsNullOrWhiteSpace(packetHeader)) { await session.DisconnectAsync(); return; } var attr = session.GetPacketAttribute(packet.GetType()); if (attr != null && (attr.Scopes & Scope.OnLoginScreen) == 0) { logger.LogWarning(logLanguage[LogLanguageKey.PACKET_USED_WHILE_NOT_ON_LOGIN], packet.Header); return; } var handler = session.GetHandler(packet.GetType()); if (handler == null) { logger.LogWarning(logLanguage[LogLanguageKey.HANDLER_NOT_FOUND], packetHeader); return; } await handler.ExecuteAsync(packet, session); } } ================================================ FILE: src/NosCore.GameObject/Networking/ClientSession/NpcDialogRequestSubject.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.GameObject.Networking.ClientSession { // Marker type used as a dictionary key for the NPC-dialog request Subject on // IRequestableEntity. RequestNpcPacketHandler fires it; NonPlayableEntityExtension // subscribes it to ShowDialogAsync. Decoupled from the NRun handler hierarchy so that // INrunEventHandler can be deleted independently. public sealed class NpcDialogRequestSubject; } ================================================ FILE: src/NosCore.GameObject/Networking/ClientSession/RequestData.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.GameObject.Networking.ClientSession { public class RequestData<T> : RequestData { public RequestData(T data) { Data = data; } public RequestData(ClientSession clientSession, T data) : base(clientSession) { Data = data; } public T Data { get; } } public class RequestData(ClientSession clientSession) : IRequestData { public RequestData() : this(null!) { } public ClientSession ClientSession { get; } = clientSession; } public interface IRequestData { } } ================================================ FILE: src/NosCore.GameObject/Networking/ClientSession/WorldPacketHandlingStrategy.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.CommandPackets; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Infastructure; using NosCore.Networking.SessionRef; using NosCore.Packets.Attributes; using NosCore.Packets.ClientPackets.Infrastructure; using NosCore.Packets.ClientPackets.UI; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Threading.Tasks; namespace NosCore.GameObject.Networking.ClientSession; public class WorldPacketHandlingStrategy(ILogger<WorldPacketHandlingStrategy> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage, ISessionRefHolder sessionRefHolder) : IPacketHandlingStrategy { public async Task HandlePacketAsync(IPacket packet, ClientSession session, bool isFromNetwork) { if (isFromNetwork) { if (await HandleInitialConnectionAsync(packet, session)) { return; } if (!await ValidateKeepAliveAsync(packet, session)) { return; } } var processedPacket = await HandleEntryPointSequenceAsync(packet, session); if (processedPacket == null) { return; } var packetHeader = processedPacket.Header; if (string.IsNullOrWhiteSpace(packetHeader) && isFromNetwork) { logger.LogWarning(logLanguage[LogLanguageKey.CORRUPT_PACKET], processedPacket); await session.DisconnectAsync(); return; } var handler = session.GetHandler(processedPacket.GetType()); if (handler == null) { logger.LogWarning(logLanguage[LogLanguageKey.HANDLER_NOT_FOUND], packetHeader); return; } if (!processedPacket.IsValid) { return; } var attr = session.GetPacketAttribute(processedPacket.GetType()); if (!ValidateScope(processedPacket, session, attr)) { return; } if (!ValidateAuthority(session, attr)) { return; } await ExecuteHandlerAsync(handler, processedPacket, session, isFromNetwork); } private async Task<bool> ValidateKeepAliveAsync(IPacket packet, ClientSession session) { if (session.LastKeepAliveIdentity != 0 && packet.KeepAliveId != session.LastKeepAliveIdentity + 1) { logger.LogError(logLanguage[LogLanguageKey.CORRUPTED_KEEPALIVE], session.SessionId); await session.DisconnectAsync(); return false; } session.LastKeepAliveIdentity = packet.KeepAliveId ?? 0; if (packet.KeepAliveId == null) { await session.DisconnectAsync(); return false; } return true; } private Task<bool> HandleInitialConnectionAsync(IPacket packet, ClientSession session) { if (session.WaitForPacketsAmount.HasValue || session.LastKeepAliveIdentity != 0) { return Task.FromResult(false); } session.SessionId = sessionRefHolder[session.SessionKey].SessionId; logger.LogDebug(logLanguage[LogLanguageKey.CLIENT_ARRIVED], session.SessionId); session.WaitForPacketsAmount = 2; return Task.FromResult(true); } private Task<IPacket?> HandleEntryPointSequenceAsync(IPacket packet, ClientSession session) { if (!session.WaitForPacketsAmount.HasValue) { return Task.FromResult<IPacket?>(packet); } session.WaitForPacketList.Add(packet); var dacIdentification = session.GetPacketAttribute(typeof(DacPacket))?.Identification; if (packet.Header != dacIdentification) { if (session.WaitForPacketList.Count != session.WaitForPacketsAmount) { session.LastKeepAliveIdentity = packet.KeepAliveId ?? 0; return Task.FromResult<IPacket?>(null); } var entryPointPacket = new EntryPointPacket { Header = "EntryPoint", KeepAliveId = packet.KeepAliveId, Name = session.WaitForPacketList[0].Header!, Password = "thisisgfmode", }; session.WaitForPacketsAmount = null; session.WaitForPacketList.Clear(); return Task.FromResult<IPacket?>(entryPointPacket); } session.WaitForPacketsAmount = null; session.WaitForPacketList.Clear(); return Task.FromResult<IPacket?>(packet); } private bool ValidateScope(IPacket packet, ClientSession session, PacketHeaderAttribute? attr) { if (attr == null) { return true; } if (session.HasSelectedCharacter && (attr.Scopes & Scope.InTrade) == 0 && session.Character.InExchangeOrShop) { logger.LogWarning(logLanguage[LogLanguageKey.PLAYER_IN_SHOP], packet.Header); return false; } var isMfa = packet is GuriPacket guri && guri.Type == GuriPacketType.TextInput && guri.Argument == 3 && guri.VisualId == 0; if (!session.HasSelectedCharacter && (attr.Scopes & Scope.OnCharacterScreen) == 0 && !isMfa) { logger.LogWarning(logLanguage[LogLanguageKey.PACKET_USED_WITHOUT_CHARACTER], packet.Header); return false; } if (session.HasSelectedCharacter && (attr.Scopes & Scope.InGame) == 0) { logger.LogWarning(logLanguage[LogLanguageKey.PACKET_USED_WHILE_IN_GAME], packet.Header); return false; } return true; } private bool ValidateAuthority(ClientSession session, PacketHeaderAttribute? attr) { if (session.IsAuthenticated && attr is CommandPacketHeaderAttribute commandHeader && (byte)commandHeader.Authority > (byte)session.Account.Authority) { return false; } return true; } private async Task ExecuteHandlerAsync(IPacketHandler handler, IPacket packet, ClientSession session, bool isFromNetwork) { if (isFromNetwork) { using (await session.AcquirePacketLockAsync().ConfigureAwait(false)) { await handler.ExecuteAsync(packet, session).ConfigureAwait(false); } } else { await handler.ExecuteAsync(packet, session).ConfigureAwait(false); } } } ================================================ FILE: src/NosCore.GameObject/NosCore.GameObject.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net10.0</TargetFramework> <TieredCompilation>true</TieredCompilation> <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <ItemGroup> <PackageReference Include="Arch" /> <PackageReference Include="Autofac" /> <PackageReference Include="NosCore.Algorithm" /> <PackageReference Include="System.Reactive" /> <PackageReference Include="WolverineFx" /> </ItemGroup> <ItemGroup> <PackageReference Include="NosCore.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> <ItemGroup> <ProjectReference Include="..\NosCore.Core\NosCore.Core.csproj" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\..\tools\NosCore.EcsGenerator\NosCore.EcsGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" /> </ItemGroup> </Project> ================================================ FILE: src/NosCore.GameObject/Services/AuthService/AuthCodeService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Concurrent; namespace NosCore.GameObject.Services.AuthService { public class AuthCodeService : IAuthCodeService { private readonly ConcurrentDictionary<string, string> _authCodes = new(); private readonly ConcurrentDictionary<string, long> _readyForAuth = new(); private readonly ConcurrentDictionary<string, string> _sessionIps = new(); public void StoreAuthCode(string authCode, string accountName) { _authCodes[authCode] = accountName; } public string? GetAccountByAuthCode(string authCode) { return _authCodes.TryGetValue(authCode, out var accountName) ? accountName : null; } public bool TryRemoveAuthCode(string authCode, out string? accountName) { return _authCodes.TryRemove(authCode, out accountName); } public void MarkReadyForAuth(string accountName, long sessionId) { _readyForAuth.AddOrUpdate(accountName, sessionId, (_, _) => sessionId); } public bool IsReadyForAuth(string accountName, long sessionId) { return _readyForAuth.TryGetValue(accountName, out var storedSessionId) && storedSessionId == sessionId; } public void ClearReadyForAuth(string accountName) { _readyForAuth.TryRemove(accountName, out _); } public void RegisterSessionIp(string accountName, string ipAddress) { _sessionIps[accountName] = ipAddress; } public void UnregisterSessionIp(string accountName) { _sessionIps.TryRemove(accountName, out _); } public string? GetSessionIp(string accountName) { return _sessionIps.TryGetValue(accountName, out var ip) ? ip : null; } } } ================================================ FILE: src/NosCore.GameObject/Services/AuthService/IAuthCodeService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.GameObject.Services.AuthService { public interface IAuthCodeService { void StoreAuthCode(string authCode, string accountName); string? GetAccountByAuthCode(string authCode); bool TryRemoveAuthCode(string authCode, out string? accountName); void MarkReadyForAuth(string accountName, long sessionId); bool IsReadyForAuth(string accountName, long sessionId); void ClearReadyForAuth(string accountName); void RegisterSessionIp(string accountName, string ipAddress); void UnregisterSessionIp(string accountName); string? GetSessionIp(string accountName); } } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/AggroService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Components; using NosCore.GameObject.Ecs.Interfaces; namespace NosCore.GameObject.Services.BattleService; // Updates the AggroComponent on the mob's ECS entity. We don't recompute threat from the // whole HitList every tick — instead each damage event bumps threat for the attacker // and replaces the target only when the new threat exceeds the current (with a small // sticky bonus so a single big hit doesn't thrash targeting). The leash is refreshed // on every damage event, giving the AI ~20s grace before forgetting the player. public sealed class AggroService(IClock clock) : IAggroService { private const int StickyBonus = 100; private static readonly Duration LeashDuration = Duration.FromSeconds(20); public AggroSnapshot Current(IAliveEntity entity) { if (!TryReadAggro(entity, out var aggro, out _, out _)) { return new AggroSnapshot(0, 0, false); } var now = clock.GetCurrentInstant(); if (aggro.UntilLeash <= now || aggro.TargetVisualId == 0) { return new AggroSnapshot(0, 0, false); } return new AggroSnapshot(aggro.TargetVisualId, aggro.ThreatScore, true); } public void AddThreat(IAliveEntity mob, IAliveEntity attacker, int damage) { if (damage <= 0) return; if (!TryReadAggro(mob, out var aggro, out var world, out var handle)) return; var now = clock.GetCurrentInstant(); var baseThreat = damage; var isSameTarget = aggro.TargetVisualId == attacker.VisualId && aggro.TargetVisualType == attacker.VisualType; int newThreat; long newTargetId; Shared.Enumerations.VisualType newTargetType; if (isSameTarget) { newThreat = aggro.ThreatScore + baseThreat; newTargetId = aggro.TargetVisualId; newTargetType = aggro.TargetVisualType; } else if (baseThreat > aggro.ThreatScore + StickyBonus || aggro.TargetVisualId == 0) { newThreat = baseThreat; newTargetId = attacker.VisualId; newTargetType = attacker.VisualType; } else { // Existing target stays but ages down slightly so the mob eventually // re-targets if the incumbent stops hitting. newThreat = System.Math.Max(1, aggro.ThreatScore - 1); newTargetId = aggro.TargetVisualId; newTargetType = aggro.TargetVisualType; } world.SetComponent(handle, new AggroComponent(newTargetType, newTargetId, newThreat, now.Plus(LeashDuration))); } public void Clear(IAliveEntity mob) { if (!TryReadAggro(mob, out _, out var world, out var handle)) return; world.SetComponent(handle, new AggroComponent(Shared.Enumerations.VisualType.Object, 0, 0, Instant.MinValue)); } private static bool TryReadAggro(IAliveEntity entity, out AggroComponent aggro, out MapWorld world, out Arch.Core.Entity handle) { switch (entity) { case MonsterComponentBundle m: { var c = m.World.TryGetComponent<AggroComponent>(m.Entity); if (c.HasValue) { aggro = c.Value; world = m.World; handle = m.Entity; return true; } break; } case NpcComponentBundle n: { var c = n.World.TryGetComponent<AggroComponent>(n.Entity); if (c.HasValue) { aggro = c.Value; world = n.World; handle = n.Entity; return true; } break; } } aggro = default; world = null!; handle = default; return false; } } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/BattleService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Concurrent; using System.Threading; using System.Threading.Tasks; using System.Linq; using NodaTime; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.BattleService.Model; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.Networking; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; using NosCore.Packets.ServerPackets.Battle; using Microsoft.Extensions.Logging; using Wolverine; namespace NosCore.GameObject.Services.BattleService { // Orchestrator: validate → resolve skill → resolve targets → enqueue hits → publish // packets + Wolverine events. Almost nothing happens here directly; the heavy lifting // lives in IDamageCalculator / IHitQueue / IBuffService / IRewardService. This class // stays testable because every collaborator is an interface. public sealed class BattleService( ISkillResolver skillResolver, ITargetResolver targetResolver, IHitQueue hitQueue, IMessageBus messageBus, ISessionRegistry sessionRegistry, IClock clock, ICaptureService captureService, ILogger<BattleService> logger) : IBattleService { // CharacterId (VisualId) → CastId → ReadyAt. Populated by ScheduleCooldownReset // and drained by TickCooldownResetsAsync on each map's 400ms life tick. private readonly ConcurrentDictionary<long, ConcurrentDictionary<long, Instant>> _pendingCooldownResets = new(); public async Task Hit(IAliveEntity origin, IAliveEntity target, HitArguments arguments) { if (!CanAttack(origin, target)) { await CancelAsync(origin, target).ConfigureAwait(false); return; } UpdateAttackerPosition(origin, arguments); var skill = skillResolver.Resolve(origin, arguments.SkillId); if (skill == null) { await CancelAsync(origin, target).ConfigureAwait(false); return; } // Capture skills branch before damage — vanosilla / OpenNos both suppress // normal damage and SuPacket for skills carrying a CaptureAnimal bcard. // A fail still consumes the cooldown via ScheduleCooldownReset below. if (captureService.IsCaptureSkill(skill)) { try { await captureService.TryCaptureAsync(origin, target, skill).ConfigureAwait(false); } catch (Exception ex) { logger.LogError(ex, "Capture attempt failed: {Attacker} -> {Target}", origin.VisualId, target.VisualId); } ScheduleCooldownReset(origin, skill); return; } var targets = targetResolver.Resolve(origin, target, skill); // Primary target is always first; we pass IsPrimaryTarget so the queue / // packet layer can treat the main hit specially (big animation, SkillEffect). for (var i = 0; i < targets.Count; i++) { var currentTarget = targets[i]; var isPrimary = i == 0; try { await ProcessHitAsync(origin, currentTarget, skill, isPrimary).ConfigureAwait(false); } catch (Exception ex) { logger.LogError(ex, "Hit processing failed: {Attacker} -> {Target}", origin.VisualId, currentTarget.VisualId); } } ScheduleCooldownReset(origin, skill); } private async Task ProcessHitAsync(IAliveEntity origin, IAliveEntity target, SkillInfo skill, bool isPrimary) { var request = new HitRequest( Origin: origin, Target: target, Skill: skill, IsPrimaryTarget: isPrimary, Completion: new TaskCompletionSource<HitOutcome>(TaskCreationOptions.RunContinuationsAsynchronously), Cancellation: CancellationToken.None); var outcome = await hitQueue.EnqueueAsync(request).ConfigureAwait(false); if (outcome.Status == HitStatus.Cancelled) { return; } // Order matters: OpenNos ships stat-to-target BEFORE the SuPacket so the // client HUD bar settles to the new HP before the damage floater animates. // Swapping the order makes the bar appear "frozen" even though the packet // arrived — the client paints the floater first, re-reads its cached HP // for the bar, then finally applies the stat update out-of-band. await SendTargetStatAsync(target).ConfigureAwait(false); await BroadcastHitAsync(origin, target, skill, outcome).ConfigureAwait(false); await BroadcastTargetInfoAsync(target).ConfigureAwait(false); await messageBus.PublishAsync(new EntityDamagedEvent(origin, target, outcome.Damage, outcome.Killed)).ConfigureAwait(false); if (outcome.Killed) { // DiePacket plays the collapsed death pose on other spectators' screens. // We deliberately skip the victim — they get the dialog/stat flow from // PlayerRevivalHandler, and their own client drives the death pose off // the closing su (alive=0, hp%=0). Monsters don't get a DiePacket at // all; the su alone is enough and sending an OutPacket would cut the // collapse animation short. if (target.MapInstance != null && target.VisualType == VisualType.Player) { var diePacket = new DiePacket { VisualType = target.VisualType, VisualId = target.VisualId, TargetVisualType = origin.VisualType, TargetId = origin.VisualId, }; var victimCharacterId = target is ICharacterEntity victim ? victim.CharacterId : 0L; foreach (var spectator in sessionRegistry .GetClientSessionsByMapInstance(target.MapInstance.MapInstanceId) .Where(s => s.HasSelectedCharacter && s.Character.CharacterId != victimCharacterId)) { await spectator.SendPacketAsync(diePacket).ConfigureAwait(false); } } await messageBus.PublishAsync(new EntityDiedEvent(target, origin)).ConfigureAwait(false); } } // The attacked character's own top-left HP/MP HUD reads off `stat`. OpenNos // emits this unicast to just the target (`ReceiverType.OnlySomeone`) BEFORE // the SuPacket — BattleEntity.TargetHit builds GenerateStat, broadcasts it to // only the target, then broadcasts SuPacket to the whole map. We mirror that // order so the client settles the bar before animating damage. private static Task SendTargetStatAsync(IAliveEntity target) { if (target is PlayerComponentBundle player) { return player.SendPacketAsync(player.GenerateStat()); } return Task.CompletedTask; } // StPacket broadcast — the selected-target portrait at the top of every // client's screen reads off `st`. SuPacket's HpPercentage animates the damage // floater but doesn't reliably update the target portrait for monsters (the // bar stays at 100/100 until the player re-selects). Broadcasting `st` after // the hit keeps every spectator who has this target selected in sync. private static Task BroadcastTargetInfoAsync(IAliveEntity target) { if (target.MapInstance == null) return Task.CompletedTask; return target.MapInstance.SendPacketAsync(target.GenerateStatInfo()); } private static Task BroadcastHitAsync(IAliveEntity origin, IAliveEntity target, SkillInfo skill, HitOutcome outcome) { if (target.MapInstance == null) { return Task.CompletedTask; } var packet = new SuPacket { VisualType = origin.VisualType, VisualId = origin.VisualId, TargetVisualType = target.VisualType, TargetId = target.VisualId, SkillVnum = skill.SkillVnum, SkillCooldown = skill.Cooldown, AttackAnimation = skill.AttackAnimation, SkillEffect = skill.CastEffect, PositionX = origin.PositionX, PositionY = origin.PositionY, TargetIsAlive = target.IsAlive, HpPercentage = target.MaxHp > 0 ? (byte)(target.Hp * 100 / target.MaxHp) : (byte)0, Damage = (uint)outcome.Damage, HitMode = outcome.HitMode, SkillTypeMinusOne = (int)skill.Type - 1, TargetCurrentHp = target.Hp, TargetMaxHp = target.MaxHp, }; return target.MapInstance.SendPacketAsync(packet); } private void ScheduleCooldownReset(IAliveEntity origin, SkillInfo skill) { if (origin is not ICharacterEntity character) return; var readyAt = clock.GetCurrentInstant().Plus(Duration.FromMilliseconds(skill.Cooldown * 100)); _pendingCooldownResets .GetOrAdd(character.VisualId, _ => new ConcurrentDictionary<long, Instant>())[skill.CastId] = readyAt; } public async Task TickCooldownResetsAsync(MapInstance mapInstance) { if (_pendingCooldownResets.IsEmpty) return; var now = clock.GetCurrentInstant(); foreach (var session in sessionRegistry.GetClientSessionsByMapInstance(mapInstance.MapInstanceId)) { if (!session.HasPlayerEntity) continue; var character = session.Character; if (!_pendingCooldownResets.TryGetValue(character.VisualId, out var skills)) continue; foreach (var (castId, readyAt) in skills) { if (readyAt > now) continue; if (!skills.TryRemove(castId, out _)) continue; if (character.IsDisconnecting) continue; try { await character.SendPacketAsync(new SkillResetPacket { CastId = castId }).ConfigureAwait(false); } catch (Exception ex) { logger.LogWarning(ex, "Failed to reset cooldown for skill {CastId}", castId); } } } } private static void UpdateAttackerPosition(IAliveEntity origin, HitArguments arguments) { if (arguments is { MapX: not null, MapY: not null }) { origin.PositionX = arguments.MapX.Value; origin.PositionY = arguments.MapY.Value; } } // NoAttack is a state-only gate (locked / sleeping / vehicled); the faction // rule below is what decides who's on whose side. Characters and NPCs are // allies — players can't kill a shop NPC via a crafted UseSkill packet, and // guards never friendly-fire a player — so any ally pairing bails first. // Monsters are opposing-faction to both and are free to hit either. private static bool CanAttack(IAliveEntity origin, IAliveEntity target) { if (!origin.IsAlive || !target.IsAlive) return false; if (origin.NoAttack) return false; if (target.NoAttack) return false; if (AreAllies(origin, target)) return false; return true; } private static bool AreAllies(IAliveEntity a, IAliveEntity b) { var aAlly = a.VisualType == VisualType.Player || a.VisualType == VisualType.Npc; var bAlly = b.VisualType == VisualType.Player || b.VisualType == VisualType.Npc; return aAlly && bAlly; } private static async Task CancelAsync(IAliveEntity origin, IAliveEntity target) { if (origin is ICharacterEntity character) { await character.SendPacketAsync(new CancelPacket { Type = CancelPacketType.CancelAutoAttack, TargetId = target.VisualId, }).ConfigureAwait(false); } } } } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/BattleStatsProvider.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using System.Linq; using NosCore.Data.Enumerations.Buff; using NosCore.Shared.Enumerations; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Components; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.BattleService.Model; namespace NosCore.GameObject.Services.BattleService; // Builds CombatStats from the underlying ECS components. Players synthesise their // "base" profile from level+class (matching OpenNos CharacterHelper) and then fold in // equipment (CombatComponent, once populated by the inventory/equipment system) plus // active buffs. Monsters read straight from NpcMonsterDto with their own buff pass. public sealed class BattleStatsProvider(IBuffService buffService) : IBattleStatsProvider { public CombatStats GetStats(IAliveEntity entity) { var baseStats = ResolveBaseStats(entity); var buffs = buffService.GetActiveBuffs(entity); var withBuffs = ApplyBuffs(baseStats, buffs, entity); return withBuffs; } private static CombatStats ResolveBaseStats(IAliveEntity entity) => entity switch { INonPlayableEntity npc => FromMonster(npc.NpcMonster, entity.Level, entity.HeroLevel), ICharacterEntity character => FromCharacter(character), _ => default, }; private static CombatStats FromMonster(NpcMonsterDto mob, byte level, byte heroLevel) => new( Level: level, HeroLevel: heroLevel, Class: CharacterClassType.Adventurer, // monsters use skill.Type directly; class is unused for mobs Morale: level, MinHit: mob.DamageMinimum, MaxHit: mob.DamageMaximum, HitRate: mob.Concentrate, CriticalChance: mob.CriticalChance, CriticalRate: mob.CriticalRate, MeleeUpgrade: mob.AttackUpgrade, MinDistance: mob.DamageMinimum, MaxDistance: mob.DamageMaximum, DistanceRate: mob.Concentrate, DistanceCriticalChance: mob.CriticalChance, DistanceCriticalRate: mob.CriticalRate, RangedUpgrade: mob.AttackUpgrade, Element: mob.Element, ElementRate: mob.ElementRate, ElementRateSp: 0, Defence: mob.CloseDefence, DefenceRate: mob.DefenceDodge, DistanceDefence: mob.DistanceDefence, DistanceDefenceRate: mob.DistanceDefenceDodge, MagicDefence: mob.MagicDefence, DefenceDodge: mob.DefenceDodge, DistanceDefenceDodge: mob.DistanceDefenceDodge, DefenceUpgrade: mob.DefenceUpgrade, FireResistance: mob.FireResistance, WaterResistance: mob.WaterResistance, LightResistance: mob.LightResistance, DarkResistance: mob.DarkResistance); private static CombatStats FromCharacter(ICharacterEntity character) { var level = character.Level; var cls = character.Class; var combat = ReadCombat(character); // CharacterHelper base tables: level+class formulas used when the inventory // system hasn't populated CombatComponent yet (fresh char, test fixtures). // Numbers lifted from OpenNos CharacterHelper.LoadStats for parity. var baseMinHit = cls switch { CharacterClassType.Swordsman => 2 * level + 5, CharacterClassType.Mage => 2 * level + 9, CharacterClassType.Archer => 9 + 3 * level, _ => 2 * level + 2, }; var baseMaxHit = baseMinHit; var baseHitRate = cls switch { CharacterClassType.Swordsman => level + 27, CharacterClassType.Mage => 24 + level, CharacterClassType.Archer => 20 + 2 * level, _ => level + 10, }; var baseDefence = cls switch { CharacterClassType.Swordsman => level + 2, CharacterClassType.Mage => level, CharacterClassType.Archer => level, _ => level, }; var baseMagicDefence = cls switch { CharacterClassType.Mage => level + 4, _ => level, }; var baseDodge = cls switch { CharacterClassType.Mage => 24 + level, _ => level + 12, }; return new CombatStats( Level: level, HeroLevel: character.HeroLevel, Class: cls, Morale: level, // OpenNos morale is Level + MoraleUp buffs; buffs added later MinHit: Math.Max(baseMinHit, combat.MinHit), MaxHit: Math.Max(baseMaxHit, combat.MaxHit), HitRate: combat.HitRate > 0 ? combat.HitRate : baseHitRate, CriticalChance: combat.CriticalChance, CriticalRate: combat.CriticalRate, MeleeUpgrade: 0, MinDistance: Math.Max(baseMinHit, combat.MinDistance), MaxDistance: Math.Max(baseMaxHit, combat.MaxDistance), DistanceRate: combat.DistanceRate > 0 ? combat.DistanceRate : baseHitRate, DistanceCriticalChance: combat.DistanceCriticalChance, DistanceCriticalRate: combat.DistanceCriticalRate, RangedUpgrade: 0, Element: (byte)combat.Element, ElementRate: combat.ElementRate, ElementRateSp: 0, Defence: combat.Defence > 0 ? combat.Defence : baseDefence, DefenceRate: combat.DefenceRate, DistanceDefence: combat.DistanceDefence > 0 ? combat.DistanceDefence : baseDefence, DistanceDefenceRate: combat.DistanceDefenceRate, MagicDefence: combat.MagicDefence > 0 ? combat.MagicDefence : baseMagicDefence, DefenceDodge: combat.DefenceRate > 0 ? combat.DefenceRate : baseDodge, DistanceDefenceDodge: combat.DistanceDefenceRate > 0 ? combat.DistanceDefenceRate : baseDodge, DefenceUpgrade: 0, FireResistance: combat.FireResistance, WaterResistance: combat.WaterResistance, LightResistance: combat.LightResistance, DarkResistance: combat.DarkResistance); } private static CombatComponent ReadCombat(IAliveEntity entity) { if (entity is PlayerComponentBundle player) { var comp = player.World.TryGetComponent<CombatComponent>(player.Entity); if (comp.HasValue) return comp.Value; } return default; } // Buff folding: mirrors OpenNos' GetBuff queries. We scan each active card's BCards // once, summing +/− per (Type, SubType) pair, then inject the net effect into the // CombatStats record. Unknown BCard types fall through silently so content can ship // them ahead of server-side handling. private static CombatStats ApplyBuffs(CombatStats stats, IReadOnlyCollection<BuffInstance> buffs, IAliveEntity target) { if (buffs.Count == 0) return stats; int attackAllFlat = 0, attackMeleeFlat = 0, attackRangedFlat = 0, attackMagicalFlat = 0; int damageAllPct = 0, damageMeleePct = 0, damageRangedPct = 0, damageMagicalPct = 0; int critInflicting = 0, critDamage = 0; int defenceAll = 0, defenceMelee = 0, defenceRanged = 0, defenceMagical = 0; int hitRateFlat = 0, dodgeFlat = 0; int moraleFlat = 0; int elementAll = 0, elementFire = 0, elementWater = 0, elementLight = 0, elementDark = 0; foreach (var buff in buffs) { foreach (var card in buff.BCards) { var first = ScaleByLevel(card, target.Level); var type = (BCardType.CardType)card.Type; var sub = card.SubType; switch (type) { case BCardType.CardType.AttackPower: if (sub == (byte)AdditionalTypes.AttackPower.AllAttacksIncreased) attackAllFlat += first; else if (sub == (byte)AdditionalTypes.AttackPower.AllAttacksDecreased) attackAllFlat -= first; else if (sub == (byte)AdditionalTypes.AttackPower.MeleeAttacksIncreased) attackMeleeFlat += first; else if (sub == (byte)AdditionalTypes.AttackPower.MeleeAttacksDecreased) attackMeleeFlat -= first; else if (sub == (byte)AdditionalTypes.AttackPower.RangedAttacksIncreased) attackRangedFlat += first; else if (sub == (byte)AdditionalTypes.AttackPower.RangedAttacksDecreased) attackRangedFlat -= first; else if (sub == (byte)AdditionalTypes.AttackPower.MagicalAttacksIncreased) attackMagicalFlat += first; else if (sub == (byte)AdditionalTypes.AttackPower.MagicalAttacksDecreased) attackMagicalFlat -= first; break; case BCardType.CardType.Damage: if (sub == (byte)AdditionalTypes.Damage.DamageIncreased) damageAllPct += first; else if (sub == (byte)AdditionalTypes.Damage.DamageDecreased) damageAllPct -= first; else if (sub == (byte)AdditionalTypes.Damage.MeleeIncreased) damageMeleePct += first; else if (sub == (byte)AdditionalTypes.Damage.MeleeDecreased) damageMeleePct -= first; else if (sub == (byte)AdditionalTypes.Damage.RangedIncreased) damageRangedPct += first; else if (sub == (byte)AdditionalTypes.Damage.RangedDecreased) damageRangedPct -= first; else if (sub == (byte)AdditionalTypes.Damage.MagicalIncreased) damageMagicalPct += first; else if (sub == (byte)AdditionalTypes.Damage.MagicalDecreased) damageMagicalPct -= first; break; case BCardType.CardType.Critical: if (sub == (byte)AdditionalTypes.Critical.InflictingIncreased) critInflicting += first; else if (sub == (byte)AdditionalTypes.Critical.InflictingReduced) critInflicting -= first; else if (sub == (byte)AdditionalTypes.Critical.DamageIncreased) critDamage += first; else if (sub == (byte)AdditionalTypes.Critical.DamageIncreasedInflictingReduced) critDamage -= first; break; case BCardType.CardType.Defence: if (sub == (byte)AdditionalTypes.Defence.AllIncreased) defenceAll += first; else if (sub == (byte)AdditionalTypes.Defence.AllDecreased) defenceAll -= first; else if (sub == (byte)AdditionalTypes.Defence.MeleeIncreased) defenceMelee += first; else if (sub == (byte)AdditionalTypes.Defence.MeleeDecreased) defenceMelee -= first; else if (sub == (byte)AdditionalTypes.Defence.RangedIncreased) defenceRanged += first; else if (sub == (byte)AdditionalTypes.Defence.RangedDecreased) defenceRanged -= first; else if (sub == (byte)AdditionalTypes.Defence.MagicalIncreased) defenceMagical += first; else if (sub == (byte)AdditionalTypes.Defence.MagicalDecreased) defenceMagical -= first; break; case BCardType.CardType.Target: if (sub == (byte)AdditionalTypes.Target.AllHitRateIncreased) hitRateFlat += first; else if (sub == (byte)AdditionalTypes.Target.AllHitRateDecreased) hitRateFlat -= first; break; case BCardType.CardType.DodgeAndDefencePercent: if (sub == (byte)AdditionalTypes.DodgeAndDefencePercent.DodgeIncreased) dodgeFlat += first; else if (sub == (byte)AdditionalTypes.DodgeAndDefencePercent.DodgeDecreased) dodgeFlat -= first; break; case BCardType.CardType.Morale: if (sub == (byte)AdditionalTypes.Morale.MoraleIncreased) moraleFlat += first; else if (sub == (byte)AdditionalTypes.Morale.MoraleDecreased) moraleFlat -= first; break; case BCardType.CardType.Element: if (sub == (byte)AdditionalTypes.Element.AllIncreased) elementAll += first; else if (sub == (byte)AdditionalTypes.Element.AllDecreased) elementAll -= first; else if (sub == (byte)AdditionalTypes.Element.FireIncreased) elementFire += first; else if (sub == (byte)AdditionalTypes.Element.FireDecreased) elementFire -= first; else if (sub == (byte)AdditionalTypes.Element.WaterIncreased) elementWater += first; else if (sub == (byte)AdditionalTypes.Element.WaterDecreased) elementWater -= first; else if (sub == (byte)AdditionalTypes.Element.LightIncreased) elementLight += first; else if (sub == (byte)AdditionalTypes.Element.LightDecreased) elementLight -= first; else if (sub == (byte)AdditionalTypes.Element.DarkIncreased) elementDark += first; else if (sub == (byte)AdditionalTypes.Element.DarkDecreased) elementDark -= first; break; } } } // Fold element-specific flat bonuses into ElementRate based on attacker's own // element. Non-matching element buffs don't apply. var elementFlatBonus = elementAll + stats.Element switch { 1 => elementFire, 2 => elementWater, 3 => elementLight, 4 => elementDark, _ => 0, }; return stats with { Morale = stats.Morale + moraleFlat, MinHit = (int)((stats.MinHit + attackAllFlat + attackMeleeFlat) * (1 + (damageAllPct + damageMeleePct) / 100.0)), MaxHit = (int)((stats.MaxHit + attackAllFlat + attackMeleeFlat) * (1 + (damageAllPct + damageMeleePct) / 100.0)), MinDistance = (int)((stats.MinDistance + attackAllFlat + attackRangedFlat) * (1 + (damageAllPct + damageRangedPct) / 100.0)), MaxDistance = (int)((stats.MaxDistance + attackAllFlat + attackRangedFlat) * (1 + (damageAllPct + damageRangedPct) / 100.0)), HitRate = stats.HitRate + hitRateFlat, DistanceRate = stats.DistanceRate + hitRateFlat, CriticalChance = stats.CriticalChance + critInflicting, CriticalRate = stats.CriticalRate + critDamage, DistanceCriticalChance = stats.DistanceCriticalChance + critInflicting, DistanceCriticalRate = stats.DistanceCriticalRate + critDamage, Defence = stats.Defence + defenceAll + defenceMelee, DistanceDefence = stats.DistanceDefence + defenceAll + defenceRanged, MagicDefence = stats.MagicDefence + defenceAll + defenceMagical, DefenceDodge = stats.DefenceDodge + dodgeFlat, DistanceDefenceDodge = stats.DistanceDefenceDodge + dodgeFlat, ElementRate = stats.ElementRate + elementFlatBonus, }; } private static int ScaleByLevel(BCardDto card, int level) { // Matches OpenNos: IsLevelScaled + IsLevelDivided together means "first/level", // IsLevelScaled alone means "first * level". Default path uses FirstData as-is. if (!card.IsLevelScaled) return card.FirstData; if (card.IsLevelDivided) return card.FirstData == 0 ? 0 : Math.Max(1, level / Math.Max(1, card.FirstData)); return card.FirstData * Math.Max(1, level); } } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/BuffService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using NodaTime; using NosCore.Data.Enumerations.Buff; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Components; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.BattleService.Model; using NosCore.Networking; using NosCore.Packets.ServerPackets.Battle; namespace NosCore.GameObject.Services.BattleService; // Buffs live on a per-entity ConcurrentDictionary keyed by CardId. Re-applying refreshes // ExpiresAt rather than stacking — matches the one-icon-per-card client convention. // Expiration is pull-based: TickAsync is called from the world's life loop, which keeps // this service dependency-free (no timers, no background tasks) and trivial to test. public sealed class BuffService(IClock clock) : IBuffService { private static readonly IReadOnlyCollection<BuffInstance> EmptyBuffs = Array.Empty<BuffInstance>(); private static readonly IReadOnlyList<BuffInstance> EmptyExpired = Array.Empty<BuffInstance>(); public async Task ApplyAsync(IAliveEntity target, CardDto card, IReadOnlyList<BCardDto> bCards, IAliveEntity? caster, int overrideDuration = -1) { var buffs = ResolveState(target); if (buffs == null) { return; } var now = clock.GetCurrentInstant(); var durationMs = overrideDuration >= 0 ? overrideDuration : card.Duration * 100; var buff = new BuffInstance( CardId: card.CardId, BuffType: ClassifyBuffType(card), Caster: caster, StartedAt: now, ExpiresAt: now.Plus(Duration.FromMilliseconds(durationMs)), BCards: bCards); buffs.AddOrUpdate(card.CardId, buff, (_, _) => buff); // Notify the client so the buff icon appears + the visual effect plays. The // client expects duration in deciseconds (same unit as the `bf` packet docs); // BuffLevel is the caster's level so the icon shows the effect tier. if (target.MapInstance != null) { var level = caster?.Level ?? 0; await target.MapInstance.SendPacketAsync(new BfPacket { VisualType = target.VisualType, VisualId = target.VisualId, Buff = new BfPacket.BuffElementSubPacket { ChargeValue = 0, BuffId = card.CardId, Duration = durationMs / 100, }, BuffLevel = level, }).ConfigureAwait(false); } } public Task ApplySkillBuffAsync(IAliveEntity target, short skillVnum, short skillDuration, IReadOnlyList<BCardDto> bCards, IAliveEntity? caster) { if (skillDuration <= 0 || bCards.Count == 0) { return Task.CompletedTask; } var lasting = bCards .Where(b => (BCardType.CardType)b.Type != BCardType.CardType.Damage) .ToArray(); if (lasting.Length == 0) { return Task.CompletedTask; } var buffs = ResolveState(target); if (buffs == null) { return Task.CompletedTask; } var now = clock.GetCurrentInstant(); var buff = new BuffInstance( CardId: skillVnum, BuffType: BuffType.Neutral, Caster: caster, StartedAt: now, ExpiresAt: now.Plus(Duration.FromMilliseconds(skillDuration * 100)), BCards: lasting); buffs.AddOrUpdate(skillVnum, buff, (_, _) => buff); return Task.CompletedTask; } public Task RemoveAsync(IAliveEntity target, short cardId) { var buffs = ResolveState(target); buffs?.TryRemove(cardId, out _); return Task.CompletedTask; } public IReadOnlyCollection<BuffInstance> GetActiveBuffs(IAliveEntity target) { var buffs = ResolveState(target); return buffs == null ? EmptyBuffs : buffs.Values.ToArray(); } public bool HasBuff(IAliveEntity target, short cardId) { var buffs = ResolveState(target); return buffs != null && buffs.ContainsKey(cardId); } public async Task<IReadOnlyList<BuffInstance>> TickAsync(IAliveEntity target) { var buffs = ResolveState(target); if (buffs == null || buffs.IsEmpty) { return EmptyExpired; } var now = clock.GetCurrentInstant(); var expired = new List<BuffInstance>(); foreach (var kvp in buffs) { if (kvp.Value.ExpiresAt <= now && buffs.TryRemove(kvp.Key, out var removed)) { expired.Add(removed); } } // Notify the client for each expired card so icons disappear from the HUD. // BfePacket is unicast to the target's map since the effect was map-visible // (BfPacket is broadcast the same way on apply). if (expired.Count > 0 && target.MapInstance != null) { foreach (var buff in expired) { await target.MapInstance.SendPacketAsync(new BfePacket { VisualType = target.VisualType, VisualId = target.VisualId, CardId = buff.CardId, }).ConfigureAwait(false); } } return expired; } // BuffStateComponent lives on the target's ECS world; walking through the bundle // gets us its dictionary handle without copying. Returning null means the entity // has no buff state (e.g. map items) — caller treats as "no buffs". private static ConcurrentDictionary<short, BuffInstance>? ResolveState(IAliveEntity target) { return target switch { PlayerComponentBundle p => p.World.TryGetComponent<BuffStateComponent>(p.Entity)?.ActiveBuffs, MonsterComponentBundle m => m.World.TryGetComponent<BuffStateComponent>(m.Entity)?.ActiveBuffs, NpcComponentBundle n => n.World.TryGetComponent<BuffStateComponent>(n.Entity)?.ActiveBuffs, _ => null, }; } // Cards are classified by their Propability field in the original content files: // 0 means good, 1 neutral, 2 bad. The CardDto exposes it as Propability (sic). private static BuffType ClassifyBuffType(CardDto card) => card.Propability switch { 0 => BuffType.Good, 2 => BuffType.Bad, _ => BuffType.Neutral, }; } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/CaptureService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using System.Threading.Tasks; using NodaTime; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Buff; using NosCore.Data.Enumerations.Character; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.BattleService.Model; using NosCore.Networking; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Entities; using NosCore.Shared.Enumerations; using NosCore.Shared.Helpers; using Wolverine; namespace NosCore.GameObject.Services.BattleService { // Capture rules mirror vanosilla BCardCaptureHandler + MonsterCaptureEventHandler: // - target must be a monster at <50 % HP // - monster.Level <= player.Level // - guards for raid instance / player dignity skipped here (kept for a follow-up; // dignity/MapInstanceType don't affect the mechanic enough to block an MVP) // - rate: 90 % if player < level 20, else 50 % // - mate level = max(monster.Level - 15, 1) public sealed class CaptureService(IDao<MateDto, long> mateDao, IMessageBus messageBus, IClock clock) : ICaptureService { private const int CaptureHpThresholdPercent = 50; private const int LowLevelCaptureRate = 90; private const int DefaultCaptureRate = 50; private const int LowLevelCutoff = 20; private const byte MateStartLevelOffset = 15; public bool IsCaptureSkill(SkillInfo skill) => HasCaptureBCard(skill); public async Task TryCaptureAsync(IAliveEntity caster, IAliveEntity target, SkillInfo skill) { if (!HasCaptureBCard(skill)) { return; } if (caster is not ICharacterEntity character) { return; } if (target is not MonsterComponentBundle monster) { return; } if (monster.NpcMonster == null || !monster.IsAlive || monster.MapInstance == null) { return; } if (monster.NpcMonster.Level > character.Level) { return; } var maxHp = monster.NpcMonster.MaxHp; var hpPercent = maxHp > 0 ? (monster.Hp * 100 / maxHp) : 100; if (hpPercent >= CaptureHpThresholdPercent) { return; } var rate = character.Level < LowLevelCutoff ? LowLevelCaptureRate : DefaultCaptureRate; if (RandomHelper.Instance.RandomNumber(0, 100) >= rate) { return; } var mateLevel = (byte)System.Math.Max(1, monster.NpcMonster.Level - MateStartLevelOffset); await mateDao.TryInsertOrUpdateAsync(new MateDto { CharacterId = character.CharacterId, VNum = (short)monster.NpcMonster.NpcMonsterVNum, MateType = MateType.Pet, Level = mateLevel, Loyalty = 1000, Experience = 0, Hp = monster.NpcMonster.MaxHp, Mp = monster.NpcMonster.MaxMp, IsSummonable = true, }).ConfigureAwait(false); monster.Hp = 0; monster.IsAlive = false; monster.HitList.Clear(); await monster.MapInstance.SendPacketAsync(new OutPacket { VisualType = VisualType.Monster, VisualId = monster.VisualId }).ConfigureAwait(false); // Capture still vacates the spawn point; re-use the same map-tick respawn // path MonsterRespawnHandler uses for kills so a captured monster eventually // reappears at its spawn. Going through ScheduleRespawn directly (rather // than via EntityDiedEvent) avoids pulling in the kill pipeline's xp/gold // rewards, death bcards and hunt-quest credit. var respawnMs = Math.Max(1000, monster.NpcMonster.RespawnTime); monster.MapInstance.ScheduleRespawn(monster, clock.GetCurrentInstant().Plus(Duration.FromMilliseconds(respawnMs))); await messageBus.PublishAsync(new EntityCapturedEvent(monster, character)).ConfigureAwait(false); } private static bool HasCaptureBCard(SkillInfo skill) => skill.BCards.Any(b => (BCardType.CardType)b.Type == BCardType.CardType.Capture && (AdditionalTypes.Capture)b.SubType == AdditionalTypes.Capture.CaptureAnimal); } } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/CharacterSkill.cs ================================================ using NosCore.Data.Dto; using NosCore.Data.StaticEntities; using System; namespace NosCore.GameObject.Services.BattleService { public class CharacterSkill : CharacterSkillDto { public CharacterSkill() { LastUse = DateTime.Now.AddHours(-1); } public DateTime LastUse { get; set; } public SkillDto? Skill { get; set; } public bool CanBeUsed() { return Skill != null && LastUse.AddMilliseconds(Skill.Cooldown * 100) < DateTime.Now; } } } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/DamageCalculator.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using NosCore.Shared.Enumerations; using NosCore.GameObject.Services.BattleService.Model; using NosCore.Packets.Enumerations; namespace NosCore.GameObject.Services.BattleService; // Faithful port of OpenNos Character.GenerateDamage / MapMonster.GenerateDamage. The // calculator is stateless apart from RNG — all inputs come from the resolved CombatStats // of both sides plus the SkillInfo. Keeping this symmetrical lets the same function // service character→monster, monster→character and PvP damage. public sealed class DamageCalculator(IRandomProvider random) : IDamageCalculator { // Element matchup boosts: attackerElement x defenderElement → multiplier. 0 means // "no element". Matches the OpenNos elemental triangle. private static readonly double[,] ElementalBoost = { // none fire water light dark /* none */ { 1.0, 1.0, 1.0, 1.0, 1.0 }, /* fire */ { 1.3, 1.0, 2.0, 1.0, 1.5 }, /* water */ { 1.3, 2.0, 1.0, 1.5, 1.0 }, /* light */ { 1.3, 1.5, 1.0, 1.0, 3.0 }, /* dark */ { 1.3, 1.0, 1.5, 3.0, 1.0 }, }; public DamageResult Calculate(CombatStats attacker, CombatStats defender, SkillInfo skill) { // Skill type 0=melee, 1=ranged, 2=magic, 3=special-class (class picks defence), // 5=same pattern as 3. NosTale uses this to decide which defence stat + which // of the attacker's (melee vs ranged) profiles applies. var context = SelectAttackContext(attacker, defender, skill); // Morale buff: Level diff + Morale buffs, used as a baseline addition to hit // rate and base damage. Matches OpenNos `int morale = Level + GetBuff(...)`. var morale = attacker.Morale; // Dodge phase: only melee/ranged skills can miss. Magicians never dodge. if ((skill.Type == 0 || skill.Type == 1) && attacker.Class != CharacterClassType.Mage) { var dodgeMultiplier = Math.Min(5.0, context.MonsterDodge / (double)(context.MainHitRate + 1)); // Cubic-fit dodge chance from OpenNos: approximates a sharp rise after the // attacker's hit rate falls behind the defender's dodge by ~2x. var chance = Math.Max(1.0, -0.25 * Math.Pow(dodgeMultiplier, 3) - 0.57 * Math.Pow(dodgeMultiplier, 2) + 25.3 * dodgeMultiplier - 1.41); // RNG returns [0,100). A dodge lands if roll <= chance (chance is percent). if (random.NextDouble() * 100 <= chance) { return new DamageResult(0, SuPacketHitMode.Miss); } } // Base damage roll from the selected (main) profile. + morale - defender level // gives a positive bias when attacker out-levels and damp when under-levelled. var baseDamage = RollBaseDamage(context.MainMinDmg, context.MainMaxDmg); baseDamage += morale - defender.Level; if (attacker.Class == CharacterClassType.Adventurer) { // Historic Adventurer flat bonus (they have otherwise weak primary stats). baseDamage += 20; } // Weapon upgrade table: negative values pad defender's armour, positive values // pad attacker's damage. Linear to ~+/-5 then accelerating. Exact constants // lifted from OpenNos so a +10 weapon still doubles damage. var monsterDefence = context.MonsterDefence; var upgrade = context.MainUpgrade - defender.DefenceUpgrade; if (upgrade < 0) { monsterDefence += (int)(monsterDefence * NegativeUpgradeDefenceBonus(upgrade)); } else if (upgrade > 0) { baseDamage += (int)(baseDamage * PositiveUpgradeDamageBonus(upgrade)); } baseDamage -= monsterDefence; // Ranged penalty: firing at point-blank loses 15% so Archers can't cheese melee. if (skill.Type == 1 && Chebyshev(attacker, defender) < 4) { baseDamage = (int)(baseDamage * 0.85); } // Elemental damage layer. See `ComputeElementalDamage` for the full pipeline. var elementalDamage = ComputeElementalDamage(attacker, defender, skill, baseDamage); var isCritical = false; if (skill.Type != 2 && random.NextDouble() * 100 <= context.MainCritChance) { baseDamage += (int)(baseDamage * (context.MainCritHit / 100.0)); isCritical = true; } var totalDamage = baseDamage + elementalDamage; if (totalDamage < 5) { // Floor: never fully no-op a hit that isn't a dodge. Matches OpenNos random // spatter which is preferred over flat 1 to feel less deterministic. totalDamage = random.Next(1, 6); } return new DamageResult( Math.Max(1, totalDamage), isCritical ? SuPacketHitMode.CriticalAttack : SuPacketHitMode.SuccessAttack); } // Selects which attacker profile (melee/ranged) and which defender stat applies, // mirroring OpenNos `switch (skill.Type)`. Returns all values by struct. private static AttackContext SelectAttackContext(CombatStats attacker, CombatStats defender, SkillInfo skill) { // Defaults point at the melee profile; overridden below per skill.Type. var ctx = new AttackContext { MainMinDmg = attacker.MinHit, MainMaxDmg = attacker.MaxHit, MainHitRate = attacker.HitRate, MainCritChance = attacker.CriticalChance, MainCritHit = attacker.CriticalRate, MainUpgrade = attacker.MeleeUpgrade, MonsterDefence = defender.Defence, MonsterDodge = defender.DefenceDodge, }; void UseRanged() { ctx.MainMinDmg = attacker.MinDistance; ctx.MainMaxDmg = attacker.MaxDistance; ctx.MainHitRate = attacker.DistanceRate; ctx.MainCritChance = attacker.DistanceCriticalChance; ctx.MainCritHit = attacker.DistanceCriticalRate; ctx.MainUpgrade = attacker.RangedUpgrade; } switch (skill.Type) { case 0: // melee if (attacker.Class == CharacterClassType.Archer) UseRanged(); ctx.MonsterDefence = defender.Defence; ctx.MonsterDodge = defender.DefenceDodge; break; case 1: // ranged if (attacker.Class != CharacterClassType.Archer) UseRanged(); ctx.MonsterDefence = defender.DistanceDefence; ctx.MonsterDodge = defender.DistanceDefenceDodge; break; case 2: // magic — no dodge, no crit (handled in caller) ctx.MonsterDefence = defender.MagicDefence; ctx.MonsterDodge = 0; break; case 3: // class-typed (self skills that scale off class) case 5: switch (attacker.Class) { case CharacterClassType.Archer: UseRanged(); ctx.MonsterDefence = defender.DistanceDefence; ctx.MonsterDodge = defender.DistanceDefenceDodge; break; case CharacterClassType.Mage: ctx.MonsterDefence = defender.MagicDefence; break; default: ctx.MonsterDefence = defender.Defence; ctx.MonsterDodge = defender.DefenceDodge; break; } break; } return ctx; } private int RollBaseDamage(int min, int max) { if (max <= min) return Math.Max(0, min); return random.Next(min, max + 1); } private static int Chebyshev(CombatStats a, CombatStats b) { _ = a; _ = b; // CombatStats doesn't carry position — distance is only used for the close-range // ranged penalty, and callers that care (BattleService) can compose a separate // check. We keep the method here to avoid changing the formula signature; the // in-scope check always returns "far" so the penalty never triggers spuriously. return int.MaxValue; } // OpenNos upgrade ladders, lifted from Character.GenerateDamage. Negative upgrades // buff the defender's armour, positive buff attacker damage. The table stops at ±10. private static double NegativeUpgradeDefenceBonus(int upgrade) => upgrade switch { <= -10 => 2.0, -9 => 1.2, -8 => 0.9, -7 => 0.65, -6 => 0.54, -5 => 0.43, -4 => 0.32, -3 => 0.22, -2 => 0.15, -1 => 0.1, _ => 0.0, }; private static double PositiveUpgradeDamageBonus(int upgrade) => upgrade switch { 1 => 0.1, 2 => 0.15, 3 => 0.22, 4 => 0.32, 5 => 0.43, 6 => 0.54, 7 => 0.65, 8 => 0.9, 9 => 1.2, >= 10 => 2.0, _ => 0.0, }; private static int ComputeElementalDamage(CombatStats attacker, CombatStats defender, SkillInfo skill, int baseDamage) { if (skill.Element == 0) { return 0; } if (skill.Element != attacker.Element) { return 0; } var attackElement = attacker.Element; var elementalBoost = ElementalBoost[Math.Min(attackElement, (byte)4), Math.Min(defender.Element, (byte)4)]; var monsterResistance = attackElement switch { 1 => defender.FireResistance, 2 => defender.WaterResistance, 3 => defender.LightResistance, 4 => defender.DarkResistance, _ => 0, }; var elementalDamage = (baseDamage + 100) * ((attacker.ElementRate + attacker.ElementRateSp) / 100.0); elementalDamage = elementalDamage / 100.0 * (100 - monsterResistance) * elementalBoost; return (int)Math.Max(0, elementalDamage); } private struct AttackContext { public int MainMinDmg; public int MainMaxDmg; public int MainHitRate; public int MainCritChance; public int MainCritHit; public int MainUpgrade; public int MonsterDefence; public int MonsterDodge; } } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/DamageResult.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Enumerations; namespace NosCore.GameObject.Services.BattleService; public record DamageResult(int Damage, SuPacketHitMode HitMode); ================================================ FILE: src/NosCore.GameObject/Services/BattleService/HitArguments.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.GameObject.Services.BattleService; public record HitArguments() { public short? MapX { get; set; } public short? MapY { get; set; } public long SkillId { get; set; } } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/HitQueue.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Concurrent; using System.Threading.Channels; using System.Threading.Tasks; using Arch.Core; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.BattleService.Model; using NosCore.GameObject.Infastructure; using NosCore.Packets.Enumerations; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Services.BattleService; // Per-target FIFO queue. When the first attacker hits a target we lazily spin up a // Channel + background worker task keyed by Entity handle. Subsequent attackers enqueue // into the same channel; the worker drains hits sequentially so HP arithmetic is // race-free without needing SemaphoreSlim.WaitAsync at the callsite. // // The worker exits when its channel stays idle long enough (checked on each drain // iteration) which keeps us from leaking a task per corpse. public sealed class HitQueue( IDamageCalculator damageCalculator, IBattleStatsProvider statsProvider, IBuffService buffService, IRegenerationService regenerationService, ILogger<HitQueue> logger) : IHitQueue, ISingletonService { private readonly ConcurrentDictionary<Entity, Channel<HitRequest>> _channels = new(); public Task<HitOutcome> EnqueueAsync(HitRequest request) { // Dead targets bypass the queue entirely — no point spinning up a worker for // someone we're not going to touch. The orchestrator also checks but racing // callers might slip past that check before the worker processes; this is a // second line of defense. if (!request.Target.IsAlive) { request.Completion.TrySetResult(new HitOutcome(HitStatus.Cancelled, 0, SuPacketHitMode.SuccessAttack, false)); return request.Completion.Task; } var channel = _channels.GetOrAdd(request.Target.Handle, _ => CreateChannel(request.Target)); if (!channel.Writer.TryWrite(request)) { request.Completion.TrySetResult(new HitOutcome(HitStatus.Cancelled, 0, SuPacketHitMode.SuccessAttack, false)); } return request.Completion.Task; } private Channel<HitRequest> CreateChannel(IAliveEntity target) { var channel = Channel.CreateUnbounded<HitRequest>(new UnboundedChannelOptions { SingleReader = true, // Writers are the ECS/packet handlers; multiple attackers write in parallel. SingleWriter = false, }); _ = Task.Run(() => ProcessAsync(target, channel)); return channel; } private async Task ProcessAsync(IAliveEntity target, Channel<HitRequest> channel) { try { while (await channel.Reader.WaitToReadAsync().ConfigureAwait(false)) { while (channel.Reader.TryRead(out var request)) { await TryApplyHit(request).ConfigureAwait(false); } // If the target died during this batch, drain the rest as cancelled so // queued attackers see a consistent "target was dead when you swung" // outcome. We also close the channel so the worker exits. if (!target.IsAlive) { channel.Writer.TryComplete(); DrainAsCancelled(channel); break; } } } catch (Exception ex) { logger.LogError(ex, "Hit queue worker for entity {Handle} crashed", target.Handle); } finally { _channels.TryRemove(target.Handle, out _); } } private Task TryApplyHit(HitRequest request) { try { if (request.Cancellation.IsCancellationRequested) { request.Completion.TrySetResult(new HitOutcome(HitStatus.Cancelled, 0, SuPacketHitMode.SuccessAttack, false)); return Task.CompletedTask; } var target = request.Target; if (!target.IsAlive) { request.Completion.TrySetResult(new HitOutcome(HitStatus.Cancelled, 0, SuPacketHitMode.SuccessAttack, false)); return Task.CompletedTask; } var attackerStats = statsProvider.GetStats(request.Origin); var defenderStats = statsProvider.GetStats(target); var damage = damageCalculator.Calculate(attackerStats, defenderStats, request.Skill); if (damage.HitMode == SuPacketHitMode.Miss || damage.Damage <= 0) { request.Completion.TrySetResult(new HitOutcome(HitStatus.Missed, 0, damage.HitMode, false)); return Task.CompletedTask; } var newHp = target.Hp - damage.Damage; var overkill = 0; var killed = false; if (newHp <= 0) { overkill = -newHp; newHp = 0; killed = true; } target.Hp = newHp; if (killed) { // HealthComponent.IsAlive is independent of Hp in the ECS (the generated // setters only sync what's assigned), so we flip it explicitly here to keep // IAliveEntity.IsAlive honest for subsequent attackers and packet fields. FlipIsAlive(target, false); } // Track contribution per attacker so reward distribution can weight by // damage dealt. Overkill damage is clipped so late arrivals don't get // credit for more than the target actually had. var credited = damage.Damage - overkill; target.HitList.AddOrUpdate(request.Origin.Handle, credited, (_, existing) => existing + credited); // Players get a 4s "no standing regen" grace after being hit — matches // OpenNos HealthHPLoad which zeros the standing rate until LastDefence // is 4s in the past. Monster damage doesn't need tracking; they don't // regen. if (target is ICharacterEntity hurtCharacter) { regenerationService.NotifyDamaged(hurtCharacter.CharacterId); } // Skill BCards that don't describe damage (i.e. stat modifiers) become a // buff on the target lasting the skill's Duration. Fire-and-forget is fine: // the worker is already serialising per-target, so ordering is preserved. if (!killed && request.Skill.Duration > 0 && request.Skill.BCards.Count > 0) { _ = buffService.ApplySkillBuffAsync(target, request.Skill.SkillVnum, request.Skill.Duration, request.Skill.BCards, request.Origin); } request.Completion.TrySetResult(new HitOutcome(HitStatus.Landed, damage.Damage, damage.HitMode, killed)); } catch (Exception ex) { logger.LogError(ex, "Failed to apply hit to entity {Handle}", request.Target.Handle); request.Completion.TrySetException(ex); } return Task.CompletedTask; } private static void FlipIsAlive(IAliveEntity entity, bool alive) { switch (entity) { case PlayerComponentBundle p: p.IsAlive = alive; break; case MonsterComponentBundle m: m.IsAlive = alive; break; case NpcComponentBundle n: n.IsAlive = alive; break; } } private static void DrainAsCancelled(Channel<HitRequest> channel) { while (channel.Reader.TryRead(out var pending)) { pending.Completion.TrySetResult(new HitOutcome(HitStatus.Cancelled, 0, SuPacketHitMode.SuccessAttack, false)); } } } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/IAggroService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs.Interfaces; namespace NosCore.GameObject.Services.BattleService; // Tracks a monster's current aggro target. The move/attack AI (run from the map's life // loop) reads Current() to decide whether to pursue a player; combat pushes threat via // AddThreat() every time the monster takes damage. Leash duration is the grace window // after which the monster forgets its last target if nothing else happened. public interface IAggroService { AggroSnapshot Current(IAliveEntity entity); void AddThreat(IAliveEntity mob, IAliveEntity attacker, int damage); void Clear(IAliveEntity mob); } public readonly record struct AggroSnapshot(long TargetVisualId, int ThreatScore, bool HasTarget); ================================================ FILE: src/NosCore.GameObject/Services/BattleService/IBattleService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.MapInstanceGenerationService; namespace NosCore.GameObject.Services.BattleService { // Entry point for anything that wants to inflict damage. Same signature for // character → monster, character → character (PvP), monster → character and // pet → monster — the implementation routes to the per-target hit queue so // concurrent attackers don't race on HP/HitList state. public interface IBattleService { Task Hit(IAliveEntity origin, IAliveEntity target, HitArguments arguments); // Drain the pending skill-cooldown-reset table for characters on this map // and emit SkillResetPacket for any whose ReadyAt has elapsed. Called once // per map per 400ms life tick from MapInstance. Task TickCooldownResetsAsync(MapInstance mapInstance); } } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/IBattleStatsProvider.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.BattleService.Model; namespace NosCore.GameObject.Services.BattleService; // Resolves a CombatStats snapshot for any alive entity. Kept behind an interface so the // damage calculator never needs to know whether the stats came from a Character's // CombatComponent or a monster's NpcMonsterDto, and tests can swap in canned stats. public interface IBattleStatsProvider { CombatStats GetStats(IAliveEntity entity); } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/IBuffService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Threading.Tasks; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.BattleService.Model; namespace NosCore.GameObject.Services.BattleService; // Lifecycle for buff/debuff cards attached to an entity. Applying the same CardId twice // refreshes the duration rather than stacking, which matches how the original client // renders the UI (one icon per card id). public interface IBuffService { Task ApplyAsync(IAliveEntity target, CardDto card, IReadOnlyList<BCardDto> bCards, IAliveEntity? caster, int overrideDuration = -1); // Convenience wrapper for skill-originated buffs: the skill itself doesn't come with // a CardDto, so we use the skill's SkillVnum as the dedup key and the skill's // Duration (in centiseconds) as the lifetime. BCards with Type=15 (Damage) are // filtered out because damage is applied immediately, not as a lasting buff. Task ApplySkillBuffAsync(IAliveEntity target, short skillVnum, short skillDuration, IReadOnlyList<BCardDto> bCards, IAliveEntity? caster); Task RemoveAsync(IAliveEntity target, short cardId); IReadOnlyCollection<BuffInstance> GetActiveBuffs(IAliveEntity target); bool HasBuff(IAliveEntity target, short cardId); // Drops buffs whose ExpiresAt is past `now`. Called from a timer; returning the list // lets handlers react (e.g. send BfePacket) without re-querying. Task<IReadOnlyList<BuffInstance>> TickAsync(IAliveEntity target); } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/ICaptureService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.BattleService.Model; namespace NosCore.GameObject.Services.BattleService { // Handles skills that carry a `BCardType.Capture` / `CaptureAnimal` bcard. Mirrors // vanosilla's BCardCaptureHandler + MonsterCaptureEventHandler flow (see // `_plugins/WingsEmu.Plugins.BasicImplementation/BCards/Handlers/BCardCaptureHandler.cs`). public interface ICaptureService { // True if `skill` is a capture skill (contains a CaptureAnimal bcard). // Callers use this to short-circuit the normal damage pipeline. bool IsCaptureSkill(SkillInfo skill); // Evaluates guards, rolls the capture rate, and on success inserts a Mate and // despawns the monster. No-op (and returns early) if `skill` is not a capture // skill or the target isn't a monster. Never throws for business-rule violations // — guard failures just skip the capture so the rest of the pipeline can react. Task TryCaptureAsync(IAliveEntity caster, IAliveEntity target, SkillInfo skill); } } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/IDamageCalculator.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.BattleService.Model; namespace NosCore.GameObject.Services.BattleService; // Pure function: given resolved stats for both sides and the skill being used, compute // the final damage + how to present the hit to the client (miss/crit/normal). Kept free // of ECS/networking dependencies so tests can pin formulas with plain struct inputs. public interface IDamageCalculator { DamageResult Calculate(CombatStats attacker, CombatStats defender, SkillInfo skill); } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/IHitQueue.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.BattleService.Model; namespace NosCore.GameObject.Services.BattleService; // Per-target FIFO serializer. Multiple attackers can call Enqueue concurrently; the // target sees them applied one at a time in arrival order, so HP and HitList stay // consistent in PvP without leaking a SemaphoreSlim to callers. Returns a task that // completes with the final HitOutcome for the caller (damage, crit flag, kill flag). public interface IHitQueue { Task<HitOutcome> EnqueueAsync(HitRequest request); } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/IMonsterAi.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.GameObject.Ecs.Interfaces; namespace NosCore.GameObject.Services.BattleService; // One tick of the non-playable-entity AI loop. Drives both monsters (which target // players) and NPCs like guards (which target hostile monsters of a different race). // Split out as an interface so MapInstance's life loop can be unit-tested without // spinning up the real AI and so future behaviour trees can be dropped in without // touching MapInstance. public interface IMonsterAi { // Returns true if the AI drove the entity this tick (chose to attack or step), // so the life loop can skip the fallback random-wander logic and avoid stepping // the entity twice. Returns false for passive entities (no aggro). Task<bool> TickAsync(INonPlayableEntity entity); } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/INpcCombatCatalog.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using NosCore.Data.StaticEntities; namespace NosCore.GameObject.Services.BattleService; // The NpcMonsterDto doesn't expose its NpcMonsterSkill / Drop / BCards collections // publicly (they're internal to NosCore.Data). This catalog indexes them by vnum at // startup so combat code can reach them without bumping up accessibility or hitting // the database on every hit. public interface INpcCombatCatalog { IReadOnlyList<NpcMonsterSkillDto> GetSkills(short npcMonsterVnum); IReadOnlyList<DropDto> GetDrops(short npcMonsterVnum); IReadOnlyList<BCardDto> GetNpcBCards(short npcMonsterVnum); IReadOnlyList<BCardDto> GetDeathBCards(short npcMonsterVnum); IReadOnlyList<BCardDto> GetSkillBCards(short skillVnum); } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/IRandomProvider.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; namespace NosCore.GameObject.Services.BattleService; // Abstraction over System.Random so dice rolls in combat are mockable. The default // instance uses a thread-safe shared Random. public interface IRandomProvider { int Next(int minInclusive, int maxExclusive); double NextDouble(); } public sealed class RandomProvider : IRandomProvider { public int Next(int minInclusive, int maxExclusive) => Random.Shared.Next(minInclusive, maxExclusive); public double NextDouble() => Random.Shared.NextDouble(); } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/IRegenerationService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.GameObject.Services.MapInstanceGenerationService; namespace NosCore.GameObject.Services.BattleService; // HP/MP natural regeneration. Called from MapInstance's life loop so every connected // player on the map ticks together. Sitting players regen full-rate unconditionally; // standing players regen half-rate gated on "no damage for 4s" (OpenNos HealthHPLoad). public interface IRegenerationService { Task TickAsync(MapInstance mapInstance); // HitQueue calls this whenever a player takes damage so standing regen stays // suppressed for the OpenNos 4s grace window. Sitting regen is unaffected — // resting is an explicit user action and the fall animation already took them // out of combat. void NotifyDamaged(long characterId); } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/IRespawnService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs.Interfaces; namespace NosCore.GameObject.Services.BattleService; public interface IRespawnService { // The MapType.RespawnMapTypeId for the given MapId, or null if the map isn't tied // to a respawn group. OpenNos keys per-character saved respawns by this value so a // save-point NPC in Act 5 doesn't overwrite the Act 1 save. long? ResolveRespawnMapTypeId(short mapId); // The (mapId, x, y) the character should respawn at for the given MapType group. // Falls back to the RespawnMapType catalog default (Nosville for Act 1). (short MapId, short X, short Y) GetRespawnLocation(ICharacterEntity character, long? respawnMapTypeId); // Upserts the character's Respawn row for the MapType group to (mapId, x, y). // No-op if the map has no RespawnMapTypeId. void SetRespawnPoint(ICharacterEntity character, short mapId, short x, short y); } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/IRewardService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Threading.Tasks; using Arch.Core; using NosCore.GameObject.Ecs.Interfaces; namespace NosCore.GameObject.Services.BattleService; public interface IRewardService { Task DistributeAsync(IAliveEntity victim, IAliveEntity? killer, IReadOnlyDictionary<Entity, int> hitSnapshot); } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/ISkillResolver.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.BattleService.Model; namespace NosCore.GameObject.Services.BattleService; // Picks the right SkillDto for a given caster + cast intent. For characters this indexes // into their learned skill dictionary; for monsters/pets it picks from NpcMonsterSkill // (or falls back to BasicSkill). Null return = the caster cannot use this skill now. public interface ISkillResolver { SkillInfo? Resolve(IAliveEntity caster, long castId); } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/ITargetResolver.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.BattleService.Model; namespace NosCore.GameObject.Services.BattleService; // Expands a single cast into the concrete list of entities to hit. Single-target skills // return just the primary; AOE skills additionally include anyone within TargetRange who // qualifies as an enemy of the caster. The primary is always first in the list so the // queue and packet serialization can treat it specially (e.g. big impact animation). public interface ITargetResolver { IReadOnlyList<IAliveEntity> Resolve(IAliveEntity attacker, IAliveEntity primaryTarget, SkillInfo skill); } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/Model/BuffInstance.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using NodaTime; using NosCore.Data.Enumerations.Buff; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Interfaces; namespace NosCore.GameObject.Services.BattleService.Model; // A buff/debuff currently attached to an entity. CardDto is the design-time description; // BCards are the resolved stat modifiers applied while the buff is active. public sealed record BuffInstance( short CardId, BuffType BuffType, IAliveEntity? Caster, Instant StartedAt, Instant ExpiresAt, IReadOnlyList<BCardDto> BCards); ================================================ FILE: src/NosCore.GameObject/Services/BattleService/Model/CombatStats.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Services.BattleService.Model; // Snapshot of combat-relevant stats resolved for a single hit. Pulling these into a // flat struct lets the damage calculator stay pure and easy to test. // // Matches OpenNos Character/Monster stat shape so the damage formula port can use these // fields directly without introspecting the underlying entity. public readonly record struct CombatStats( int Level, int HeroLevel, CharacterClassType Class, int Morale, // Melee profile int MinHit, int MaxHit, int HitRate, int CriticalChance, int CriticalRate, int MeleeUpgrade, // Ranged profile int MinDistance, int MaxDistance, int DistanceRate, int DistanceCriticalChance, int DistanceCriticalRate, int RangedUpgrade, // Element byte Element, int ElementRate, int ElementRateSp, // Defence int Defence, int DefenceRate, int DistanceDefence, int DistanceDefenceRate, int MagicDefence, int DefenceDodge, int DistanceDefenceDodge, int DefenceUpgrade, // Resistances (per-element % reduction of incoming element damage) int FireResistance, int WaterResistance, int LightResistance, int DarkResistance); ================================================ FILE: src/NosCore.GameObject/Services/BattleService/Model/HitOutcome.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Enumerations; namespace NosCore.GameObject.Services.BattleService.Model; public enum HitStatus { Landed, Cancelled, Missed, } // Result of a single hit after queue processing. `Status == Landed` implies Damage was // actually subtracted from the target; killed == target HP reached 0. public sealed record HitOutcome( HitStatus Status, int Damage, SuPacketHitMode HitMode, bool Killed); ================================================ FILE: src/NosCore.GameObject/Services/BattleService/Model/HitRequest.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading; using System.Threading.Tasks; using NosCore.GameObject.Ecs.Interfaces; namespace NosCore.GameObject.Services.BattleService.Model; // One entry in the per-target hit queue. Completion is signalled via Tcs so the enqueuing // caller can await the outcome even though processing happens on the target's worker. public sealed record HitRequest( IAliveEntity Origin, IAliveEntity Target, SkillInfo Skill, bool IsPrimaryTarget, TaskCompletionSource<HitOutcome> Completion, CancellationToken Cancellation); ================================================ FILE: src/NosCore.GameObject/Services/BattleService/Model/SkillInfo.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using NosCore.Data.Enumerations.Battle; using NosCore.Data.StaticEntities; namespace NosCore.GameObject.Services.BattleService.Model; // Unified skill description used by the orchestrator. Resolved once per cast, passed to // target resolution / damage / buffs so each step stops re-reading the SkillDto. public sealed record SkillInfo( short SkillVnum, long CastId, short Cooldown, short AttackAnimation, short CastEffect, short Effect, byte Type, TargetHitType HitType, byte Range, byte TargetRange, byte TargetType, byte Element, short Duration, short MpCost, IReadOnlyList<BCardDto> BCards) { public bool IsAoe => HitType is TargetHitType.SingleAoeTargetHit or TargetHitType.AoeTargetHit or TargetHitType.ZoneHit or TargetHitType.SpecialZoneHit; } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/MonsterAi.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Arch.Core; using NodaTime; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Components; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.PathfindingService; using NosCore.Networking; using NosCore.PathFinder.Interfaces; using NosCore.Shared.Enumerations; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Services.BattleService; // Aggro-driven AI for both monsters and NPCs (guards). Each tick (called from // MapInstance's life loop every 400ms) does four things in order, matching OpenNos // MonsterLife: // 1. Proximity aggro: hostile entities scan NoticeRange for enemies and pick the // closest. Two-faction rule — NPCs and players are same-side, monsters the // other: NPCs target monsters only, monsters target whichever of player/NPC // is closer. // 2. Skill selection: 20% chance to pick a random cooldown-ready NpcMonsterSkill. // 3. Attack: if the target is in range for the chosen skill (or BasicRange for // the basic attack), enqueue a Hit via IBattleService and stamp the cooldown. // 4. Pursuit: else step toward the target along a cached JPS path; re-plan if the // target moved more than 2 cells from when the path was computed. Stationary // entities (CanWalk=false) skip pursuit but still attack in range. // When the aggro leash expires (aggroService.Current returns HasTarget=false), the // AI pathfinds back to FirstX/FirstY (for entities that walk), matching OpenNos // RemoveTarget behaviour. public sealed class MonsterAi : IMonsterAi, ISingletonService { private readonly IBattleService battleService; private readonly IAggroService aggroService; private readonly IPathfindingService pathfindingService; private readonly ISessionRegistry sessionRegistry; private readonly IHeuristic distanceCalculator; private readonly INpcCombatCatalog catalog; private readonly IRandomProvider random; private readonly IClock clock; private readonly ILogger<MonsterAi> logger; private readonly IReadOnlyDictionary<short, SkillDto> skillsByVnum; public MonsterAi( IBattleService battleService, IAggroService aggroService, IPathfindingService pathfindingService, ISessionRegistry sessionRegistry, IHeuristic distanceCalculator, INpcCombatCatalog catalog, IRandomProvider random, IClock clock, List<SkillDto> skills, ILogger<MonsterAi> logger) : this(battleService, aggroService, pathfindingService, sessionRegistry, distanceCalculator, catalog, random, clock, skills.ToDictionary(s => s.SkillVNum, s => s), logger) { } public MonsterAi( IBattleService battleService, IAggroService aggroService, IPathfindingService pathfindingService, ISessionRegistry sessionRegistry, IHeuristic distanceCalculator, INpcCombatCatalog catalog, IRandomProvider random, IClock clock, IReadOnlyDictionary<short, SkillDto> skillsByVnum, ILogger<MonsterAi> logger) { this.battleService = battleService; this.aggroService = aggroService; this.pathfindingService = pathfindingService; this.sessionRegistry = sessionRegistry; this.distanceCalculator = distanceCalculator; this.catalog = catalog; this.random = random; this.clock = clock; this.skillsByVnum = skillsByVnum; this.logger = logger; } // Cached path per entity — invalidated when the target moves far enough that // JPS's result is no longer useful. private readonly ConcurrentDictionary<Entity, CachedPath> _pathCache = new(); public async Task<bool> TickAsync(INonPlayableEntity entity) { try { if (!entity.IsAlive || entity.NpcMonster == null) return false; var aggro = aggroService.Current(entity); if (!aggro.HasTarget && entity.NpcMonster.IsHostile) { var noticed = DetectNearbyEnemy(entity); if (noticed != null) { aggroService.AddThreat(entity, noticed, 1); aggro = aggroService.Current(entity); } } if (!aggro.HasTarget) { return await TryReturnHomeAsync(entity).ConfigureAwait(false); } var target = ResolveTarget(entity, aggro.TargetVisualId); if (target == null || !target.IsAlive) { aggroService.Clear(entity); _pathCache.TryRemove(entity.Handle, out _); return false; } var distance = (int)distanceCalculator.GetDistance( (entity.PositionX, entity.PositionY), (target.PositionX, target.PositionY)); var chosenSkill = PickSkill(entity); if (chosenSkill != null && distance <= chosenSkill.SkillRange) { await AttackAsync(entity, target, chosenSkill).ConfigureAwait(false); return true; } if (chosenSkill == null && distance <= Math.Max(1, (int)entity.NpcMonster.BasicRange)) { var basic = new ChosenSkill( SkillVnum: 0, CastId: 0, SkillRange: Math.Max(1, (int)entity.NpcMonster.BasicRange), CooldownMs: Math.Max(200, entity.NpcMonster.BasicCooldown * 100)); await AttackAsync(entity, target, basic).ConfigureAwait(false); return true; } await StepTowardAsync(entity, target).ConfigureAwait(false); return true; } catch (Exception ex) { logger.LogError(ex, "AI tick failed for {VisualId}", entity.VisualId); return false; } } // Returns the closest qualifying enemy within NoticeRange. Two-faction rule: // NPCs and players are on one side, monsters on the other. NPCs scan the // monster pool; monsters scan both players and NPCs and just take the closest, // no player preference. private IAliveEntity? DetectNearbyEnemy(INonPlayableEntity entity) { var map = entity.MapInstance; if (map == null) return null; var range = (int)Math.Max(entity.NpcMonster.NoticeRange, (byte)1); IAliveEntity? best = null; var bestDistance = double.MaxValue; if (entity.VisualType == VisualType.Npc) { foreach (var monster in map.Monsters) { if (!monster.IsAlive || monster.NpcMonster == null) continue; var d = distanceCalculator.GetDistance( (entity.PositionX, entity.PositionY), (monster.PositionX, monster.PositionY)); if (d > range) continue; if (d < bestDistance) { bestDistance = d; best = monster; } } return best; } foreach (var session in sessionRegistry.GetClientSessionsByMapInstance(entity.MapInstanceId)) { if (!session.HasPlayerEntity) continue; var player = session.Character; if (!player.IsAlive) continue; var d = distanceCalculator.GetDistance( (entity.PositionX, entity.PositionY), (player.PositionX, player.PositionY)); if (d > range) continue; if (d < bestDistance) { bestDistance = d; best = player; } } foreach (var npc in map.Npcs) { if (!npc.IsAlive || npc.NpcMonster == null) continue; var d = distanceCalculator.GetDistance( (entity.PositionX, entity.PositionY), (npc.PositionX, npc.PositionY)); if (d > range) continue; if (d < bestDistance) { bestDistance = d; best = npc; } } return best; } // Resolves the cached aggro target by visual id. Walks all three pools // (players, monsters, NPCs) because any of them can be an aggro target. private IAliveEntity? ResolveTarget(INonPlayableEntity entity, long visualId) { var map = entity.MapInstance; if (map == null) return null; foreach (var session in sessionRegistry.GetClientSessionsByMapInstance(entity.MapInstanceId)) { if (session.HasPlayerEntity && session.Character.VisualId == visualId) { return session.Character; } } foreach (var monster in map.Monsters) { if (monster.VisualId == visualId) return monster; } foreach (var npc in map.Npcs) { if (npc.VisualId == visualId) return npc; } return null; } // 20% chance per tick to roll one of the entity's cooldown-ready skills. When a // skill is selected it's only used if in range; otherwise the AI falls through to // either basic attack or pursuit. Matches OpenNos RandomNumber(0, 10) > 8 check. private ChosenSkill? PickSkill(INonPlayableEntity entity) { if (random.Next(0, 10) < 8) return null; var map = entity.MapInstance; if (map == null) return null; var skills = catalog.GetSkills(entity.NpcMonster!.NpcMonsterVNum); if (skills.Count == 0) return null; var cooldowns = map.EcsWorld.TryGetComponent<SkillCooldownComponent>(entity.Handle); if (cooldowns == null) return null; var now = clock.GetCurrentInstant(); foreach (var sk in skills.OrderBy(_ => random.Next(0, 100))) { if (cooldowns.Value.NextUsableAt.TryGetValue(sk.SkillVNum, out var readyAt) && readyAt > now) { continue; } if (!skillsByVnum.TryGetValue(sk.SkillVNum, out var dto)) { continue; } return new ChosenSkill( SkillVnum: dto.SkillVNum, CastId: dto.CastId, SkillRange: Math.Max(1, (int)dto.Range), CooldownMs: Math.Max(200, dto.Cooldown * 100)); } return null; } private async Task AttackAsync(INonPlayableEntity entity, IAliveEntity target, ChosenSkill skill) { var map = entity.MapInstance; if (map == null) return; var cooldowns = map.EcsWorld.TryGetComponent<SkillCooldownComponent>(entity.Handle); var now = clock.GetCurrentInstant(); if (cooldowns != null && cooldowns.Value.NextUsableAt.TryGetValue(skill.SkillVnum, out var readyAt) && readyAt > now) { return; } await battleService.Hit(entity, target, new HitArguments { SkillId = skill.CastId }).ConfigureAwait(false); if (cooldowns != null) { cooldowns.Value.NextUsableAt[skill.SkillVnum] = now.Plus(Duration.FromMilliseconds(skill.CooldownMs)); } } // Pursuit: cache JPS path, re-plan when the target moved or the path ran out. // Consume `Speed / 2` cells per tick — the 400ms life-loop cadence is already // the rate limit (matches OpenNos MapMonster.Move which broadcasts the same // multi-cell batch per MonsterLife tick). private async Task StepTowardAsync(INonPlayableEntity entity, IAliveEntity target) { if (entity.NpcMonster?.CanWalk != true) return; var map = entity.MapInstance; if (map == null) return; var cache = _pathCache.GetValueOrDefault(entity.Handle); var targetMoved = cache == null || cache.TargetX != target.PositionX || cache.TargetY != target.PositionY; if (cache == null || targetMoved || cache.Path.Count == 0) { var pathfinder = pathfindingService.ForMap(map.Map); var path = pathfinder.FindPath( (entity.PositionX, entity.PositionY), (target.PositionX, target.PositionY)) .Skip(1) // first node is the start cell .ToList(); cache = new CachedPath(target.PositionX, target.PositionY, path, clock.GetCurrentInstant()); _pathCache[entity.Handle] = cache; } if (cache.Path.Count == 0) return; var speed = (int)Math.Max((byte)1, entity.NpcMonster!.Speed); var stepCount = Math.Min(cache.Path.Count, Math.Max(1, speed / 2)); var dest = cache.Path[stepCount - 1]; cache.Path.RemoveRange(0, stepCount); _pathCache[entity.Handle] = cache with { LastStepAt = clock.GetCurrentInstant() }; if (!map.Map.IsWalkable((short)dest.Item1, (short)dest.Item2)) return; entity.PositionX = (short)dest.Item1; entity.PositionY = (short)dest.Item2; await map.SendPacketAsync(entity.GenerateMove(entity.PositionX, entity.PositionY)).ConfigureAwait(false); } private async Task<bool> TryReturnHomeAsync(INonPlayableEntity entity) { if (!entity.IsMoving) return false; var map = entity.MapInstance; if (map == null) return false; // INonPlayableEntity exposes the spawn cell via its MapX/MapY interface // members (see NpcComponentBundle / MonsterComponentBundle partial impls). if (entity.PositionX == entity.MapX && entity.PositionY == entity.MapY) { _pathCache.TryRemove(entity.Handle, out _); return false; } var pathfinder = pathfindingService.ForMap(map.Map); var path = pathfinder.FindPath( (entity.PositionX, entity.PositionY), (entity.MapX, entity.MapY)) .Skip(1) .ToList(); if (path.Count == 0) return false; var step = path[0]; entity.PositionX = (short)step.Item1; entity.PositionY = (short)step.Item2; await map.SendPacketAsync(entity.GenerateMove(entity.PositionX, entity.PositionY)).ConfigureAwait(false); return true; } // Cached pathfinding result. Mutable only on replan or step-advance so the record // stays cheap to copy in concurrent tick scenarios. private sealed record CachedPath(short TargetX, short TargetY, List<(short X, short Y)> Path, Instant LastStepAt); private sealed record ChosenSkill(short SkillVnum, long CastId, int SkillRange, int CooldownMs); } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/NpcCombatCatalog.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using System.Linq; using NosCore.Data.StaticEntities; using NosCore.GameObject.Infastructure; namespace NosCore.GameObject.Services.BattleService; // Immutable lookup tables built once at construction. NosCore.Data keeps the // navigation collections internal, so bootstrap pulls the rows out of their DAOs and // hands us flat lists which we bucket by foreign-key vnum. public sealed class NpcCombatCatalog : INpcCombatCatalog, ISingletonService { private static readonly IReadOnlyList<NpcMonsterSkillDto> EmptyNpcSkills = Array.Empty<NpcMonsterSkillDto>(); private static readonly IReadOnlyList<DropDto> EmptyDrops = Array.Empty<DropDto>(); private static readonly IReadOnlyList<BCardDto> EmptyBCards = Array.Empty<BCardDto>(); private readonly IReadOnlyDictionary<short, IReadOnlyList<NpcMonsterSkillDto>> _skillsByMob; private readonly IReadOnlyDictionary<short, IReadOnlyList<DropDto>> _dropsByMob; private readonly IReadOnlyDictionary<short, IReadOnlyList<BCardDto>> _bcardsByMob; private readonly IReadOnlyDictionary<short, IReadOnlyList<BCardDto>> _deathBCardsByMob; private readonly IReadOnlyDictionary<short, IReadOnlyList<BCardDto>> _bcardsBySkill; public NpcCombatCatalog( List<NpcMonsterSkillDto> npcMonsterSkills, List<DropDto> drops, List<BCardDto> bCards) { _skillsByMob = npcMonsterSkills .GroupBy(s => s.NpcMonsterVNum) .ToDictionary(g => g.Key, g => (IReadOnlyList<NpcMonsterSkillDto>)g.ToArray()); _dropsByMob = drops .Where(d => d.MonsterVNum.HasValue) .GroupBy(d => d.MonsterVNum!.Value) .ToDictionary(g => g.Key, g => (IReadOnlyList<DropDto>)g.ToArray()); _bcardsByMob = bCards .Where(b => b.NpcMonsterVNum.HasValue) .GroupBy(b => b.NpcMonsterVNum!.Value) .ToDictionary(g => g.Key, g => (IReadOnlyList<BCardDto>)g.ToArray()); _deathBCardsByMob = bCards .Where(b => b.NpcMonsterVNum.HasValue && b.Slot == 2) .GroupBy(b => b.NpcMonsterVNum!.Value) .ToDictionary(g => g.Key, g => (IReadOnlyList<BCardDto>)g.ToArray()); _bcardsBySkill = bCards .Where(b => b.SkillVNum.HasValue) .GroupBy(b => b.SkillVNum!.Value) .ToDictionary(g => g.Key, g => (IReadOnlyList<BCardDto>)g.ToArray()); } public IReadOnlyList<NpcMonsterSkillDto> GetSkills(short npcMonsterVnum) => _skillsByMob.TryGetValue(npcMonsterVnum, out var list) ? list : EmptyNpcSkills; public IReadOnlyList<DropDto> GetDrops(short npcMonsterVnum) => _dropsByMob.TryGetValue(npcMonsterVnum, out var list) ? list : EmptyDrops; public IReadOnlyList<BCardDto> GetNpcBCards(short npcMonsterVnum) => _bcardsByMob.TryGetValue(npcMonsterVnum, out var list) ? list : EmptyBCards; public IReadOnlyList<BCardDto> GetDeathBCards(short npcMonsterVnum) => _deathBCardsByMob.TryGetValue(npcMonsterVnum, out var list) ? list : EmptyBCards; public IReadOnlyList<BCardDto> GetSkillBCards(short skillVnum) => _bcardsBySkill.TryGetValue(skillVnum, out var list) ? list : EmptyBCards; } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/RegenerationService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Concurrent; using System.Threading.Tasks; using NodaTime; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.Shared.Enumerations; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Services.BattleService; // Per-class, per-posture regen rates from OpenNos CharacterHelper.HpHealth / // HpHealthStand / MpHealth / MpHealthStand. Sitting regen ticks every 1500ms // unconditionally; standing regen ticks every 2000ms AND is gated on // "no damage taken for the last 4 seconds" — matches OpenNos HealthHPLoad // which returns 0 while LastDefence is within 4s of now. Without the gate // the HP bar refilled itself in the middle of combat. public sealed class RegenerationService( ISessionRegistry sessionRegistry, IClock clock, ILogger<RegenerationService> logger) : IRegenerationService, ISingletonService { private static readonly Duration SittingInterval = Duration.FromMilliseconds(1500); private static readonly Duration StandingInterval = Duration.FromMilliseconds(2000); private static readonly Duration StandingDefenceGrace = Duration.FromSeconds(4); // HpHealth[class] sitting rate; HpHealthStand[class] standing rate. // Index matches CharacterClassType numeric value (Adventurer=0, Swordsman=1, // Archer=2, Mage=3, MartialArtist=4 — martial artist treated like Swordsman). private static readonly int[] HpSittingRate = { 30, 90, 60, 30, 90 }; private static readonly int[] HpStandingRate = { 25, 26, 32, 20, 26 }; private static readonly int[] MpSittingRate = { 10, 30, 50, 80, 30 }; private static readonly int[] MpStandingRate = { 8, 10, 20, 40, 10 }; private readonly ConcurrentDictionary<long, Instant> _lastRegen = new(); private readonly ConcurrentDictionary<long, Instant> _lastDefence = new(); public void NotifyDamaged(long characterId) { _lastDefence[characterId] = clock.GetCurrentInstant(); } public async Task TickAsync(MapInstance mapInstance) { try { var now = clock.GetCurrentInstant(); foreach (var session in sessionRegistry.GetClientSessionsByMapInstance(mapInstance.MapInstanceId)) { if (!session.HasPlayerEntity) continue; var character = session.Character; if (!character.IsAlive) continue; if (character.Hp >= character.MaxHp && character.Mp >= character.MaxMp) continue; var interval = character.IsSitting ? SittingInterval : StandingInterval; var last = _lastRegen.GetOrAdd(character.CharacterId, now); if (now - last < interval) continue; var classIndex = Math.Clamp((int)character.Class, 0, HpSittingRate.Length - 1); int hpRate, mpRate; if (character.IsSitting) { hpRate = HpSittingRate[classIndex]; mpRate = MpSittingRate[classIndex]; } else { // Standing regen only kicks in once 4s have elapsed since the // last incoming hit. Before that the rates are zero so the bars // stay put while you're being swung at. if (_lastDefence.TryGetValue(character.CharacterId, out var lastDefence) && now - lastDefence < StandingDefenceGrace) { _lastRegen[character.CharacterId] = now; continue; } hpRate = HpStandingRate[classIndex]; mpRate = MpStandingRate[classIndex]; } _lastRegen[character.CharacterId] = now; var changed = false; if (character.Hp < character.MaxHp && hpRate > 0) { character.Hp = Math.Min(character.MaxHp, character.Hp + hpRate); changed = true; } if (character.Mp < character.MaxMp && mpRate > 0) { character.Mp = Math.Min(character.MaxMp, character.Mp + mpRate); changed = true; } if (changed) { await session.SendPacketAsync(character.GenerateStat()).ConfigureAwait(false); } } } catch (Exception ex) { logger.LogWarning(ex, "Regeneration tick failed for map {MapId}", mapInstance.Map.MapId); } } } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/RespawnService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using System.Linq; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Interaction; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Infastructure; using NosCore.Shared.Helpers; namespace NosCore.GameObject.Services.BattleService; public sealed class RespawnService( List<MapTypeMapDto> mapTypeMaps, List<MapTypeDto> mapTypes, List<RespawnMapTypeDto> respawnMapTypes) : IRespawnService, ISingletonService { private const int SpawnJitter = 3; public long? ResolveRespawnMapTypeId(short mapId) { var mapTypeIds = mapTypeMaps.Where(m => m.MapId == mapId).Select(m => m.MapTypeId).ToList(); if (mapTypeIds.Count == 0) return null; return mapTypes.Where(t => mapTypeIds.Contains(t.MapTypeId)) .Select(t => t.RespawnMapTypeId) .FirstOrDefault(id => id.HasValue); } public (short MapId, short X, short Y) GetRespawnLocation(ICharacterEntity character, long? respawnMapTypeId) { respawnMapTypeId ??= (long)RespawnType.DefaultAct1; var saved = character.Respawns.FirstOrDefault(r => r.RespawnMapTypeId == respawnMapTypeId); short mapId, baseX, baseY; if (saved != null) { mapId = saved.MapId; baseX = saved.X; baseY = saved.Y; } else { var catalog = respawnMapTypes.FirstOrDefault(r => r.RespawnMapTypeId == respawnMapTypeId) ?? respawnMapTypes.FirstOrDefault(r => r.RespawnMapTypeId == (long)RespawnType.DefaultAct1); mapId = catalog?.MapId ?? 1; baseX = catalog?.DefaultX ?? 80; baseY = catalog?.DefaultY ?? 116; } var x = (short)(baseX + RandomHelper.Instance.RandomNumber(-SpawnJitter, SpawnJitter + 1)); var y = (short)(baseY + RandomHelper.Instance.RandomNumber(-SpawnJitter, SpawnJitter + 1)); return (mapId, x, y); } public void SetRespawnPoint(ICharacterEntity character, short mapId, short x, short y) { var respawnMapTypeId = ResolveRespawnMapTypeId(mapId); if (!respawnMapTypeId.HasValue) return; var existing = character.Respawns.FirstOrDefault(r => r.RespawnMapTypeId == respawnMapTypeId.Value); if (existing == null) { character.Respawns.Add(new RespawnDto { RespawnId = character.Respawns.Count == 0 ? 1 : character.Respawns.Max(r => r.RespawnId) + 1, CharacterId = character.CharacterId, MapId = mapId, X = x, Y = y, RespawnMapTypeId = respawnMapTypeId.Value, }); } else { existing.MapId = mapId; existing.X = x; existing.Y = y; } } } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/RewardService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Arch.Core; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.Data.Enumerations.Map; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.ExperienceService; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.MapItemGenerationService; using NosCore.Networking; using NosCore.Packets.Enumerations; using NosCore.Shared.Helpers; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Services.BattleService; // Reward distribution runs after a kill, exactly once. Monster XP is split among // character attackers proportional to damage dealt — the "helper gets share" rule in the // original game. Gold and drops are rolled once per kill and either awarded to the top // damage dealer or spawned as map items everyone can pick up (we go with map items here, // which matches the baseline behaviour and lets the MapItemPickedUpEvent system handle // UI + grace periods). public sealed class RewardService( IItemGenerationService itemGenerationService, IMapItemGenerationService mapItemGenerationService, INpcCombatCatalog catalog, IExperienceProgressionService experienceProgression, ILogger<RewardService> logger) : IRewardService { // Flat fairy XP granted per qualifying kill. OpenNos exposes this as a runtime knob // on ServerManager; we keep it constant until there's a gameplay reason to tune it. private const int FairyXpRate = 1; // Gold item vnum. The GoldDropHandler already treats vnum 1046 as the "gold" // map item — we keep the same number so both systems stay in sync. private const short GoldVNum = 1046; public async Task DistributeAsync(IAliveEntity victim, IAliveEntity? killer, IReadOnlyDictionary<Entity, int> hitSnapshot) { try { if (victim is not INonPlayableEntity npc) { return; } var mob = npc.NpcMonster; if (mob == null) { return; } var mapInstance = victim.MapInstance; if (mapInstance == null) { return; } var totalDamage = hitSnapshot.Values.Sum(); if (totalDamage <= 0) { return; } await AwardExperienceAsync(victim, mob, totalDamage, hitSnapshot); await SpawnDropsAsync(victim, mob, mapInstance); await SpawnGoldAsync(victim, mob, mapInstance); _ = killer; } finally { victim.HitList.Clear(); } } private async Task AwardExperienceAsync(IAliveEntity victim, NpcMonsterDto mob, int totalDamage, IReadOnlyDictionary<Entity, int> hitSnapshot) { foreach (var (handle, damage) in hitSnapshot) { if (!TryFindPlayer(victim, handle, out var player)) { continue; } var share = damage / (double)totalDamage; var levelXp = (long)(mob.Xp * share); var jobXp = (long)(mob.JobXp * share); var heroXp = (long)(mob.HeroXp * share); var spXp = 0L; if (player.UseSp) { var spInstance = player.InventoryService .LoadBySlotAndType((short)EquipmentType.Sp, NoscorePocketType.Wear) ?.ItemInstance as SpecialistInstance; if (spInstance != null) { var multiplier = spInstance.SpLevel < 10 ? 10 : spInstance.SpLevel < 19 ? 5 : 1; spXp = (long)(mob.JobXp * share * multiplier); if (spInstance.SpLevel > 19) { jobXp /= 2; } } } // Fairy XP is a flat per-kill grant gated on the mob being within ±15 levels // of the player (OpenNos Character.cs:5242). Out-of-bracket kills grant nothing, // so early-game farming doesn't power-level fairies on low-level mobs. var fairyXp = 0; if (Math.Abs(player.Level - mob.Level) <= 15) { fairyXp = FairyXpRate; } await experienceProgression.AddExperienceAsync(player, levelXp, jobXp, heroXp, spXp, fairyXp); await AwardReputationAsync(player, mob).ConfigureAwait(false); await AwardDignityAsync(player, mob).ConfigureAwait(false); } } private static async Task AwardReputationAsync(PlayerComponentBundle player, NpcMonsterDto mob) { if (player.MapInstance.MapInstanceType != MapInstanceType.BaseMapInstance || mob.Level < 3) { return; } player.Reput += mob.Level / 3; await player.SendPacketAsync(player.GenerateFd()).ConfigureAwait(false); } private static async Task AwardDignityAsync(PlayerComponentBundle player, NpcMonsterDto mob) { if (player.Level <= 20 || player.Level >= mob.Level || player.Dignity >= 100) { return; } if (RandomHelper.Instance.RandomNumber(0, 2) != 0) { return; } player.Dignity = (short)(player.Dignity + 1); await player.SendPacketAsync(player.GenerateFd()).ConfigureAwait(false); } private async Task SpawnDropsAsync(IAliveEntity victim, NpcMonsterDto mob, Services.MapInstanceGenerationService.MapInstance mapInstance) { foreach (var drop in catalog.GetDrops(mob.NpcMonsterVNum)) { // DropChance is expressed per 10000 (i.e. 2000 means 20%). Scale by the map's // drop rate so GM-configured rates apply uniformly. var roll = RandomHelper.Instance.RandomNumber(0, 10000); var threshold = drop.DropChance * mapInstance.DropRate; if (roll >= threshold) continue; try { var item = itemGenerationService.Create(drop.VNum, (short)drop.Amount); var dropped = mapItemGenerationService.Create(mapInstance, item, victim.PositionX, victim.PositionY); await mapInstance.SendPacketAsync(dropped.GenerateDrop()); } catch (System.Exception ex) { logger.LogWarning(ex, "Failed to spawn drop {VNum} from {Mob}", drop.VNum, mob.NpcMonsterVNum); } } } private async Task SpawnGoldAsync(IAliveEntity victim, NpcMonsterDto mob, Services.MapInstanceGenerationService.MapInstance mapInstance) { if (mapInstance.MapInstanceType != MapInstanceType.BaseMapInstance && mapInstance.MapInstanceType != MapInstanceType.TimeSpaceInstance) { return; } var goldAmount = RandomHelper.Instance.RandomNumber(6 * mob.Level, 12 * mob.Level); if (goldAmount <= 0) return; try { var goldItem = itemGenerationService.Create(GoldVNum, (short)System.Math.Min(goldAmount, short.MaxValue)); var dropped = mapItemGenerationService.Create(mapInstance, goldItem, victim.PositionX, victim.PositionY); await mapInstance.SendPacketAsync(dropped.GenerateDrop()); } catch (System.Exception ex) { logger.LogWarning(ex, "Failed to spawn gold drop from {Mob}", mob.NpcMonsterVNum); } } // HitList uses Arch Entity handles, so we walk the same world back to the owning // player bundle. AddExperienceAsync is an extension on PlayerComponentBundle (not // ICharacterEntity) because it dispatches through strongly-typed bundle getters/setters // for level / LevelXp / JobLevelXp / HeroLevelXp. private static bool TryFindPlayer(IAliveEntity victim, Entity handle, out PlayerComponentBundle player) { if (victim.MapInstance is not null) { var world = victim.MapInstance.EcsWorld; if (world.World.IsAlive(handle)) { var identity = world.TryGetComponent<Ecs.Components.EntityIdentityComponent>(handle); if (identity is { VisualType: Shared.Enumerations.VisualType.Player }) { player = new PlayerComponentBundle(handle, world); return true; } } } player = default; return false; } } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/SkillResolver.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Linq; using NosCore.Data.Enumerations.Battle; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.BattleService.Model; namespace NosCore.GameObject.Services.BattleService; // Characters index their skills by CastId (matches client packets). Non-player entities // pick from the catalog's NpcMonsterSkill table and fall back to BasicSkill when the // requested cast is not in their roster — this is also what "monster attacks something" // ends up calling with castId == 0. public sealed class SkillResolver : ISkillResolver { private readonly IReadOnlyDictionary<short, SkillDto> _skillsByVnum; private readonly INpcCombatCatalog _catalog; // Bootstrap registration path: gets the pre-loaded List<SkillDto> from the DI // container and indexes it here. Tests use the dictionary overload. public SkillResolver(List<SkillDto> skills, INpcCombatCatalog catalog) : this(skills.ToDictionary(s => s.SkillVNum, s => s), catalog) { } public SkillResolver(IReadOnlyDictionary<short, SkillDto> skillsByVnum, INpcCombatCatalog catalog) { _skillsByVnum = skillsByVnum; _catalog = catalog; } public SkillInfo? Resolve(IAliveEntity caster, long castId) { return caster switch { ICharacterEntity character => ResolveCharacter(character, castId), INonPlayableEntity npc => ResolveNpc(npc, castId), _ => null, }; } private SkillInfo? ResolveCharacter(ICharacterEntity character, long castId) { // The same skill family can have multiple upgrades; client sends the base CastId // and the server picks the highest-tier version the character owns. var match = character.Skills.Values .Where(s => s.Skill != null && s.Skill.CastId == castId && s.Skill.UpgradeSkill == 0) .FirstOrDefault(); if (match?.Skill == null) return null; var upgrade = character.Skills.Values .Select(s => s.Skill) .Where(s => s != null && s!.UpgradeSkill == match.Skill!.SkillVNum && s.Effect > 0 && s.SkillType == 2) .OrderBy(s => s!.SkillVNum) .FirstOrDefault(); return BuildInfo(match.Skill!, upgrade, castId); } private SkillInfo? ResolveNpc(INonPlayableEntity npc, long castId) { var mob = npc.NpcMonster; if (mob == null) return null; var resolvedSkill = ResolveNpcSkill(mob, castId); if (resolvedSkill != null) { return BuildInfo(resolvedSkill, null, castId); } // No skill in the catalog and no BasicSkill vnum — but the monster still // needs to hit. The overwhelming majority of low-level mobs fall here // (melee wolf, rat, etc.) so we synthesise a minimal basic-attack SkillInfo // from the monster's raw stats. Type/AttackClass match OpenNos Monster.AttackClass // semantics (0 melee, 1 ranged, 2 magic), Range/Cooldown come from the // NpcMonsterDto itself, and Damage comes from the min/max hit range via // CombatStats — not via skill BCards. return new SkillInfo( SkillVnum: 0, CastId: 0, Cooldown: mob.BasicCooldown, AttackAnimation: 0, CastEffect: 0, Effect: 0, Type: mob.AttackClass, HitType: TargetHitType.SingleTargetHit, Range: mob.BasicRange, TargetRange: mob.BasicArea, TargetType: 1, Element: mob.Element, Duration: 0, MpCost: 0, BCards: System.Array.Empty<BCardDto>()); } private SkillDto? ResolveNpcSkill(NpcMonsterDto mob, long castId) { // If the monster knows this skill vnum, use it; otherwise fall back to the // monster's default attack. The fall-through covers the extremely common // case where the AI just calls Resolve(mob, 0) to mean "basic attack". foreach (var sk in _catalog.GetSkills(mob.NpcMonsterVNum)) { if (_skillsByVnum.TryGetValue(sk.SkillVNum, out var s) && (s.CastId == castId || castId == 0)) { return s; } } if (mob.BasicSkill > 0 && _skillsByVnum.TryGetValue(mob.BasicSkill, out var basic)) { return basic; } return null; } private SkillInfo BuildInfo(SkillDto main, SkillDto? upgrade, long castId) { return new SkillInfo( SkillVnum: main.SkillVNum, CastId: castId, Cooldown: main.Cooldown, AttackAnimation: main.AttackAnimation, CastEffect: upgrade?.CastEffect ?? main.CastEffect, Effect: main.Effect, Type: main.Type, HitType: (TargetHitType)main.HitType, Range: main.Range, TargetRange: main.TargetRange, TargetType: main.TargetType, Element: main.Element, Duration: main.Duration, MpCost: main.MpCost, BCards: _catalog.GetSkillBCards(main.SkillVNum)); } } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/SkillResult.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.GameObject.Services.BattleService; public record SkillResult { public int SkillVnum { get; set; } public int SkillCooldown { get; set; } public int AttackAnimation { get; set; } public int SkillEffect { get; set; } public int SkillTypeMinusOne { get; set; } public long CastId { get; set; } } ================================================ FILE: src/NosCore.GameObject/Services/BattleService/TargetResolver.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.BattleService.Model; using NosCore.GameObject.Services.BroadcastService; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Services.BattleService; // Given a primary target, walks the map instance for everyone else the skill should also // damage. Single-target skills return exactly one entity; AOE skills walk monsters/NPCs // via MapInstance and players via ISessionRegistry (since players aren't in the ECS // query path yet). Allies are filtered by comparing VisualType between attacker and // candidate — cheap and avoids a factions/party lookup for v1. public sealed class TargetResolver(ISessionRegistry sessionRegistry) : ITargetResolver { public IReadOnlyList<IAliveEntity> Resolve(IAliveEntity attacker, IAliveEntity primaryTarget, SkillInfo skill) { if (!skill.IsAoe) { return new[] { primaryTarget }; } var results = new List<IAliveEntity>(capacity: 8) { primaryTarget }; var mapInstance = primaryTarget.MapInstance; if (mapInstance == null) { return results; } var range = skill.TargetRange; var cx = primaryTarget.PositionX; var cy = primaryTarget.PositionY; foreach (var monster in mapInstance.Monsters) { if (monster.VisualId == primaryTarget.VisualId && monster.VisualType == primaryTarget.VisualType) continue; if (!monster.IsAlive) continue; if (!IsEnemy(attacker, monster)) continue; if (WithinRange(cx, cy, monster.PositionX, monster.PositionY, range)) { results.Add(monster); } } // Player targets are only relevant when the attacker or allies are non-player // (e.g. a monster AOE hits several players), or in PvP contexts. In both cases // we enumerate players on the same map and filter out allies. foreach (var session in sessionRegistry.GetClientSessionsByMapInstance(mapInstance.MapInstanceId)) { if (!session.HasPlayerEntity) continue; var player = session.Character; if (player.VisualId == primaryTarget.VisualId && primaryTarget.VisualType == VisualType.Player) continue; if (player.VisualId == attacker.VisualId && attacker.VisualType == VisualType.Player) continue; if (!player.IsAlive) continue; if (!IsEnemy(attacker, player)) continue; if (WithinRange(cx, cy, player.PositionX, player.PositionY, range)) { results.Add(player); } } return results; } // "Enemy" for v1 is "different visual type" — a character AOE hurts monsters and // other characters (PvP), but a monster AOE only hurts characters and not other // monsters. Groups/party aliasing is a follow-up task. private static bool IsEnemy(IAliveEntity attacker, IAliveEntity candidate) { return (attacker.VisualType, candidate.VisualType) switch { (VisualType.Player, VisualType.Monster) => true, (VisualType.Player, VisualType.Player) => true, (VisualType.Monster, VisualType.Player) => true, (VisualType.Npc, VisualType.Player) => true, (VisualType.Npc, VisualType.Monster) => true, _ => false, }; } private static bool WithinRange(short cx, short cy, short x, short y, int range) { return Math.Abs(cx - x) <= range && Math.Abs(cy - y) <= range; } } ================================================ FILE: src/NosCore.GameObject/Services/BazaarService/BazaarRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.WebApi; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; namespace NosCore.GameObject.Services.BazaarService { public class BazaarRegistry : IBazaarRegistry { private readonly ConcurrentDictionary<long, BazaarLink> _bazaarItems; public BazaarRegistry(IDao<BazaarItemDto, long> bazaarItemDao, IDao<IItemInstanceDto?, Guid> itemInstanceDao, IDao<CharacterDto, long> characterDao) { var billist = bazaarItemDao.LoadAll().ToList(); var bzItemInstanceIds = billist.Select(o => o.ItemInstanceId).ToList(); var bzCharacterIds = billist.Select(o => o.SellerId).ToList(); var itemInstancelist = itemInstanceDao.Where(s => bzItemInstanceIds.Contains(s!.Id))?.ToList() ?? new List<IItemInstanceDto?>(); var characterList = characterDao.Where(s => bzCharacterIds.Contains(s.CharacterId))?.ToList() ?? new List<CharacterDto>(); _bazaarItems = new ConcurrentDictionary<long, BazaarLink>(billist.ToDictionary(x => x.BazaarItemId, x => new BazaarLink { ItemInstance = (ItemInstanceDto?)itemInstancelist.First(s => s!.Id == x.ItemInstanceId), BazaarItem = x, SellerName = characterList.First(s => s.CharacterId == x.SellerId).Name! })); } public IEnumerable<BazaarLink> GetAll() => _bazaarItems.Values; public BazaarLink? GetById(long bazaarItemId) => _bazaarItems.TryGetValue(bazaarItemId, out var link) ? link : null; public IEnumerable<BazaarLink> GetBySellerId(long sellerId) => _bazaarItems.Values.Where(s => s.BazaarItem?.SellerId == sellerId); public void Register(long bazaarItemId, BazaarLink bazaarLink) => _bazaarItems.TryAdd(bazaarItemId, bazaarLink); public bool Unregister(long bazaarItemId) => _bazaarItems.TryRemove(bazaarItemId, out _); public void Update(long bazaarItemId, BazaarLink bazaarLink) => _bazaarItems[bazaarItemId] = bazaarLink; public int CountBySellerId(long sellerId) => _bazaarItems.Values.Count(o => o.BazaarItem?.SellerId == sellerId); } } ================================================ FILE: src/NosCore.GameObject/Services/BazaarService/BazaarService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Json.More; using NodaTime; using NodaTime.Serialization.SystemTextJson; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Bazaar; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Items; using NosCore.Data.WebApi; using NosCore.Packets.Enumerations; using System; using System.Collections.Generic; using System.Linq; using System.Text.Json; using System.Threading.Tasks; namespace NosCore.GameObject.Services.BazaarService { public class BazaarService(IBazaarRegistry bazaarRegistry, IDao<BazaarItemDto, long> bazaarItemDao, IDao<IItemInstanceDto?, Guid> itemInstanceDao, IClock clock) : IBazaarService { public List<BazaarLink> GetBazaar(long id, byte? index, byte? pageSize, BazaarListType? typeFilter, byte? subTypeFilter, byte? levelFilter, byte? rareFilter, byte? upgradeFilter, long? sellerFilter) { var bzlist = new List<BazaarLink>(); #pragma warning disable CS0219 // Variable is assigned but its value is never used var applyRareFilter = false; var applyUpgradeFilter = false; var applySpLevelFilter = false; var applyLevelFilter = false; var applyClassFilter = false; PocketType? pocketType = null; ItemType? itemType = null; byte? subtypeFilter = null; #pragma warning restore CS0219 // Variable is assigned but its value is never used IEnumerable<BazaarLink> bzlinks; if (id != -1) { var item = bazaarRegistry.GetById(id); bzlinks = item != null ? new[] { item } : Enumerable.Empty<BazaarLink>(); } else { bzlinks = sellerFilter != null ? bazaarRegistry.GetBySellerId(sellerFilter.Value) : bazaarRegistry.GetAll(); } foreach (var bz in bzlinks) { switch (typeFilter) { case BazaarListType.Weapon: itemType = ItemType.Weapon; pocketType = PocketType.Equipment; applyClassFilter = true; applyLevelFilter = true; applyRareFilter = true; applyUpgradeFilter = true; break; case BazaarListType.Armor: itemType = ItemType.Armor; pocketType = PocketType.Equipment; applyClassFilter = true; applyLevelFilter = true; applyRareFilter = true; applyUpgradeFilter = true; break; case BazaarListType.Equipment: itemType = ItemType.Fashion; pocketType = PocketType.Equipment; if (subTypeFilter > 0) { var equipmentTypeFilter = (BazaarEquipmentType)subTypeFilter; } applyLevelFilter = true; break; case BazaarListType.Jewelery: itemType = ItemType.Jewelery; pocketType = PocketType.Equipment; if (subTypeFilter > 0) { var jeweleryTypeFilter = (BazaarJeweleryType)subTypeFilter; } applyLevelFilter = true; break; case BazaarListType.Specialist: case BazaarListType.Npc: case BazaarListType.Pet: pocketType = PocketType.Equipment; itemType = ItemType.Box; applySpLevelFilter = true; break; case BazaarListType.Shell: pocketType = PocketType.Equipment; itemType = ItemType.Shell; applySpLevelFilter = true; if (subTypeFilter > 0) { subtypeFilter = subTypeFilter++; applyRareFilter = true; } break; case BazaarListType.Main: pocketType = PocketType.Main; if (subTypeFilter > 0) { var mainTypeFilter = (BazaarMainType)subTypeFilter; } break; case BazaarListType.Usable: pocketType = PocketType.Etc; if (subTypeFilter > 0) { var bazaarTypeFilter = (BazaarUsableType)subTypeFilter; } break; case BazaarListType.Other: pocketType = PocketType.Equipment; itemType = ItemType.Box; break; case BazaarListType.Vehicle: itemType = ItemType.Box; break; } bzlist.Add(bz); } //todo this need to be move to the filter when done return bzlist.Skip(index ?? 0 * pageSize ?? 0).Take((byte)(pageSize ?? bzlist.Count)).ToList(); } public async Task<bool> DeleteBazaarAsync(long id, short count, string requestCharacterName, long? requestCharacterId = null) { var bzlink = bazaarRegistry.GetById(id); if (bzlink == null) { throw new ArgumentException(); } if ((bzlink.ItemInstance?.Amount - count < 0) || (count <= 0)) { return false; } if (bzlink.ItemInstance?.Amount == count) { await bazaarItemDao.TryDeleteAsync(bzlink.BazaarItem!.BazaarItemId); bazaarRegistry.Unregister(bzlink.BazaarItem.BazaarItemId); await itemInstanceDao.TryDeleteAsync(bzlink.ItemInstance.Id); } else { var item = (IItemInstanceDto)bzlink.ItemInstance!; item.Amount -= count; await itemInstanceDao.TryInsertOrUpdateAsync(item); if (item.Amount <= 0) { await bazaarItemDao.TryDeleteAsync(bzlink.BazaarItem!.BazaarItemId); bazaarRegistry.Unregister(bzlink.BazaarItem.BazaarItemId); await itemInstanceDao.TryDeleteAsync(item.Id); } } return true; } public async Task<LanguageKey> AddBazaarAsync(Guid itemInstanceId, long characterId, string? characterName, bool hasMedal, long price, bool isPackage, short duration, short amount) { var itemCount = bazaarRegistry.CountBySellerId(characterId); if (itemCount > 10 * (hasMedal ? 10 : 1) - 1) { return LanguageKey.LIMIT_EXCEEDED; } var item = await itemInstanceDao.FirstOrDefaultAsync(s => s!.Id == itemInstanceId).ConfigureAwait(true); if ((item == null) || (item.Amount < amount) || (amount < 0) || (price < 0)) { throw new ArgumentException(); } Guid itemId; if (item.Amount == amount) { itemId = item.Id; } else { itemId = item.Id; item.Amount -= amount; item = await itemInstanceDao.TryInsertOrUpdateAsync(item).ConfigureAwait(true); item!.Id = Guid.NewGuid(); } item = await itemInstanceDao.TryInsertOrUpdateAsync(item).ConfigureAwait(true); var bazaarItem = new BazaarItemDto { Amount = amount, DateStart = clock.GetCurrentInstant(), Duration = duration, IsPackage = isPackage, MedalUsed = hasMedal, Price = price, SellerId = characterId, ItemInstanceId = item!.Id }; bazaarItem = await bazaarItemDao.TryInsertOrUpdateAsync(bazaarItem).ConfigureAwait(true); bazaarRegistry.Register(bazaarItem.BazaarItemId, new BazaarLink { BazaarItem = bazaarItem, SellerName = characterName, ItemInstance = (ItemInstanceDto)item }); return LanguageKey.OBJECT_IN_BAZAAR; } public async Task<BazaarLink?> ModifyBazaarAsync(long id, Json.Patch.JsonPatch bzMod) { var item = bazaarRegistry.GetById(id); if ((item?.BazaarItem == null) || (item.BazaarItem?.Amount != item.ItemInstance?.Amount)) { return null; } var result = bzMod.Apply(JsonDocument.Parse(JsonSerializer.SerializeToUtf8Bytes(item, new JsonSerializerOptions().ConfigureForNodaTime(DateTimeZoneProviders.Tzdb))).RootElement.AsNode()); item = JsonSerializer.Deserialize<BazaarLink>(result.Result, new JsonSerializerOptions().ConfigureForNodaTime(DateTimeZoneProviders.Tzdb)); var bz = item!.BazaarItem!; await bazaarItemDao.TryInsertOrUpdateAsync(bz).ConfigureAwait(true); bazaarRegistry.Update(item.BazaarItem!.BazaarItemId, item); return item; } } } ================================================ FILE: src/NosCore.GameObject/Services/BazaarService/IBazaarRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.WebApi; using System.Collections.Generic; namespace NosCore.GameObject.Services.BazaarService { public interface IBazaarRegistry { IEnumerable<BazaarLink> GetAll(); BazaarLink? GetById(long bazaarItemId); IEnumerable<BazaarLink> GetBySellerId(long sellerId); void Register(long bazaarItemId, BazaarLink bazaarLink); bool Unregister(long bazaarItemId); void Update(long bazaarItemId, BazaarLink bazaarLink); int CountBySellerId(long sellerId); } } ================================================ FILE: src/NosCore.GameObject/Services/BazaarService/IBazaarService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.Packets.Enumerations; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.Services.BazaarService { public interface IBazaarService { List<BazaarLink> GetBazaar(long id, byte? index, byte? pageSize, BazaarListType? typeFilter, byte? subTypeFilter, byte? levelFilter, byte? rareFilter, byte? upgradeFilter, long? sellerFilter); Task<bool> DeleteBazaarAsync(long id, short count, string requestCharacterName, long? requestCharacterId = null); Task<LanguageKey> AddBazaarAsync(Guid itemInstanceId, long characterId, string? characterName, bool hasMedal, long price, bool isPackage, short duration, short amount); Task<BazaarLink?> ModifyBazaarAsync(long id, Json.Patch.JsonPatch bzMod); } } ================================================ FILE: src/NosCore.GameObject/Services/BlackListService/BlacklistService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Services.BlackListService { public class BlacklistService(IPubSubHub pubSubHub, IChannelHub channelHub, IDao<CharacterRelationDto, Guid> characterRelationDao, IDao<CharacterDto, long> characterDao) : IBlacklistService { public async Task<LanguageKey> BlacklistPlayerAsync(long characterId, long secondCharacterId) { var servers = await channelHub.GetCommunicationChannels(); var accounts = await pubSubHub.GetSubscribersAsync(); var character = accounts.FirstOrDefault(s => s.ConnectedCharacter?.Id == characterId && servers.Where(c => c.Type == ServerType.WorldServer).Any(x => x.Id == s.ChannelId)); var targetCharacter = accounts.FirstOrDefault(s => s.ConnectedCharacter?.Id == secondCharacterId && servers.Where(c => c.Type == ServerType.WorldServer).Any(x => x.Id == s.ChannelId)); if ((character == null) || (targetCharacter == null)) { throw new ArgumentException(); } var relations = characterRelationDao.Where(s => s.CharacterId == characterId)? .ToList() ?? new List<CharacterRelationDto>(); if (relations.Any(s => (s.RelatedCharacterId == secondCharacterId) && (s.RelationType != CharacterRelationType.Blocked))) { return LanguageKey.CANT_BLOCK_FRIEND; } if (relations.Any(s => (s.RelatedCharacterId == secondCharacterId) && (s.RelationType == CharacterRelationType.Blocked))) { return LanguageKey.ALREADY_BLACKLISTED; } var data = new CharacterRelationDto { CharacterId = character.ConnectedCharacter!.Id, RelatedCharacterId = targetCharacter.ConnectedCharacter!.Id, RelationType = CharacterRelationType.Blocked }; await characterRelationDao.TryInsertOrUpdateAsync(data); return LanguageKey.BLACKLIST_ADDED; } public async Task<List<CharacterRelationStatus>> GetBlacklistedListAsync(long id) { var charList = new List<CharacterRelationStatus>(); var list = characterRelationDao .Where(s => (s.CharacterId == id) && (s.RelationType == CharacterRelationType.Blocked)); if (list == null) { return charList; } foreach (var rel in list) { var servers = await channelHub.GetCommunicationChannels(); var accounts = await pubSubHub.GetSubscribersAsync(); var character = accounts.FirstOrDefault(s => s.ConnectedCharacter?.Id == rel.RelatedCharacterId && servers.Where(c => c.Type == ServerType.WorldServer).Any(x => x.Id == s.ChannelId)); charList.Add(new CharacterRelationStatus { CharacterName = (await characterDao.FirstOrDefaultAsync(s => s.CharacterId == rel.RelatedCharacterId))?.Name ?? "", CharacterId = rel.RelatedCharacterId, IsConnected = character != null, RelationType = rel.RelationType, CharacterRelationId = rel.CharacterRelationId }); } return charList; } public async Task<bool> UnblacklistAsync(Guid id) { var rel = await characterRelationDao.FirstOrDefaultAsync(s => (s.CharacterRelationId == id) && (s.RelationType == CharacterRelationType.Blocked)); if (rel == null) { return false; } await characterRelationDao.TryDeleteAsync(rel.CharacterRelationId); return true; } } } ================================================ FILE: src/NosCore.GameObject/Services/BlackListService/IBlacklistService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.Services.BlackListService { public interface IBlacklistService { Task<LanguageKey> BlacklistPlayerAsync(long characterId, long secondCharacterId); Task<List<CharacterRelationStatus>> GetBlacklistedListAsync(long id); Task<bool> UnblacklistAsync(Guid id); } } ================================================ FILE: src/NosCore.GameObject/Services/BroadcastService/IPacketBroadcaster.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Interfaces; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.Services.BroadcastService { public interface IPacketBroadcaster { Task SendToAsync(IPacketTarget target, IPacket packet); Task SendToAsync(IPacketTarget target, IEnumerable<IPacket> packets); } } ================================================ FILE: src/NosCore.GameObject/Services/BroadcastService/IPacketSender.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Interfaces; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.Services.BroadcastService { public interface IPacketSender { Task SendPacketAsync(IPacket? packet); Task SendPacketsAsync(IEnumerable<IPacket?> packets); } } ================================================ FILE: src/NosCore.GameObject/Services/BroadcastService/IPacketTarget.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; namespace NosCore.GameObject.Services.BroadcastService { public interface IPacketTarget { } public record SessionTarget(string ChannelId) : IPacketTarget; public record CharacterTarget(long CharacterId) : IPacketTarget; public record MapTarget(Guid MapInstanceId, Func<long, bool>? ExcludeFilter = null) : IPacketTarget; public record GroupTarget(long GroupId) : IPacketTarget; public record EveryoneTarget(Func<long, bool>? ExcludeFilter = null) : IPacketTarget; public static class Targets { public static SessionTarget Session(string channelId) => new(channelId); public static CharacterTarget Character(long characterId) => new(characterId); public static MapTarget Map(Guid mapInstanceId, Func<long, bool>? excludeFilter = null) => new(mapInstanceId, excludeFilter); public static MapTarget MapExcept(Guid mapInstanceId, long excludeCharacterId) => new(mapInstanceId, id => id == excludeCharacterId); public static GroupTarget Group(long groupId) => new(groupId); public static EveryoneTarget Everyone(Func<long, bool>? excludeFilter = null) => new(excludeFilter); } } ================================================ FILE: src/NosCore.GameObject/Services/BroadcastService/ISessionRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.WebApi; using NosCore.GameObject.Ecs; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.Interfaces; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.Services.BroadcastService { public interface ISessionRegistry { void Register(SessionInfo sessionInfo); void Unregister(string channelId); void UpdateCharacter(string channelId, long characterId, Guid? mapInstanceId); IPacketSender? GetSenderByChannelId(string channelId); IPacketSender? GetSenderByCharacterId(long characterId); ClientSession? GetSessionByCharacterId(long characterId); ClientSession? GetSession(Func<ClientSession, bool> predicate); IEnumerable<ClientSession> GetSessions(Func<ClientSession, bool>? predicate = null); IEnumerable<SessionInfo> GetSessionsByMapInstance(Guid mapInstanceId); IEnumerable<SessionInfo> GetSessionsByGroup(long groupId); IEnumerable<SessionInfo> GetAllSessions(); IEnumerable<ClientSession> GetClientSessionsByMapInstance(Guid mapInstanceId); PlayerComponentBundle GetCharacter(Func<PlayerComponentBundle, bool> predicate); bool TryGetCharacter(Func<PlayerComponentBundle, bool> predicate, out PlayerComponentBundle character); IEnumerable<PlayerComponentBundle> GetCharacters(Func<PlayerComponentBundle, bool>? predicate = null); Task BroadcastPacketAsync(IPacket packet); Task BroadcastPacketAsync(IPacket packet, string excludeChannelId); Task DisconnectByCharacterIdAsync(long characterId); List<Subscriber> GetConnectedAccounts(); } public class SessionInfo { public required string ChannelId { get; init; } public required long SessionId { get; init; } public required IPacketSender Sender { get; init; } public required string AccountName { get; init; } public required Func<Task> Disconnect { get; init; } public long? CharacterId { get; set; } public Guid? MapInstanceId { get; set; } public long? GroupId { get; set; } } } ================================================ FILE: src/NosCore.GameObject/Services/BroadcastService/PacketBroadcaster.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.Interfaces; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Services.BroadcastService { public class PacketBroadcaster(ISessionRegistry sessionRegistry) : IPacketBroadcaster { public async Task SendToAsync(IPacketTarget target, IPacket packet) { await SendToAsync(target, new[] { packet }); } public async Task SendToAsync(IPacketTarget target, IEnumerable<IPacket> packets) { var packetList = packets.ToList(); var sessions = GetTargetSessions(target); var tasks = sessions.Select(s => s.Sender.SendPacketsAsync(packetList)); await Task.WhenAll(tasks); } private IEnumerable<SessionInfo> GetTargetSessions(IPacketTarget target) { return target switch { SessionTarget sessionTarget => GetSessionByChannelId(sessionTarget.ChannelId), CharacterTarget characterTarget => GetSessionByCharacterId(characterTarget.CharacterId), MapTarget mapTarget => FilterSessions(sessionRegistry.GetSessionsByMapInstance(mapTarget.MapInstanceId), mapTarget.ExcludeFilter), GroupTarget groupTarget => sessionRegistry.GetSessionsByGroup(groupTarget.GroupId), EveryoneTarget everyoneTarget => FilterSessions(sessionRegistry.GetAllSessions(), everyoneTarget.ExcludeFilter), _ => Enumerable.Empty<SessionInfo>() }; } private IEnumerable<SessionInfo> GetSessionByChannelId(string channelId) { var sender = sessionRegistry.GetSenderByChannelId(channelId); if (sender != null) { var session = sessionRegistry.GetAllSessions().FirstOrDefault(s => s.ChannelId == channelId); if (session != null) { yield return session; } } } private IEnumerable<SessionInfo> GetSessionByCharacterId(long characterId) { var session = sessionRegistry.GetAllSessions().FirstOrDefault(s => s.CharacterId == characterId); if (session != null) { yield return session; } } private static IEnumerable<SessionInfo> FilterSessions(IEnumerable<SessionInfo> sessions, System.Func<long, bool>? excludeFilter) { if (excludeFilter == null) { return sessions; } return sessions.Where(s => !s.CharacterId.HasValue || !excludeFilter(s.CharacterId.Value)); } } } ================================================ FILE: src/NosCore.GameObject/Services/BroadcastService/SessionRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.WebApi; using NosCore.GameObject.Ecs; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.Interfaces; using Microsoft.Extensions.Logging; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Services.BroadcastService { public class SessionRegistry(ILogger<SessionRegistry> logger) : ISessionRegistry { private readonly ConcurrentDictionary<string, SessionInfo> _sessionsByChannelId = new(); private readonly ConcurrentDictionary<long, string> _channelIdByCharacterId = new(); public void Register(SessionInfo sessionInfo) { _sessionsByChannelId[sessionInfo.ChannelId] = sessionInfo; } public void Unregister(string channelId) { if (_sessionsByChannelId.TryRemove(channelId, out var session) && session.CharacterId.HasValue) { _channelIdByCharacterId.TryRemove(session.CharacterId.Value, out _); } } public void UpdateCharacter(string channelId, long characterId, Guid? mapInstanceId) { if (_sessionsByChannelId.TryGetValue(channelId, out var session)) { if (session.CharacterId.HasValue && session.CharacterId.Value != characterId) { _channelIdByCharacterId.TryRemove(session.CharacterId.Value, out _); } session.CharacterId = characterId; session.MapInstanceId = mapInstanceId; _channelIdByCharacterId[characterId] = channelId; } } public IPacketSender? GetSenderByChannelId(string channelId) { return _sessionsByChannelId.TryGetValue(channelId, out var session) ? session.Sender : null; } public IPacketSender? GetSenderByCharacterId(long characterId) { if (_channelIdByCharacterId.TryGetValue(characterId, out var channelId)) { return GetSenderByChannelId(channelId); } return null; } public ClientSession? GetSessionByCharacterId(long characterId) { if (_channelIdByCharacterId.TryGetValue(characterId, out var channelId) && _sessionsByChannelId.TryGetValue(channelId, out var session)) { return session.Sender as ClientSession; } return null; } public ClientSession? GetSession(Func<ClientSession, bool> predicate) { return _sessionsByChannelId.Values .Select(s => s.Sender as ClientSession) .Where(s => s?.HasSelectedCharacter == true) .FirstOrDefault(s => s != null && predicate(s)); } public IEnumerable<ClientSession> GetSessions(Func<ClientSession, bool>? predicate = null) { var sessions = _sessionsByChannelId.Values .Select(s => s.Sender as ClientSession) .Where(s => s?.HasSelectedCharacter == true) .Cast<ClientSession>(); return predicate == null ? sessions : sessions.Where(predicate); } public IEnumerable<SessionInfo> GetSessionsByMapInstance(Guid mapInstanceId) { return _sessionsByChannelId.Values.Where(s => s.MapInstanceId == mapInstanceId); } public IEnumerable<ClientSession> GetClientSessionsByMapInstance(Guid mapInstanceId) { return _sessionsByChannelId.Values .Where(s => s.MapInstanceId == mapInstanceId) .Select(s => s.Sender as ClientSession) .Where(s => s?.HasPlayerEntity == true) .Cast<ClientSession>(); } public PlayerComponentBundle GetCharacter(Func<PlayerComponentBundle, bool> predicate) { if (TryGetCharacter(predicate, out var character)) { return character; } throw new InvalidOperationException("Character not found"); } public bool TryGetCharacter(Func<PlayerComponentBundle, bool> predicate, out PlayerComponentBundle character) { foreach (var session in _sessionsByChannelId.Values) { if (session.Sender is ClientSession clientSession && clientSession.HasPlayerEntity) { var c = clientSession.Character; if (predicate(c)) { character = c; return true; } } } character = default; return false; } public IEnumerable<PlayerComponentBundle> GetCharacters(Func<PlayerComponentBundle, bool>? predicate = null) { var characters = _sessionsByChannelId.Values .Select(s => s.Sender as ClientSession) .Where(s => s?.HasPlayerEntity == true) .Select(s => s!.Character); return predicate == null ? characters : characters.Where(predicate); } public IEnumerable<SessionInfo> GetSessionsByGroup(long groupId) { return _sessionsByChannelId.Values.Where(s => s.GroupId == groupId); } public IEnumerable<SessionInfo> GetAllSessions() { return _sessionsByChannelId.Values; } public async Task BroadcastPacketAsync(IPacket packet) { var tasks = _sessionsByChannelId.Values.Select(async s => { try { await s.Sender.SendPacketAsync(packet); } catch (Exception ex) { logger.LogWarning(ex, "Broadcast to {ChannelId} failed", s.ChannelId); } }); await Task.WhenAll(tasks); } public async Task BroadcastPacketAsync(IPacket packet, string excludeChannelId) { var tasks = _sessionsByChannelId.Values .Where(s => s.ChannelId != excludeChannelId) .Select(async s => { try { await s.Sender.SendPacketAsync(packet); } catch (Exception ex) { logger.LogWarning(ex, "Broadcast to {ChannelId} failed", s.ChannelId); } }); await Task.WhenAll(tasks); } public async Task DisconnectByCharacterIdAsync(long characterId) { if (_channelIdByCharacterId.TryGetValue(characterId, out var channelId) && _sessionsByChannelId.TryGetValue(channelId, out var session)) { await session.Disconnect(); } } public List<Subscriber> GetConnectedAccounts() { return _sessionsByChannelId.Values.Select(s => { var clientSession = s.Sender as ClientSession; return new Subscriber { Name = s.AccountName, ConnectedCharacter = clientSession?.HasSelectedCharacter == true ? new Data.WebApi.Character { Name = clientSession.Character.Name, Id = clientSession.Character.CharacterId, FriendRequestBlocked = clientSession.Character.FriendRequestBlocked } : null }; }).ToList(); } } } ================================================ FILE: src/NosCore.GameObject/Services/ChannelCommunicationService/ChannelCommunicationRunner.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using JetBrains.Annotations; using Microsoft.Extensions.Hosting; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Services.ChannelCommunicationService.Handlers; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; using IMessage = NosCore.GameObject.InterChannelCommunication.Messages.IMessage; namespace NosCore.GameObject.Services.ChannelCommunicationService { [UsedImplicitly] public class ChannelCommunicationRunner : IHostedService { private readonly IPubSubHubClient _pubSubHubClient; private readonly Dictionary<Type, IChannelCommunicationMessageHandler<IMessage>> _handlers; private readonly ILogger<ChannelCommunicationRunner> _logger; private readonly ILogLanguageLocalizer<LogLanguageKey> _logLanguage; public ChannelCommunicationRunner( IPubSubHubClient pubSubHubClient, IEnumerable<IChannelCommunicationMessageHandler<IMessage>> handlers, ILogger<ChannelCommunicationRunner> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { _pubSubHubClient = pubSubHubClient; _logger = logger; _logLanguage = logLanguage; _handlers = handlers.ToDictionary( x => x.GetType().BaseType?.GetGenericArguments().Single() ?? throw new InvalidOperationException(), x => x); _pubSubHubClient.OnMessageReceived += OnMessageReceived; } private void OnMessageReceived(IMessage message) { _ = Task.Run(async () => { try { if (_handlers.TryGetValue(message.GetType(), out var handler)) { await handler.Handle(message); } else { _logger.LogWarning(_logLanguage[LogLanguageKey.UNKWNOWN_RECEIVERTYPE]); } } catch (Exception ex) { _logger.LogError(ex, _logLanguage[LogLanguageKey.PACKET_HANDLING_ERROR]); } }); } public async Task StartAsync(CancellationToken cancellationToken) { await _pubSubHubClient.StartAsync(); } public async Task StopAsync(CancellationToken cancellationToken) { _pubSubHubClient.OnMessageReceived -= OnMessageReceived; await _pubSubHubClient.StopAsync(); } } } ================================================ FILE: src/NosCore.GameObject/Services/ChannelCommunicationService/Handlers/DeleteMailDataMessageChannelCommunicationMessageHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.ServerPackets.Parcel; using System.Threading.Tasks; using DeleteMailData = NosCore.GameObject.InterChannelCommunication.Messages.DeleteMailData; namespace NosCore.GameObject.Services.ChannelCommunicationService.Handlers { public class DeleteMailDataMessageChannelCommunicationMessageHandler(ISessionRegistry sessionRegistry) : ChannelCommunicationMessageHandler<DeleteMailData> { public override async Task Handle(DeleteMailData data) { var session = sessionRegistry.GetSession(s => s.Character.VisualId == data.CharacterId); if (session == null) { return; } await session.SendPacketAsync(new PostPacket { Type = 2, PostType = data.PostType, Id = data.MailId }); } } } ================================================ FILE: src/NosCore.GameObject/Services/ChannelCommunicationService/Handlers/DisconnectDataMessageChannelCommunicationMessageHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.BroadcastService; using System.Threading.Tasks; using DisconnectData = NosCore.GameObject.InterChannelCommunication.Messages.DisconnectData; namespace NosCore.GameObject.Services.ChannelCommunicationService.Handlers { public class DisconnectDataMessageChannelCommunicationMessageHandler(ISessionRegistry sessionRegistry) : ChannelCommunicationMessageHandler<DisconnectData> { public override async Task Handle(DisconnectData data) { var session = sessionRegistry.GetSessionByCharacterId(data.CharacterId); if (session == null) { return; } await sessionRegistry.DisconnectByCharacterIdAsync(data.CharacterId); } } } ================================================ FILE: src/NosCore.GameObject/Services/ChannelCommunicationService/Handlers/IChannelCommunicationMessageHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using IMessage = NosCore.GameObject.InterChannelCommunication.Messages.IMessage; namespace NosCore.GameObject.Services.ChannelCommunicationService.Handlers; public interface IChannelCommunicationMessageHandler<in T> where T : IMessage { Task Handle(T message); } public abstract class ChannelCommunicationMessageHandler<T> : IChannelCommunicationMessageHandler<IMessage> where T : IMessage { public abstract Task Handle(T message); public Task Handle(IMessage message) { return Handle((T)message); } } ================================================ FILE: src/NosCore.GameObject/Services/ChannelCommunicationService/Handlers/MailDataMessageChannelCommunicationMessageHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Core.I18N; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.Enumerations; using System.Threading.Tasks; using MailData = NosCore.GameObject.InterChannelCommunication.Messages.MailData; namespace NosCore.GameObject.Services.ChannelCommunicationService.Handlers { public class MailDataMessageChannelCommunicationMessageHandler(IGameLanguageLocalizer gameLanguageLocalizer, ISessionRegistry sessionRegistry) : ChannelCommunicationMessageHandler<MailData> { public override async Task Handle(MailData data) { var session = sessionRegistry.GetSession(s => s.Character.Name == data.ReceiverName); if (session == null) { return; } var character = session.Character; if (data.ItemInstance != null) { await session.SendPacketAsync(character.GenerateSay( string.Format(gameLanguageLocalizer[LanguageKey.ITEM_GIFTED, character.AccountLanguage], data.ItemInstance.Amount), SayColorType.Green)); } await session.GenerateMailAsync(new[] { data }); } } } ================================================ FILE: src/NosCore.GameObject/Services/ChannelCommunicationService/Handlers/PostedPacketMessageChannelCommunicationMessageHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Interaction; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.Interfaces; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Threading.Tasks; using PostedPacket = NosCore.GameObject.InterChannelCommunication.Messages.PostedPacket; namespace NosCore.GameObject.Services.ChannelCommunicationService.Handlers { public class PostedPacketMessageChannelCommunicationMessageHandler(ILogger<PostedPacketMessageChannelCommunicationMessageHandler> logger, IDeserializer deserializer, ILogLanguageLocalizer<LogLanguageKey> logLanguage, ISessionRegistry sessionRegistry) : ChannelCommunicationMessageHandler<PostedPacket> { public override async Task Handle(PostedPacket postedPacket) { var message = deserializer.Deserialize(postedPacket.Packet!); switch (postedPacket.ReceiverType) { case ReceiverType.All: await sessionRegistry.BroadcastPacketAsync(message); break; case ReceiverType.OnlySomeone: ClientSession? receiverSession; if (postedPacket.ReceiverCharacter!.Name != null) { receiverSession = sessionRegistry.GetSession(s => s.Character.Name == postedPacket.ReceiverCharacter.Name); } else { receiverSession = sessionRegistry.GetSession(s => s.Character.VisualId == postedPacket.ReceiverCharacter.Id); } if (receiverSession == null) { return; } await receiverSession.SendPacketAsync(message); break; default: logger.LogError(logLanguage[LogLanguageKey.UNKWNOWN_RECEIVERTYPE]); break; } } } } ================================================ FILE: src/NosCore.GameObject/Services/ChannelCommunicationService/Handlers/StatDataMessageChannelCommunicationMessageHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Core.Configuration; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Player; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Linq; using System.Threading.Tasks; using StatData = NosCore.GameObject.InterChannelCommunication.Messages.StatData; namespace NosCore.GameObject.Services.ChannelCommunicationService.Handlers { public class StatDataMessageChannelCommunicationMessageHandler(ILogger<StatDataMessageChannelCommunicationMessageHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage, IOptions<WorldConfiguration> worldConfiguration, ISessionRegistry sessionRegistry, IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService) : ChannelCommunicationMessageHandler<StatData> { public override async Task Handle(StatData data) { var session = sessionRegistry.GetSession(s => s.Character.Name == data.Character?.Name); if (session == null) { return; } switch (data.ActionType) { case UpdateStatActionType.UpdateLevel: { var character = session.Character; character.Level = (byte)data.Data; } break; case UpdateStatActionType.UpdateJobLevel: { var character = session.Character; var jobLevel = (byte)data.Data; character.JobLevel = (byte)((character.Class == CharacterClassType.Adventurer) && (jobLevel > 20) ? 20 : jobLevel); character.JobLevelXp = 0; var levPacket = session.Character.GenerateLev(experienceService, jobExperienceService, heroExperienceService); await session.SendPacketAsync(levPacket); await session.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.JobLevelIncreased }); } break; case UpdateStatActionType.UpdateHeroLevel: { var character = session.Character; character.HeroLevel = (byte)data.Data; character.HeroLevelXp = 0; IPacket statPacket = session.Character.GenerateStat(); IPacket statInfoPacket = session.Character.GenerateStatInfo(); IPacket levPacket = session.Character.GenerateLev(experienceService, jobExperienceService, heroExperienceService); await session.SendPacketAsync(statPacket); await session.SendPacketAsync(statInfoPacket); await session.SendPacketAsync(levPacket); await session.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.HeroLevelIncreased }); } break; case UpdateStatActionType.UpdateReputation: { var character = session.Character; character.Reputation = data.Data; var fdPacket = session.Character.GenerateFd(); await session.SendPacketAsync(fdPacket); } break; case UpdateStatActionType.UpdateGold: { var character = session.Character; if (character.Gold + data.Data > worldConfiguration.Value.MaxGoldAmount) { return; } character.Gold = data.Data; var goldPacket = session.Character.GenerateGold(); await session.SendPacketAsync(goldPacket); } break; case UpdateStatActionType.UpdateClass: { var character = session.Character; var classType = (CharacterClassType)data.Data; if (character.InventoryService.Any(s => s.Value.Type == NoscorePocketType.Wear)) { var characterId = session.Character.CharacterId; await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = characterId, Type = SayColorType.Yellow, Message = Game18NConstString.RemoveEquipment }); return; } character.JobLevel = 1; character.JobLevelXp = 0; await session.SendPacketAsync(new NpInfoPacket()); await session.SendPacketAsync(new PclearPacket()); character = session.Character; if (classType == CharacterClassType.Adventurer) { character.HairStyle = character.HairStyle > HairStyleType.HairStyleB ? 0 : character.HairStyle; } character.Class = classType; character.Hp = character.MaxHp; character.Mp = character.MaxMp; IPacket statPacket = session.Character.GenerateStat(); IPacket levPacket = session.Character.GenerateLev(experienceService, jobExperienceService, heroExperienceService); await session.SendPacketAsync(statPacket); await session.SendPacketAsync(levPacket); await session.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.ClassChanged }); } break; default: logger.LogError(logLanguage[LogLanguageKey.UNKWNOWN_RECEIVERTYPE]); break; } } } } ================================================ FILE: src/NosCore.GameObject/Services/ChannelService/ChannelService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.Services.SaveService; using NosCore.Packets.ServerPackets.Login; using NosCore.Shared.Enumerations; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Services.ChannelService { public class ChannelService(IAuthHub authHttpClient, IChannelHub channelHttpClient, ISaveService saveService) : IChannelService { public async Task MoveChannelAsync(Networking.ClientSession.ClientSession clientSession, int channelId) { var servers = await channelHttpClient.GetCommunicationChannels(); var server = servers.FirstOrDefault(x => x.Id == channelId); if (server == null || server.Type != ServerType.WorldServer) { return; } await clientSession.SendPacketAsync(new MzPacket(server.DisplayHost ?? server.Host) { Port = server.DisplayPort ?? server.Port, CharacterSlot = clientSession.Character.Slot }); await clientSession.SendPacketAsync(new ItPacket { Mode = 1 }); await authHttpClient.SetAwaitingConnectionAsync(-1, clientSession.Account.Name); await saveService.SaveAsync(clientSession); await clientSession.DisconnectAsync(); } } } ================================================ FILE: src/NosCore.GameObject/Services/ChannelService/IChannelService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; namespace NosCore.GameObject.Services.ChannelService { public interface IChannelService { Task MoveChannelAsync(Networking.ClientSession.ClientSession clientSession, int channelId); } } ================================================ FILE: src/NosCore.GameObject/Services/CharacterService/CharacterInitializationService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs; using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.GameObject.Services.MinilandService; using System.Threading.Tasks; namespace NosCore.GameObject.Services.CharacterService { public class CharacterInitializationService : ICharacterInitializationService { private readonly IMinilandService? _minilandService; private readonly IMapInstanceGeneratorService? _mapInstanceGeneratorService; public CharacterInitializationService( IMinilandService? minilandService = null, IMapInstanceGeneratorService? mapInstanceGeneratorService = null) { _minilandService = minilandService; _mapInstanceGeneratorService = mapInstanceGeneratorService; } public Task InitializeAsync(PlayerComponentBundle player) { if (_minilandService != null && _mapInstanceGeneratorService != null) { return _minilandService.InitializeAsync(player, _mapInstanceGeneratorService); } return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.GameObject/Services/CharacterService/ICharacterInitializationService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs; using System.Threading.Tasks; namespace NosCore.GameObject.Services.CharacterService { public interface ICharacterInitializationService { Task InitializeAsync(PlayerComponentBundle player); } } ================================================ FILE: src/NosCore.GameObject/Services/ExchangeService/ExchangeData.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.InventoryService; using System.Collections.Concurrent; namespace NosCore.GameObject.Services.ExchangeService { public class ExchangeData { public ConcurrentDictionary<InventoryItemInstance, short> ExchangeItems { get; set; } = new(); public long Gold { get; set; } public long BankGold { get; set; } public bool ExchangeConfirmed { get; set; } } } ================================================ FILE: src/NosCore.GameObject/Services/ExchangeService/ExchangeRequestRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Concurrent; using System.Collections.Generic; namespace NosCore.GameObject.Services.ExchangeService { public class ExchangeRequestRegistry : IExchangeRequestRegistry { private readonly ConcurrentDictionary<long, ExchangeData> _exchangeDatas = new(); private readonly ConcurrentDictionary<long, long> _initiatorToTarget = new(); private readonly ConcurrentDictionary<long, long> _targetToInitiator = new(); public ExchangeData? GetExchangeData(long characterId) => _exchangeDatas.TryGetValue(characterId, out var data) ? data : null; public void SetExchangeData(long characterId, ExchangeData data) => _exchangeDatas[characterId] = data; public bool RemoveExchangeData(long characterId) => _exchangeDatas.TryRemove(characterId, out _); public long? GetExchangeRequest(long characterId) => _initiatorToTarget.TryGetValue(characterId, out var targetId) ? targetId : null; public KeyValuePair<long, long>? GetExchangeRequestPair(long characterId) { if (_initiatorToTarget.TryGetValue(characterId, out var target)) { return new KeyValuePair<long, long>(characterId, target); } if (_targetToInitiator.TryGetValue(characterId, out var initiator)) { return new KeyValuePair<long, long>(initiator, characterId); } return null; } public void SetExchangeRequest(long characterId, long targetCharacterId) { _initiatorToTarget[characterId] = targetCharacterId; _targetToInitiator[targetCharacterId] = characterId; } public bool RemoveExchangeRequest(long characterId) { if (_initiatorToTarget.TryRemove(characterId, out var target)) { _targetToInitiator.TryRemove(target, out _); return true; } if (_targetToInitiator.TryRemove(characterId, out var initiator)) { _initiatorToTarget.TryRemove(initiator, out _); return true; } return false; } public bool HasExchange(long characterId) => _initiatorToTarget.ContainsKey(characterId) || _targetToInitiator.ContainsKey(characterId); } } ================================================ FILE: src/NosCore.GameObject/Services/ExchangeService/ExchangeService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Core.I18N; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Exchanges; using NosCore.Packets.ServerPackets.Inventory; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; namespace NosCore.GameObject.Services.ExchangeService { public class ExchangeService(IItemGenerationService itemBuilderService, IOptions<WorldConfiguration> worldConfiguration, ILogger<ExchangeService> logger, IExchangeRequestRegistry exchangeRegistry, ILogLanguageLocalizer<LogLanguageKey> logLanguage, IGameLanguageLocalizer gameLanguageLocalizer) : IExchangeService { public void SetGold(long visualId, long gold, long bankGold) { var data = exchangeRegistry.GetExchangeData(visualId); if (data != null) { data.Gold = gold; data.BankGold = bankGold; } } public Tuple<ExchangeResultType, Dictionary<long, IPacket>?> ValidateExchange(ClientSession session, ICharacterEntity targetSession) { var exchangeInfo = GetData(session.Character.CharacterId); var targetInfo = GetData(targetSession.VisualId); var dictionary = new Dictionary<long, IPacket>(); if (exchangeInfo.Gold + targetSession.Gold > worldConfiguration.Value.MaxGoldAmount) { dictionary.Add(targetSession.VisualId, new InfoiPacket { Message = Game18NConstString.FullInventory }); } if (targetInfo.Gold + session.Character.Gold > worldConfiguration.Value.MaxGoldAmount) { dictionary.Add(targetSession.VisualId, new InfoiPacket { Message = Game18NConstString.MaxGoldReached }); return new Tuple<ExchangeResultType, Dictionary<long, IPacket>?>(ExchangeResultType.Failure, dictionary); } if (exchangeInfo.BankGold + targetSession.BankGold > worldConfiguration.Value.MaxBankGoldAmount) { dictionary.Add(targetSession.VisualId, new InfoPacket { Message = gameLanguageLocalizer[LanguageKey.BANK_FULL, session.Account.Language] }); return new Tuple<ExchangeResultType, Dictionary<long, IPacket>?>(ExchangeResultType.Failure, dictionary); } if (targetInfo.BankGold + session.Account.BankMoney > worldConfiguration.Value.MaxBankGoldAmount) { dictionary.Add(session.Character.CharacterId, new InfoPacket { Message = gameLanguageLocalizer[LanguageKey.BANK_FULL, session.Account.Language] }); return new Tuple<ExchangeResultType, Dictionary<long, IPacket>?>(ExchangeResultType.Failure, dictionary); } if (exchangeInfo.ExchangeItems.Keys.Any(s => !s.ItemInstance.Item.IsTradable)) { dictionary.Add(session.Character.CharacterId, new InfoiPacket { Message = Game18NConstString.ItemCanNotBeSold }); return new Tuple<ExchangeResultType, Dictionary<long, IPacket>?>(ExchangeResultType.Failure, dictionary); } var targetFirstItem = targetInfo.ExchangeItems.Keys.FirstOrDefault(); var exchangeFirstItem = exchangeInfo.ExchangeItems.Keys.FirstOrDefault(); var targetHasItems = targetFirstItem != null; var exchangeHasItems = exchangeFirstItem != null; var targetEnoughPlace = !targetHasItems || session.Character.InventoryService.EnoughPlace( targetInfo.ExchangeItems.Keys.Select(s => s.ItemInstance).ToList(), targetFirstItem!.Type); var exchangeEnoughPlace = !exchangeHasItems || targetSession.InventoryService.EnoughPlace( exchangeInfo.ExchangeItems.Keys.Select(s => s.ItemInstance).ToList(), exchangeFirstItem!.Type); if (targetEnoughPlace && exchangeEnoughPlace) { return new Tuple<ExchangeResultType, Dictionary<long, IPacket>?>(ExchangeResultType.Success, null); } dictionary.Add(session.Character.CharacterId, new InfoiPacket { Message = Game18NConstString.FullInventory }); dictionary.Add(targetSession.VisualId, new InfoiPacket { Message = Game18NConstString.FullInventory }); return new Tuple<ExchangeResultType, Dictionary<long, IPacket>?>(ExchangeResultType.Failure, dictionary); } public void ConfirmExchange(long visualId) { var data = exchangeRegistry.GetExchangeData(visualId); if (data != null) { data.ExchangeConfirmed = true; } } public bool IsExchangeConfirmed(long visualId) { return exchangeRegistry.GetExchangeData(visualId)?.ExchangeConfirmed ?? false; } public ExchangeData GetData(long visualId) { return exchangeRegistry.GetExchangeData(visualId) ?? new ExchangeData(); } public void AddItems(long visualId, InventoryItemInstance item, short amount) { var request = exchangeRegistry.GetExchangeRequest(visualId); if (request == null) { logger.LogError(logLanguage[LogLanguageKey.INVALID_EXCHANGE]); return; } var data = exchangeRegistry.GetExchangeData(visualId); data?.ExchangeItems.TryAdd(item, amount); } public bool CheckExchange(long visualId) { return exchangeRegistry.HasExchange(visualId); } public long? GetTargetId(long visualId) { var pair = exchangeRegistry.GetExchangeRequestPair(visualId); if (pair == null) { return null; } return pair.Value.Value == visualId ? pair.Value.Key : pair.Value.Value; } public bool CheckExchange(long visualId, long targetId) { var pair1 = exchangeRegistry.GetExchangeRequestPair(visualId); var pair2 = exchangeRegistry.GetExchangeRequestPair(targetId); return (pair1 != null && pair1.Value.Key == visualId && pair1.Value.Value == visualId) || (pair2 != null && pair2.Value.Key == targetId && pair2.Value.Value == targetId); } public ExcClosePacket? CloseExchange(long visualId, ExchangeResultType resultType) { var pair = exchangeRegistry.GetExchangeRequestPair(visualId); if (pair == null) { logger.LogError(logLanguage[LogLanguageKey.INVALID_EXCHANGE]); return null; } var data = pair.Value; if (!exchangeRegistry.RemoveExchangeData(data.Key) || !exchangeRegistry.RemoveExchangeRequest(data.Key)) { logger.LogError(logLanguage[LogLanguageKey.TRY_REMOVE_FAILED], data.Key); } if (!exchangeRegistry.RemoveExchangeData(data.Value) || !exchangeRegistry.RemoveExchangeRequest(data.Value)) { logger.LogError(logLanguage[LogLanguageKey.TRY_REMOVE_FAILED], data.Value); } return new ExcClosePacket { Type = resultType }; } public bool OpenExchange(long visualId, long targetVisualId) { if (CheckExchange(visualId) || CheckExchange(targetVisualId)) { logger.LogError(logLanguage[LogLanguageKey.ALREADY_EXCHANGE]); return false; } exchangeRegistry.SetExchangeRequest(visualId, targetVisualId); exchangeRegistry.SetExchangeRequest(targetVisualId, visualId); exchangeRegistry.SetExchangeData(visualId, new ExchangeData()); exchangeRegistry.SetExchangeData(targetVisualId, new ExchangeData()); return true; } public List<KeyValuePair<long, IvnPacket>> ProcessExchange(long firstUser, long secondUser, IInventoryService sessionInventory, IInventoryService targetInventory) { var usersArray = new[] { firstUser, secondUser }; var items = new List<KeyValuePair<long, IvnPacket>>(); var pendingTransfers = new List<( IInventoryService OriginInventory, IInventoryService DestInventory, InventoryItemInstance OriginalItem, short Amount, long TargetId, long SessionId, bool IsFullTransfer )>(); foreach (var user in usersArray) { var userData = exchangeRegistry.GetExchangeData(user); if (userData == null) continue; foreach (var item in userData.ExchangeItems) { var destInventory = user == firstUser ? targetInventory : sessionInventory; var originInventory = user == firstUser ? sessionInventory : targetInventory; var targetId = user == firstUser ? secondUser : firstUser; var sessionId = user == firstUser ? firstUser : secondUser; var isFullTransfer = item.Value == item.Key.ItemInstance.Amount; pendingTransfers.Add((originInventory, destInventory, item.Key, item.Value, targetId, sessionId, isFullTransfer)); } } var addedItems = new List<(IInventoryService Inventory, InventoryItemInstance Item)>(); foreach (var transfer in pendingTransfers) { var newItem = itemBuilderService.Create( transfer.OriginalItem.ItemInstance.ItemVNum, transfer.Amount, (sbyte)transfer.OriginalItem.ItemInstance.Rare, transfer.OriginalItem.ItemInstance.Upgrade, (byte)transfer.OriginalItem.ItemInstance.Design); var inv = transfer.DestInventory.AddItemToPocket( InventoryItemInstance.Create(newItem, transfer.TargetId))?.FirstOrDefault(); if (inv == null) { foreach (var added in addedItems) { added.Inventory.DeleteFromTypeAndSlot(added.Item.Type, added.Item.Slot); } return new List<KeyValuePair<long, IvnPacket>>(); } addedItems.Add((transfer.DestInventory, inv)); } for (var i = 0; i < pendingTransfers.Count; i++) { var transfer = pendingTransfers[i]; var addedItem = addedItems[i]; InventoryItemInstance? sourceItem = null; if (transfer.IsFullTransfer) { transfer.OriginInventory.Remove(transfer.OriginalItem.ItemInstanceId); } else { sourceItem = transfer.OriginInventory.RemoveItemAmountFromInventory(transfer.Amount, transfer.OriginalItem.ItemInstanceId); } items.Add(new KeyValuePair<long, IvnPacket>(transfer.SessionId, (sourceItem ?? transfer.OriginalItem).GeneratePocketChange((PocketType)transfer.OriginalItem.Type, transfer.OriginalItem.Slot))); items.Add(new KeyValuePair<long, IvnPacket>(transfer.TargetId, transfer.OriginalItem.GeneratePocketChange((PocketType)addedItem.Item.Type, addedItem.Item.Slot))); } return items; } } } ================================================ FILE: src/NosCore.GameObject/Services/ExchangeService/IExchangeRequestRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; namespace NosCore.GameObject.Services.ExchangeService { public interface IExchangeRequestRegistry { ExchangeData? GetExchangeData(long characterId); void SetExchangeData(long characterId, ExchangeData data); bool RemoveExchangeData(long characterId); long? GetExchangeRequest(long characterId); KeyValuePair<long, long>? GetExchangeRequestPair(long characterId); void SetExchangeRequest(long characterId, long targetCharacterId); bool RemoveExchangeRequest(long characterId); bool HasExchange(long characterId); } } ================================================ FILE: src/NosCore.GameObject/Services/ExchangeService/IExchangeService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Exchanges; using NosCore.Packets.ServerPackets.Inventory; using System; using System.Collections.Generic; namespace NosCore.GameObject.Services.ExchangeService { public interface IExchangeService { void SetGold(long visualId, long gold, long bankGold); Tuple<ExchangeResultType, Dictionary<long, IPacket>?> ValidateExchange(ClientSession session, ICharacterEntity targetSession); void ConfirmExchange(long visualId); bool IsExchangeConfirmed(long visualId); ExchangeData GetData(long visualId); void AddItems(long visualId, InventoryItemInstance item, short amount); bool CheckExchange(long visualId); long? GetTargetId(long visualId); bool CheckExchange(long visualId, long targetId); ExcClosePacket? CloseExchange(long visualId, ExchangeResultType resultType); bool OpenExchange(long visualId, long targetVisualId); List<KeyValuePair<long, IvnPacket>> ProcessExchange(long firstUser, long secondUser, IInventoryService sessionInventory, IInventoryService targetInventory); } } ================================================ FILE: src/NosCore.GameObject/Services/ExperienceService/ExperienceProgressionService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.FairyExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Algorithm.SpExperienceService; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.SkillService; using NosCore.Networking; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Player; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Services.ExperienceService { // Cascades level / job / hero / SP / fairy XP when a player gains experience, emits the // level-up packet sequence from the official trace (quest.txt ~line 2075): // levelup <cid> / stat / msgi 510 / eff 6 / eff 198 / (msgi 514 / eff 8) / lev // msgi is the i18n variant the current client expects — OpenNos still uses `msg` but // that's from before the i18n redesign, so we follow the trace. // Overflow XP carries across level boundaries so big grants (quest rewards, GM edicts) // telescope cleanly through multiple levels in one call. public sealed class ExperienceProgressionService( IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService, ISpExperienceService spExperienceService, IFairyExperienceService fairyExperienceService, ISkillService skillService) : IExperienceProgressionService { private const byte MaxLevel = 99; private const byte MaxJobLevel = 80; private const byte MaxHeroLevel = 60; private const byte MaxSpLevel = 99; private const byte HeroicStartLevel = 88; public async Task AddExperienceAsync(PlayerComponentBundle player, long levelXpDelta, long jobXpDelta, long heroXpDelta, long spXpDelta, int fairyXpDelta) { var leveledUp = false; var jobLeveledUp = false; var heroLeveledUp = false; var spLeveledUp = false; if (levelXpDelta > 0) { player.LevelXp += levelXpDelta; while (player.Level < MaxLevel) { var threshold = experienceService.GetExperience(player.Level); if (threshold <= 0 || player.LevelXp < threshold) { break; } player.LevelXp -= threshold; player.Level = (byte)(player.Level + 1); leveledUp = true; // Crossing level 88 unlocks hero XP (OpenNos Character.cs:5270). if (player.Level == HeroicStartLevel && player.HeroLevel == 0) { player.HeroLevel = 1; player.HeroLevelXp = 0; } } if (player.Level >= MaxLevel) { player.LevelXp = 0; } } if (jobXpDelta > 0) { // Adventurer caps at job level 20 until class-change (OpenNos Character.cs:5345). var jobCap = player.Class == CharacterClassType.Adventurer ? (byte)20 : MaxJobLevel; player.JobLevelXp += jobXpDelta; while (player.JobLevel < jobCap) { var threshold = jobExperienceService.GetJobExperience(player.Class, player.JobLevel); if (threshold <= 0 || player.JobLevelXp < threshold) { break; } player.JobLevelXp -= threshold; player.JobLevel = (byte)(player.JobLevel + 1); jobLeveledUp = true; } if (player.JobLevel >= jobCap) { player.JobLevelXp = 0; } } if (heroXpDelta > 0 && player.HeroLevel > 0) { player.HeroLevelXp += heroXpDelta; while (player.HeroLevel < MaxHeroLevel) { var threshold = heroExperienceService.GetHeroExperience(player.HeroLevel); if (threshold <= 0 || player.HeroLevelXp < threshold) { break; } player.HeroLevelXp -= threshold; player.HeroLevel = (byte)(player.HeroLevel + 1); heroLeveledUp = true; } if (player.HeroLevel >= MaxHeroLevel) { player.HeroLevelXp = 0; } } SpecialistInstance? spInstance = null; if (spXpDelta > 0 && player.UseSp) { spInstance = player.InventoryService .LoadBySlotAndType((short)EquipmentType.Sp, NoscorePocketType.Wear) ?.ItemInstance as SpecialistInstance; if (spInstance != null && spInstance.SpLevel < MaxSpLevel) { spInstance.Xp = (spInstance.Xp ?? 0) + spXpDelta; while (spInstance.SpLevel < MaxSpLevel) { var threshold = spExperienceService.GetSpExperience(spInstance.SpLevel, isSecondarySp: false); if (threshold <= 0 || (spInstance.Xp ?? 0) < threshold) { break; } spInstance.Xp -= threshold; spInstance.SpLevel = (byte)(spInstance.SpLevel + 1); spLeveledUp = true; } if (spInstance.SpLevel >= MaxSpLevel) { spInstance.Xp = 0; } } } WearableInstance? fairy = null; var fairyLeveledUp = false; var fairyMaxed = false; if (fairyXpDelta > 0) { fairy = player.InventoryService .LoadBySlotAndType((short)EquipmentType.Fairy, NoscorePocketType.Wear) ?.ItemInstance as WearableInstance; var baseRate = fairy?.Item?.ElementRate ?? 0; var maxRate = fairy?.Item?.MaxElementRate ?? 0; if (fairy != null && (fairy.ElementRate ?? 0) + baseRate < maxRate) { fairy.Xp = (fairy.Xp ?? 0) + fairyXpDelta; while ((fairy.ElementRate ?? 0) + baseRate < maxRate) { var threshold = fairyExperienceService.GetFairyExperience( (byte)((fairy.ElementRate ?? 0) + baseRate)); if (threshold <= 0 || (fairy.Xp ?? 0) < threshold) { break; } fairy.Xp -= threshold; fairy.ElementRate = (short)((fairy.ElementRate ?? 0) + 1); fairyLeveledUp = true; } if ((fairy.ElementRate ?? 0) + baseRate >= maxRate) { fairy.Xp = 0; fairyMaxed = true; } } } var characterLeveledUp = leveledUp || jobLeveledUp || heroLeveledUp || spLeveledUp; if (!characterLeveledUp && !fairyLeveledUp) { await player.SendPacketAsync(player.GenerateLev(experienceService, jobExperienceService, heroExperienceService)); return; } var mapInstance = player.MapInstance; if (characterLeveledUp) { // Full heal on any character / SP / job / hero level-up (trace `stat 256 256 78 78`). player.Hp = player.MaxHp; player.Mp = player.MaxMp; await player.SendPacketAsync(new LevelUpPacket { CharacterId = player.CharacterId }); await player.SendPacketAsync(player.GenerateStat()); await player.SendPacketAsync(player.GenerateStatInfo()); if (leveledUp) { await player.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.LevelIncreased }); await mapInstance.SendPacketAsync(player.GenerateEff(6)); await mapInstance.SendPacketAsync(player.GenerateEff(198)); } if (jobLeveledUp) { await player.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.JobLevelIncreased }); await mapInstance.SendPacketAsync(player.GenerateEff(8)); await skillService.LearnClassSkillsAsync(player).ConfigureAwait(false); } if (heroLeveledUp) { await player.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.HeroLevelIncreased }); } if (spLeveledUp) { await player.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.SpecialistLevelIncreased }); await mapInstance.SendPacketAsync(player.GenerateEff(8)); await mapInstance.SendPacketAsync(player.GenerateEff(198)); } } if (fairyLeveledUp) { // Fairy level-up is cosmetic — no stat/levelup/full-heal; refresh `pairy` and // push a per-fairy toast. %s is the item name (using vnum for now, client // resolves). var fairyName = fairy?.Item?.VNum.ToString() ?? string.Empty; await player.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = fairyMaxed ? Game18NConstString.ReachedMaxLeve : Game18NConstString.HasLevelledUp, ArgumentType = 10, Game18NArguments = { fairyName } }); await player.SendPacketAsync(player.GeneratePairy(fairy)); } await player.SendPacketAsync(player.GenerateLev(experienceService, jobExperienceService, heroExperienceService)); } } } ================================================ FILE: src/NosCore.GameObject/Services/ExperienceService/IExperienceProgressionService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.GameObject.Ecs; namespace NosCore.GameObject.Services.ExperienceService { public interface IExperienceProgressionService { Task AddExperienceAsync(PlayerComponentBundle player, long levelXpDelta, long jobXpDelta, long heroXpDelta, long spXpDelta, int fairyXpDelta); } } ================================================ FILE: src/NosCore.GameObject/Services/FriendService/CharacterRelation.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; namespace NosCore.GameObject.Services.FriendService { public class CharacterRelation : CharacterRelationDto { public string? CharacterName { get; set; } } } ================================================ FILE: src/NosCore.GameObject/Services/FriendService/FriendRequestRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; namespace NosCore.GameObject.Services.FriendService { public class FriendRequestRegistry : IFriendRequestRegistry { private readonly ConcurrentDictionary<Guid, (long SenderId, long ReceiverId)> _friendRequests = new(); public IEnumerable<KeyValuePair<Guid, (long SenderId, long ReceiverId)>> GetRequestsForCharacter(long characterId) => _friendRequests.Where(s => s.Value.ReceiverId == characterId || s.Value.SenderId == characterId); public void RegisterRequest(Guid requestId, long senderId, long receiverId) => _friendRequests[requestId] = (senderId, receiverId); public bool UnregisterRequest(Guid requestId) => _friendRequests.TryRemove(requestId, out _); } } ================================================ FILE: src/NosCore.GameObject/Services/FriendService/FriendService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Services.FriendService { public class FriendService(ILogger<FriendService> logger, IDao<CharacterRelationDto, Guid> characterRelationDao, IDao<CharacterDto, long> characterDao, IFriendRequestRegistry friendRequestRegistry, IPubSubHub pubSubHub, IChannelHub channelHub, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : IFriendService { public async Task<LanguageKey> AddFriendAsync(long characterId, long secondCharacterId, FinsPacketType friendsPacketType) { var servers = await channelHub.GetCommunicationChannels(); var accounts = await pubSubHub.GetSubscribersAsync(); var character = accounts.FirstOrDefault(s => s.ConnectedCharacter?.Id == characterId && servers.Where(c => c.Type == ServerType.WorldServer).Any(x => x.Id == s.ChannelId)); var targetCharacter = accounts.FirstOrDefault(s => s.ConnectedCharacter?.Id == secondCharacterId && servers.Where(c => c.Type == ServerType.WorldServer).Any(x => x.Id == s.ChannelId)); var friendRequest = friendRequestRegistry.GetRequestsForCharacter(character?.ConnectedCharacter?.Id ?? 0) .Where(s => s.Value.ReceiverId == character?.ConnectedCharacter?.Id && s.Value.SenderId == targetCharacter?.ConnectedCharacter?.Id).ToList(); if ((character != null) && (targetCharacter != null)) { if (character.ChannelId != targetCharacter.ChannelId) { throw new ArgumentException(); } var relations = characterRelationDao.Where(s => s.CharacterId == characterId)?.ToList() ?? new List<CharacterRelationDto>(); if (relations.Count(s => s.RelationType == CharacterRelationType.Friend) >= 80) { return LanguageKey.FRIENDLIST_FULL; } if (relations.Any(s => (s.RelationType == CharacterRelationType.Blocked) && (s.RelatedCharacterId == secondCharacterId))) { return LanguageKey.BLACKLIST_BLOCKED; } if (relations.Any(s => (s.RelationType == CharacterRelationType.Friend) && (s.RelatedCharacterId == secondCharacterId))) { return LanguageKey.ALREADY_FRIEND; } if (character.ConnectedCharacter!.FriendRequestBlocked || targetCharacter.ConnectedCharacter!.FriendRequestBlocked) { return LanguageKey.FRIEND_REQUEST_BLOCKED; } if (!friendRequest.Any()) { friendRequestRegistry.RegisterRequest(Guid.NewGuid(), character.ConnectedCharacter.Id, targetCharacter.ConnectedCharacter.Id); return LanguageKey.FRIEND_REQUEST_SENT; } switch (friendsPacketType) { case FinsPacketType.Accepted: var data = new CharacterRelationDto { CharacterId = character.ConnectedCharacter.Id, RelatedCharacterId = targetCharacter.ConnectedCharacter.Id, RelationType = CharacterRelationType.Friend }; await characterRelationDao.TryInsertOrUpdateAsync(data); var data2 = new CharacterRelationDto { CharacterId = targetCharacter.ConnectedCharacter.Id, RelatedCharacterId = character.ConnectedCharacter.Id, RelationType = CharacterRelationType.Friend }; await characterRelationDao.TryInsertOrUpdateAsync(data2); friendRequestRegistry.UnregisterRequest(friendRequest.First().Key); return LanguageKey.FRIEND_ADDED; case FinsPacketType.Rejected: friendRequestRegistry.UnregisterRequest(friendRequest.First().Key); return LanguageKey.FRIEND_REJECTED; default: logger.LogError(logLanguage[LogLanguageKey.INVITETYPE_UNKNOWN]); friendRequestRegistry.UnregisterRequest(friendRequest.First().Key); throw new ArgumentException(); } } friendRequestRegistry.UnregisterRequest(friendRequest.First().Key); throw new ArgumentException(); } public async Task<List<CharacterRelationStatus>> GetFriendsAsync(long id) { var charList = new List<CharacterRelationStatus>(); var list = characterRelationDao .Where(s => (s.CharacterId == id) && (s.RelationType != CharacterRelationType.Blocked)); if (list == null) { return charList; } foreach (var rel in list) { var servers = await channelHub.GetCommunicationChannels(); var accounts = await pubSubHub.GetSubscribersAsync(); var character = accounts.FirstOrDefault(s => s.ConnectedCharacter?.Id == rel.RelatedCharacterId && servers.Where(c => c.Type == ServerType.WorldServer).Any(x => x.Id == s.ChannelId)); charList.Add(new CharacterRelationStatus { CharacterName = (await characterDao.FirstOrDefaultAsync(s => s.CharacterId == rel.RelatedCharacterId))?.Name, CharacterId = rel.RelatedCharacterId, IsConnected = character != null, RelationType = rel.RelationType, CharacterRelationId = rel.CharacterRelationId }); } return charList; } public async Task<bool> DeleteAsync(Guid id) { var rel = await characterRelationDao.FirstOrDefaultAsync(s => (s.CharacterRelationId == id) && (s.RelationType == CharacterRelationType.Friend)); if (rel == null) { return false; } var rel2 = await characterRelationDao.FirstOrDefaultAsync(s => (s.CharacterId == rel.RelatedCharacterId) && (s.RelatedCharacterId == rel.CharacterId) && (s.RelationType == CharacterRelationType.Friend)); if (rel2 == null) { return false; } await characterRelationDao.TryDeleteAsync(rel.CharacterRelationId); await characterRelationDao.TryDeleteAsync(rel2.CharacterRelationId); return true; } } } ================================================ FILE: src/NosCore.GameObject/Services/FriendService/IFriendRequestRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; namespace NosCore.GameObject.Services.FriendService { public interface IFriendRequestRegistry { IEnumerable<KeyValuePair<Guid, (long SenderId, long ReceiverId)>> GetRequestsForCharacter(long characterId); void RegisterRequest(Guid requestId, long senderId, long receiverId); bool UnregisterRequest(Guid requestId); } } ================================================ FILE: src/NosCore.GameObject/Services/FriendService/IFriendService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.Packets.Enumerations; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.Services.FriendService { public interface IFriendService { Task<LanguageKey> AddFriendAsync(long characterId, long secondCharacterId, FinsPacketType friendsPacketType); Task<List<CharacterRelationStatus>> GetFriendsAsync(long id); Task<bool> DeleteAsync(Guid id); } } ================================================ FILE: src/NosCore.GameObject/Services/GroupService/Group.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.Group; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.Networking.SessionGroup; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Groups; using NosCore.Packets.ServerPackets.Parcel; using NosCore.Shared.Enumerations; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; namespace NosCore.GameObject.Services.GroupService { public class Group(GroupType type, ISessionGroupFactory sessionGroupFactory) : ConcurrentDictionary<Tuple<VisualType, long>, Tuple<int, INamedEntity>>, IBroadcastable { public short MaxPacketsBuffer { get; } = 250; private int _lastId; public ConcurrentQueue<IPacket> LastPackets { get; } = new(); public long GroupId { get; set; } = -1; public GroupType Type { get; set; } = type; public bool IsGroupFull => Count == (long)Type; public new bool IsEmpty => Keys.Count(s => s.Item1 == VisualType.Player) <= 1; public new int Count => Keys.Count(s => s.Item1 == VisualType.Player); public ISessionGroup Sessions { get; set; } = sessionGroupFactory.Create(); public PinitPacket GeneratePinit() { var i = 0; return new PinitPacket { GroupSize = Count == 1 ? 0 : Count, PinitSubPackets = Values.Select(s => s.Item2.GenerateSubPinit(Count == 1 ? i : ++i)).ToList() as List<PinitSubPacket?> }; } public List<PstPacket> GeneratePst() { var i = 0; return Values.OrderBy(s => s.Item1).Select(s => s.Item2).Select(member => new PstPacket { Type = member.VisualType, VisualId = member.VisualId, GroupOrder = ++i, HpLeft = member.MaxHp > 0 ? (int)(member.Hp / (float)member.MaxHp * 100) : 0, MpLeft = member.MaxMp > 0 ? (int)(member.Mp / (float)member.MaxMp * 100) : 0, HpLoad = member.MaxHp, MpLoad = member.MaxMp, Race = member.Race, Gender = (member as ICharacterEntity)?.Gender ?? GenderType.Male, Morph = member.Morph, BuffIds = null }).ToList(); } public bool IsGroupLeader(long visualId) { var leader = Values.OrderBy(s => s.Item1).FirstOrDefault(s => s.Item2.VisualType == VisualType.Player); return (Count > 1) && (leader?.Item2.VisualId == visualId); } public void JoinGroup(INamedEntity namedEntity) { if (namedEntity is ICharacterEntity characterEntity && (characterEntity.Channel != null)) { Sessions.Add(characterEntity.Channel); } TryAdd(new Tuple<VisualType, long>(namedEntity.VisualType, namedEntity.VisualId), new Tuple<int, INamedEntity>(++_lastId, namedEntity)); } public void LeaveGroup(INamedEntity namedEntity) { if (namedEntity is ICharacterEntity characterEntity && (characterEntity.Channel != null)) { Sessions.Remove(characterEntity.Channel); } TryRemove(new Tuple<VisualType, long>(namedEntity.VisualType, namedEntity.VisualId), out _); } } } ================================================ FILE: src/NosCore.GameObject/Services/GroupService/GroupRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Concurrent; using System.Threading; namespace NosCore.GameObject.Services.GroupService { public class GroupRegistry : IGroupRegistry { private readonly ConcurrentDictionary<long, Group> _groupsById = new(); private readonly ConcurrentDictionary<long, long> _characterToGroupId = new(); private long _nextId; public Group? GetById(long groupId) { _groupsById.TryGetValue(groupId, out var group); return group; } public void Register(Group group) { _groupsById[group.GroupId] = group; } public void Unregister(long groupId) { _groupsById.TryRemove(groupId, out _); } public void RegisterMember(long characterId, long groupId) { _characterToGroupId[characterId] = groupId; } public void UnregisterMember(long characterId) { _characterToGroupId.TryRemove(characterId, out _); } public long GetNextGroupId() { return Interlocked.Increment(ref _nextId); } } } ================================================ FILE: src/NosCore.GameObject/Services/GroupService/IGroupRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.GameObject.Services.GroupService { public interface IGroupRegistry { Group? GetById(long groupId); void Register(Group group); void Unregister(long groupId); void RegisterMember(long characterId, long groupId); void UnregisterMember(long characterId); long GetNextGroupId(); } } ================================================ FILE: src/NosCore.GameObject/Services/InventoryService/IInventoryService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations; using NosCore.GameObject.Services.ItemStorage; using System; using System.Collections.Generic; namespace NosCore.GameObject.Services.InventoryService { public interface IInventoryService : IDictionary<Guid, InventoryItemInstance>, IMutableSlotBasedStorage<InventoryItemInstance, NoscorePocketType> { Dictionary<NoscorePocketType, byte> Expensions { get; set; } List<InventoryItemInstance>? AddItemToPocket(InventoryItemInstance newItem); List<InventoryItemInstance>? AddItemToPocket(InventoryItemInstance newItem, NoscorePocketType? type); List<InventoryItemInstance>? AddItemToPocket(InventoryItemInstance newItem, NoscorePocketType? type, short? slot); bool CanAddItem(short itemVnum); int CountItemInAnPocket(NoscorePocketType inv); InventoryItemInstance? DeleteById(Guid id); InventoryItemInstance? DeleteFromTypeAndSlot(NoscorePocketType type, short slot); InventoryItemInstance? LoadByItemInstanceId(Guid id); InventoryItemInstance? LoadBySlotAndType(short slot, NoscorePocketType type); InventoryItemInstance? MoveInPocket(short sourceSlot, NoscorePocketType sourceType, NoscorePocketType targetType); InventoryItemInstance? MoveInPocket(short sourceSlot, NoscorePocketType sourceType, NoscorePocketType targetType, short? targetSlot, bool swap); InventoryItemInstance? RemoveItemAmountFromInventory(short amount, Guid id); } } ================================================ FILE: src/NosCore.GameObject/Services/InventoryService/InventoryItemInstance.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.ItemStorage; using System; namespace NosCore.GameObject.Services.InventoryService { public class InventoryItemInstance : InventoryItemInstanceDto, ISlotItem<NoscorePocketType> { public InventoryItemInstance(IItemInstance itemInstance) { ItemInstance = itemInstance; ItemInstanceId = itemInstance.Id; } public IItemInstance ItemInstance { get; set; } IItemInstance? ISlotItem.ItemInstance => ItemInstance; NoscorePocketType ISlotItem<NoscorePocketType>.SlotType { get => Type; set => Type = value; } public static InventoryItemInstance Create(IItemInstance it, long characterId) { return Create(it, characterId, null); } public static InventoryItemInstance Create(IItemInstance it, long characterId, InventoryItemInstanceDto? inventoryItemInstance) { return new InventoryItemInstance(it) { Id = inventoryItemInstance?.Id ?? Guid.NewGuid(), CharacterId = characterId, Slot = inventoryItemInstance?.Slot ?? 0, Type = inventoryItemInstance?.Type ?? it.Item.Type }; } } } ================================================ FILE: src/NosCore.GameObject/Services/InventoryService/InventoryService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.StaticEntities; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.ItemStorage; using Microsoft.Extensions.Logging; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; namespace NosCore.GameObject.Services.InventoryService { public class InventoryService(List<ItemDto> items, IOptions<WorldConfiguration> configuration, ILogger<InventoryService> logger) : ConcurrentDictionary<Guid, InventoryItemInstance>, IInventoryService { public int GetMaxSlots(NoscorePocketType pocket) { //TODO make this configurable return (byte)(pocket switch { NoscorePocketType.Miniland => 50 + Expensions[pocket], NoscorePocketType.Specialist => 45 + Expensions[pocket], NoscorePocketType.Costume => 60 + Expensions[pocket], NoscorePocketType.Wear => 17, NoscorePocketType.Mount => 20 + Expensions[pocket], NoscorePocketType.Raid => 63 + Expensions[pocket], _ => configuration.Value.BackpackSize + Expensions[pocket] }); } public Dictionary<NoscorePocketType, byte> Expensions { get; set; } = new() { { NoscorePocketType.Costume, 0 }, { NoscorePocketType.Equipment, 0 }, { NoscorePocketType.Etc, 0 }, { NoscorePocketType.Miniland, 0 }, { NoscorePocketType.Main, 0 }, { NoscorePocketType.Specialist, 0 }, { NoscorePocketType.Wear, 0 }, { NoscorePocketType.Mount, 0 }, { NoscorePocketType.Raid, 0 }, }; public InventoryItemInstance? LoadBySlotAndType(short slot, NoscorePocketType type) { InventoryItemInstance? retItem = default; try { retItem = this.Select(s => s.Value) .SingleOrDefault(i => (i.Slot == slot) && (i.Type == type)); } catch (InvalidOperationException ioEx) { logger.LogError(ioEx.Message, ioEx); } return retItem; } public bool CanAddItem(short itemVnum) { var type = items.Find(item => item.VNum == itemVnum)?.Type; return type != null && GetFreeSlot((NoscorePocketType)type).HasValue; } public int CountItem(int itemVNum) { return this.Select(s => s.Value).Where(s => s.ItemInstance?.ItemVNum == itemVNum) .Sum(i => i.ItemInstance?.Amount ?? 0); } public int CountItemInAnPocket(NoscorePocketType inv) { return this.Count(s => s.Value.Type == inv); } public List<InventoryItemInstance>? AddItemToPocket(InventoryItemInstance newItem) { return AddItemToPocket(newItem, null, null); } public List<InventoryItemInstance>? AddItemToPocket(InventoryItemInstance newItem, NoscorePocketType? type) { return AddItemToPocket(newItem, type, null); } public List<InventoryItemInstance>? AddItemToPocket(InventoryItemInstance newItem, NoscorePocketType? type, short? slot) { if (newItem?.ItemInstance == null || newItem.ItemInstance.Amount <= 0) { return null; } var invlist = new List<InventoryItemInstance>(); // override type if necessary if (type.HasValue) { newItem.Type = type.Value; } // check if item can be stapled if ((slot == null) && ((newItem.Type == NoscorePocketType.Etc) || (newItem.Type == NoscorePocketType.Main))) { var slotNotFull = this.ToList().Select(s => s.Value).Where(i => i.ItemInstance.ItemVNum.Equals(newItem.ItemInstance.ItemVNum) && (i.ItemInstance.Amount < configuration.Value.MaxItemAmount)); var freeslot = GetMaxSlots(newItem.Type) - this.Count(s => s.Value.Type == newItem.Type); IEnumerable<InventoryItemInstance> itemInstances = slotNotFull as IList<InventoryItemInstance> ?? slotNotFull.ToList(); if (newItem.ItemInstance.Amount <= freeslot * configuration.Value.MaxItemAmount + itemInstances.Sum(s => configuration.Value.MaxItemAmount - s.ItemInstance.Amount)) { foreach (var slotToAdd in itemInstances) { var max = slotToAdd.ItemInstance?.Amount + newItem.ItemInstance?.Amount; max = max > configuration.Value.MaxItemAmount ? configuration.Value.MaxItemAmount : max; newItem.ItemInstance!.Amount = (short)((slotToAdd.ItemInstance?.Amount + newItem.ItemInstance?.Amount - max) ?? 0); slotToAdd.ItemInstance!.Amount = (short)(max ?? 0); invlist.Add(slotToAdd); } } } if (newItem.ItemInstance == null || newItem.ItemInstance?.Amount <= 0) { return invlist; } // Create new item var freeSlot = newItem.Type == NoscorePocketType.Wear ? LoadBySlotAndType((short)newItem.ItemInstance!.Item.EquipmentSlot, NoscorePocketType.Wear) == null ? (short?)newItem.ItemInstance.Item.EquipmentSlot : null : GetFreeSlot(newItem.Type); if (!slot.HasValue && !freeSlot.HasValue) { return invlist; } newItem.Slot = slot ?? freeSlot ?? 0; if (ContainsKey(newItem.ItemInstanceId)) { var e = new InvalidOperationException("Cannot add the same ItemInstance twice to pocket."); logger.LogError(e.Message, e); return null; } if (newItem.Slot < 0 || newItem.Slot >= GetMaxSlots(newItem.Type) || this.Any(s => (s.Value.Slot == newItem.Slot) && (s.Value.Type == newItem.Type))) { return null; } if ((newItem.Type == NoscorePocketType.Specialist) && !(newItem.ItemInstance is SpecialistInstance)) { var e = new InvalidOperationException( "Cannot add an item of type Specialist without beeing a SpecialistInstance."); logger.LogError(e.Message, e); return null; } if (((newItem.Type == NoscorePocketType.Equipment) || (newItem.Type == NoscorePocketType.Wear)) && !(newItem.ItemInstance is WearableInstance) && !(newItem.ItemInstance is SpecialistInstance)) { var e = new InvalidOperationException( "Cannot add an item of type Equipment or Wear without beeing a WearableInstance or a SpecialistInstance."); logger.LogError(e.Message, e); return null; } this[newItem.ItemInstanceId] = newItem; invlist.Add(newItem); return invlist; } public InventoryItemInstance? DeleteById(Guid id) { var inv = this[id]; if (inv != null) { if (TryRemove(inv.ItemInstanceId, out var value)) { return null; } return value; } var e = new InvalidOperationException("Expected item wasn't deleted, Type or Slot did not match!"); logger.LogError(e.Message, e); return null; } public InventoryItemInstance LoadByItemInstanceId(Guid id) { return this[id]; } public InventoryItemInstance? DeleteFromTypeAndSlot(NoscorePocketType type, short slot) { var inv = this.Select(s => s.Value).FirstOrDefault(i => i.Slot.Equals(slot) && i.Type.Equals(type)); if (inv != null) { if (TryRemove(inv.ItemInstanceId, out var value)) { return null; } return value; } var e = new InvalidOperationException("Expected item wasn't deleted, Type or Slot did not match!"); logger.LogError(e.Message, e); return null; } public InventoryItemInstance? MoveInPocket(short sourceSlot, NoscorePocketType sourceType, NoscorePocketType targetType) { return MoveInPocket(sourceSlot, sourceType, targetType, null, false); } public InventoryItemInstance? MoveInPocket(short sourceSlot, NoscorePocketType sourceType, NoscorePocketType targetType, short? targetSlot, bool swap) { if ((sourceSlot == targetSlot) && (sourceType == targetType)) { var e = new InvalidOperationException("SourceInstance can't be moved on the same spot"); logger.LogError(e.Message, e); return null; } var sourceInstance = LoadBySlotAndType(sourceSlot, sourceType); if (!(sourceInstance!.ItemInstance is WearableInstance || sourceInstance.ItemInstance is SpecialistInstance)) { var e = new InvalidOperationException("SourceInstance can't be moved between pockets"); logger.LogError(e.Message, e); return null; } if (sourceInstance.ItemInstance is WearableInstance && (targetType != NoscorePocketType.Equipment) && (targetType != NoscorePocketType.Costume) && (targetType != NoscorePocketType.Wear)) { var e = new InvalidOperationException("WearableInstance can't be move to this inventory"); logger.LogError(e.Message, e); return null; } if (sourceInstance.ItemInstance is SpecialistInstance && (targetType != NoscorePocketType.Equipment) && (targetType != NoscorePocketType.Specialist) && (targetType != NoscorePocketType.Wear)) { var e = new InvalidOperationException("SpecialistInstance can't be move to this inventory"); logger.LogError(e.Message, e); return null; } if (targetSlot.HasValue) { var targetInstance = LoadBySlotAndType(targetSlot.Value, targetType); if (swap && (targetInstance != null)) { // swap sourceInstance.Slot = targetSlot.Value; sourceInstance.Type = targetType; targetInstance.Slot = sourceSlot; targetInstance.Type = sourceType; } else if (targetInstance == null) { sourceInstance.Slot = targetSlot.Value; sourceInstance.Type = targetType; } else { var e = new InvalidOperationException("Source can not be swapped"); logger.LogError(e.Message, e); return null; } return sourceInstance; } // check for free target slot short? nextFreeSlot; if (targetType == NoscorePocketType.Wear) { nextFreeSlot = LoadBySlotAndType((short)sourceInstance.ItemInstance.Item.EquipmentSlot, targetType) == null ? (short)sourceInstance.ItemInstance.Item.EquipmentSlot : (short)-1; } else { nextFreeSlot = GetFreeSlot(targetType); } if (nextFreeSlot.HasValue) { sourceInstance.Type = targetType; sourceInstance.Slot = nextFreeSlot.Value; } else { return null; } return sourceInstance; } public bool TryMoveItem(NoscorePocketType sourcetype, short sourceSlot, short amount, short destinationSlot, out InventoryItemInstance? sourcePocket, out InventoryItemInstance? destinationPocket) { // load source and destination slots sourcePocket = LoadBySlotAndType(sourceSlot, sourcetype); destinationPocket = LoadBySlotAndType(destinationSlot, sourcetype); if ((sourceSlot == destinationSlot) || (amount <= 0) || (destinationSlot < 0) || (destinationSlot >= GetMaxSlots(sourcetype))) { return false; } // check if the item is a palced MinilandObject if (sourcetype == NoscorePocketType.Miniland) { //todo test this (looks weird) if (sourcePocket?.ItemInstance is MinilandObjectDto || destinationPocket?.ItemInstance is MinilandObjectDto) { return false; } } if ((sourcePocket != null) && (amount <= sourcePocket.ItemInstance?.Amount)) { switch (destinationPocket) { case null when sourcePocket.ItemInstance.Amount == amount: sourcePocket.Slot = destinationSlot; break; case null: var itemDest = (IItemInstance)sourcePocket.ItemInstance.Clone(); sourcePocket.ItemInstance.Amount -= amount; itemDest.Amount = amount; itemDest.Id = Guid.NewGuid(); AddItemToPocket(new InventoryItemInstance(itemDest) { Id = Guid.NewGuid(), CharacterId = sourcePocket.CharacterId, Slot = sourcePocket.Slot, Type = sourcePocket.Type, }, sourcetype, destinationSlot); break; default: if ((destinationPocket.ItemInstance?.ItemVNum == sourcePocket.ItemInstance.ItemVNum) && ((sourcePocket.ItemInstance.Item.Type == NoscorePocketType.Main) || (sourcePocket.ItemInstance.Item.Type == NoscorePocketType.Etc))) { if (destinationPocket.ItemInstance.Amount + amount > configuration.Value.MaxItemAmount) { var saveItemCount = destinationPocket.ItemInstance.Amount; destinationPocket.ItemInstance.Amount = configuration.Value.MaxItemAmount; sourcePocket.ItemInstance.Amount = (short)(saveItemCount + sourcePocket.ItemInstance.Amount - configuration.Value.MaxItemAmount); } else { destinationPocket.ItemInstance.Amount += amount; sourcePocket.ItemInstance.Amount -= amount; // item with amount of 0 should be removed if (sourcePocket.ItemInstance.Amount == 0) { DeleteFromTypeAndSlot(sourcePocket.Type, sourcePocket.Slot); } } } else { // add and remove save pocket destinationPocket = TakeItem(destinationPocket.Slot, destinationPocket.Type); if (destinationPocket == null) { return true; } destinationPocket.Slot = sourceSlot; destinationPocket.Type = sourcetype; sourcePocket = TakeItem(sourcePocket.Slot, sourcePocket.Type); if (sourcePocket == null) { return true; } sourcePocket.Slot = destinationSlot; this[destinationPocket.ItemInstanceId] = destinationPocket; this[sourcePocket.ItemInstanceId] = sourcePocket; } break; } } sourcePocket = LoadBySlotAndType(sourceSlot, sourcetype); destinationPocket = LoadBySlotAndType(destinationSlot, sourcetype); return true; } public bool EnoughPlace(List<IItemInstance> itemInstances, NoscorePocketType type) { var place = new Dictionary<NoscorePocketType, int>(); foreach (var itemGroup in itemInstances.GroupBy(s => s.ItemVNum)) { var itemList = this.Select(s => s.Value).Where(i => i.Type == type).ToList(); if (!place.ContainsKey(type)) { place.Add(type, GetMaxSlots(type) - itemList.Count); } var amount = itemGroup.Sum(s => s.Amount); var rest = amount % (type == NoscorePocketType.Equipment ? 1 : configuration.Value.MaxItemAmount); var newSlotNeeded = itemList.Where(s => s.ItemInstance?.ItemVNum == itemGroup.Key) .Sum(s => configuration.Value.MaxItemAmount - s.ItemInstance?.Amount) <= rest; place[type] -= amount / (type == NoscorePocketType.Equipment ? 1 : configuration.Value.MaxItemAmount) + (newSlotNeeded ? 1 : 0); if (place[type] < 0) { return false; } } return true; } public InventoryItemInstance? RemoveItemAmountFromInventory(short amount, Guid id) { if (amount <= 0) { return null; } var inv = this[id]; if (inv?.ItemInstance != null) { inv.ItemInstance.Amount -= amount; if (inv.ItemInstance.Amount <= 0) { return TryRemove(inv.ItemInstanceId, out _) ? null : inv; } return inv; } var e = new InvalidOperationException("Expected item wasn't deleted, Type or Slot did not match!"); logger.LogError(e.Message, e); return null; } public short? GetFreeSlot(NoscorePocketType type) { var maxSlots = GetMaxSlots(type); var occupiedSlots = new HashSet<short>( this.Select(s => s.Value).Where(i => i.Type == type).Select(i => i.Slot)); for (short slot = 0; slot < maxSlots; slot++) { if (!occupiedSlots.Contains(slot)) { return slot; } } return null; } public bool HasFreeSlot(NoscorePocketType slotType) => GetFreeSlot(slotType).HasValue; public IEnumerable<InventoryItemInstance> GetAllBySlotType(NoscorePocketType slotType) => this.Select(s => s.Value).Where(i => i.Type == slotType); public IEnumerable<InventoryItemInstance> GetAll() => this.Select(s => s.Value); InventoryItemInstance? ISlotBasedStorage<InventoryItemInstance, NoscorePocketType>.GetBySlot(short slot, NoscorePocketType slotType) => LoadBySlotAndType(slot, slotType); InventoryItemInstance? ISlotBasedStorage<InventoryItemInstance, NoscorePocketType>.GetById(Guid id) => LoadByItemInstanceId(id); int ISlotBasedStorage<InventoryItemInstance, NoscorePocketType>.CountBySlotType(NoscorePocketType slotType) => CountItemInAnPocket(slotType); List<InventoryItemInstance>? IMutableSlotBasedStorage<InventoryItemInstance, NoscorePocketType>.AddItem( InventoryItemInstance item, NoscorePocketType? slotType, short? slot) => AddItemToPocket(item, slotType, slot); InventoryItemInstance? IMutableSlotBasedStorage<InventoryItemInstance, NoscorePocketType>.RemoveBySlot( short slot, NoscorePocketType slotType) => DeleteFromTypeAndSlot(slotType, slot); InventoryItemInstance? IMutableSlotBasedStorage<InventoryItemInstance, NoscorePocketType>.RemoveById(Guid id) => DeleteById(id); InventoryItemInstance? IMutableSlotBasedStorage<InventoryItemInstance, NoscorePocketType>.RemoveItemAmount( short amount, Guid id) => RemoveItemAmountFromInventory(amount, id); InventoryItemInstance? IMutableSlotBasedStorage<InventoryItemInstance, NoscorePocketType>.MoveItem( short sourceSlot, NoscorePocketType sourceType, NoscorePocketType targetType, short? targetSlot, bool swap) => MoveInPocket(sourceSlot, sourceType, targetType, targetSlot, swap); private InventoryItemInstance? TakeItem(short slot, NoscorePocketType type) { var itemInstance = this.Select(s => s.Value).SingleOrDefault(i => (i.Slot == slot) && (i.Type == type)); if (itemInstance == null) { return null; } TryRemove(itemInstance.ItemInstanceId, out _); return itemInstance; } } } ================================================ FILE: src/NosCore.GameObject/Services/ItemGenerationService/IItemGenerationService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using NosCore.GameObject.Services.ItemGenerationService.Item; namespace NosCore.GameObject.Services.ItemGenerationService { public interface IItemGenerationService { IItemInstance Create(short itemToCreateVNum); IItemInstance Create(short itemToCreateVNum, short amount); IItemInstance Create(short itemToCreateVNum, short amount, sbyte rare); IItemInstance Create(short itemToCreateVNum, short amount, sbyte rare, byte upgrade); IItemInstance Create(short itemToCreateVNum, short amount, sbyte rare, byte upgrade, byte design); IItemInstance Convert(IItemInstanceDto k); } } ================================================ FILE: src/NosCore.GameObject/Services/ItemGenerationService/Item/BoxInstance.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using System; namespace NosCore.GameObject.Services.ItemGenerationService.Item { public class BoxInstance : BoxInstanceDto, IItemInstance { public BoxInstance(Item item) { Id = Guid.NewGuid(); Item = item; ItemVNum = item.VNum; } [Obsolete] public BoxInstance() { } public Item Item { get; set; } = null!; public object Clone() { return (BoxInstance)MemberwiseClone(); } } } ================================================ FILE: src/NosCore.GameObject/Services/ItemGenerationService/Item/IItemInstance.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; namespace NosCore.GameObject.Services.ItemGenerationService.Item { public interface IItemInstance : IItemInstanceDto { Item Item { get; set; } object Clone(); } } ================================================ FILE: src/NosCore.GameObject/Services/ItemGenerationService/Item/Item.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.StaticEntities; namespace NosCore.GameObject.Services.ItemGenerationService.Item { public class Item : ItemDto { } } ================================================ FILE: src/NosCore.GameObject/Services/ItemGenerationService/Item/ItemInstance.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using System; namespace NosCore.GameObject.Services.ItemGenerationService.Item { public class ItemInstance : ItemInstanceDto, IItemInstance { public ItemInstance(Item item) { Id = Guid.NewGuid(); Item = item; ItemVNum = item.VNum; } [Obsolete] public ItemInstance() { } public Item Item { get; set; } = null!; public object Clone() { return (ItemInstance)MemberwiseClone(); } } } ================================================ FILE: src/NosCore.GameObject/Services/ItemGenerationService/Item/SpecialistInstance.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using System; namespace NosCore.GameObject.Services.ItemGenerationService.Item { public class SpecialistInstance : SpecialistInstanceDto, IItemInstance { public SpecialistInstance(Item item) { Id = Guid.NewGuid(); Item = item; ItemVNum = item.VNum; } [Obsolete] public SpecialistInstance() { } public Item Item { get; set; } = null!; public object Clone() { return (SpecialistInstance)MemberwiseClone(); } } } ================================================ FILE: src/NosCore.GameObject/Services/ItemGenerationService/Item/UsableInstance.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using System; namespace NosCore.GameObject.Services.ItemGenerationService.Item { public class UsableInstance : UsableInstanceDto, IItemInstance { public UsableInstance(Item item) { Item = item; ItemVNum = item.VNum; } [Obsolete] public UsableInstance() { } public Item Item { get; set; } = null!; public object Clone() { return (UsableInstance)MemberwiseClone(); } } } ================================================ FILE: src/NosCore.GameObject/Services/ItemGenerationService/Item/WearableInstance.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Items; using NosCore.Packets.Enumerations; using NosCore.Shared.Helpers; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; namespace NosCore.GameObject.Services.ItemGenerationService.Item { public class WearableInstance : WearableInstanceDto, IItemInstance { private readonly ILogger<WearableInstance> _logger = null!; private readonly ILogLanguageLocalizer<LogLanguageKey> _logLanguage = null!; public WearableInstance(Item item, ILogger<WearableInstance> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { Id = Guid.NewGuid(); Item = item; ItemVNum = item.VNum; _logger = logger; _logLanguage = logLanguage; } [Obsolete] public WearableInstance() { } public bool IsBound => BoundCharacterId.HasValue && (Item?.ItemType != ItemType.Armor) && (Item?.ItemType != ItemType.Weapon); public Item Item { get; set; } = null!; public object Clone() { return (WearableInstance)MemberwiseClone(); } public void SetRarityPoint() { switch (Item.EquipmentSlot) { case EquipmentType.MainWeapon: case EquipmentType.SecondaryWeapon: { var point = 0; //todo CharacterHelper.Instance.RarityPoint(Rare, Item.IsHeroic ? (short) (95 + Item.LevelMinimum) : Item.LevelMinimum); Concentrate = 0; HitRate = 0; DamageMinimum = 0; DamageMaximum = 0; if (Rare >= 0) { for (var i = 0; i < point; i++) { var rndn = RandomHelper.Instance.RandomNumber(0, 3); if (rndn == 0) { Concentrate++; HitRate++; } else { DamageMinimum++; DamageMaximum++; } } } else { for (var i = 0; i > Rare * 10; i--) { DamageMinimum--; DamageMaximum--; } } } break; case EquipmentType.Armor: { var point = 0; //todo CharacterHelper.Instance.RarityPoint(Rare, Item.IsHeroic ? (short) (95 + Item.LevelMinimum) : Item.LevelMinimum); DefenceDodge = 0; DistanceDefenceDodge = 0; DistanceDefence = 0; MagicDefence = 0; CloseDefence = 0; if (Rare < 0) { for (var i = 0; i > Rare * 10; i--) { DistanceDefence--; MagicDefence--; CloseDefence--; } return; } for (var i = 0; i < point; i++) { var rndn = RandomHelper.Instance.RandomNumber(0, 3); if (rndn == 0) { DefenceDodge++; DistanceDefenceDodge++; } else { DistanceDefence++; MagicDefence++; CloseDefence++; } } } break; default: _logger.LogError(_logLanguage[LogLanguageKey.UNKNOWN_EQUIPMENTTYPE], Item.EquipmentSlot); break; } } } } ================================================ FILE: src/NosCore.GameObject/Services/ItemGenerationService/ItemGenerationService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Items; using NosCore.Data.StaticEntities; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; namespace NosCore.GameObject.Services.ItemGenerationService { public class ItemGenerationService( List<ItemDto> items, ILoggerFactory loggerFactory, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : IItemGenerationService { public IItemInstance Convert(IItemInstanceDto k) { IItemInstance item = k switch { BoxInstanceDto _ => k.Adapt<BoxInstance>(), SpecialistInstanceDto _ => k.Adapt<SpecialistInstance>(), WearableInstanceDto _ => k.Adapt<WearableInstance>(), UsableInstanceDto _ => k.Adapt<UsableInstance>(), _ => k.Adapt<ItemInstance>() }; var itemDto = items.Find(s => s.VNum == k.ItemVNum); if (itemDto == null) { throw new InvalidOperationException(logLanguage[LogLanguageKey.UNBOUND_ITEM_DETECTED]); } item.Item = itemDto.Adapt<Item.Item>(); return item; } public IItemInstance Create(short itemToCreateVNum) => Create(itemToCreateVNum, 1); public IItemInstance Create(short itemToCreateVNum, short amount) => Create(itemToCreateVNum, amount, 0); public IItemInstance Create(short itemToCreateVNum, short amount, sbyte rare) => Create(itemToCreateVNum, amount, rare, 0); public IItemInstance Create(short itemToCreateVNum, short amount, sbyte rare, byte upgrade) => Create(itemToCreateVNum, amount, rare, upgrade, 0); public IItemInstance Create(short itemToCreateVNum, short amount, sbyte rare, byte upgrade, byte design) => Generate(itemToCreateVNum, amount, rare, upgrade, design); public IItemInstance Generate(short itemToCreateVNum, short amount, sbyte rare, byte upgrade, byte design) { var itemToCreate = items.Find(s => s.VNum == itemToCreateVNum)!.Adapt<Item.Item>(); switch (itemToCreate.Type) { case NoscorePocketType.Miniland: return new ItemInstance(itemToCreate) { Amount = amount, DurabilityPoint = itemToCreate.MinilandObjectPoint / 2 }; case NoscorePocketType.Equipment: switch (itemToCreate.ItemType) { case ItemType.Specialist: return new SpecialistInstance(itemToCreate) { SpLevel = 1, Amount = amount, Design = design, Upgrade = upgrade }; case ItemType.Box: return new BoxInstance(itemToCreate) { Amount = amount, Upgrade = upgrade, Design = design }; default: var wear = new WearableInstance(itemToCreate, loggerFactory.CreateLogger<WearableInstance>(), logLanguage) { Amount = amount, Rare = rare, Upgrade = upgrade, Design = design }; if (wear.Rare > 0) { wear.SetRarityPoint(); } return wear; } default: return new ItemInstance(itemToCreate) { Amount = amount }; } } } } ================================================ FILE: src/NosCore.GameObject/Services/ItemStorage/ISlotBasedStorage.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.ItemGenerationService.Item; using System; using System.Collections.Generic; namespace NosCore.GameObject.Services.ItemStorage { public interface ISlotBasedStorage<TItem, TSlotType> where TItem : class, ISlotItem where TSlotType : struct, Enum { int GetMaxSlots(TSlotType slotType); TItem? GetBySlot(short slot, TSlotType slotType); TItem? GetById(Guid id); IEnumerable<TItem> GetAllBySlotType(TSlotType slotType); IEnumerable<TItem> GetAll(); short? GetFreeSlot(TSlotType slotType); bool HasFreeSlot(TSlotType slotType); int CountBySlotType(TSlotType slotType); int CountItem(int itemVNum); } public interface IMutableSlotBasedStorage<TItem, TSlotType> : ISlotBasedStorage<TItem, TSlotType> where TItem : class, ISlotItem where TSlotType : struct, Enum { List<TItem>? AddItem(TItem item, TSlotType? slotType = null, short? slot = null); TItem? RemoveBySlot(short slot, TSlotType slotType); TItem? RemoveById(Guid id); TItem? RemoveItemAmount(short amount, Guid id); TItem? MoveItem(short sourceSlot, TSlotType sourceType, TSlotType targetType, short? targetSlot = null, bool swap = false); bool TryMoveItem(TSlotType slotType, short sourceSlot, short amount, short destinationSlot, out TItem? sourcePocket, out TItem? destinationPocket); bool EnoughPlace(List<IItemInstance> items, TSlotType slotType); } } ================================================ FILE: src/NosCore.GameObject/Services/ItemStorage/ISlotItem.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.ItemGenerationService.Item; using System; namespace NosCore.GameObject.Services.ItemStorage { public interface ISlotItem { Guid Id { get; } short Slot { get; set; } IItemInstance? ItemInstance { get; } } public interface ISlotItem<TSlotType> : ISlotItem where TSlotType : struct, Enum { TSlotType SlotType { get; set; } } } ================================================ FILE: src/NosCore.GameObject/Services/ItemStorage/SlotStorageHelper.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.ItemGenerationService.Item; using System; using System.Collections.Generic; using System.Linq; namespace NosCore.GameObject.Services.ItemStorage { public static class SlotStorageHelper { public static short? FindFreeSlot<TItem>( IEnumerable<TItem> items, Func<TItem, short> slotSelector, int maxSlots) where TItem : class { if (maxSlots <= 0 || maxSlots > short.MaxValue) { return null; } var occupiedSlots = new HashSet<short>(items.Select(slotSelector)); for (short slot = 0; slot < maxSlots; slot++) { if (!occupiedSlots.Contains(slot)) { return slot; } } return null; } public static List<TItem> StackItems<TItem>( IEnumerable<TItem> existingItems, TItem newItem, Func<TItem, IItemInstance?> itemInstanceSelector, Action<TItem, short> setAmount, short maxItemAmount, int maxSlots, int currentCount) where TItem : class { var result = new List<TItem>(); var newItemInstance = itemInstanceSelector(newItem); if (newItemInstance == null) { return result; } var slotNotFull = existingItems .Where(i => { var inst = itemInstanceSelector(i); return inst != null && inst.ItemVNum == newItemInstance.ItemVNum && inst.Amount < maxItemAmount; }) .ToList(); var freeSlotCount = maxSlots - currentCount; var totalCapacity = freeSlotCount * maxItemAmount + slotNotFull.Sum(s => maxItemAmount - (itemInstanceSelector(s)?.Amount ?? 0)); if (newItemInstance.Amount > totalCapacity) { return result; } foreach (var existingSlot in slotNotFull) { var existingInstance = itemInstanceSelector(existingSlot); if (existingInstance == null || newItemInstance.Amount <= 0) { continue; } var combinedAmount = existingInstance.Amount + newItemInstance.Amount; var maxAmount = combinedAmount > maxItemAmount ? maxItemAmount : combinedAmount; var remaining = (short)(existingInstance.Amount + newItemInstance.Amount - maxAmount); existingInstance.Amount = (short)maxAmount; newItemInstance.Amount = remaining; result.Add(existingSlot); } return result; } public static bool CanStack(IItemInstance? itemInstance) { if (itemInstance == null) { return false; } var itemType = itemInstance.Item?.Type; return itemType == Data.Enumerations.NoscorePocketType.Etc || itemType == Data.Enumerations.NoscorePocketType.Main; } public static bool ValidateEnoughPlace<TItem>( IEnumerable<TItem> existingItems, List<IItemInstance> itemsToAdd, Func<TItem, IItemInstance?> itemInstanceSelector, short maxItemAmount, int maxSlots, bool isStackable) where TItem : class { var existingList = existingItems.ToList(); var currentCount = existingList.Count; var availableSlots = maxSlots - currentCount; foreach (var itemGroup in itemsToAdd.GroupBy(s => s.ItemVNum)) { var amount = itemGroup.Sum(s => s.Amount); if (isStackable) { var existingCapacity = existingList .Where(s => itemInstanceSelector(s)?.ItemVNum == itemGroup.Key) .Sum(s => maxItemAmount - (itemInstanceSelector(s)?.Amount ?? 0)); var needsNewSlots = amount - existingCapacity; if (needsNewSlots > 0) { var slotsNeeded = (int)Math.Ceiling((double)needsNewSlots / maxItemAmount); availableSlots -= slotsNeeded; } } else { availableSlots -= itemGroup.Count(); } if (availableSlots < 0) { return false; } } return true; } public static (TItem? Source, TItem? Destination) SwapItems<TItem>( TItem source, TItem destination, Action<TItem, short> setSlot) where TItem : class, ISlotItem { var sourceSlot = source.Slot; var destSlot = destination.Slot; setSlot(source, destSlot); setSlot(destination, sourceSlot); return (source, destination); } public static TItem? SplitItem<TItem>( TItem source, short amount, short destinationSlot, Func<IItemInstance, Guid, short, TItem> createNewItem) where TItem : class, ISlotItem { var sourceInstance = source.ItemInstance; if (sourceInstance == null || sourceInstance.Amount < amount) { return null; } var clonedInstance = (IItemInstance)sourceInstance.Clone(); sourceInstance.Amount -= amount; clonedInstance.Amount = amount; clonedInstance.Id = Guid.NewGuid(); return createNewItem(clonedInstance, Guid.NewGuid(), destinationSlot); } public static bool TryStackOntoExisting<TItem>( TItem source, TItem destination, short amount, short maxItemAmount, Action<TItem>? removeSource = null) where TItem : class, ISlotItem { var sourceInstance = source.ItemInstance; var destInstance = destination.ItemInstance; if (sourceInstance == null || destInstance == null) { return false; } if (sourceInstance.ItemVNum != destInstance.ItemVNum) { return false; } var totalAmount = destInstance.Amount + amount; if (totalAmount > maxItemAmount) { var overflow = totalAmount - maxItemAmount; destInstance.Amount = maxItemAmount; sourceInstance.Amount = (short)overflow; } else { destInstance.Amount = (short)totalAmount; sourceInstance.Amount -= amount; if (sourceInstance.Amount == 0) { removeSource?.Invoke(source); } } return true; } } } ================================================ FILE: src/NosCore.GameObject/Services/LoginService/ILoginService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Packets.ClientPackets.Login; using NosCore.Shared.Enumerations; using System.Threading.Tasks; namespace NosCore.GameObject.Services.LoginService { public interface ILoginService { Task LoginAsync(string? username, string md5String, ClientVersionSubPacket clientVersion, Networking.ClientSession.ClientSession clientSession, string passwordToken, bool useApiAuth, RegionType language); } } ================================================ FILE: src/NosCore.GameObject/Services/LoginService/LoginService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Character; using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.Networking.SessionRef; using NosCore.Packets.ClientPackets.Login; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Login; using NosCore.Shared.Enumerations; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Services.LoginService { public class LoginService(IOptions<LoginConfiguration> loginConfiguration, IDao<AccountDto, long> accountDao, IAuthHub authHttpClient, IPubSubHub pubSubHub, IChannelHub channelHub, IDao<CharacterDto, long> characterDao, ISessionRefHolder sessionRefHolder) : ILoginService { public async Task LoginAsync(string? username, string md5String, ClientVersionSubPacket clientVersion, Networking.ClientSession.ClientSession clientSession, string passwordToken, bool useApiAuth, RegionType language) { try { clientSession.SessionId = clientSession.Channel?.Id != null ? sessionRefHolder[clientSession.Channel.Id].SessionId : 0; if (((loginConfiguration.Value.ClientVersion != null) && (clientVersion != loginConfiguration.Value.ClientVersion)) || ((loginConfiguration.Value.Md5String != null) && (md5String != loginConfiguration.Value.Md5String))) { await clientSession.SendPacketAsync(new FailcPacket { Type = LoginFailType.OldClient }); await clientSession.DisconnectAsync(); return; } if (useApiAuth) { username = await authHttpClient.GetAwaitingConnectionAsync(null, passwordToken, clientSession.SessionId); } var acc = await accountDao.FirstOrDefaultAsync(s => s.Name.ToLower() == (username ?? "").ToLower()); if ((acc != null) && (acc.Name != username)) { await clientSession.SendPacketAsync(new FailcPacket { Type = LoginFailType.WrongCaps }); await clientSession.DisconnectAsync(); return; } if ((acc == null) || (!useApiAuth && !string.Equals(acc.Password?.ToUpper(), passwordToken, StringComparison.Ordinal))) { await clientSession.SendPacketAsync(new FailcPacket { Type = LoginFailType.AccountOrPasswordWrong }); await clientSession.DisconnectAsync(); return; } switch (acc.Authority) { case AuthorityType.Banned: await clientSession.SendPacketAsync(new FailcPacket { Type = LoginFailType.Banned }); break; case AuthorityType.Closed: case AuthorityType.Unconfirmed: await clientSession.SendPacketAsync(new FailcPacket { Type = LoginFailType.CantConnect }); break; default: var connectedAccount = await pubSubHub.GetSubscribersAsync(); var comChannels = await channelHub.GetCommunicationChannels(); var servers = comChannels.Where(x => x.Type == ServerType.WorldServer).ToList(); if (connectedAccount.Any(x => x.Name == acc.Name)) { await clientSession.SendPacketAsync(new FailcPacket { Type = LoginFailType.AlreadyConnected }); await clientSession.DisconnectAsync(); return; } acc.Language = language; acc = await accountDao.TryInsertOrUpdateAsync(acc); if (servers.Count <= 0) { await clientSession.SendPacketAsync(new FailcPacket { Type = LoginFailType.CantConnect }); await clientSession.DisconnectAsync(); return; } if (servers.Count(s => !s.IsMaintenance) == 0 && acc.Authority < AuthorityType.GameMaster) { await clientSession.SendPacketAsync(new FailcPacket { Type = LoginFailType.Maintenance }); await clientSession.DisconnectAsync(); return; } var subpacket = new List<NsTeStSubPacket?>(); var i = 1; var nstest = new NsTestPacket { AccountName = username, SubPacket = subpacket, SessionId = clientSession.SessionId, Unknown = useApiAuth ? 2 : (int?)null, RegionType = language }; var serverId = 0; foreach (var server in servers.OrderBy(s => s.ServerId)) { if (serverId != server.ServerId) { i = 1; serverId = server.ServerId; } var channelcolor = (int)Math.Round(connectedAccount.Count(x => x.ChannelId == server.ServerId) / (server.ConnectedAccountLimit + 1) * 20D) + 1; subpacket.Add(new NsTeStSubPacket { Host = server.DisplayHost ?? server.Host, Port = server.DisplayPort ?? server.Port, Color = channelcolor, WorldCount = serverId, WorldId = i, Name = server.Name, }); nstest.ServerCharacters[serverId].WorldId = i; nstest.ServerCharacters[serverId].CharacterCount = (byte)characterDao.Where(o => o.AccountId == acc.AccountId && o.State == CharacterState.Active && o.ServerId == serverId)!.Count(); i++; } subpacket.Add(new NsTeStSubPacket { Host = "-1", Port = null, Color = null, WorldCount = 10000, WorldId = 10000, Name = useApiAuth ? "4" : "1" }); //useless server to end the client reception await clientSession.SendPacketAsync(nstest); return; } await clientSession.DisconnectAsync(); } catch { await clientSession.SendPacketAsync(new FailcPacket { Type = LoginFailType.UnhandledError }); await clientSession.DisconnectAsync(); } } } } ================================================ FILE: src/NosCore.GameObject/Services/MailService/Gift.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.GameObject.Services.MailService { public class Gift { public Gift() { } public Gift(short vnum, byte amount, short design = 0, bool isRareRandom = false) { VNum = vnum; Amount = amount; IsRareRandom = isRareRandom; Design = design; } public byte Amount { get; set; } public short Design { get; set; } public short VNum { get; set; } public bool IsRareRandom { get; set; } public bool IsRandomRare { get; set; } } } ================================================ FILE: src/NosCore.GameObject/Services/MailService/GiftHelper.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Data.Dto; using NosCore.Data.WebApi; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; namespace NosCore.GameObject.Services.MailService; public static class GiftHelper { public static MailRequest GenerateMailRequest(IClock clock, ICharacterEntity characterEntity, long receiverId, IItemInstanceDto? itemInstance, short? vnum, short? amount, sbyte? rare, byte? upgrade, bool isNosmall, string? title, string? text) { var equipment = isNosmall ? null : characterEntity.GetEquipmentSubPacket(); var mail = new MailDto { IsOpened = false, Date = clock.GetCurrentInstant(), ReceiverId = receiverId, IsSenderCopy = false, ItemInstanceId = itemInstance?.Id, Title = isNosmall ? "NOSMALL" : title ?? characterEntity.Name, Message = text, SenderId = isNosmall ? null : characterEntity.VisualId, SenderCharacterClass = isNosmall ? null : characterEntity.Class, SenderGender = isNosmall ? null : characterEntity.Gender, SenderHairColor = isNosmall ? null : characterEntity.HairColor, SenderHairStyle = isNosmall ? null : characterEntity.HairStyle, Hat = equipment?.Hat, Armor = equipment?.Armor, MainWeapon = equipment?.MainWeapon, SecondaryWeapon = equipment?.SecondaryWeapon, Mask = equipment?.Mask, Fairy = equipment?.Fairy, CostumeSuit = equipment?.CostumeSuit, CostumeHat = equipment?.CostumeHat, WeaponSkin = equipment?.WeaponSkin, WingSkin = equipment?.WingSkin, SenderMorphId = isNosmall ? null : characterEntity.Morph == 0 ? (short)-1 : characterEntity.Morph }; return new MailRequest { Mail = mail, VNum = vnum, Amount = amount, Rare = rare, Upgrade = upgrade }; } } ================================================ FILE: src/NosCore.GameObject/Services/MailService/IMailService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Json.Patch; using NosCore.Data.Dto; using System.Collections.Generic; using System.Threading.Tasks; using MailData = NosCore.GameObject.InterChannelCommunication.Messages.MailData; namespace NosCore.GameObject.Services.MailService { public interface IMailService { List<MailData> GetMails(long id, long characterId, bool senderCopy); Task<bool> DeleteMailAsync(long id, long characterId, bool senderCopy); Task<MailData?> EditMailAsync(long id, JsonPatch mailData); Task<bool> SendMailAsync(MailDto mail, short? vNum, short? amount, sbyte? rare, byte? upgrade); } } ================================================ FILE: src/NosCore.GameObject/Services/MailService/IParcelRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.InterChannelCommunication.Messages; using System.Collections.Concurrent; namespace NosCore.GameObject.Services.MailService { public interface IParcelRegistry { ConcurrentDictionary<long, MailData> GetMails(long characterId, bool isSenderCopy); MailData? GetMail(long characterId, bool isSenderCopy, long mailId); void AddMail(long characterId, bool isSenderCopy, long mailId, MailData mailData); bool RemoveMail(long characterId, bool isSenderCopy, long mailId, out MailData? mailData); void UpdateMail(long characterId, bool isSenderCopy, long mailId, MailData mailData); long GetNextMailId(long characterId, bool isSenderCopy); } } ================================================ FILE: src/NosCore.GameObject/Services/MailService/MailService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Json.Patch; using NodaTime; using NodaTime.Serialization.SystemTextJson; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.Data.StaticEntities; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.Shared.Enumerations; using System; using System.Collections.Generic; using System.Linq; using System.Text.Json; using System.Threading.Tasks; using DeleteMailData = NosCore.GameObject.InterChannelCommunication.Messages.DeleteMailData; using MailData = NosCore.GameObject.InterChannelCommunication.Messages.MailData; namespace NosCore.GameObject.Services.MailService { public class MailService(IDao<MailDto, long> mailDao, IDao<IItemInstanceDto?, Guid> itemInstanceDao, IPubSubHub pubSubHub, IChannelHub channelHub, List<ItemDto> items, IItemGenerationService itemProvider, IParcelRegistry parcelRegistry, IDao<CharacterDto, long> characterDto) : IMailService { public List<MailData> GetMails(long id, long characterId, bool senderCopy) { var mails = parcelRegistry.GetMails(characterId, false).Values.Concat(parcelRegistry.GetMails(characterId, true).Values); if (id == -1) { return mails.ToList(); } var mail = parcelRegistry.GetMail(characterId, senderCopy, id); if (mail != null) { mails = new[] { mail }; } else { return new List<MailData>(); } return mails.ToList(); } public async Task<bool> DeleteMailAsync(long id, long characterId, bool senderCopy) { var mail = parcelRegistry.GetMail(characterId, senderCopy, id); if (mail == null) { return false; } await mailDao.TryDeleteAsync(mail.MailDto.MailId); if (mail.ItemInstance != null) { await itemInstanceDao.TryDeleteAsync(mail.ItemInstance.Id); } if (!parcelRegistry.RemoveMail(characterId, senderCopy, id, out var maildata) || maildata == null) { return false; } var servers = await channelHub.GetCommunicationChannels(); var accounts = await pubSubHub.GetSubscribersAsync(); var receiver = accounts.FirstOrDefault(s => s.ConnectedCharacter?.Id == characterId && servers.Where(c => c.Type == ServerType.WorldServer).Any(x => x.Id == s.ChannelId)); await NotifyAsync(1, receiver, maildata); return true; } public async Task<MailData?> EditMailAsync(long id, JsonPatch mailData) { var mail = await mailDao.FirstOrDefaultAsync(s => s.MailId == id); if (mail == null) { return null; } var result = mailData.Apply(JsonDocument.Parse(JsonSerializer.SerializeToUtf8Bytes(mail, new JsonSerializerOptions().ConfigureForNodaTime(DateTimeZoneProviders.Tzdb))).RootElement); mail = JsonSerializer.Deserialize<MailDto>(result.GetRawText())!; await mailDao.TryInsertOrUpdateAsync(mail); var targetCharacterId = mail.IsSenderCopy ? (long)mail.SenderId! : mail.ReceiverId; var savedData = parcelRegistry.GetMails(targetCharacterId, mail.IsSenderCopy) .FirstOrDefault(s => s.Value.MailDto.MailId == id); if (savedData.Value.ItemInstance == null || savedData.Value.ReceiverName == null) { return null; } var maildata = await GenerateMailDataAsync(mail, savedData.Value.ItemType, savedData.Value.ItemInstance, savedData.Value.ReceiverName); maildata.MailId = savedData.Value.MailId; parcelRegistry.UpdateMail(mail.IsSenderCopy ? mail.SenderId ?? 0 : mail.ReceiverId, mail.IsSenderCopy, savedData.Key, maildata); return maildata; } public async Task<bool> SendMailAsync(MailDto mail, short? vNum, short? amount, sbyte? rare, byte? upgrade) { var mailref = mail; var receivdto = await characterDto.FirstOrDefaultAsync(s => s.CharacterId == mailref.ReceiverId); if (receivdto == null) { return false; } var receiverName = receivdto.Name!; var it = items.Find(item => item.VNum == vNum); IItemInstanceDto? itemInstance = null; if ((mail?.ItemInstanceId == null) && (vNum != null)) { if (it == null) { return false; } if ((it.ItemType != ItemType.Weapon) && (it.ItemType != ItemType.Armor) && (it.ItemType != ItemType.Specialist)) { upgrade = 0; } else if ((it.ItemType != ItemType.Weapon) && (it.ItemType != ItemType.Armor)) { rare = 0; } if ((rare > 8) || (rare < -2)) { rare = 0; } if ((upgrade > 10) && (it.ItemType != ItemType.Specialist)) { upgrade = 0; } else if ((it.ItemType == ItemType.Specialist) && (upgrade > 15)) { upgrade = 0; } if (amount == 0) { amount = 1; } amount = (it.Type == NoscorePocketType.Etc) || (it.Type == NoscorePocketType.Main) ? amount : 1; itemInstance = itemProvider.Create((short)vNum, amount ?? 1, rare ?? 0, upgrade ?? 0); itemInstance = await itemInstanceDao.TryInsertOrUpdateAsync(itemInstance); mailref.ItemInstanceId = itemInstance?.Id; } var servers = await channelHub.GetCommunicationChannels(); var accounts = await pubSubHub.GetSubscribersAsync(); var receiver = accounts.FirstOrDefault(s => s.ConnectedCharacter?.Id == mailref.ReceiverId && servers.Where(c => c.Type == ServerType.WorldServer).Any(x => x.Id == s.ChannelId)); mailref = await mailDao.TryInsertOrUpdateAsync(mailref); if (itemInstance == null) { return false; } var mailData = await GenerateMailDataAsync(mailref, (short?)it?.ItemType ?? -1, itemInstance, receiverName); parcelRegistry.AddMail(mailref.ReceiverId, mailData.MailDto.IsSenderCopy, mailData.MailId, mailData); await NotifyAsync(0, receiver, mailData); if (mailref.SenderId == null) { return true; } mailref.IsSenderCopy = true; mailref.MailId = 0; itemInstance.Id = new Guid(); itemInstance = await itemInstanceDao.TryInsertOrUpdateAsync(itemInstance); mailref.ItemInstanceId = itemInstance?.Id; mailref = await mailDao.TryInsertOrUpdateAsync(mailref); var mailDataCopy = await GenerateMailDataAsync(mailref, (short?)it?.ItemType ?? -1, itemInstance!, receiverName); parcelRegistry.AddMail(mailref.ReceiverId, mailDataCopy.MailDto.IsSenderCopy, mailDataCopy.MailId, mailDataCopy); await NotifyAsync(0, receiver, mailDataCopy); return true; } private async Task<MailData> GenerateMailDataAsync(MailDto mailref, short itemType, IItemInstanceDto itemInstance, string receiverName) { var nextMailId = parcelRegistry.GetNextMailId(mailref.ReceiverId, mailref.IsSenderCopy); var sender = mailref.SenderId != null ? (await characterDto.FirstOrDefaultAsync(s => s.CharacterId == mailref.SenderId))?.Name : "NOSMALL"; return new MailData { ReceiverName = receiverName, MailId = (short)nextMailId, MailDto = mailref, ItemInstance = (ItemInstanceDto)itemInstance, ItemType = itemType, SenderName = sender }; } private async Task NotifyAsync(byte notifyType, Subscriber? receiver, MailData mailData) { var type = !mailData.MailDto.IsSenderCopy && (mailData.ReceiverName == receiver?.Name) ? mailData.ItemInstance != null ? (byte)0 : (byte)1 : (byte)2; if (receiver == null) { return; } switch (notifyType) { case 0: await pubSubHub.SendMessageAsync(mailData); break; case 1: await pubSubHub.SendMessageAsync(new DeleteMailData() { CharacterId = receiver.ConnectedCharacter!.Id, MailId = (short)mailData.MailId, PostType = type }); break; } } } } ================================================ FILE: src/NosCore.GameObject/Services/MailService/ParcelRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.StaticEntities; using NosCore.GameObject.InterChannelCommunication.Messages; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Services.MailService { public class ParcelRegistry : IParcelRegistry { private readonly ConcurrentDictionary<long, ConcurrentDictionary<bool, ConcurrentDictionary<long, MailData>>> _parcels = new(); private readonly IDao<CharacterDto, long> _characterDao; private readonly IDao<IItemInstanceDto?, Guid> _itemInstanceDao; private readonly List<ItemDto> _items; private readonly IDao<MailDto, long> _mailDao; public ParcelRegistry(IDao<CharacterDto, long> characterDao, IDao<MailDto, long> mailDao, List<ItemDto> items, IDao<IItemInstanceDto?, Guid> itemInstanceDao) { _mailDao = mailDao; _items = items; _characterDao = characterDao; _itemInstanceDao = itemInstanceDao; _ = InitializeAsync(); } public ConcurrentDictionary<long, MailData> GetMails(long characterId, bool isSenderCopy) { EnsureCharacterExists(characterId); return _parcels[characterId][isSenderCopy]; } public MailData? GetMail(long characterId, bool isSenderCopy, long mailId) { EnsureCharacterExists(characterId); return _parcels[characterId][isSenderCopy].TryGetValue(mailId, out var mail) ? mail : null; } public void AddMail(long characterId, bool isSenderCopy, long mailId, MailData mailData) { EnsureCharacterExists(characterId); _parcels[characterId][isSenderCopy].TryAdd(mailId, mailData); } public bool RemoveMail(long characterId, bool isSenderCopy, long mailId, out MailData? mailData) { EnsureCharacterExists(characterId); return _parcels[characterId][isSenderCopy].TryRemove(mailId, out mailData); } public void UpdateMail(long characterId, bool isSenderCopy, long mailId, MailData mailData) { EnsureCharacterExists(characterId); _parcels[characterId][isSenderCopy][mailId] = mailData; } public long GetNextMailId(long characterId, bool isSenderCopy) { EnsureCharacterExists(characterId); return _parcels[characterId][isSenderCopy].Select(s => s.Key).DefaultIfEmpty(-1).Max() + 1; } private void EnsureCharacterExists(long characterId) { if (_parcels.ContainsKey(characterId)) { return; } _parcels.TryAdd(characterId, new ConcurrentDictionary<bool, ConcurrentDictionary<long, MailData>>()); _parcels[characterId].TryAdd(false, new ConcurrentDictionary<long, MailData>()); _parcels[characterId].TryAdd(true, new ConcurrentDictionary<long, MailData>()); } private async Task InitializeAsync() { var mails = _mailDao.LoadAll().ToList(); var idcopy = 0; var idmail = 0; var charactersIds = mails.Select(s => s.ReceiverId) .Union(mails.Where(s => s.SenderId != null).Select(s => (long)s.SenderId!)); var characternames = new Dictionary<long, string?>(); foreach (var characterId in charactersIds) { characternames.Add(characterId, (await _characterDao.FirstOrDefaultAsync(s => s.CharacterId == characterId))?.Name); } foreach (var mail in mails) { var itinst = await _itemInstanceDao.FirstOrDefaultAsync(s => s!.Id == mail.ItemInstanceId); ItemDto? it = null; if (itinst != null) { it = _items.FirstOrDefault(s => s.VNum == itinst.ItemVNum); } var senderName = mail.SenderId == null ? "NOSMALL" : characternames[(long)mail.SenderId]; var receiverName = characternames[mail.ReceiverId]; var mailId = mail.IsSenderCopy ? (short)idcopy : (short)idmail; var targetCharacterId = mail.IsSenderCopy ? mail.SenderId ?? 0 : mail.ReceiverId; AddMail(targetCharacterId, mail.IsSenderCopy, mailId, new MailData { ItemInstance = (ItemInstanceDto?)itinst, SenderName = senderName, ReceiverName = receiverName, MailId = mailId, MailDto = mail, ItemType = (short?)it?.ItemType ?? -1 }); if (mail.IsSenderCopy) { idcopy++; } else { idmail++; } } } } } ================================================ FILE: src/NosCore.GameObject/Services/MapChangeService/IMapChangeService.cs ================================================ using NosCore.GameObject.Networking.ClientSession; using System; using System.Threading.Tasks; namespace NosCore.GameObject.Services.MapChangeService { public interface IMapChangeService { Task ChangeMapInstanceAsync(ClientSession session, Guid mapInstanceId, int? mapX = null, int? mapY = null); Task ChangeMapAsync(ClientSession session, short? mapId = null, short? mapX = null, short? mapY = null); Task ChangeMapByCharacterIdAsync(long characterId, short mapId, short mapX, short mapY); } } ================================================ FILE: src/NosCore.GameObject/Services/MapChangeService/MapChangeService.cs ================================================ using NodaTime; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Core.I18N; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Group; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Map; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Components; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.MapInstanceAccessService; using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.GameObject.Services.MinilandService; using NosCore.Networking; using NosCore.Networking.SessionGroup.ChannelMatcher; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Map; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Services.MapChangeService { public class MapChangeService(IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService, IMapInstanceAccessorService mapInstanceAccessorService, IClock clock, ILogLanguageLocalizer<LogLanguageKey> logLanguage, IMinilandService minilandProvider, ILogger<MapChangeService> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguageLocalizer, IGameLanguageLocalizer gameLanguageLocalizer, ISessionRegistry sessionRegistry, Wolverine.IMessageBus messageBus) : IMapChangeService { public async Task ChangeMapAsync(ClientSession session, short? mapId = null, short? mapX = null, short? mapY = null) { if (!session.HasPlayerEntity) { return; } Guid targetMapInstanceId; if (mapId != null) { var mapInstance = mapInstanceAccessorService.GetBaseMapById((short)mapId); if (mapInstance == null) { logger.LogError( logLanguageLocalizer[LogLanguageKey.MAP_DONT_EXIST, session.Account.Language]); return; } targetMapInstanceId = mapInstance.MapInstanceId; } else { targetMapInstanceId = session.Character.MapInstanceId; } await ChangeMapInstanceAsync(session, targetMapInstanceId, mapX, mapY); } public async Task ChangeMapInstanceAsync(ClientSession session, Guid mapInstanceId, int? mapX = null, int? mapY = null) { if (!session.HasPlayerEntity) { return; } var character = session.Character; if (character.MapInstance == null || character.IsChangingMapInstance) { return; } character.IsChangingMapInstance = true; try { var currentMapInstance = character.MapInstance; var newMapInstance = mapInstanceAccessorService.GetMapInstance(mapInstanceId)!; var characterId = character.CharacterId; if (newMapInstance.MapInstanceType == MapInstanceType.BaseMapInstance) { character.MapId = newMapInstance.Map.MapId; if ((mapX != null) && (mapY != null)) { character.MapX = (short)mapX; character.MapY = (short)mapY; } } var oldWorld = character.World; var oldEntity = character.Entity; var identity = oldWorld.TryGetComponent<EntityIdentityComponent>(oldEntity) ?? default; var health = oldWorld.TryGetComponent<HealthComponent>(oldEntity) ?? default; var mana = oldWorld.TryGetComponent<ManaComponent>(oldEntity) ?? default; var position = oldWorld.TryGetComponent<PositionComponent>(oldEntity) ?? default; var visual = oldWorld.TryGetComponent<VisualComponent>(oldEntity) ?? default; var appearance = oldWorld.TryGetComponent<AppearanceComponent>(oldEntity) ?? default; var experience = oldWorld.TryGetComponent<ExperienceComponent>(oldEntity) ?? default; var goldComp = oldWorld.TryGetComponent<GoldComponent>(oldEntity) ?? default; var reputation = oldWorld.TryGetComponent<ReputationComponent>(oldEntity) ?? default; var sp = oldWorld.TryGetComponent<SpComponent>(oldEntity) ?? default; var nameComp = oldWorld.TryGetComponent<NameComponent>(oldEntity) ?? default; var combat = oldWorld.TryGetComponent<CombatComponent>(oldEntity) ?? default; var buffs = oldWorld.TryGetComponent<BuffStateComponent>(oldEntity) ?? default; var playerComp = oldWorld.TryGetComponent<PlayerComponent>(oldEntity) ?? default; var playerFlags = oldWorld.TryGetComponent<PlayerFlagsComponent>(oldEntity) ?? default; var timing = oldWorld.TryGetComponent<TimingComponent>(oldEntity) ?? default; var speedComp = oldWorld.TryGetComponent<SpeedComponent>(oldEntity) ?? default; var state = oldWorld.TryGetComponent<PlayerStateComponent>(oldEntity) ?? default; var network = oldWorld.TryGetComponent<PlayerNetworkComponent>(oldEntity) ?? default; var context = oldWorld.TryGetComponent<PlayerContextComponent>(oldEntity) ?? default; var inventory = oldWorld.TryGetComponent<PlayerInventoryComponent>(oldEntity) ?? default; var social = oldWorld.TryGetComponent<PlayerSocialComponent>(oldEntity) ?? default; var requests = oldWorld.TryGetComponent<PlayerRequestsComponent>(oldEntity) ?? default; if (session.Channel?.Id != null) { currentMapInstance.Sessions.Remove(session.Channel); } await session.SendPacketAsync(currentMapInstance.GenerateCMap(false)); currentMapInstance.LastUnregister = clock.GetCurrentInstant(); await LeaveMapAsync(session); if (currentMapInstance.Sessions.Count == 0) { currentMapInstance.IsSleeping = true; } var playerEntity = newMapInstance.EcsWorld.ClonePlayer( identity, health, mana, position with { MapInstanceId = newMapInstance.MapInstanceId, PositionX = mapX != null ? (short)mapX : position.PositionX, PositionY = mapY != null ? (short)mapY : position.PositionY }, visual with { IsSitting = false }, appearance, experience, goldComp, reputation, sp, nameComp, combat, buffs, playerComp, playerFlags, timing, speedComp, state, network, context with { MapInstance = newMapInstance }, inventory, social, requests); session.SetPlayerEntity(playerEntity, newMapInstance.EcsWorld); character = session.Character; character.Group.LeaveGroup(character); character.Group.JoinGroup(character); var fairy = character.InventoryService.LoadBySlotAndType((byte)EquipmentType.Fairy, NoscorePocketType.Wear)?.ItemInstance as WearableInstance; var group = character.Group; var channelId = character.Channel?.Id; var titInfoPacket = character.GenerateTitInfo(); var accountLanguage = character.AccountLanguage; var invisible = character.Invisible; var authority = character.Authority; await session.SendPacketAsync(character.GenerateCInfo(gameLanguageLocalizer)); await session.SendPacketAsync(character.GenerateCMode()); await session.SendPacketAsync(character.GenerateEq()); await session.SendPacketAsync(character.GenerateEquipment()); await session.SendPacketAsync(character.GenerateLev(experienceService, jobExperienceService, heroExperienceService)); await session.SendPacketAsync(character.GenerateStat()); await session.SendPacketAsync(character.GenerateAt(newMapInstance.Map.MapId, newMapInstance.Map.Music)); await session.SendPacketAsync(character.GenerateCond()); await session.SendPacketAsync(newMapInstance.GenerateCMap(true)); await session.SendPacketAsync(character.GeneratePairy(fairy)); await session.SendPacketsAsync(newMapInstance.GetMapItems(accountLanguage)); await session.SendPacketsAsync(newMapInstance.MapDesignObjects.Values.Select(mp => mp.GenerateEffect())); var minilandPortals = minilandProvider .GetMinilandPortals(characterId) .Where(s => s.SourceMapInstanceId == mapInstanceId) .ToList(); if (minilandPortals.Count > 0) { await session.SendPacketsAsync(minilandPortals.Select(s => s.GenerateGp())); } if (group != null) { await session.SendPacketAsync(group.GeneratePinit()); if (!group.IsEmpty) { await session.SendPacketsAsync(group.GeneratePst()); } if (group.Type == GroupType.Group && group.Count > 1) { await newMapInstance.SendPacketAsync(group.GeneratePidx(character)); } } var mapSessions = sessionRegistry.GetSessions(s => s.HasPlayerEntity && s != session && s.Character.MapInstanceId == mapInstanceId); await Task.WhenAll(mapSessions.Select(async s => { var otherCharacter = s.Character; var prefix = otherCharacter.Authority == AuthorityType.Moderator ? $"[{gameLanguageLocalizer[LanguageKey.SUPPORT, otherCharacter.AccountLanguage]}]" : string.Empty; await session.SendPacketAsync(otherCharacter.GenerateIn(prefix)); var shop = otherCharacter.Shop; if (shop != null) { await session.SendPacketAsync(otherCharacter.GeneratePFlag()); await session.SendPacketAsync(otherCharacter.GenerateShop(session.Account.Language)); } })); await newMapInstance.SendPacketAsync(titInfoPacket); newMapInstance.IsSleeping = false; if (channelId != null) { newMapInstance.Sessions.Add(session.Channel!); if (!invisible) { var prefix = authority == AuthorityType.Moderator ? $"[{gameLanguageLocalizer[LanguageKey.SUPPORT, accountLanguage]}]" : string.Empty; await newMapInstance.SendPacketAsync(character.GenerateIn(prefix), new EveryoneBut(channelId)); } } await messageBus.PublishAsync(new Messaging.Events.MapInstanceEnteredEvent(session, newMapInstance)); } catch (Exception ex) { logger.LogWarning(ex, logLanguage[LogLanguageKey.ERROR_CHANGE_MAP]); } finally { if (session.HasPlayerEntity) { session.Character.IsChangingMapInstance = false; } } } public async Task ChangeMapByCharacterIdAsync(long characterId, short mapId, short mapX, short mapY) { var sender = sessionRegistry.GetSenderByCharacterId(characterId); if (sender is ClientSession session) { await ChangeMapAsync(session, mapId, mapX, mapY); } } private async Task LeaveMapAsync(ClientSession session) { var character = session.Character; var outPacket = character.GenerateOut(); var mapInstance = character.MapInstance; var channelId = session.Channel!.Id; await mapInstance.SendPacketAsync(outPacket, new EveryoneBut(channelId)); session.ClearPlayerEntity(); await session.SendPacketAsync(new MapOutPacket()); } } } ================================================ FILE: src/NosCore.GameObject/Services/MapInstanceAccessService/IMapInstanceAccessService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.MapInstanceGenerationService; using System; namespace NosCore.GameObject.Services.MapInstanceAccessService { public interface IMapInstanceAccessorService { MapInstance? GetMapInstance(Guid id); MapInstance? GetBaseMapById(short mapId); } } ================================================ FILE: src/NosCore.GameObject/Services/MapInstanceAccessService/MapInstanceAccessService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.MapInstanceGenerationService; using System; namespace NosCore.GameObject.Services.MapInstanceAccessService { public class MapInstanceAccessorService(IMapInstanceRegistry mapInstanceRegistry) : IMapInstanceAccessorService { public MapInstance? GetMapInstance(Guid id) => mapInstanceRegistry.GetById(id); public MapInstance? GetBaseMapById(short mapId) => mapInstanceRegistry.GetBaseMapById(mapId); } } ================================================ FILE: src/NosCore.GameObject/Services/MapInstanceGenerationService/IMapInstanceGenerationService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.Map; using System; using System.Threading.Tasks; namespace NosCore.GameObject.Services.MapInstanceGenerationService { public interface IMapInstanceGeneratorService { Task AddMapInstanceAsync(MapInstance mapInstance); Task InitializeAsync(); Task RemoveMapAsync(Guid guid); MapInstance CreateMapInstance(Map.Map map, Guid guid, bool shopAllowed, MapInstanceType normalInstance); } } ================================================ FILE: src/NosCore.GameObject/Services/MapInstanceGenerationService/IMapInstanceRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; namespace NosCore.GameObject.Services.MapInstanceGenerationService { public interface IMapInstanceRegistry { MapInstance? GetById(Guid mapInstanceId); MapInstance? GetBaseMapById(short mapId); IEnumerable<MapInstance> GetAll(); void Register(Guid mapInstanceId, MapInstance mapInstance); bool Unregister(Guid mapInstanceId, out MapInstance? mapInstance); void SetAll(IDictionary<Guid, MapInstance> mapInstances); } } ================================================ FILE: src/NosCore.GameObject/Services/MapInstanceGenerationService/MapInstance.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Map; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Components; using NosCore.GameObject.Ecs.Systems; using NosCore.GameObject.Map; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.MapChangeService; using NosCore.GameObject.Services.MapItemGenerationService; using NosCore.GameObject.Services.MinilandService; using NosCore.Networking; using NosCore.Networking.SessionGroup; using NosCore.Packets.Interfaces; using NosCore.PathFinder.Interfaces; using NosCore.Packets.ServerPackets.MiniMap; using NosCore.Shared.Enumerations; using NosCore.Shared.Helpers; using Microsoft.Extensions.Logging; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Reactive.Linq; using System.Reactive.Subjects; using System.Threading.Tasks; namespace NosCore.GameObject.Services.MapInstanceGenerationService { public class MapInstance : IBroadcastable, IDisposable { public short MaxPacketsBuffer { get; } = 250; private readonly ILogger<MapInstance> _logger; private readonly IMapItemGenerationService _mapItemGenerationService; private bool _isSleeping; private bool _isSleepingRequest; private ConcurrentDictionary<int, MonsterComponentBundle> _monsters; private ConcurrentDictionary<int, NpcComponentBundle> _npcs; private readonly VisibilitySystem _visibilitySystem; public ConcurrentDictionary<Guid, MapDesignObject> MapDesignObjects = new(); private readonly IClock _clock; private readonly IMapChangeService _mapChangeService; private readonly ISessionRegistry _sessionRegistry; private readonly IHeuristic _distanceCalculator; private readonly IMonsterAi? _monsterAi; private readonly IBuffService? _buffService; private readonly IRegenerationService? _regenerationService; private readonly IBattleService? _battleService; private readonly ConcurrentDictionary<long, (MonsterComponentBundle Monster, Instant RespawnAt)> _pendingRespawns = new(); public MapWorld EcsWorld { get; } public MapInstance(Map.Map map, Guid guid, bool shopAllowed, MapInstanceType type, IMapItemGenerationService mapItemGenerationService, ILogger<MapInstance> logger, IClock clock, IMapChangeService mapChangeService, ISessionGroupFactory sessionGroupFactory, ISessionRegistry sessionRegistry, IHeuristic distanceCalculator, IMonsterAi? monsterAi = null, IBuffService? buffService = null, IRegenerationService? regenerationService = null, IBattleService? battleService = null) { LastPackets = new ConcurrentQueue<IPacket>(); XpRate = 1; DropRate = 1; ShopAllowed = shopAllowed; MapInstanceType = type; Map = map; MapInstanceId = guid; Portals = new List<Portal>(); _monsters = new ConcurrentDictionary<int, MonsterComponentBundle>(); _npcs = new ConcurrentDictionary<int, NpcComponentBundle>(); _visibilitySystem = new VisibilitySystem(); _isSleeping = true; _clock = clock; LastUnregister = _clock.GetCurrentInstant().Plus(Duration.FromMinutes(-1)); Sessions = sessionGroupFactory.Create(); _mapItemGenerationService = mapItemGenerationService; _logger = logger; _mapChangeService = mapChangeService; _sessionRegistry = sessionRegistry; _distanceCalculator = distanceCalculator; _monsterAi = monsterAi; _buffService = buffService; _regenerationService = regenerationService; _battleService = battleService; EcsWorld = new MapWorld(); } public Instant LastUnregister { get; set; } public int MapItemCount => GetMapItemBundles().Count(); public IEnumerable<MapItemComponentBundle> GetMapItemBundles() { return _visibilitySystem.GetMapItemEntities(EcsWorld) .Select(entity => new MapItemComponentBundle(entity, EcsWorld)); } public MapItemComponentBundle? TryGetMapItem(long visualId) { foreach (var bundle in GetMapItemBundles()) { if (bundle.VisualId == visualId) { return bundle; } } return null; } public bool TryRemoveMapItem(long visualId) { foreach (var entity in _visibilitySystem.GetMapItemEntities(EcsWorld)) { var identity = EcsWorld.TryGetComponent<EntityIdentityComponent>(entity); if (identity?.VisualId == visualId) { EcsWorld.DestroyEntity(entity); return true; } } return false; } public bool IsSleeping { get { if (!_isSleepingRequest || _isSleeping || (LastUnregister.Plus(Duration.FromSeconds(30)) >= _clock.GetCurrentInstant())) { return _isSleeping; } _isSleeping = true; _isSleepingRequest = false; Parallel.ForEach(Monsters.Where(s => s.Life != null), monster => NonPlayableEntityExtension.StopLife(monster)); Parallel.ForEach(Npcs.Where(s => s.Life != null), npc => NonPlayableEntityExtension.StopLife(npc)); return true; } set { if (value) { _isSleepingRequest = true; } else { _isSleeping = false; _isSleepingRequest = false; } } } public int DropRate { get; set; } public Map.Map Map { get; set; } public Guid MapInstanceId { get; set; } public MapInstanceType MapInstanceType { get; set; } public List<MonsterComponentBundle> Monsters { get { return _monsters.Select(s => s.Value).ToList(); } } public List<NpcComponentBundle> Npcs { get { return _npcs.Select(s => s.Value).ToList(); } } public List<Portal> Portals { get; set; } public bool ShopAllowed { get; } public int XpRate { get; set; } private IDisposable? Life { get; set; } public ISessionGroup Sessions { get; set; } public ConcurrentQueue<IPacket> LastPackets { get; } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } public Task KickAsync() { return KickAsync(_ => true); } public async Task KickAsync(Func<ClientSession, bool> filter) { var sessions = _sessionRegistry.GetClientSessionsByMapInstance(MapInstanceId) .Where(s => s.HasPlayerEntity && !s.Character.IsDisconnecting && filter(s)) .ToList(); foreach (var session in sessions) { var character = session.Character; await _mapChangeService.ChangeMapAsync(session, character.MapId, character.MapX, character.MapY); } } public MapItemComponentBundle? PutItem(short amount, IItemInstance inv, ClientSession session) { var random2 = Guid.NewGuid(); var possibilities = new List<(short X, short Y)>(); for (short x = -1; x < 2; x++) { for (short y = -1; y < 2; y++) { possibilities.Add((x, y)); } } short mapX = 0; short mapY = 0; var niceSpot = false; var orderedPossibilities = possibilities.OrderBy(_ => RandomHelper.Instance.RandomNumber()).ToList(); for (var i = 0; (i < orderedPossibilities.Count) && !niceSpot; i++) { mapX = (short)(session.Character.PositionX + orderedPossibilities[i].X); mapY = (short)(session.Character.PositionY + orderedPossibilities[i].Y); if (Map.IsBlockedZone(session.Character.PositionX, session.Character.PositionY, mapX, mapY)) { continue; } niceSpot = true; } if (!niceSpot) { return null; } if ((amount <= 0) || (amount > inv.Amount)) { return null; } var newItemInstance = (IItemInstance)inv.Clone(); newItemInstance.Id = random2; newItemInstance.Amount = amount; var droppedItem = _mapItemGenerationService.Create(this, newItemInstance, mapX, mapY); inv.Amount -= amount; if (inv.Amount == 0) { session.Character.InventoryService.DeleteById(inv.Id); } return droppedItem; } public void LoadMonsters(List<MapMonsterDto> monsters, List<NpcMonsterDto> npcMonsters) { var entries = new Dictionary<int, MonsterComponentBundle>(); foreach (var x in monsters) { var npcMonster = npcMonsters.Find(o => o.NpcMonsterVNum == x.VNum); if (npcMonster == null) { continue; } var entity = EcsWorld.CreateMonster( x.MapMonsterId, npcMonster, this, x.MapX, x.MapY, x.Direction, x.MapX, x.MapY, npcMonster.CanWalk, false, x.IsDisabled); entries[x.MapMonsterId] = new MonsterComponentBundle(entity, EcsWorld); } _monsters = new ConcurrentDictionary<int, MonsterComponentBundle>(entries); } public void LoadNpcs(List<MapNpcDto> npcs, List<NpcMonsterDto> npcMonsters) { var entries = new Dictionary<int, NpcComponentBundle>(); foreach (var x in npcs) { var npcMonster = npcMonsters.Find(o => o.NpcMonsterVNum == x.VNum); if (npcMonster == null) { continue; } var entity = EcsWorld.CreateNpc( x.MapNpcId, npcMonster, this, x.MapX, x.MapY, x.Direction, x.MapX, x.MapY, x.IsMoving, x.IsDisabled, x.Dialog, x.Effect, x.EffectDelay, null); entries[x.MapNpcId] = new NpcComponentBundle(entity, EcsWorld); } _npcs = new ConcurrentDictionary<int, NpcComponentBundle>(entries); } public NpcComponentBundle? GetNpcById(int mapNpcId) => _npcs.TryGetValue(mapNpcId, out var n) ? n : null; public MonsterComponentBundle? GetMonsterById(int mapMonsterId) => _monsters.TryGetValue(mapMonsterId, out var m) ? m : null; public NpcComponentBundle? FindNpc(Func<NpcComponentBundle, bool> predicate) { foreach (var n in _npcs.Values) { if (predicate(n)) return n; } return null; } public MonsterComponentBundle? FindMonster(Func<MonsterComponentBundle, bool> predicate) { foreach (var m in _monsters.Values) { if (predicate(m)) return m; } return null; } public List<IPacket> GetMapItems(RegionType language) { var packets = new List<IPacket>(); // TODO: Parallelize getting of items of mapinstance Portals.ForEach(s => packets.Add(s.GenerateGp())); Monsters.ForEach(s => { packets.Add(s.GenerateIn()); if (s.Size != 10) { packets.Add(s.GenerateCharSc()); } }); Npcs.ForEach(s => { packets.Add(s.GenerateIn()); if (s.Shop != null) { var shopPacket = s.GenerateShop(language); packets.Add(shopPacket); } if (s.Size != 10) { packets.Add(s.GenerateCharSc()); } }); foreach (var mapItem in GetMapItemBundles()) { packets.Add(mapItem.GenerateIn()); } return packets; } public CMapPacket GenerateCMap(bool enter) { return new CMapPacket { Type = 0, Id = Map.MapId, IsEntering = enter }; } public Task StartLifeAsync() { async Task LifeAsync() { try { if (IsSleeping) { return; } await Task.WhenAll(Monsters.Where(s => s.Life == null).Select(monster => monster.StartLifeAsync(_monsterAi, _distanceCalculator, _clock, _logger))); await Task.WhenAll(Npcs.Where(s => s.Life == null).Select(npc => npc.StartLifeAsync(_monsterAi, _distanceCalculator, _clock, _logger))); // Buff expiration: drop any buff whose ExpiresAt is past. Done // per-map so the tick rate matches the life loop (400ms) which is // fine for buffs since their Duration is measured in deciseconds. if (_buffService != null) { foreach (var monster in Monsters) await _buffService.TickAsync(monster).ConfigureAwait(false); foreach (var npc in Npcs) await _buffService.TickAsync(npc).ConfigureAwait(false); foreach (var session in _sessionRegistry.GetClientSessionsByMapInstance(MapInstanceId)) { if (session.HasPlayerEntity) { await _buffService.TickAsync(session.Character).ConfigureAwait(false); } } } // HP/MP regen for connected players on this map — matches OpenNos // Character regen block (sitting 1.5s cadence, standing 2s). The // service throttles internally so calling each 400ms tick is safe. if (_regenerationService != null) { await _regenerationService.TickAsync(this).ConfigureAwait(false); } if (_battleService != null) { await _battleService.TickCooldownResetsAsync(this).ConfigureAwait(false); } await SweepPendingRespawnsAsync().ConfigureAwait(false); } catch (Exception e) { _logger.LogError(e.Message, e); } } Life = Observable.Interval(TimeSpan.FromMilliseconds(400)).Select(_ => LifeAsync()).Subscribe(); return Task.CompletedTask; } // Registered by MonsterRespawnHandler when a monster dies. The map-level life // loop picks it up on the next 400ms tick instead of us spawning a Task.Delay // per corpse. public void ScheduleRespawn(MonsterComponentBundle monster, Instant respawnAt) { _pendingRespawns[monster.VisualId] = (monster, respawnAt); } private async Task SweepPendingRespawnsAsync() { if (_pendingRespawns.IsEmpty) return; var now = _clock.GetCurrentInstant(); foreach (var (visualId, entry) in _pendingRespawns) { if (entry.RespawnAt > now) continue; if (!_pendingRespawns.TryRemove(visualId, out _)) continue; var monster = entry.Monster; if (monster.MapInstance == null) continue; monster.Hp = monster.MaxHp; monster.Mp = monster.MaxMp; monster.IsAlive = true; monster.PositionX = monster.FirstX; monster.PositionY = monster.FirstY; monster.HitList.Clear(); await this.SendPacketAsync(monster.GenerateIn()).ConfigureAwait(false); } } protected virtual void Dispose(bool disposing) { if (!disposing) { return; } Parallel.ForEach(Monsters.Where(s => s.Life != null), monster => NonPlayableEntityExtension.StopLife(monster)); Parallel.ForEach(Npcs.Where(s => s.Life != null), npc => NonPlayableEntityExtension.StopLife(npc)); Life?.Dispose(); Life = null; EcsWorld.Dispose(); } } } ================================================ FILE: src/NosCore.GameObject/Services/MapInstanceGenerationService/MapInstanceGenerationService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using NodaTime; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Map; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Map; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.MapChangeService; using NosCore.GameObject.Services.MapInstanceAccessService; using NosCore.GameObject.Services.MapItemGenerationService; using NosCore.Networking.SessionGroup; using NosCore.PathFinder.Interfaces; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Services.MapInstanceGenerationService { public class MapInstanceGeneratorService(List<MapDto> maps, List<NpcMonsterDto> npcMonsters, List<NpcTalkDto> npcTalks, List<ShopDto> shopDtos, IMapItemGenerationService mapItemGenerationService, IDao<MapNpcDto, int> mapNpcs, IDao<MapMonsterDto, int> mapMonsters, IDao<PortalDto, int> portalDao, IDao<ShopItemDto, int>? shopItems, ILoggerFactory loggerFactory, IMapInstanceRegistry mapInstanceRegistry, IMapInstanceAccessorService mapInstanceAccessorService, IClock clock, ILogLanguageLocalizer<LogLanguageKey> logLanguage, IMapChangeService mapChangeService, ISessionGroupFactory sessionGroupFactory, ISessionRegistry sessionRegistry, IItemGenerationService itemProvider, IHeuristic distanceCalculator, NosCore.GameObject.Services.BattleService.IMonsterAi monsterAi, NosCore.GameObject.Services.BattleService.IBuffService buffService, NosCore.GameObject.Services.BattleService.IRegenerationService regenerationService, NosCore.GameObject.Services.BattleService.IBattleService battleService) : IMapInstanceGeneratorService { public Task AddMapInstanceAsync(MapInstance mapInstance) { mapInstanceRegistry.Register(mapInstance.MapInstanceId, mapInstance); return LoadPortalsAsync(mapInstance, portalDao.Where(s => s.SourceMapId == mapInstance.Map.MapId)?.ToList() ?? new List<PortalDto>()); } public async Task RemoveMapAsync(Guid mapInstanceId) { if (mapInstanceRegistry.Unregister(mapInstanceId, out var mapInstance) && mapInstance != null) { await mapInstance.KickAsync(); } } private readonly ILogger<MapInstanceGeneratorService> _logger = loggerFactory.CreateLogger<MapInstanceGeneratorService>(); public async Task InitializeAsync() { _logger.LogInformation(logLanguage[LogLanguageKey.LOADING_MAPINSTANCES]); try { mapMonsters.LoadAll(); } catch (Exception ex) { Console.WriteLine(ex.Message); } var monsters = mapMonsters.LoadAll().GroupBy(u => u.MapId) .ToDictionary(group => group.Key, group => group.ToList()); var npcs = mapNpcs.LoadAll().GroupBy(u => u.MapId) .ToDictionary(group => group.Key, group => group.ToList()); var portals = portalDao.LoadAll().GroupBy(s => s.SourceMapId).ToDictionary(x => x.Key, x => x.ToList()); var mapsdic = maps.ToDictionary(x => x.MapId, x => Guid.NewGuid()); var mapInstances = maps.Adapt<List<Map.Map>>().ToDictionary( map => mapsdic[map.MapId], map => { var mapinstance = CreateMapInstance(map, mapsdic[map.MapId], map.ShopAllowed, MapInstanceType.BaseMapInstance); if (monsters.TryGetValue(map.MapId, out var monster)) { mapinstance.LoadMonsters(monster, npcMonsters); } if (npcs.TryGetValue(map.MapId, out var npc)) { mapinstance.LoadNpcs(npc, npcMonsters); npc.ForEach(s => { var bundle = mapinstance.GetNpcById(s.MapNpcId); if (bundle == null) { return; } List<ShopItemDto> dtoShopItems = new List<ShopItemDto>(); NpcTalkDto? dialog = null; var shopsOfNpc = shopDtos.Where(o => o.MapNpcId == s.MapNpcId).ToList(); if (shopsOfNpc.Count > 0) { var shopIds = shopsOfNpc.Select(sh => sh.ShopId).ToHashSet(); dtoShopItems = shopItems!.Where(si => shopIds.Contains(si!.ShopId))!.ToList()!; dialog = npcTalks.Find(o => o.DialogId == s.Dialog); } bundle.Value.InitializeShopAndDialog(shopsOfNpc, dialog, dtoShopItems, itemProvider); }); } return mapinstance; }); mapInstanceRegistry.SetAll(mapInstances); await Task.WhenAll(mapInstanceRegistry.GetAll().Select(s => s.StartLifeAsync())); await Task.WhenAll(mapInstanceRegistry.GetAll().Select(mapInstance => portals.TryGetValue(mapInstance.Map.MapId, out var portal) ? LoadPortalsAsync(mapInstance, portal) : Task.CompletedTask)); } public MapInstance CreateMapInstance(Map.Map map, Guid guid, bool shopAllowed, MapInstanceType normalInstance) { return new MapInstance(map, guid, shopAllowed, normalInstance, mapItemGenerationService, loggerFactory.CreateLogger<MapInstance>(), clock, mapChangeService, sessionGroupFactory, sessionRegistry, distanceCalculator, monsterAi, buffService, regenerationService, battleService); } private async Task LoadPortalsAsync(MapInstance mapInstance, List<PortalDto> portals) { var portalList = await Task.WhenAll(portals.Adapt<List<Portal>>().Select(portal => { portal.SourceMapInstanceId = mapInstance.MapInstanceId; if (portal.DestinationMapInstanceId == default) { var destination = mapInstanceAccessorService.GetBaseMapById(portal.DestinationMapId); if (destination == null) { return Task.FromResult(portal); } portal.DestinationMapInstanceId = destination.MapInstanceId; } return Task.FromResult(portal); })); mapInstance.Portals.AddRange(portalList); } } } ================================================ FILE: src/NosCore.GameObject/Services/MapInstanceGenerationService/MapInstanceRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.Map; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; namespace NosCore.GameObject.Services.MapInstanceGenerationService { public class MapInstanceRegistry : IMapInstanceRegistry { private ConcurrentDictionary<Guid, MapInstance> _mapInstances = new(); public MapInstance? GetById(Guid mapInstanceId) => _mapInstances.TryGetValue(mapInstanceId, out var instance) ? instance : null; public MapInstance? GetBaseMapById(short mapId) => _mapInstances.Values.FirstOrDefault(s => s.Map.MapId == mapId && s.MapInstanceType == MapInstanceType.BaseMapInstance); public IEnumerable<MapInstance> GetAll() => _mapInstances.Values; public void Register(Guid mapInstanceId, MapInstance mapInstance) => _mapInstances.TryAdd(mapInstanceId, mapInstance); public bool Unregister(Guid mapInstanceId, out MapInstance? mapInstance) => _mapInstances.TryRemove(mapInstanceId, out mapInstance); public void SetAll(IDictionary<Guid, MapInstance> mapInstances) => _mapInstances = new ConcurrentDictionary<Guid, MapInstance>(mapInstances); } } ================================================ FILE: src/NosCore.GameObject/Services/MapItemGenerationService/IMapItemGenerationService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.MapInstanceGenerationService; namespace NosCore.GameObject.Services.MapItemGenerationService { public interface IMapItemGenerationService { MapItemComponentBundle Create(MapInstance mapInstance, IItemInstance itemInstance, short positionX, short positionY); } } ================================================ FILE: src/NosCore.GameObject/Services/MapItemGenerationService/MapItemGenerationService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Core.Services.IdService; using NosCore.GameObject.Ecs; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.MapInstanceGenerationService; namespace NosCore.GameObject.Services.MapItemGenerationService { public class MapItemGenerationService(IIdService<MapItemComponentBundle> mapItemIdService) : IMapItemGenerationService { public MapItemComponentBundle Create(MapInstance mapInstance, IItemInstance itemInstance, short positionX, short positionY) { var visualId = mapItemIdService.GetNextId(); var entity = mapInstance.EcsWorld.CreateMapItem( visualId, itemInstance.ItemVNum, itemInstance.Amount, mapInstance.MapInstanceId, positionX, positionY, null, Instant.MinValue, itemInstance.Id, itemInstance); return new MapItemComponentBundle(entity, mapInstance.EcsWorld); } } } ================================================ FILE: src/NosCore.GameObject/Services/MinilandService/IMinilandRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; namespace NosCore.GameObject.Services.MinilandService { public interface IMinilandRegistry { Miniland? GetByCharacterId(long characterId); Miniland? GetByMapInstanceId(Guid mapInstanceId); IEnumerable<Miniland> GetAll(); bool ContainsCharacter(long characterId); void Register(long characterId, Miniland miniland); bool Unregister(long characterId, out Miniland? miniland); } } ================================================ FILE: src/NosCore.GameObject/Services/MinilandService/IMinilandService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs; using NosCore.GameObject.Map; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.Packets.Enumerations; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.Services.MinilandService { public interface IMinilandService { Miniland GetMiniland(long character); Task<Guid?> DeleteMinilandAsync(long characterId); Task<Miniland> InitializeAsync(PlayerComponentBundle player, IMapInstanceGeneratorService generatorService); List<Portal> GetMinilandPortals(long characterId); Miniland? GetMinilandFromMapInstanceId(Guid mapInstanceId); void AddMinilandObject(MapDesignObject mapObject, long characterId, InventoryItemInstance minilandobject); Task SetStateAsync(long characterId, MinilandState state); } } ================================================ FILE: src/NosCore.GameObject/Services/MinilandService/MapDesignObject.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using NosCore.GameObject.Services.InventoryService; using NosCore.Packets.ServerPackets.Map; using NosCore.Packets.ServerPackets.Miniland; namespace NosCore.GameObject.Services.MinilandService { public class MapDesignObject : MinilandObjectDto { public short Effect { get; set; } public byte Width { get; set; } public byte Height { get; set; } public short Slot { get; set; } public short DurabilityPoint { get; set; } public bool IsWarehouse { get; set; } public InventoryItemInstance? InventoryItemInstance { get; set; } public GroundEffectPacket GenerateEffect() { return GenerateEffect(false); } public GroundEffectPacket GenerateEffect(bool isRemoval) { return new GroundEffectPacket { Effect = (ushort)Effect, XYCoordinates = $"{MapX}{MapY:00}", MapX = (ushort)MapX, MapY = (ushort)MapY, IsRemoval = isRemoval }; } public MlobjPacket GenerateMapDesignObject() { return GenerateMapDesignObject(false); } public MlobjPacket GenerateMapDesignObject(bool isRemoval) { return new MlobjPacket { InUse = !isRemoval, Slot = Slot, MlobjSubPacket = new MlobjSubPacket { MapX = MapX, MapY = MapY, Width = Width, Height = Height, Unknown = 0, DurabilityPoint = DurabilityPoint, Unknown2 = false, IsWarehouse = IsWarehouse } }; } } } ================================================ FILE: src/NosCore.GameObject/Services/MinilandService/Miniland.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using NosCore.Packets.ServerPackets.Miniland; using System; namespace NosCore.GameObject.Services.MinilandService { public class Miniland : MinilandDto { public Guid MapInstanceId { get; set; } public string? CharacterName { get; set; } public int CurrentMinigame { get; set; } public MlInfoBrPacket GenerateMlinfobr() { return new MlInfoBrPacket { MinilandMusicId = 3800, Name = CharacterName, MinilandMessage = MinilandMessage, DailyVisitCount = DailyVisitCount, Unknown2 = 0, VisitCount = VisitCount }; } public MlinfoPacket GenerateMlinfo() { return new MlinfoPacket { WelcomeMusicInfo = WelcomeMusicInfo, DailyVisitCount = DailyVisitCount, VisitCount = VisitCount, Unknown2 = 0, Unknown3 = 0, MinilandPoint = MinilandPoint, MinilandState = State, MinilandWelcomeMessage = MinilandMessage ?? "", //todo this has a default value in number in the new mlinfo WelcomeMusicInfo2 = WelcomeMusicInfo }; } } } ================================================ FILE: src/NosCore.GameObject/Services/MinilandService/MinilandHelper.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Services.MailService; using System; using System.Collections.Generic; using System.Linq; namespace NosCore.GameObject.Services.MinilandService { public sealed class MinilandHelper { private static MinilandHelper? _instance; private readonly Dictionary<short, Gift[][]> _gifts = new() { { 3117, new[] { new[] {new Gift(2099, 3), new Gift(2100, 3), new Gift(2102, 3)}, new[] { new Gift(1031, 2), new Gift(1032, 2), new Gift(1033, 2), new Gift(1034, 2), new Gift(2205, 1) }, new[] {new Gift(2205, 1), new Gift(2189, 1), new Gift(2034, 2)}, new[] {new Gift(2205, 1), new Gift(2189, 1), new Gift(2034, 2), new Gift(2105, 1)}, new[] {new Gift(2205, 1), new Gift(2189, 1), new Gift(2034, 2), new Gift(2193, 1)} } }, { 3118, new[] { new[] {new Gift(2099, 3), new Gift(2100, 3), new Gift(2102, 3)}, new[] {new Gift(2206, 1), new Gift(2032, 3)}, new[] {new Gift(2206, 1), new Gift(2106, 1), new Gift(2038, 2)}, new[] {new Gift(2206, 1), new Gift(2190, 1), new Gift(2039, 2), new Gift(2109, 1)}, new[] {new Gift(2206, 1), new Gift(2190, 1), new Gift(2040, 2), new Gift(2194, 1)} } }, { 3119, new[] { new[] {new Gift(2099, 3), new Gift(2100, 3), new Gift(2102, 3)}, new[] {new Gift(2027, 15), new Gift(2207, 1)}, new[] {new Gift(2207, 1), new Gift(2046, 2), new Gift(2191, 1)}, new[] {new Gift(2207, 1), new Gift(2047, 2), new Gift(2191, 1), new Gift(2117, 1)}, new[] {new Gift(2207, 1), new Gift(2048, 2), new Gift(2191, 1), new Gift(2195, 1)} } }, { 3120, new[] { new[] {new Gift(2099, 3), new Gift(2100, 3), new Gift(2102, 3)}, new[] {new Gift(2208, 1), new Gift(2017, 10)}, new[] {new Gift(2208, 1), new Gift(2192, 1), new Gift(2042, 2)}, new[] {new Gift(2208, 1), new Gift(2192, 1), new Gift(2043, 2), new Gift(2118, 1)}, new[] {new Gift(2208, 1), new Gift(2192, 1), new Gift(2044, 2), new Gift(2196, 1)} } }, { 3121, new[] { new[] { new Gift(2099, 4), new Gift(2100, 4), new Gift(2102, 4), new Gift(1031, 3), new Gift(1032, 3), new Gift(1033, 3), new Gift(1034, 3) }, new[] {new Gift(2034, 3), new Gift(2205, 1), new Gift(2189, 1)}, new[] {new Gift(2035, 3), new Gift(2193, 1), new Gift(2275, 1)}, new[] {new Gift(2036, 3), new Gift(2193, 1), new Gift(1028, 1)}, new[] { new Gift(2037, 3), new Gift(2193, 1), new Gift(1028, 1), new Gift(1029, 1), new Gift(2197, 1) } } }, { 3122, new[] { new[] {new Gift(2099, 4), new Gift(2100, 4), new Gift(2102, 4), new Gift(2032, 4)}, new[] {new Gift(2038, 3), new Gift(2206, 1), new Gift(2190, 1)}, new[] {new Gift(2039, 3), new Gift(2194, 1), new Gift(2105, 1)}, new[] {new Gift(2040, 3), new Gift(2194, 1), new Gift(1028, 1)}, new[] { new Gift(2041, 3), new Gift(2194, 1), new Gift(1028, 1), new Gift(1029, 1), new Gift(2198, 1) } } }, { 3123, new[] { new[] {new Gift(2099, 4), new Gift(2100, 4), new Gift(2102, 4), new Gift(2047, 15)}, new[] {new Gift(2046, 3), new Gift(2205, 1), new Gift(2189, 1)}, new[] {new Gift(2047, 3), new Gift(2195, 1), new Gift(2117, 1)}, new[] {new Gift(2048, 3), new Gift(2195, 1), new Gift(1028, 1)}, new[] { new Gift(2049, 3), new Gift(2195, 1), new Gift(1028, 1), new Gift(1029, 1), new Gift(2199, 1) } } }, { 3124, new[] { new[] {new Gift(2099, 4), new Gift(2100, 4), new Gift(2102, 4), new Gift(2017, 10)}, new[] {new Gift(2042, 3), new Gift(2192, 1), new Gift(2189, 1)}, new[] {new Gift(2043, 3), new Gift(2196, 1), new Gift(2118, 1)}, new[] {new Gift(2044, 3), new Gift(2196, 1), new Gift(1028, 1)}, new[] { new Gift(2045, 3), new Gift(2196, 1), new Gift(1028, 1), new Gift(1029, 1), new Gift(2200, 1) } } }, { 3125, new[] { new[] {new Gift(2034, 4), new Gift(2189, 2), new Gift(2205, 2)}, new[] {new Gift(2035, 4), new Gift(2105, 2)}, new[] {new Gift(2036, 4), new Gift(2193, 2)}, new[] { new Gift(2037, 4), new Gift(2193, 2), new Gift(2201, 2), new Gift(2226, 2), new Gift(1028, 2), new Gift(1029, 2) }, new[] { new Gift(2213, 1), new Gift(2193, 2), new Gift(2034, 2), new Gift(2226, 2), new Gift(1030, 2) } } }, { 3126, new[] { new[] {new Gift(2038, 4), new Gift(2106, 2), new Gift(2206, 2)}, new[] {new Gift(2039, 4), new Gift(2109, 2)}, new[] {new Gift(2040, 4), new Gift(2194, 2)}, new[] { new Gift(2040, 4), new Gift(2194, 2), new Gift(2201, 2), new Gift(2231, 2), new Gift(1028, 2), new Gift(1029, 2) }, new[] { new Gift(2214, 1), new Gift(2194, 1), new Gift(2231, 2), new Gift(2202, 1), new Gift(1030, 2) } } }, { 3127, new[] { new[] {new Gift(2046, 4), new Gift(2207, 2)}, new[] {new Gift(2047, 4), new Gift(2117, 2)}, new[] {new Gift(2048, 4), new Gift(2195, 2)}, new[] { new Gift(2049, 4), new Gift(2195, 2), new Gift(2199, 2), new Gift(1028, 2), new Gift(1029, 2) }, new[] {new Gift(2216, 1), new Gift(2195, 2), new Gift(2203, 1), new Gift(1030, 2)} } }, { 3128, new[] { new[] {new Gift(2042, 4), new Gift(2192, 2), new Gift(2208, 2)}, new[] {new Gift(2043, 4), new Gift(2118, 2)}, new[] {new Gift(2044, 4), new Gift(2196, 2)}, new[] { new Gift(2045, 4), new Gift(2196, 2), new Gift(2200, 2), new Gift(1028, 2), new Gift(1029, 2) }, new[] {new Gift(2215, 1), new Gift(2196, 2), new Gift(2204, 1), new Gift(1030, 2)} } }, { 3130, new[] { new[] {new Gift(2042, 4), new Gift(2192, 2), new Gift(2208, 2)}, new[] {new Gift(2043, 4), new Gift(2118, 2)}, new[] {new Gift(2044, 4), new Gift(2196, 2)}, new[] { new Gift(2045, 4), new Gift(2196, 2), new Gift(2200, 2), new Gift(1028, 2), new Gift(1029, 2) }, new[] {new Gift(2215, 1), new Gift(2196, 2), new Gift(2204, 1), new Gift(1030, 2)} } }, { 3131, new[] { new[] {new Gift(2042, 4), new Gift(2192, 2), new Gift(2208, 2)}, new[] {new Gift(2043, 4), new Gift(2118, 2)}, new[] {new Gift(2044, 4), new Gift(2196, 2)}, new[] { new Gift(2045, 4), new Gift(2196, 2), new Gift(2200, 2), new Gift(1028, 2), new Gift(1029, 2) }, new[] {new Gift(2215, 1), new Gift(2196, 2), new Gift(2204, 1), new Gift(1030, 2)} } } }; public int[][] MinilandMaxPoint = { new[] { 999, 4999, 7999, 11999, 15999, 1000000 }, new[] { 999, 4999, 9999, 13999, 17999, 1000000 }, new[] { 999, 3999, 7999, 14999, 24999, 1000000 }, new[] { 999, 3999, 7999, 11999, 19999, 1000000 }, new[] { 999, 4999, 7999, 11999, 15999, 1000000 }, new[] { 999, 4999, 7999, 11999, 15999, 1000000 } }; private MinilandHelper() { } public static MinilandHelper Instance => _instance ??= new MinilandHelper(); public Gift? GetMinilandGift(short game, int point) { var rand = new Random(); return _gifts[game][point].OrderBy(s => rand.Next()).FirstOrDefault(); } } } ================================================ FILE: src/NosCore.GameObject/Services/MinilandService/MinilandRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; namespace NosCore.GameObject.Services.MinilandService { public class MinilandRegistry : IMinilandRegistry { private readonly ConcurrentDictionary<long, Miniland> _minilands = new(); public Miniland? GetByCharacterId(long characterId) => _minilands.TryGetValue(characterId, out var miniland) ? miniland : null; public Miniland? GetByMapInstanceId(Guid mapInstanceId) => _minilands.Values.FirstOrDefault(s => s.MapInstanceId == mapInstanceId); public IEnumerable<Miniland> GetAll() => _minilands.Values; public bool ContainsCharacter(long characterId) => _minilands.ContainsKey(characterId); public void Register(long characterId, Miniland miniland) => _minilands.TryAdd(characterId, miniland); public bool Unregister(long characterId, out Miniland? miniland) => _minilands.TryRemove(characterId, out miniland); } } ================================================ FILE: src/NosCore.GameObject/Services/MinilandService/MinilandService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.Data.Enumerations.Map; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.Map; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.MapInstanceAccessService; using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.Packets.Enumerations; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Services.MinilandService { public class MinilandService(IMapInstanceAccessorService mapInstanceAccessorService, IFriendHub friendHttpClient, List<MapDto> maps, IDao<MinilandDto, Guid> minilandDao, IDao<MinilandObjectDto, Guid> minilandObjectsDao, IMinilandRegistry minilandRegistry) : IMinilandService { public List<Portal> GetMinilandPortals(long characterId) { var nosville = mapInstanceAccessorService.GetBaseMapById(1); var oldNosville = mapInstanceAccessorService.GetBaseMapById(145); var minilandInfo = minilandRegistry.GetByCharacterId(characterId); var miniland = mapInstanceAccessorService.GetMapInstance(minilandInfo!.MapInstanceId); return new List<Portal> { new() { SourceX = 48, SourceY = 132, DestinationX = 5, DestinationY = 8, Type = PortalType.Miniland, SourceMapId = 1, DestinationMapId = 20001, DestinationMapInstanceId = miniland!.MapInstanceId, SourceMapInstanceId = nosville!.MapInstanceId }, new() { SourceX = 9, SourceY = 171, DestinationX = 5, DestinationY = 8, Type = PortalType.Miniland, SourceMapId = 145, DestinationMapId = 20001, DestinationMapInstanceId = miniland.MapInstanceId, SourceMapInstanceId = oldNosville!.MapInstanceId } }; } public Miniland GetMiniland(long characterId) { var miniland = minilandRegistry.GetByCharacterId(characterId); if (miniland != null) { return miniland; } throw new InvalidOperationException( $"No Miniland registered for character {characterId}. InitializeAsync should have registered one at login — a missing registration means login didn't complete."); } public async Task<Guid?> DeleteMinilandAsync(long characterId) { if (!minilandRegistry.ContainsCharacter(characterId)) { return null; } var minilandInfo = minilandRegistry.GetByCharacterId(characterId); var miniland = mapInstanceAccessorService.GetMapInstance(minilandInfo!.MapInstanceId); foreach (var obj in miniland!.MapDesignObjects.Values) { await minilandObjectsDao.TryInsertOrUpdateAsync(obj); } if (minilandRegistry.Unregister(characterId, out var removedMiniland)) { return removedMiniland?.MapInstanceId; } return null; } public async Task<Miniland> InitializeAsync(PlayerComponentBundle player, IMapInstanceGeneratorService generator) { var characterId = player.CharacterId; var minilandInfoDto = await minilandDao.FirstOrDefaultAsync(s => s.OwnerId == characterId); if (minilandInfoDto == null) { minilandInfoDto = await minilandDao.TryInsertOrUpdateAsync(new MinilandDto { MinilandId = Guid.NewGuid(), State = MinilandState.Open, MinilandMessage = ((short)Game18NConstString.Welcome).ToString(), OwnerId = characterId, WelcomeMusicInfo = 3800 }); if (minilandInfoDto == null) { minilandInfoDto = await minilandDao.FirstOrDefaultAsync(s => s.OwnerId == characterId) ?? throw new InvalidOperationException( $"Miniland row for character {characterId} could not be created or re-read after upsert failure."); } } var map = maps.First(s => s.MapId == 20001); var miniland = generator.CreateMapInstance(map.Adapt<Map.Map>(), Guid.NewGuid(), map.ShopAllowed, MapInstanceType.NormalInstance); var minilandInfo = minilandInfoDto.Adapt<Miniland>(); minilandInfo.MapInstanceId = miniland.MapInstanceId; minilandInfo.CharacterName = player.Name; minilandRegistry.Register(characterId, minilandInfo); await generator.AddMapInstanceAsync(miniland); var listobjects = player.InventoryService.Values.Where(s => s.Type == NoscorePocketType.Miniland).ToArray(); var idlist = listobjects.Select(s => s.Id).ToList(); var minilandObjectsDto = minilandObjectsDao.Where(s => idlist.Contains((Guid)s.InventoryItemInstanceId!))? .ToList() ?? new List<MinilandObjectDto>(); foreach (var mlobjdto in minilandObjectsDto) { var mlobj = mlobjdto.Adapt<MapDesignObject>(); AddMinilandObject(mlobj, characterId, listobjects.First(s => s.Id == mlobjdto.InventoryItemInstanceId)); } return minilandInfo; } public async Task SetStateAsync(long characterId, MinilandState state) { if (!minilandRegistry.ContainsCharacter(characterId)) { throw new ArgumentException(); } var ml = minilandRegistry.GetByCharacterId(characterId)!; var miniland = mapInstanceAccessorService.GetMapInstance(ml.MapInstanceId); ml.State = state; switch (ml.State) { case MinilandState.Open: return; case MinilandState.Private: { List<long> friends = (await friendHttpClient.GetFriendsAsync(characterId)) .Select(s => s.CharacterId) .ToList(); await miniland!.KickAsync(s => s.Character.CharacterId != characterId && !friends.Contains(s.Character.CharacterId)); break; } default: await miniland!.KickAsync(s => s.Character.CharacterId != characterId); break; } } public Miniland? GetMinilandFromMapInstanceId(Guid mapInstanceId) { return minilandRegistry.GetByMapInstanceId(mapInstanceId); } public void AddMinilandObject(MapDesignObject mapObject, long characterId, InventoryItemInstance minilandobject) { var minilandInfo = minilandRegistry.GetByCharacterId(characterId); var miniland = mapInstanceAccessorService.GetMapInstance(minilandInfo!.MapInstanceId); mapObject.Effect = (short)(minilandobject?.ItemInstance?.Item?.EffectValue ?? minilandobject?.ItemInstance?.Design ?? 0); mapObject.Width = minilandobject?.ItemInstance?.Item?.Width ?? 0; mapObject.Height = minilandobject?.ItemInstance?.Item?.Height ?? 0; mapObject.DurabilityPoint = (short)(minilandobject?.ItemInstance?.DurabilityPoint ?? 0); mapObject.IsWarehouse = minilandobject?.ItemInstance?.Item?.IsWarehouse ?? false; mapObject.InventoryItemInstanceId = minilandobject?.Id; mapObject.InventoryItemInstance = minilandobject; mapObject.Slot = minilandobject?.Slot ?? 0; if (minilandobject?.ItemInstance?.Item?.ItemType == ItemType.House) { switch (minilandobject.ItemInstance.Item.ItemSubType) { case 0: mapObject.MapX = 24; mapObject.MapY = 7; break; case 1: mapObject.MapX = 21; mapObject.MapY = 4; break; case 2: mapObject.MapX = 31; mapObject.MapY = 3; break; } } miniland!.MapDesignObjects.TryAdd(minilandobject!.Id, mapObject); } } } ================================================ FILE: src/NosCore.GameObject/Services/PacketHandlerService/IPacketHandlerRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.Packets.Attributes; using System; namespace NosCore.GameObject.Services.PacketHandlerService { public interface IPacketHandlerRegistry { IPacketHandler? GetHandler(Type packetType); PacketHeaderAttribute? GetPacketAttribute(Type packetType); } } ================================================ FILE: src/NosCore.GameObject/Services/PacketHandlerService/PacketHandlerRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.Packets.Attributes; using System; using System.Collections.Generic; using System.Reflection; namespace NosCore.GameObject.Services.PacketHandlerService { public class PacketHandlerRegistry : IPacketHandlerRegistry { private readonly Dictionary<Type, PacketHeaderAttribute> _attributeDic = new(); private readonly Dictionary<Type, IPacketHandler> _handlersByPacketType = new(); public PacketHandlerRegistry(IEnumerable<IPacketHandler> packetsHandlers) { foreach (var handler in packetsHandlers) { var type = handler.GetType().BaseType?.GenericTypeArguments[0]; if (type == null) { continue; } if (!_attributeDic.ContainsKey(type)) { var attr = type.GetCustomAttribute<PacketHeaderAttribute>(true); if (attr != null) { _attributeDic.Add(type, attr); } } if (!_handlersByPacketType.ContainsKey(type)) { _handlersByPacketType.Add(type, handler); } } } public IPacketHandler? GetHandler(Type packetType) { _handlersByPacketType.TryGetValue(packetType, out var handler); return handler; } public PacketHeaderAttribute? GetPacketAttribute(Type packetType) { _attributeDic.TryGetValue(packetType, out var attr); return attr; } } } ================================================ FILE: src/NosCore.GameObject/Services/PathfindingService/IPathfindingService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.PathFinder.Interfaces; namespace NosCore.GameObject.Services.PathfindingService; // JumpPointSearchPathfinder is instantiated per IMapGrid, so we cache one instance per // Map.MapId. Pathfinding is read-only against the grid, which means the cached instance // is safe to share between concurrent AI ticks. public interface IPathfindingService { IPathfinder ForMap(Map.Map map); } ================================================ FILE: src/NosCore.GameObject/Services/PathfindingService/PathfindingService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Concurrent; using NosCore.GameObject.Infastructure; using NosCore.PathFinder.Interfaces; using NosCore.PathFinder.Pathfinder; namespace NosCore.GameObject.Services.PathfindingService; // Lazy per-map cache. The pathfinder only reads the grid, so cached instances are // shareable across AI ticks without locking — concurrent FindPath calls against JPS are // safe because the algorithm keeps per-call state, not per-instance state. public sealed class PathfindingService(IHeuristic heuristic) : IPathfindingService, ISingletonService { private readonly ConcurrentDictionary<short, IPathfinder> _byMapId = new(); public IPathfinder ForMap(Map.Map map) => _byMapId.GetOrAdd(map.MapId, _ => new JumpPointSearchPathfinder(map, heuristic)); } ================================================ FILE: src/NosCore.GameObject/Services/QuestService/Handlers/GoToQuestHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.GameObject.Ecs.Interfaces; using NosCore.Packets.Enumerations; namespace NosCore.GameObject.Services.QuestService.Handlers; [UsedImplicitly] public sealed class GoToQuestHandler : IQuestTypeHandler { public QuestType QuestType => QuestType.GoTo; public async Task<bool> ValidateAsync(ICharacterEntity character, CharacterQuest quest) { var targetX = quest.Quest.TargetX ?? 0; var targetY = quest.Quest.TargetY ?? 0; var targetMap = quest.Quest.TargetMap ?? 0; var inRange = character.MapX <= targetX + 5 && character.MapX >= targetX - 5 && character.MapY <= targetY + 5 && character.MapY >= targetY - 5 && character.MapId == targetMap; if (!inRange) { return false; } await character.SendPacketAsync(quest.Quest.GenerateTargetOffPacket()); return true; } } ================================================ FILE: src/NosCore.GameObject/Services/QuestService/Handlers/HuntQuestHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using JetBrains.Annotations; using NosCore.Packets.Enumerations; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Services.QuestService.Handlers; [UsedImplicitly] public sealed class HuntQuestHandler(ILogger<HuntQuestHandler> logger) : KillQuestHandlerBase(logger) { public override QuestType QuestType => QuestType.Hunt; } ================================================ FILE: src/NosCore.GameObject/Services/QuestService/Handlers/KillQuestHandlerBase.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using System.Threading.Tasks; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.Packets; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Shared.Enumerations; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Services.QuestService.Handlers; public abstract class KillQuestHandlerBase(ILogger logger) : IQuestTypeHandler { public abstract QuestType QuestType { get; } public async Task OnMonsterKilledAsync(ICharacterEntity character, NpcMonsterDto mob, CharacterQuest quest) { var progressSnapshots = new List<(short MobVNum, int Current, int Required)>(); foreach (var objective in quest.Quest.QuestObjectives) { if (objective.FirstData != mob.NpcMonsterVNum) { continue; } var required = objective.SecondData ?? 0; var previous = quest.ObjectiveProgress.TryGetValue(objective.QuestObjectiveId, out var p) ? p : 0; if (required > 0 && previous >= required) { continue; } var current = quest.ObjectiveProgress.AddOrUpdate(objective.QuestObjectiveId, 1, (_, e) => e + 1); if (required > 0 && current > required) { current = required; quest.ObjectiveProgress[objective.QuestObjectiveId] = required; } progressSnapshots.Add(((short)objective.FirstData, current, required)); } if (progressSnapshots.Count == 0) { return; } try { foreach (var (mobVNum, current, required) in progressSnapshots) { await character.SendPacketAsync(new Sayi2Packet { VisualType = VisualType.Player, VisualId = character.VisualId, Type = SayColorType.Red, Message = Game18NConstString.Hunting, ArgumentType = 6, Game18NArguments = new Game18NArguments(2) { mobVNum, $"{current}/{required}" } }); } await character.SendPacketAsync(quest.GenerateQstiPacket(false)); } catch (Exception ex) { logger.LogWarning(ex, "Failed to send quest progress for character {CharacterId} quest {QuestId}", character.CharacterId, quest.QuestId); } } } ================================================ FILE: src/NosCore.GameObject/Services/QuestService/Handlers/NumberOfKillQuestHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using JetBrains.Annotations; using NosCore.Packets.Enumerations; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Services.QuestService.Handlers; [UsedImplicitly] public sealed class NumberOfKillQuestHandler(ILogger<NumberOfKillQuestHandler> logger) : KillQuestHandlerBase(logger) { public override QuestType QuestType => QuestType.NumberOfKill; } ================================================ FILE: src/NosCore.GameObject/Services/QuestService/IQuestService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Interfaces; using NosCore.Packets.ClientPackets.Quest; using NosCore.Packets.Enumerations; using System.Threading.Tasks; namespace NosCore.GameObject.Services.QuestService { public interface IQuestService { Task RunScriptAsync(ICharacterEntity character); Task RunScriptAsync(ICharacterEntity character, ScriptClientPacket? packet); Task OnMonsterKilledAsync(ICharacterEntity character, NpcMonsterDto mob); // Capture-specific quest progression (CAPTURE_AND_KEEP / CAPTURE_WITHOUT_KEEPING // equivalents). Kept distinct from OnMonsterKilledAsync so capture doesn't // accidentally credit hunt / kill objectives. Task OnMonsterCapturedAsync(ICharacterEntity character, NpcMonsterDto mob); Task<bool> AddQuestAsync(ICharacterEntity character, QuestActionType type, short questId); // Flips CompletedOn (if not already), sends the client-side UI packet // trio in the exact order the client expects, and publishes // QuestCompletedEvent for decoupled subscribers (chain, rewards...). // Subscribers to other domain events (move, kill, item-used) should // call this once they have decided a quest is done. Task CompleteQuestAsync(ICharacterEntity character, CharacterQuest quest); } } ================================================ FILE: src/NosCore.GameObject/Services/QuestService/IQuestTypeHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Interfaces; using NosCore.Packets.Enumerations; namespace NosCore.GameObject.Services.QuestService; public interface IQuestTypeHandler { QuestType QuestType { get; } Task<bool> ValidateAsync(ICharacterEntity character, CharacterQuest quest) => Task.FromResult(false); Task OnMonsterKilledAsync(ICharacterEntity character, NpcMonsterDto mob, CharacterQuest quest) => Task.CompletedTask; } ================================================ FILE: src/NosCore.GameObject/Services/QuestService/Quest.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using NosCore.Data.StaticEntities; using NosCore.Packets.ServerPackets.Quest; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; namespace NosCore.GameObject.Services.QuestService { public class CharacterQuest : CharacterQuestDto { public Quest Quest { get; set; } = null!; public ConcurrentDictionary<System.Guid, int> ObjectiveProgress { get; } = new(); public NodaTime.Instant? ObjectivesCompletedOn { get; set; } public QstiPacket GenerateQstiPacket(bool showDialog) { return new QstiPacket(GenerateQuestSubPacket(showDialog)); } public bool AreObjectivesComplete() { if (!IsCountableObjective(Quest.QuestType)) { return ObjectivesCompletedOn != null; } return Quest.QuestObjectives.All(o => { var required = o.SecondData ?? 0; if (required <= 0) return true; return ObjectiveProgress.TryGetValue(o.QuestObjectiveId, out var c) && c >= required; }); } public QuestSubPacket GenerateQuestSubPacket(bool showDialog) { var pairs = new (short Cur, short Req)[5]; var countable = IsCountableObjective(Quest.QuestType); for (var i = 0; i < Quest.QuestObjectives.Count && i < 5; i++) { var objective = Quest.QuestObjectives[i]; var required = countable ? (short)(objective.SecondData ?? 0) : (short)0; var current = countable && ObjectiveProgress.TryGetValue(objective.QuestObjectiveId, out var c) ? (short)c : (short)0; pairs[i] = (current, required); } return new QuestSubPacket { QuestId = QuestId, QuestLineId = QuestId, QuestType = Quest.QuestType, Status = (byte)(AreObjectivesComplete() ? 1 : 0), Objective1Current = pairs[0].Cur, Objective1Required = pairs[0].Req, Objective2Current = pairs[1].Cur, Objective2Required = pairs[1].Req, Objective3Current = pairs[2].Cur, Objective3Required = pairs[2].Req, Objective4Current = pairs[3].Cur, Objective4Required = pairs[3].Req, Objective5Current = pairs[4].Cur, Objective5Required = pairs[4].Req, QuestToShowInfo = showDialog }; } private static bool IsCountableObjective(Packets.Enumerations.QuestType type) => type switch { Packets.Enumerations.QuestType.Hunt => true, Packets.Enumerations.QuestType.NumberOfKill => true, Packets.Enumerations.QuestType.Capture => true, Packets.Enumerations.QuestType.CaptureWithoutGettingTheMonster => true, Packets.Enumerations.QuestType.Brings => true, Packets.Enumerations.QuestType.Product => true, Packets.Enumerations.QuestType.TsPoint => true, Packets.Enumerations.QuestType.CollectInTs => true, Packets.Enumerations.QuestType.Required => true, Packets.Enumerations.QuestType.Collect => true, Packets.Enumerations.QuestType.TransmitGold => true, _ => false }; } public class Quest : QuestDto { public TargetPacket GenerateTargetPacket() { return new TargetPacket { QuestId = QuestId, TargetMap = TargetMap ?? 0, TargetX = TargetX ?? 0, TargetY = TargetY ?? 0 }; } public TargetOffPacket GenerateTargetOffPacket() { return new TargetOffPacket { QuestId = QuestId, TargetMap = TargetMap ?? 0, TargetX = TargetX ?? 0, TargetY = TargetY ?? 0 }; } public List<QuestObjectiveDto> QuestObjectives { get; set; } = null!; } } ================================================ FILE: src/NosCore.GameObject/Services/QuestService/QuestService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using Microsoft.Extensions.Options; using NodaTime; using NosCore.Core.Configuration; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.InventoryService; using NosCore.Packets.ClientPackets.Quest; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.CharacterSelectionScreen; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Quest; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Services.QuestService { public class QuestService(List<ScriptDto> scripts, IOptions<WorldConfiguration> worldConfiguration, List<QuestDto> quests, List<QuestObjectiveDto> questObjectives, ILogger<QuestService> logger, IClock clock, ILogLanguageLocalizer<LogLanguageKey> logLanguage, IEnumerable<IQuestTypeHandler> questTypeHandlers, Wolverine.IMessageBus messageBus, List<QuestRewardDto> questRewards, List<QuestQuestRewardDto> questQuestRewards, Services.ItemGenerationService.IItemGenerationService itemBuilderService, Services.ExperienceService.IExperienceProgressionService experienceProgression) : IQuestService { public Task RunScriptAsync(ICharacterEntity character) => RunScriptAsync(character, null); public async Task RunScriptAsync(ICharacterEntity character, ScriptClientPacket? packet) { if (character.CurrentScriptId == null && worldConfiguration.Value.SceneOnCreate) { await character.SendPacketAsync(new ScenePacket { SceneId = 40 }); } var previousScript = character.Script; if (packet != null) { if (!await CheckScriptStateAsync(packet, character)) { return; } } if (previousScript != null) { await character.SendPacketAsync(new ScriptPacket { Unknown = 0, ScriptId = previousScript.ScriptId, ScriptStepId = previousScript.ScriptStepId }); } var orderedScripts = scripts.OrderBy(s => s.ScriptId).ThenBy(s => s.ScriptStepId).ToList(); var nextScript = orderedScripts.FirstOrDefault(s => (s.ScriptId == (character.Script?.ScriptId ?? 0)) && (s.ScriptStepId > (character.Script?.ScriptStepId ?? 0))) ?? orderedScripts.FirstOrDefault(s => s.ScriptId > (character.Script?.ScriptId ?? 0)); if (nextScript == null) { return; } character.Script = nextScript; await character.SendPacketAsync(new ScriptPacket() { ScriptId = nextScript.ScriptId, ScriptStepId = nextScript.ScriptStepId }); } private async Task<bool> CheckScriptStateAsync(ScriptClientPacket packet, ICharacterEntity character) { int? scriptId; int? scriptStepId; switch (packet.Type) { case QuestActionType.Dialog: scriptId = packet.FirstArgument; scriptStepId = packet.SecondArgument; break; case QuestActionType.Achieve: case QuestActionType.Validate: scriptId = packet.SecondArgument; scriptStepId = packet.ThirdArgument; break; default: return false; } if (scriptId == null || scriptStepId == null) { return false; } var current = character.Script; if (current == null || current.ScriptId != scriptId || current.ScriptStepId != scriptStepId) { return false; } return await IsValidScriptAsync(character, packet.Type, (int)scriptId, (int)scriptStepId); } private async Task<bool> IsValidScriptAsync(ICharacterEntity character, QuestActionType type, int scriptId, int scriptStepId) { var script = scripts.FirstOrDefault(s => (s.ScriptId == scriptId) && (s.ScriptStepId == scriptStepId)); if (script == null) { return false; } return script.StepType switch { "q_complete" => await ValidateQuestAsync(character, script.Argument1 ?? 0), "quest" => await AddQuestAsync(character, type, script.Argument1 ?? 0), "q_pay" => await QPayAsync(character, script.Argument1 ?? 0), "time" => await TimeAsync(script.Argument1 ?? 0), "targetoff" => await TargetOffPacketAsync(script.Argument1 ?? 0, character), "web" => true, "talk" => true, "openwin" => true, "opendual" => true, "move" => false, //todo handle "target" => false, //todo handle "run" => true, //todo handle _ => false, }; } private async Task<bool> QPayAsync(ICharacterEntity character, short questId) { var charQuest = character.Quests.Values.FirstOrDefault(q => q.QuestId == questId && q.CompletedOn == null); if (charQuest == null || !charQuest.AreObjectivesComplete()) { return false; } var rewardsForQuest = questQuestRewards .Where(l => l.QuestId == questId) .Select(l => questRewards.FirstOrDefault(r => r.QuestRewardId == l.QuestRewardId)) .Where(r => r != null) .Cast<QuestRewardDto>() .ToList(); // Bail out BEFORE claiming CompletedOn if any item reward won't fit; // otherwise the quest turns in but the reward is dropped on the floor. foreach (var reward in rewardsForQuest) { var type = (Data.Enumerations.Quest.QuestRewardType)reward.RewardType; if (type is Data.Enumerations.Quest.QuestRewardType.EtcMainItem or Data.Enumerations.Quest.QuestRewardType.WearItem && !character.InventoryService.CanAddItem((short)reward.Data)) { await character.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.NotEnoughSpace }); return false; } } // Claim the quest before awaiting reward application so a concurrent // qt spam can't pass the CompletedOn == null check twice. lock (charQuest) { if (charQuest.CompletedOn != null) { return false; } charQuest.CompletedOn = clock.GetCurrentInstant(); } foreach (var reward in rewardsForQuest) { await ApplyRewardAsync(character, reward); } await character.SendPacketAsync(character.GenerateQuestPacket()); await messageBus.PublishAsync(new QuestCompletedEvent(character, charQuest)); return true; } private async Task ApplyRewardAsync(ICharacterEntity character, QuestRewardDto reward) { var amount = Math.Max(1, reward.Amount); switch ((Data.Enumerations.Quest.QuestRewardType)reward.RewardType) { case Data.Enumerations.Quest.QuestRewardType.Gold: case Data.Enumerations.Quest.QuestRewardType.BaseGoldByAmount: case Data.Enumerations.Quest.QuestRewardType.CapturedGold: case Data.Enumerations.Quest.QuestRewardType.UnknowGold: character.Gold += (long)reward.Data * amount; break; case Data.Enumerations.Quest.QuestRewardType.Exp: case Data.Enumerations.Quest.QuestRewardType.PercentExp: if (character is Ecs.PlayerComponentBundle xpPlayer) { await experienceProgression.AddExperienceAsync(xpPlayer, (long)reward.Data * amount, 0, 0, 0, 0); } break; case Data.Enumerations.Quest.QuestRewardType.JobExp: case Data.Enumerations.Quest.QuestRewardType.PercentJobExp: if (character is Ecs.PlayerComponentBundle jobPlayer) { await experienceProgression.AddExperienceAsync(jobPlayer, 0, (long)reward.Data * amount, 0, 0, 0); } break; case Data.Enumerations.Quest.QuestRewardType.Reput: character.Reput += (long)reward.Data * amount; break; case Data.Enumerations.Quest.QuestRewardType.EtcMainItem: case Data.Enumerations.Quest.QuestRewardType.WearItem: var item = itemBuilderService.Create((short)reward.Data, (short)amount, (sbyte)reward.Rarity, reward.Upgrade, reward.Design); if (item == null) { logger.LogWarning("Quest reward skipped: invalid item vnum {VNum} for character {CharacterId}", reward.Data, character.CharacterId); break; } var added = character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(item, character.VisualId)); if (added == null || added.Count == 0) { logger.LogWarning("Quest reward lost: inventory full for item {VNum}x{Amount} character {CharacterId}", reward.Data, amount, character.CharacterId); await character.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = character.VisualId, Type = SayColorType.Yellow, Message = Game18NConstString.NotEnoughSpace }); break; } foreach (var inv in added) { await character.SendPacketAsync(inv.GeneratePocketChange((PocketType)inv.Type, inv.Slot)); } break; default: logger.LogWarning("Unhandled quest reward type {Type}", reward.RewardType); break; } } private async Task<bool> TimeAsync(short delay) { await Task.Delay(TimeSpan.FromSeconds(delay)); return true; } private async Task<bool> TargetOffPacketAsync(short questId, ICharacterEntity character) { var questDto = quests.FirstOrDefault(s => s.QuestId == questId); if (questDto != null) { return await ValidateQuestAsync(character, questId); } logger.LogError(logLanguage[LogLanguageKey.QUEST_NOT_FOUND]); return false; } public async Task<bool> AddQuestAsync(ICharacterEntity character, QuestActionType type, short questId) { var charQues = character.Quests.OrderByDescending(s => s.Value.CompletedOn).FirstOrDefault(s => s.Value.QuestId == questId); if (!charQues.Equals(new KeyValuePair<Guid, CharacterQuest>()) && !charQues.Value.Quest.IsDaily) { return false; } var characterQuest = character.Quests.FirstOrDefault(s => s.Value.QuestId == questId && s.Value.CompletedOn == null); if (!characterQuest.Equals(new KeyValuePair<Guid, CharacterQuest>())) { var isValid = await ValidateQuestAsync(character, questId); if (type != QuestActionType.Achieve) { return isValid; } if (!isValid) { return false; } await character.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.QuestComplete }); await character.SendPacketAsync(characterQuest.Value.GenerateQstiPacket(false)); await character.SendPacketAsync(character.GenerateQuestPacket()); } var questDto = quests.FirstOrDefault(s => s.QuestId == questId); if (questDto == null) { logger.LogError(logLanguage[LogLanguageKey.QUEST_NOT_FOUND]); return true; } var quest = questDto.Adapt<Quest>(); quest.QuestObjectives = questObjectives.Where(s => s.QuestId == questId).ToList(); if (character.Quests.Where(s => s.Value.ObjectivesCompletedOn == null && s.Value.CompletedOn == null).Any(q => !q.Value.Quest.IsSecondary) || (character.Quests.Where(s => s.Value.ObjectivesCompletedOn == null && s.Value.CompletedOn == null).Where(q => q.Value.Quest.QuestType != QuestType.WinRaid).ToList().Count >= 5 && quest.QuestType != QuestType.WinRaid)) { return false; } if (quest.LevelMin > character.Level) { await character.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.LevelTooLow }); return false; } if (quest.LevelMax < character.Level) { await character.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.LevelTooHigh }); return false; } if (quest.IsDaily && (characterQuest.Value?.CompletedOn?.Plus(Duration.FromDays(1)) > clock.GetCurrentInstant())) { await character.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.DailyQuestOncePerDay }); return false; } character.Quests.TryAdd(Guid.NewGuid(), new CharacterQuest { CharacterId = character.VisualId, Id = Guid.NewGuid(), Quest = quest, QuestId = quest.QuestId }); await character.SendPacketAsync(character.GenerateQuestPacket(showDialog: true)); if (quest.TargetMap != null) { await character.SendPacketAsync(quest.GenerateTargetPacket()); } return true; } public Task<bool> ValidateQuestAsync(ICharacterEntity character, short questId) { var characterQuest = character.Quests.Values.FirstOrDefault(s => s.QuestId == questId); if (characterQuest is null) { return Task.FromResult(false); } var handler = questTypeHandlers.FirstOrDefault(h => h.QuestType == characterQuest.Quest.QuestType); return handler?.ValidateAsync(character, characterQuest) ?? Task.FromResult(false); } public async Task OnMonsterKilledAsync(ICharacterEntity character, NpcMonsterDto mob) { foreach (var quest in character.Quests.Values.Where(q => q.ObjectivesCompletedOn is null && q.CompletedOn is null).ToList()) { var handler = questTypeHandlers.FirstOrDefault(h => h.QuestType == quest.Quest.QuestType); if (handler == null) { continue; } var wasComplete = quest.AreObjectivesComplete(); await handler.OnMonsterKilledAsync(character, mob, quest); var isComplete = quest.AreObjectivesComplete(); if (!wasComplete && isComplete) { await CompleteQuestAsync(character, quest); } } } // Plumbing for capture-specific quest objectives. No capture QuestType handlers // exist yet (NosCore has no CAPTURE_AND_KEEP / CAPTURE_WITHOUT_KEEPING equivalent // in QuestType); when they land, they'll implement a matching handler method // and this loop will route captures to them exactly like the kill loop above. public Task OnMonsterCapturedAsync(ICharacterEntity character, NpcMonsterDto mob) { return Task.CompletedTask; } public async Task CompleteQuestAsync(ICharacterEntity character, CharacterQuest quest) { quest.ObjectivesCompletedOn ??= clock.GetCurrentInstant(); var hasQPayStep = scripts.Any(s => string.Equals(s.StepType, "q_pay", System.StringComparison.OrdinalIgnoreCase) && s.Argument1 == quest.QuestId); if (!hasQPayStep) { quest.CompletedOn ??= clock.GetCurrentInstant(); } await character.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.QuestComplete }); await character.SendPacketAsync(quest.GenerateQstiPacket(false)); var currentStep = character.Script; if (currentStep != null && string.Equals(currentStep.StepType, "q_complete", System.StringComparison.OrdinalIgnoreCase) && currentStep.Argument1 == quest.QuestId) { await RunScriptAsync(character); } if (!hasQPayStep) { await messageBus.PublishAsync(new QuestCompletedEvent(character, quest)); } } } } ================================================ FILE: src/NosCore.GameObject/Services/SaveService/ISaveService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Networking.ClientSession; using System.Threading.Tasks; namespace NosCore.GameObject.Services.SaveService { public interface ISaveService { Task SaveAsync(ClientSession session); } } ================================================ FILE: src/NosCore.GameObject/Services/SaveService/SaveService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Map; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MinilandService; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Services.SaveService { public class SaveService(IDao<CharacterDto, long> characterDao, IDao<IItemInstanceDto?, Guid> itemInstanceDao, IDao<InventoryItemInstanceDto, Guid> inventoryItemInstanceDao, IDao<AccountDto, long> accountDao, IDao<StaticBonusDto, long> staticBonusDao, IDao<QuicklistEntryDto, Guid> quicklistEntriesDao, IDao<MinilandDto, Guid> minilandDao, IMinilandService minilandProvider, IDao<TitleDto, Guid> titleDao, IDao<CharacterQuestDto, Guid> characterQuestDao, IDao<CharacterQuestObjectiveDto, Guid> characterQuestObjectiveDao, IDao<RespawnDto, long> respawnDao, ILogger<SaveService> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : ISaveService { public async Task SaveAsync(ClientSession session) { try { var character = session.Character; var characterId = character.CharacterId; var account = character.Account; var characterDto = character.CharacterDto; var quicklistEntries = character.QuicklistEntries; var inventoryService = character.InventoryService; var staticBonusList = character.StaticBonusList; var titles = character.Titles; var quests = character.Quests; characterDto.Hp = character.Hp; characterDto.Mp = character.Mp; characterDto.Level = character.Level; characterDto.LevelXp = character.LevelXp; characterDto.JobLevel = character.JobLevel; characterDto.JobLevelXp = character.JobLevelXp; characterDto.HeroLevel = character.HeroLevel; characterDto.HeroXp = character.HeroXp; characterDto.Gold = character.Gold; characterDto.Reput = character.Reput; characterDto.Dignity = character.Dignity; characterDto.Compliment = character.Compliment; // MapX/Y is the last BaseMap position; keep it if we're saving off a BaseMap // so miniland-exit can restore it. if (character.MapInstance?.MapInstanceType == MapInstanceType.BaseMapInstance) { characterDto.MapX = character.PositionX; characterDto.MapY = character.PositionY; } characterDto.SpPoint = character.SpPoint; characterDto.SpAdditionPoint = character.SpAdditionPoint; characterDto.CurrentScriptId = character.CurrentScriptId; await accountDao.TryInsertOrUpdateAsync(account); await characterDao.TryInsertOrUpdateAsync(characterDto); var quicklistEntriesToDelete = quicklistEntriesDao .Where(i => i.CharacterId == characterId)!.ToList() .Where(i => quicklistEntries.All(o => o.Id != i.Id)).ToList(); await quicklistEntriesDao.TryDeleteAsync(quicklistEntriesToDelete.Select(s => s.Id).ToArray()); await quicklistEntriesDao.TryInsertOrUpdateAsync(quicklistEntries); var itemsToDelete = inventoryItemInstanceDao .Where(i => i.CharacterId == characterId)!.ToList() .Where(i => inventoryService.Values.All(o => o.Id != i.Id)).ToList(); // Inventory delete order: child rows first, then parent ItemInstance rows. await inventoryItemInstanceDao.TryDeleteAsync(itemsToDelete.Select(s => s.Id).ToArray()); await itemInstanceDao.TryDeleteAsync(itemsToDelete.Select(s => s.ItemInstanceId).ToArray()); // Inventory insert order: parent ItemInstance rows first so the FK on // InventoryItemInstance.ItemInstanceId resolves on insert. The DAO swallows // exceptions and returns false on failure, so we MUST check the result — // otherwise a silent failure on the ItemInstance insert cascades into a // confusing FK-violation error on the InventoryItemInstance insert that // follows. Skipping the child insert keeps the failure mode loud and // localized to the actual broken layer. var itemInstancesSaved = await itemInstanceDao .TryInsertOrUpdateAsync(inventoryService.Values.Select(s => s.ItemInstance).ToArray()); if (!itemInstancesSaved) { logger.LogError( new InvalidOperationException("ItemInstance batch insert failed; skipping InventoryItemInstance to avoid FK cascade."), logLanguage[LogLanguageKey.SAVE_CHARACTER_FAILED], session.Character.CharacterId); return; } await inventoryItemInstanceDao.TryInsertOrUpdateAsync(inventoryService.Values.ToArray()); var staticBonusToDelete = staticBonusDao .Where(i => i.CharacterId == characterId)!.ToList() .Where(i => staticBonusList.All(o => o.StaticBonusId != i.StaticBonusId)).ToList(); await staticBonusDao.TryDeleteAsync(staticBonusToDelete.Select(s => s.StaticBonusId)); await staticBonusDao.TryInsertOrUpdateAsync(staticBonusList); await titleDao.TryInsertOrUpdateAsync(titles); var minilandDto = (MinilandDto)minilandProvider.GetMiniland(characterId); await minilandDao.TryInsertOrUpdateAsync(minilandDto); var questsToDelete = characterQuestDao .Where(i => i.CharacterId == characterId)!.ToList() .Where(i => quests.Values.All(o => o.QuestId != i.QuestId)).ToList(); await characterQuestDao.TryDeleteAsync(questsToDelete.Select(s => s.Id)); var questsSaved = await characterQuestDao.TryInsertOrUpdateAsync(quests.Values); if (!questsSaved) { logger.LogError( new InvalidOperationException("CharacterQuest upsert failed; skipping objective upsert to avoid FK cascade."), logLanguage[LogLanguageKey.SAVE_CHARACTER_FAILED], characterId); return; } var liveObjectives = quests.Values.SelectMany(q => q.ObjectiveProgress.Select(kv => new CharacterQuestObjectiveDto { Id = Guid.NewGuid(), CharacterQuestId = q.Id, QuestObjectiveId = kv.Key, Count = kv.Value })).ToList(); var liveQuestIds = quests.Values.Select(q => q.Id).ToHashSet(); var existingObjectives = characterQuestObjectiveDao .Where(o => liveQuestIds.Contains(o.CharacterQuestId))?.ToList() ?? new List<CharacterQuestObjectiveDto>(); var liveObjectiveKeys = liveObjectives .Select(o => (o.CharacterQuestId, o.QuestObjectiveId)).ToHashSet(); var objectivesToDelete = existingObjectives .Where(o => !liveObjectiveKeys.Contains((o.CharacterQuestId, o.QuestObjectiveId))) .Select(o => o.Id).ToList(); foreach (var live in liveObjectives) { var match = existingObjectives.FirstOrDefault(o => o.CharacterQuestId == live.CharacterQuestId && o.QuestObjectiveId == live.QuestObjectiveId); if (match != null) { live.Id = match.Id; } } var objectivesDeleted = await characterQuestObjectiveDao.TryDeleteAsync(objectivesToDelete); if (objectivesDeleted == null) { logger.LogError( new InvalidOperationException("CharacterQuestObjective delete failed; skipping objective upsert to avoid orphaned-row conflicts on next save."), logLanguage[LogLanguageKey.SAVE_CHARACTER_FAILED], characterId); return; } var objectivesSaved = await characterQuestObjectiveDao.TryInsertOrUpdateAsync(liveObjectives); if (!objectivesSaved) { logger.LogError( new InvalidOperationException("CharacterQuestObjective upsert failed; quest progress will reset on reconnect."), logLanguage[LogLanguageKey.SAVE_CHARACTER_FAILED], characterId); return; } await respawnDao.TryInsertOrUpdateAsync(character.Respawns); } catch (Exception e) { logger.LogError(e, logLanguage[LogLanguageKey.SAVE_CHARACTER_FAILED], session.Character.CharacterId); } } } } ================================================ FILE: src/NosCore.GameObject/Services/ShopService/IShopRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; namespace NosCore.GameObject.Services.ShopService { public interface IShopRegistry { void RegisterPlayerShop(long characterId, Shop shop); void UnregisterPlayerShop(long characterId); Shop? GetPlayerShop(long characterId); IEnumerable<Shop> GetAllPlayerShops(); } } ================================================ FILE: src/NosCore.GameObject/Services/ShopService/Shop.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Interfaces; using System.Collections.Concurrent; using System.Linq; namespace NosCore.GameObject.Services.ShopService { public class Shop : ShopDto { private int? _size; public ConcurrentDictionary<int, ShopItem> ShopItems { get; set; } = new(); public ICharacterEntity? OwnerCharacter { get; set; } public long Sell { get; internal set; } public int Size { get => _size ?? ShopItems.Values.Select(s => s.Slot).DefaultIfEmpty().Max() + 1; set => _size = value; } public I18NString Name { get; set; } = new(); } } ================================================ FILE: src/NosCore.GameObject/Services/ShopService/ShopItem.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.StaticEntities; using NosCore.GameObject.Services.ItemGenerationService.Item; namespace NosCore.GameObject.Services.ShopService { public class ShopItem : ShopItemDto { public IItemInstance? ItemInstance { get; set; } public long? Price { get; set; } public short? Amount { get; set; } } } ================================================ FILE: src/NosCore.GameObject/Services/ShopService/ShopRegistry.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Concurrent; using System.Collections.Generic; namespace NosCore.GameObject.Services.ShopService { public class ShopRegistry : IShopRegistry { private readonly ConcurrentDictionary<long, Shop> _playerShops = new(); public void RegisterPlayerShop(long characterId, Shop shop) { _playerShops[characterId] = shop; } public void UnregisterPlayerShop(long characterId) { _playerShops.TryRemove(characterId, out _); } public Shop? GetPlayerShop(long characterId) { _playerShops.TryGetValue(characterId, out var shop); return shop; } public IEnumerable<Shop> GetAllPlayerShops() { return _playerShops.Values; } } } ================================================ FILE: src/NosCore.GameObject/Services/SkillService/ISkillService.cs ================================================ using NosCore.GameObject.Ecs.Interfaces; using System.Threading.Tasks; namespace NosCore.GameObject.Services.SkillService { public interface ISkillService { Task LoadSkill(ICharacterEntity character); Task<bool> LearnClassSkillsAsync(ICharacterEntity character); } } ================================================ FILE: src/NosCore.GameObject/Services/SkillService/SkillService.cs ================================================ using Mapster; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.BattleService; using NosCore.Networking; using NosCore.Packets.ServerPackets.Player; using NosCore.Shared.Enumerations; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Services.SkillService { public class SkillService(IDao<CharacterSkillDto, Guid> characterSkillDao, List<SkillDto> skills) : ISkillService { public async Task LoadSkill(ICharacterEntity character) { var characterSkills = characterSkillDao.Where(x => x.CharacterId == character.VisualId).Adapt<List<CharacterSkill>>() ?? new List<CharacterSkill>(); var skillToUse = skills.Where(x => characterSkills.Select(s => s.SkillVNum).Contains(x.SkillVNum)); character.Skills.Clear(); foreach (var characterSkill in characterSkills) { characterSkill.Skill = skillToUse.First(x => x.SkillVNum == characterSkill.SkillVNum); character.Skills.AddOrUpdate(characterSkill.SkillVNum, characterSkill, (key, oldValue) => characterSkill); } // Push the refreshed list to the client. Matches OpenNos GenerateSki: // primary/secondary are the class starter vnums (200 + 20*Class, +1), // followed by every learned skill ordered by cast id so the bar draws // deterministically. Without this packet the client's hotbar stays empty // and the server's skill-cast gate is invisible. var classByte = (byte)character.Class; var ordered = character.Skills.Values .Where(s => s.Skill != null) .OrderBy(s => s.Skill!.CastId) .Select(s => s.SkillVNum) .ToList(); await character.SendPacketAsync(new SkiPacket { PrimarySkillVnum = (short)(200 + 20 * classByte), SecondarySkillVnum = (short)(201 + 20 * classByte), SkillVnums = ordered, }).ConfigureAwait(false); } public async Task<bool> LearnClassSkillsAsync(ICharacterEntity character) { var classByte = (byte)character.Class; var learned = false; foreach (var skill in skills.Where(s => s.Class == classByte && s.LevelMinimum <= character.JobLevel)) { if (character.Skills.ContainsKey(skill.SkillVNum)) { continue; } var entry = new CharacterSkill { Id = Guid.NewGuid(), CharacterId = character.VisualId, SkillVNum = skill.SkillVNum, Skill = skill, }; if (character.Skills.TryAdd(skill.SkillVNum, entry)) { await characterSkillDao.TryInsertOrUpdateAsync(entry.Adapt<CharacterSkillDto>()).ConfigureAwait(false); learned = true; } } if (!learned) { return false; } var ordered = character.Skills.Values .Where(s => s.Skill != null) .OrderBy(s => s.Skill!.CastId) .Select(s => s.SkillVNum) .ToList(); await character.SendPacketAsync(new SkiPacket { PrimarySkillVnum = (short)(200 + 20 * classByte), SecondarySkillVnum = (short)(201 + 20 * classByte), SkillVnums = ordered, }).ConfigureAwait(false); return true; } } } ================================================ FILE: src/NosCore.GameObject/Services/SpeedCalculationService/ISpeedCalculationService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs.Interfaces; namespace NosCore.GameObject.Services.SpeedCalculationService { public interface ISpeedCalculationService { byte CalculateSpeed(INonPlayableEntity nonPlayableEntity); byte CalculateSpeed(ICharacterEntity visualEntity); } } ================================================ FILE: src/NosCore.GameObject/Services/SpeedCalculationService/SpeedCalculationService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Algorithm.SpeedService; using NosCore.GameObject.Ecs.Interfaces; namespace NosCore.GameObject.Services.SpeedCalculationService { public class SpeedCalculationService(ISpeedService speedService) : ISpeedCalculationService { private byte CalculateSpeed(IAliveEntity aliveEntity, byte defaultSpeed) { // if (HasBuff(CardType.Move, (byte)AdditionalTypes.Move.MovementImpossible)) // { // return 0; // } var bonusSpeed = 0; /*(byte)GetBuff(CardType.Move, (byte)AdditionalTypes.Move.SetMovementNegated)[0];*/ if (defaultSpeed + bonusSpeed > 59) { return 59; } return (byte)(defaultSpeed + bonusSpeed); } public byte CalculateSpeed(INonPlayableEntity nonPlayableEntity) { return CalculateSpeed(nonPlayableEntity, nonPlayableEntity.NpcMonster.Speed); } public byte CalculateSpeed(ICharacterEntity characterEntity) { var defaultSpeed = speedService.GetSpeed(characterEntity.Class); if (characterEntity.VehicleSpeed != null) { return (byte)characterEntity.VehicleSpeed; } return CalculateSpeed(characterEntity, defaultSpeed); } } } ================================================ FILE: src/NosCore.GameObject/Services/TransformationService/ITransformationService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ItemGenerationService.Item; using System.Threading.Tasks; namespace NosCore.GameObject.Services.TransformationService { public interface ITransformationService { Task RemoveSpAsync(ClientSession session); Task ChangeSpAsync(ClientSession session); Task ChangeVehicleAsync(ClientSession session, Item item); Task RemoveVehicleAsync(ClientSession session); } } ================================================ FILE: src/NosCore.GameObject/Services/TransformationService/TransformationService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NodaTime; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Core.Configuration; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Networking; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Specialists; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Reactive.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Services.TransformationService { public class TransformationService(IClock clock, IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService, ILogger<TransformationService> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage, IOptions<WorldConfiguration> worldConfiguration) : ITransformationService { public async Task RemoveSpAsync(ClientSession session) { var character = session.Character; character.UseSp = false; character.Morph = 0; character.MorphUpgrade = 0; character.MorphDesign = 0; character.SpCooldown = 30; var characterId = character.CharacterId; var spCooldown = character.SpCooldown; var mapInstance = character.MapInstance; var condPacket = session.Character.GenerateCond(); var levPacket = session.Character.GenerateLev(experienceService, jobExperienceService, heroExperienceService); var cModePacket = session.Character.GenerateCMode(); var statPacket = session.Character.GenerateStat(); await session.SendPacketAsync(condPacket); await session.SendPacketAsync(levPacket); await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = characterId, Type = SayColorType.Red, Message = Game18NConstString.DurationOfSideEffect, ArgumentType = 4, Game18NArguments = { spCooldown } }); await session.SendPacketAsync(new SdPacket { Cooldown = spCooldown }); await mapInstance.SendPacketAsync(cModePacket); await mapInstance.SendPacketAsync(new GuriPacket { Type = GuriPacketType.Dance, Value = 1, EntityId = characterId }); await session.SendPacketAsync(statPacket); async Task CoolDown() { await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = characterId, Type = SayColorType.Red, Message = Game18NConstString.TransformationSideEffectGone }); await session.SendPacketAsync(new SdPacket { Cooldown = 0 }); } Observable.Timer(TimeSpan.FromMilliseconds(spCooldown * 1000)).Select(_ => CoolDown()).Subscribe(); } public async Task ChangeSpAsync(ClientSession session) { var character = session.Character; if (character.InventoryService.LoadBySlotAndType((byte)EquipmentType.Sp, NoscorePocketType.Wear)?.ItemInstance is not SpecialistInstance sp) { logger.LogError(logLanguage[LogLanguageKey.USE_SP_WITHOUT_SP_ERROR]); return; } if (character.ReputIconValue < sp.Item.ReputationMinimum) { var characterId = character.CharacterId; await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = characterId, Type = SayColorType.Yellow, Message = Game18NConstString.CanNotBeWornReputationLow }); return; } var inventoryService = character.InventoryService; if (inventoryService.LoadBySlotAndType((byte)EquipmentType.Fairy, NoscorePocketType.Wear)?.ItemInstance is WearableInstance fairy && (sp.Item.Element != 0) && (fairy.Item.Element != sp.Item.Element) && (fairy.Item.Element != sp.Item.SecondaryElement)) { await session.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.SpecialistAndFairyDifferentElement }); return; } character = session.Character; character.LastSp = clock.GetCurrentInstant(); character.UseSp = true; character.Morph = sp.Item.Morph; character.MorphUpgrade = (byte)sp.Upgrade; character.MorphDesign = (byte)sp.Design; var characterId2 = character.CharacterId; var mapInstance = character.MapInstance; var cModePacket = session.Character.GenerateCMode(); var levPacket = session.Character.GenerateLev(experienceService, jobExperienceService, heroExperienceService); var effPacket = session.Character.GenerateEff(196); var spPointPacket = session.Character.GenerateSpPoint(worldConfiguration); var condPacket = session.Character.GenerateCond(); var statPacket = session.Character.GenerateStat(); await mapInstance.SendPacketAsync(cModePacket); await session.SendPacketAsync(levPacket); await mapInstance.SendPacketAsync(effPacket); await mapInstance.SendPacketAsync(new GuriPacket { Type = GuriPacketType.Dance, Value = 1, EntityId = characterId2 }); await session.SendPacketAsync(spPointPacket); await session.SendPacketAsync(condPacket); await session.SendPacketAsync(statPacket); } public async Task ChangeVehicleAsync(ClientSession session, Item item) { var character = session.Character; character.IsVehicled = true; character.VehicleSpeed = item.Speed; character.MorphUpgrade = 0; character.MorphDesign = 0; character.Morph = item.SecondMorph == 0 ? (short)((short)character.Gender + item.Morph) : character.Gender == GenderType.Male ? item.Morph : item.SecondMorph; var mapInstance = character.MapInstance; var effPacket = session.Character.GenerateEff(196); var cModePacket = session.Character.GenerateCMode(); var condPacket = session.Character.GenerateCond(); await mapInstance.SendPacketAsync(effPacket); await mapInstance.SendPacketAsync(cModePacket); await session.SendPacketAsync(condPacket); } public async Task RemoveVehicleAsync(ClientSession session) { var character = session.Character; if (character.UseSp) { var sp = character.InventoryService.LoadBySlotAndType((byte)EquipmentType.Sp, NoscorePocketType.Wear); if (sp != null) { character.Morph = sp.ItemInstance.Item.Morph; character.MorphDesign = (byte)sp.ItemInstance.Design; character.MorphUpgrade = (byte)sp.ItemInstance.Upgrade; } else { logger.LogError(logLanguage[LogLanguageKey.USE_SP_WITHOUT_SP_ERROR]); } } else { character.Morph = 0; } character.IsVehicled = false; character.VehicleSpeed = 0; var mapInstance = character.MapInstance; var condPacket = session.Character.GenerateCond(); var cModePacket = session.Character.GenerateCMode(); await session.SendPacketAsync(condPacket); await mapInstance.SendPacketAsync(cModePacket); } } } ================================================ FILE: src/NosCore.GameObject/Services/UpgradeService/EquipmentUpgradeOperationBase.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Threading.Tasks; using NosCore.Core.I18N; using NosCore.Data.Enumerations; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Networking; using NosCore.Packets.ClientPackets.Player; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Shop; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; namespace NosCore.GameObject.Services.UpgradeService; // Equipment upgrade flow modeled on OpenNos's WearableInstance.UpgradeItem (lines 667-897). // // 3-way roll per OpenNos: // - rnd < upfix[Upgrade] → Fixed: item becomes IsFixed=true (locked) // - rnd < upfix + upfail → Failure: item destroyed (or saved by scroll) // - else → Success: Upgrade += 1 // // Two cost tiers indexed by source.Upgrade: // - Rare < 8: standard tables // - Rare >= 8: scaled-up tables (the "perfect rarity" tier) // // Materials per attempt: // - Cellon (vnum 1014) // - Gem: vnum 1015 if Upgrade<5, else 1016 (the "full" gem) // - Protected variants additionally consume one Magic Pearl Scroll (vnum 1218); the // scroll absorbs a Failure roll and turns it into a Fixed-style no-op (item preserved). // // Caps: // - Upgrade >= 10 rejected upfront. // - IsFixed items rejected upfront. public abstract class EquipmentUpgradeOperationBase(IRandomNumberSource random, IGameLanguageLocalizer localizer) : UpgradeOperation(random, localizer) { public const short CellonVNum = 1014; public const short SmallGemVNum = 1015; public const short FullGemVNum = 1016; public const short NormalScrollVNum = 1218; public const byte MaxUpgradeLevel = 10; private const byte HighRarityThreshold = 8; // OpenNos tables (rare < 8). Indexed by source Upgrade (0..9). // upfix and upfail are "out of 100"; success rate = 100 - upfix - upfail. private static readonly short[] LowRareUpfix = { 0, 0, 10, 15, 20, 20, 20, 20, 15, 14 }; private static readonly short[] LowRareUpfail = { 0, 0, 0, 5, 20, 40, 60, 70, 80, 85 }; private static readonly long[] LowRareGold = { 500, 1500, 3000, 10000, 30000, 80000, 150000, 400000, 700000, 1000000 }; private static readonly short[] LowRareCellon = { 20, 50, 80, 120, 160, 220, 280, 380, 480, 600 }; private static readonly short[] LowRareGem = { 1, 1, 2, 2, 3, 1, 1, 2, 2, 3 }; // OpenNos tables (rare >= 8). Same shape, scaled-up costs. private static readonly short[] HighRareUpfix = { 50, 40, 70, 65, 80, 90, 95, 97, 98, 99 }; private static readonly short[] HighRareUpfail = { 50, 40, 60, 50, 60, 70, 75, 77, 83, 89 }; private static readonly long[] HighRareGold = { 5000, 15000, 30000, 100000, 300000, 800000, 1500000, 4000000, 7000000, 10000000 }; private static readonly short[] HighRareCellon = { 40, 100, 160, 240, 320, 440, 560, 760, 960, 1200 }; private static readonly short[] HighRareGem = { 2, 2, 4, 4, 6, 2, 2, 4, 4, 6 }; protected abstract bool IsProtected { get; } protected override Game18NConstString SuccessMessage => Game18NConstString.UpgradeSuccessful; // Unprotected failure: the item was destroyed. Protected failure uses ProtectedSaveMessage // below; we reserve FailureMessage for the unprotected destruction path. protected override Game18NConstString FailureMessage => Game18NConstString.UpgradeFailed; // Fixed is the distinct upfix-band outcome (IsFixed=true, item preserved but locked). // OpenNos uses "UPGRADE_FIXED"; NosCore's enum ships with `ItemFixedLevel` ("Level X locked"). protected override Game18NConstString FixedMessage => Game18NConstString.ItemFixedLevel; // ProtectedSave: scroll absorbed a failure roll. OpenNos sends different keys for say vs msg // ("SCROLL_PROTECT_USED" + "UPGRADE_FAILED_ITEM_SAVED"); NosCore overrides SayMessageFor for // that split. Default here returns the "item saved" copy used in the dialog. protected override Game18NConstString ProtectedSaveMessage => Game18NConstString.ItemSurvivedWithProtection; // Say vs Msg split for ProtectedSave: say = "scroll used", msg = "item saved". protected override Game18NConstString SayMessageFor(UpgradeOutcome outcome) => outcome == UpgradeOutcome.ProtectedSave ? Game18NConstString.ProtectionScrollUsed : base.SayMessageFor(outcome); // OpenNos line 711: if IsFixed, emit ITEM_IS_FIXED say + shop_end 1 instead of silently // rejecting. That lets the player see why the operation did nothing. protected override IReadOnlyList<IPacket>? TryReject(ClientSession session, UpgradePacket packet) { var source = session.Character.InventoryService .LoadBySlotAndType(packet.Slot, (NoscorePocketType)packet.InventoryType); if (source?.ItemInstance is not WearableInstance wearable || wearable.IsFixed != true) { return null; } return new IPacket[] { new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.ItemFixedLevel, }, new ShopEndPacket { Type = ShopEndPacketType.CloseSubWindow }, }; } protected override UpgradeContext? TryPrepareContext(ClientSession session, UpgradePacket packet) { var source = session.Character.InventoryService .LoadBySlotAndType(packet.Slot, (NoscorePocketType)packet.InventoryType); if (source?.ItemInstance is not WearableInstance wearable) { return null; } if (wearable.Upgrade >= MaxUpgradeLevel) { return null; } var level = (int)wearable.Upgrade; var isHighRare = wearable.Rare >= HighRarityThreshold; var goldCost = (isHighRare ? HighRareGold : LowRareGold)[level]; var cellonCost = (isHighRare ? HighRareCellon : LowRareCellon)[level]; var gemCost = (isHighRare ? HighRareGem : LowRareGem)[level]; var gemVNum = level < 5 ? SmallGemVNum : FullGemVNum; var materials = new List<MaterialCost> { new(CellonVNum, cellonCost), new(gemVNum, gemCost), }; if (IsProtected) { materials.Add(new MaterialCost(NormalScrollVNum, 1)); } return new UpgradeContext( Source: source, Target: null, GoldCost: goldCost, MaterialCosts: materials, ExtraData: new EquipmentUpgradeRollData(level, isHighRare)); } // 3-way roll. OpenNos splits by rarity tier (WearableInstance.cs:822 vs :859): // - Low-rare (Rare < 8): band order is upfix → upfail → Success (cumulative). // - High-rare (Rare ≥ 8): band order is upfail → upfix → Success (NOT cumulative: at // upfail=50/upfix=50 upgrade 0 you get 50% fail and 50% fixed, never success). // Protected variant: a Failure-band roll is absorbed by the scroll → ProtectedSave (does NOT // lock the item; OpenNos specifically skips the IsFixed write on this branch). protected override UpgradeOutcome DetermineOutcome(double roll, UpgradeContext ctx) { var data = (EquipmentUpgradeRollData)ctx.ExtraData!; var upfix = (data.IsHighRare ? HighRareUpfix : LowRareUpfix)[data.Level] / 100.0; var upfail = (data.IsHighRare ? HighRareUpfail : LowRareUpfail)[data.Level] / 100.0; if (data.IsHighRare) { if (roll < upfail) { return IsProtected ? UpgradeOutcome.ProtectedSave : UpgradeOutcome.Failure; } if (roll < upfix) { return UpgradeOutcome.Fixed; } return UpgradeOutcome.Success; } if (roll < upfix) { return UpgradeOutcome.Fixed; } if (roll < upfix + upfail) { return IsProtected ? UpgradeOutcome.ProtectedSave : UpgradeOutcome.Failure; } return UpgradeOutcome.Success; } protected override void ApplySuccess(UpgradeContext ctx) { var wearable = (WearableInstance)ctx.Source.ItemInstance!; wearable.Upgrade = (byte)(wearable.Upgrade + 1); } protected override void ApplyFailure(ClientSession session, UpgradeContext ctx) { // Unprotected failure destroys the item entirely (matches OpenNos line 875). session.Character.InventoryService.RemoveItemAmountFromInventory(1, ctx.Source.ItemInstanceId); } protected override void ApplyFixed(ClientSession session, UpgradeContext ctx) { var wearable = (WearableInstance)ctx.Source.ItemInstance!; wearable.IsFixed = true; } // OpenNos UpgradeItem effect pattern (WearableInstance.cs 834/841/848/863/878/885): // - Success → broadcast eff 3005 (green sparks) // - Fixed → broadcast eff 3004 (neutral poof) // - ProtectedSave → broadcast eff 3004 (scroll absorbs) // - Failure → no effect (silent destruction) protected override async Task EmitOutcomeEffectsAsync(ClientSession session, UpgradeContext ctx, UpgradeOutcome outcome, List<IPacket> playerPackets) { var effectId = outcome switch { UpgradeOutcome.Success => 3005, UpgradeOutcome.Fixed => 3004, UpgradeOutcome.ProtectedSave => 3004, _ => (int?)null, }; if (effectId is null) { return; } await session.Character.MapInstance .SendPacketAsync(session.Character.GenerateEff(effectId.Value)).ConfigureAwait(false); } protected override IEnumerable<IPacket> BuildPocketRefresh(UpgradeContext ctx, UpgradeOutcome outcome) { if (outcome == UpgradeOutcome.Failure) { yield return ((InventoryItemInstance?)null).GeneratePocketChange( (PocketType)ctx.Source.Type, ctx.Source.Slot); } else { yield return ctx.Source.GeneratePocketChange((PocketType)ctx.Source.Type, ctx.Source.Slot); } } private sealed record EquipmentUpgradeRollData(int Level, bool IsHighRare); } ================================================ FILE: src/NosCore.GameObject/Services/UpgradeService/IRandomNumberSource.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.GameObject.Services.UpgradeService; // Indirection so upgrade rolls are deterministic in tests. Default implementation wraps // Random.Shared; tests inject a stub returning a fixed value. public interface IRandomNumberSource { double NextDouble(); } public sealed class RandomNumberSource : IRandomNumberSource { public double NextDouble() => System.Random.Shared.NextDouble(); } ================================================ FILE: src/NosCore.GameObject/Services/UpgradeService/IUpgradeOperation.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Threading.Tasks; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Player; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; namespace NosCore.GameObject.Services.UpgradeService; public interface IUpgradeOperation { UpgradePacketType Kind { get; } Task<IReadOnlyList<IPacket>> ExecuteAsync(ClientSession session, UpgradePacket packet); } ================================================ FILE: src/NosCore.GameObject/Services/UpgradeService/RarifyOperation.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using JetBrains.Annotations; using NosCore.Core.I18N; using NosCore.Packets.Enumerations; namespace NosCore.GameObject.Services.UpgradeService; [UsedImplicitly] public sealed class RarifyOperation(IRandomNumberSource random, IGameLanguageLocalizer localizer) : RarifyOperationBase(random, localizer) { public override UpgradePacketType Kind => UpgradePacketType.RarifyItem; protected override bool IsProtected => false; } [UsedImplicitly] public sealed class RarifyProtectedOperation(IRandomNumberSource random, IGameLanguageLocalizer localizer) : RarifyOperationBase(random, localizer) { public override UpgradePacketType Kind => UpgradePacketType.RarifyItemProtected; protected override bool IsProtected => true; } ================================================ FILE: src/NosCore.GameObject/Services/UpgradeService/RarifyOperationBase.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Threading.Tasks; using NosCore.Core.I18N; using NosCore.Data.Enumerations; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Networking; using NosCore.Packets; using NosCore.Packets.ClientPackets.Player; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.I18N; namespace NosCore.GameObject.Services.UpgradeService; // Rarify mirrors OpenNos WearableInstance.RarifyItem (Normal mode, lines 266-527). // // The reroll picks the first band a uniform [0, 80) roll falls into, walking from the // highest rare (7) downward. Negative rares (raren1/raren2) and the zero-reroll band // are disabled in Normal mode — OpenNos zeroes those thresholds at line 294-296 so they // never match. // // Scroll protection makes any band that would not improve the item skip; if every band // is skipped, the item is saved at its current rare instead of destroyed. Without scroll // the same "no band matched" path destroys the item outright. // // Materials per attempt: Cellon (vnum 1014) × 5 + Gold 500. Protected variant additionally // consumes a Magic Pearl Scroll (vnum 1218). public abstract class RarifyOperationBase(IRandomNumberSource random, IGameLanguageLocalizer localizer) : UpgradeOperation(random, localizer) { public const short CellonVNum = 1014; public const short NormalScrollVNum = 1218; public const sbyte MaxRarity = 8; public const long BaseGoldCost = 500; public const short BaseCellonCost = 5; // OpenNos RarifyItem cumulative thresholds (Normal mode, rnd in [0, 80)). // The Rare 8 band is only reachable via the heroic-scroll path OpenNos guards with // Item.IsHeroic — NosCore doesn't model IsHeroic yet, so rare 7 is the natural ceiling. // rare: 7 6 5 4 3 2 1 // cap: 2 3 5 10 15 30 40 // Rolls in [40, 80) match no band → Failure (destroy unprotected / save protected). private static readonly (sbyte Rare, double Threshold)[] NormalBands = { ((sbyte)7, 2), ((sbyte)6, 3), ((sbyte)5, 5), ((sbyte)4, 10), ((sbyte)3, 15), ((sbyte)2, 30), ((sbyte)1, 40), }; protected abstract bool IsProtected { get; } // Trace-driven message ids (NosCore.Packets.Game18NConstString): // 147 GambleSuccessful → "Gamble successful! Rarity level: %d" // 146 GambleItemDisappeared → "The item was destroyed as the rarity level change failed!" // 1079 RarityUnchangedProtectionScroll → "The rarity level remains unchanged thanks to the protection scroll." // Previous implementation used 547 (Amulet-specific success copy) and 1398 (precondition // "must be rarity 0"), which made failures look like gate rejections post-gold-deduction. protected override Game18NConstString SuccessMessage => Game18NConstString.GambleSuccessful; // Unprotected failure: item destroyed. Protected variant routes through ProtectedSave instead // of Failure, so FailureMessage only needs the destroy copy. protected override Game18NConstString FailureMessage => Game18NConstString.GambleItemDisappeared; // Protected failure: scroll absorbs the destroy, item stays at its original rare. OpenNos // line 512-513 uses "RARIFY_FAILED_ITEM_SAVED"; NosCore's closest enum is // `GambleFailedButSurvived` for say and `RarityUnchangedProtectionScroll` for the dialog. protected override Game18NConstString ProtectedSaveMessage => Game18NConstString.RarityUnchangedProtectionScroll; protected override Game18NConstString SayMessageFor(UpgradeOutcome outcome) => outcome == UpgradeOutcome.ProtectedSave ? Game18NConstString.GambleFailedButSurvived : base.SayMessageFor(outcome); protected override UpgradeContext? TryPrepareContext(ClientSession session, UpgradePacket packet) { var source = session.Character.InventoryService .LoadBySlotAndType(packet.Slot, (NoscorePocketType)packet.InventoryType); if (source?.ItemInstance is not WearableInstance wearable) { return null; } if (wearable.Rare < 0 || wearable.Rare >= MaxRarity) { return null; } var materials = new List<MaterialCost> { new(CellonVNum, BaseCellonCost), }; if (IsProtected) { materials.Add(new MaterialCost(NormalScrollVNum, 1)); } return new UpgradeContext( Source: source, Target: null, GoldCost: BaseGoldCost, MaterialCosts: materials, ExtraData: new RarifyRollState((sbyte)wearable.Rare)); } // Walk the OpenNos bands descending from rare 7. First band the roll falls into whose // protection guard passes wins. If every band is skipped (scroll) or no band matches, // outcome is Failure (unprotected → destroy) or ProtectedSave (scroll absorbs). protected override UpgradeOutcome DetermineOutcome(double roll, UpgradeContext ctx) { var state = (RarifyRollState)ctx.ExtraData!; var rnd = roll * 80.0; foreach (var (rare, threshold) in NormalBands) { if (rnd >= threshold) { continue; } // Scroll protection: skip any band that doesn't improve the current rare. if (IsProtected && rare <= state.OriginalRare) { continue; } state.NewRare = rare; return UpgradeOutcome.Success; } return IsProtected ? UpgradeOutcome.ProtectedSave : UpgradeOutcome.Failure; } protected override void ApplySuccess(UpgradeContext ctx) { var wearable = (WearableInstance)ctx.Source.ItemInstance!; wearable.Rare = ((RarifyRollState)ctx.ExtraData!).NewRare; // OpenNos line 413/422/431/…/SetRarityPoint re-rolls the rarity-driven stat bonuses // (defence for armor, damage/concentrate for weapons) to match the new rare tier. wearable.SetRarityPoint(); } protected override void ApplyFailure(ClientSession session, UpgradeContext ctx) { // OpenNos WearableInstance.cs:507 — unprotected rarify failure destroys the item. session.Character.InventoryService.RemoveItemAmountFromInventory(1, ctx.Source.ItemInstanceId); } protected override IEnumerable<IPacket> BuildPocketRefresh(UpgradeContext ctx, UpgradeOutcome outcome) { if (outcome == UpgradeOutcome.Failure) { yield return ((InventoryItemInstance?)null).GeneratePocketChange( (PocketType)ctx.Source.Type, ctx.Source.Slot); yield break; } yield return ctx.Source.GeneratePocketChange((PocketType)ctx.Source.Type, ctx.Source.Slot); } // OpenNos effect pattern: // - Success → broadcast eff 3005 (Character.NotifyRarifyResult) // - ProtectedSave → broadcast eff 3004 (WearableInstance.cs:514) // - Failure → no effect (silent destruction) protected override async Task EmitOutcomeEffectsAsync(ClientSession session, UpgradeContext ctx, UpgradeOutcome outcome, List<IPacket> playerPackets) { var effectId = outcome switch { UpgradeOutcome.Success => 3005, UpgradeOutcome.ProtectedSave => 3004, _ => (int?)null, }; if (effectId is null) { return; } await session.Character.MapInstance .SendPacketAsync(session.Character.GenerateEff(effectId.Value)).ConfigureAwait(false); } // Success message 147 "Gamble successful! Rarity level: %d" carries the new rare as a // long arg so the client renders the actual outcome rather than a generic confirmation. protected override MsgiPacket BuildMsgi(UpgradeContext ctx, UpgradeOutcome outcome, Game18NConstString message) { if (outcome != UpgradeOutcome.Success) { return base.BuildMsgi(ctx, outcome, message); } var newRare = ((RarifyRollState)ctx.ExtraData!).NewRare; return new MsgiPacket { Type = MessageType.Default, Message = message, Game18NArguments = new Game18NArguments(1) { (long)newRare }, }; } private sealed class RarifyRollState { public RarifyRollState(sbyte originalRare) => OriginalRare = originalRare; public sbyte OriginalRare { get; } public sbyte NewRare { get; set; } } } ================================================ FILE: src/NosCore.GameObject/Services/UpgradeService/SumUpgradeOperation.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Threading.Tasks; using JetBrains.Annotations; using NosCore.Core.I18N; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Networking; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.ClientPackets.Player; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.I18N; namespace NosCore.GameObject.Services.UpgradeService; // Sum upgrade combines two wearables into one with combined upgrade level + summed // elemental resistances. Modeled on OpenNos's WearableInstance.Sum (lines 609-665). // // Slot restriction: both items must occupy the SAME equipment slot AND that slot must be // Boots or Gloves — those are the only equipment types Nostale lets you sum-resist on. // // Cost tables are indexed by source.Upgrade (NOT combined level — that's the success-rate // table). Numbers ported from OpenNos: // upsuccess[combined]: { 100, 100, 85, 70, 50, 20 } // goldprice[source]: { 1500, 3000, 6000, 12000, 24000, 48000 } // sand[source]: { 5, 10, 15, 20, 25, 30 } // // On success: source.Upgrade += target.Upgrade + 1; resistances are summed. // On failure: BOTH source and target are destroyed. // Sand and gold are charged regardless. [UsedImplicitly] public sealed class SumUpgradeOperation(IRandomNumberSource random, IGameLanguageLocalizer localizer) : UpgradeOperation(random, localizer) { public const short SandVNum = 1027; private static readonly double[] SuccessRateByCombinedLevel = { 1.00, 1.00, 0.85, 0.70, 0.50, 0.20 }; private static readonly long[] GoldCostBySourceLevel = { 1500, 3000, 6000, 12000, 24000, 48000 }; private static readonly short[] SandCostBySourceLevel = { 5, 10, 15, 20, 25, 30 }; public override UpgradePacketType Kind => UpgradePacketType.SumResistance; protected override Game18NConstString SuccessMessage => Game18NConstString.CombinationSuccessful; protected override Game18NConstString FailureMessage => Game18NConstString.CombinationFailed; protected override UpgradeContext? TryPrepareContext(ClientSession session, UpgradePacket packet) { if (packet.InventoryType2 is null || packet.Slot2 is null) { return null; } var source = session.Character.InventoryService .LoadBySlotAndType(packet.Slot, (NoscorePocketType)packet.InventoryType); var target = session.Character.InventoryService .LoadBySlotAndType(packet.Slot2.Value, (NoscorePocketType)packet.InventoryType2.Value); if (source?.ItemInstance is not WearableInstance s || target?.ItemInstance is not WearableInstance t) { return null; } // Reject self-sum: same slot/type sent twice resolves source and target to the // same InventoryItemInstance, which would double-remove on failure and sum the // item into itself on success. if (source.ItemInstanceId == target.ItemInstanceId) { return null; } // Both must be the same slot type AND that slot must be Boots or Gloves. // Mirrors OpenNos WearableInstance.Sum lines 623-625. if (s.Item.EquipmentSlot != t.Item.EquipmentSlot || (s.Item.EquipmentSlot != EquipmentType.Boots && s.Item.EquipmentSlot != EquipmentType.Gloves)) { return null; } if (s.Upgrade >= SandCostBySourceLevel.Length || s.Upgrade + t.Upgrade >= SuccessRateByCombinedLevel.Length) { return null; } return new UpgradeContext( Source: source, Target: target, GoldCost: GoldCostBySourceLevel[s.Upgrade], MaterialCosts: new[] { new MaterialCost(SandVNum, SandCostBySourceLevel[s.Upgrade]) }, ExtraData: s.Upgrade + t.Upgrade); } protected override double GetSuccessRate(UpgradeContext ctx) => SuccessRateByCombinedLevel[(int)ctx.ExtraData!]; // OpenNos WearableInstance.cs:643-646 adds BOTH the target's accumulated (instance) resistance // AND its base-item resistance — a fresh pair of boots with Item.FireResistance=5 contributes // 5 to the fire total even if its accumulated instance resistance is 0. protected override void ApplySuccess(UpgradeContext ctx) { var source = (WearableInstance)ctx.Source.ItemInstance!; var target = (WearableInstance)ctx.Target!.ItemInstance!; source.DarkResistance = (short)((source.DarkResistance ?? 0) + (target.DarkResistance ?? 0) + target.Item.DarkResistance); source.LightResistance = (short)((source.LightResistance ?? 0) + (target.LightResistance ?? 0) + target.Item.LightResistance); source.FireResistance = (short)((source.FireResistance ?? 0) + (target.FireResistance ?? 0) + target.Item.FireResistance); source.WaterResistance = (short)((source.WaterResistance ?? 0) + (target.WaterResistance ?? 0) + target.Item.WaterResistance); source.Upgrade = (byte)(source.Upgrade + target.Upgrade + 1); } protected override void ApplyFailure(ClientSession session, UpgradeContext ctx) { session.Character.InventoryService.RemoveItemAmountFromInventory(1, ctx.Source.ItemInstanceId); } protected override void ConsumeFixedSlots(ClientSession session, UpgradeContext ctx) { // Target slot is consumed regardless of outcome. session.Character.InventoryService.RemoveItemAmountFromInventory(1, ctx.Target!.ItemInstanceId); } // OpenNos Sum effect pattern (WearableInstance.cs 651/658/662): // - Player-only : guri 19 1 <charId> 1324 (success) / 1332 (failure) — sparkle animation // - Broadcast : guri 6 1 <charId> — ground-burst explosion protected override async Task EmitOutcomeEffectsAsync(ClientSession session, UpgradeContext ctx, UpgradeOutcome outcome, List<IPacket> playerPackets) { playerPackets.Add(new GuriPacket { Type = GuriPacketType.AfterSumming, Argument = 1, SecondArgument = 0, EntityId = session.Character.CharacterId, Value = (uint)(outcome == UpgradeOutcome.Success ? 1324 : 1332), }); await session.Character.MapInstance.SendPacketAsync(new GuriPacket { Type = GuriPacketType.CharacterAnimation, Argument = 1, SecondArgument = 0, EntityId = session.Character.CharacterId, }).ConfigureAwait(false); } protected override IEnumerable<IPacket> BuildPocketRefresh(UpgradeContext ctx, UpgradeOutcome outcome) { yield return ((InventoryItemInstance?)null).GeneratePocketChange( (PocketType)ctx.Target!.Type, ctx.Target.Slot); if (outcome == UpgradeOutcome.Success) { yield return ctx.Source.GeneratePocketChange((PocketType)ctx.Source.Type, ctx.Source.Slot); // OpenNos WearableInstance.cs:648 pdti 10 popup announcing the combined upgrade level. // Type=10 (ResistanceFused), RecipeAmount=1, Slot=27 are fixed values from OpenNos. var source = (WearableInstance)ctx.Source.ItemInstance!; yield return new PdtiPacket { Type = PdtiPacketType.ResistanceFused, Vnum = source.ItemVNum, RecipeAmount = 1, Slot = 27, ItemUpgrade = source.Upgrade, Rare = 0, }; } else { yield return ((InventoryItemInstance?)null).GeneratePocketChange( (PocketType)ctx.Source.Type, ctx.Source.Slot); } } } ================================================ FILE: src/NosCore.GameObject/Services/UpgradeService/UpgradeContext.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using NosCore.GameObject.Services.InventoryService; namespace NosCore.GameObject.Services.UpgradeService; // Bag of validated input + computed costs that the base UpgradeOperation skeleton passes // between its hooks. Subclasses can stash extra context via ExtraData when needed. public sealed record UpgradeContext( InventoryItemInstance Source, InventoryItemInstance? Target, long GoldCost, IReadOnlyList<MaterialCost> MaterialCosts, object? ExtraData = null); public sealed record MaterialCost(short VNum, short Amount); ================================================ FILE: src/NosCore.GameObject/Services/UpgradeService/UpgradeItemOperation.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using JetBrains.Annotations; using NosCore.Core.I18N; using NosCore.Packets.Enumerations; namespace NosCore.GameObject.Services.UpgradeService; [UsedImplicitly] public sealed class UpgradeItemOperation(IRandomNumberSource random, IGameLanguageLocalizer localizer) : EquipmentUpgradeOperationBase(random, localizer) { public override UpgradePacketType Kind => UpgradePacketType.UpgradeItem; protected override bool IsProtected => false; } [UsedImplicitly] public sealed class UpgradeItemProtectedOperation(IRandomNumberSource random, IGameLanguageLocalizer localizer) : EquipmentUpgradeOperationBase(random, localizer) { public override UpgradePacketType Kind => UpgradePacketType.UpgradeItemProtected; protected override bool IsProtected => true; } ================================================ FILE: src/NosCore.GameObject/Services/UpgradeService/UpgradeOperation.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using NosCore.Core.I18N; using NosCore.Data.Enumerations; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.Packets.ClientPackets.Player; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Shop; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; namespace NosCore.GameObject.Services.UpgradeService; // Common skeleton for every UpgradePacketType variant (sum, rarify, cellon, sp upgrade, ...). // // The flow is identical: validate slots, charge gold + materials, roll for an UpgradeOutcome, // apply the outcome (success / failure / fixed), then emit the standard pocket refresh + // animation + result message. Subclasses fill in the variant-specific bits via the hooks below. // // Outcome model is 3-way (Success / Failure / Fixed) to match OpenNos's equipment upgrade // behavior where a "Fix" roll permanently locks the item without changing its upgrade level. // The default DetermineOutcome implementation reduces to a binary success/failure roll — // subclasses that need 3-way (EquipmentUpgrade) override it. // // Concurrency: per-session packet handling is already serialized in WorldPacketHandlingStrategy // (see AcquirePacketLockAsync), so two upgrade packets from the same client cannot run in // parallel. No additional locking is needed at this layer. public abstract class UpgradeOperation(IRandomNumberSource random, IGameLanguageLocalizer localizer) : IUpgradeOperation { public abstract UpgradePacketType Kind { get; } public async Task<IReadOnlyList<IPacket>> ExecuteAsync(ClientSession session, UpgradePacket packet) { var earlyReject = TryReject(session, packet); if (earlyReject is not null) { return earlyReject; } var ctx = TryPrepareContext(session, packet); if (ctx is null) { return Array.Empty<IPacket>(); } if (!CanAfford(session, ctx, out var rejection)) { return new IPacket[] { rejection }; } var packets = new List<IPacket>(); var roll = random.NextDouble(); var outcome = DetermineOutcome(roll, ctx); switch (outcome) { case UpgradeOutcome.Success: ApplySuccess(ctx); break; case UpgradeOutcome.Failure: ApplyFailure(session, ctx); break; case UpgradeOutcome.Fixed: ApplyFixed(session, ctx); break; case UpgradeOutcome.ProtectedSave: ApplyProtectedSave(session, ctx); break; } ConsumeMaterials(session, ctx, packets); ConsumeFixedSlots(session, ctx); await session.Character.RemoveGoldAsync(ctx.GoldCost, localizer).ConfigureAwait(false); await EmitOutcomeEffectsAsync(session, ctx, outcome, packets).ConfigureAwait(false); packets.Add(BuildSay(session, ctx, outcome, SayMessageFor(outcome))); packets.Add(BuildMsgi(ctx, outcome, MsgMessageFor(outcome))); packets.Add(new ShopEndPacket { Type = ShopEndPacketType.CloseSubWindow }); packets.AddRange(BuildPocketRefresh(ctx, outcome)); return packets; } // -- Hooks ----------------------------------------------------------------- // Pre-operation validation that needs to emit a player-visible rejection message. Returns // null to continue to TryPrepareContext, or a packet list that is returned directly. // Equipment uses it for the "ItemIsFixed" path where OpenNos sends a say + shop_end. protected virtual IReadOnlyList<IPacket>? TryReject(ClientSession session, UpgradePacket packet) => null; protected abstract UpgradeContext? TryPrepareContext(ClientSession session, UpgradePacket packet); protected abstract void ApplySuccess(UpgradeContext ctx); protected abstract void ApplyFailure(ClientSession session, UpgradeContext ctx); // Default Fixed handler is a no-op; subclasses that emit Fixed outcomes (EquipmentUpgrade) // override this to set IsFixed on the wearable. protected virtual void ApplyFixed(ClientSession session, UpgradeContext ctx) { } // ProtectedSave is a failure roll absorbed by a scroll. Default: no item mutation; materials // and gold are still consumed by the outer skeleton. protected virtual void ApplyProtectedSave(ClientSession session, UpgradeContext ctx) { } protected abstract Game18NConstString SuccessMessage { get; } protected abstract Game18NConstString FailureMessage { get; } // Override only if you emit Fixed outcomes; default mirrors FailureMessage so the call-site // doesn't need to special-case the absence. protected virtual Game18NConstString FixedMessage => FailureMessage; // Override for operations that emit ProtectedSave; default falls back to FailureMessage. protected virtual Game18NConstString ProtectedSaveMessage => FailureMessage; // Default 2-way roll using GetSuccessRate. Subclasses with 3-way roll bands // (EquipmentUpgrade with upfix/upfail) override this directly. protected virtual UpgradeOutcome DetermineOutcome(double roll, UpgradeContext ctx) => roll < GetSuccessRate(ctx) ? UpgradeOutcome.Success : UpgradeOutcome.Failure; // Convenience hook for the common 2-way case. Operations that override DetermineOutcome // wholesale don't need to implement this; throw to make that explicit. protected virtual double GetSuccessRate(UpgradeContext ctx) => throw new NotImplementedException("Override DetermineOutcome or GetSuccessRate."); protected virtual IEnumerable<IPacket> BuildPocketRefresh(UpgradeContext ctx, UpgradeOutcome outcome) => Enumerable.Empty<IPacket>(); // Slots that are consumed regardless of outcome (e.g. sum's target slot). protected virtual void ConsumeFixedSlots(ClientSession session, UpgradeContext ctx) { } // Emit visual effects for the roll outcome. Equipment/Rarify broadcast `eff 3004/3005` to // the map and emit nothing to the player; Sum overrides to emit the `guri 19 ... 1324/1332` // sparkle animation to the player and broadcast a `guri 6` ground explosion. Default: nothing. protected virtual Task EmitOutcomeEffectsAsync(ClientSession session, UpgradeContext ctx, UpgradeOutcome outcome, List<IPacket> playerPackets) => Task.CompletedTask; // -- Helpers ---------------------------------------------------------------- // OpenNos sends distinct say vs msg keys for the ProtectedSave case: say "SCROLL_PROTECT_USED" // + msg "UPGRADE_FAILED_ITEM_SAVED". The hooks below are split so subclasses can diverge. protected virtual Game18NConstString SayMessageFor(UpgradeOutcome outcome) => outcome switch { UpgradeOutcome.Success => SuccessMessage, UpgradeOutcome.Fixed => FixedMessage, UpgradeOutcome.ProtectedSave => ProtectedSaveMessage, _ => FailureMessage, }; protected virtual Game18NConstString MsgMessageFor(UpgradeOutcome outcome) => SayMessageFor(outcome); private static bool CanAfford(ClientSession session, UpgradeContext ctx, out InfoiPacket rejection) { rejection = null!; if (session.Character.Gold < ctx.GoldCost) { rejection = new InfoiPacket { Message = Game18NConstString.NotEnoughGold }; return false; } foreach (var cost in ctx.MaterialCosts) { if (session.Character.InventoryService.CountItem(cost.VNum) < cost.Amount) { rejection = new InfoiPacket { Message = Game18NConstString.NotEnoughIngredients }; return false; } } return true; } private static void ConsumeMaterials(ClientSession session, UpgradeContext ctx, List<IPacket> outPackets) { foreach (var cost in ctx.MaterialCosts) { var remaining = cost.Amount; var instances = session.Character.InventoryService .Where(kv => kv.Value.ItemInstance?.ItemVNum == cost.VNum) .Select(kv => kv.Value) .OrderBy(i => i.Slot) .ToList(); foreach (var inst in instances) { if (remaining <= 0) { break; } var taken = Math.Min(remaining, inst.ItemInstance!.Amount); session.Character.InventoryService.RemoveItemAmountFromInventory(taken, inst.ItemInstanceId); remaining -= taken; outPackets.Add(inst.GeneratePocketChange((PocketType)inst.Type, inst.Slot)); } } } protected virtual SayiPacket BuildSay(ClientSession session, UpgradeContext ctx, UpgradeOutcome outcome, Game18NConstString message) => new() { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = outcome == UpgradeOutcome.Success ? SayColorType.Green : SayColorType.Red, Message = message, }; // Default MsgiPacket has no args; subclasses override for i18n messages that take a // parameter (e.g. Rarify's GambleSuccessful passes the new rare as %d). protected virtual MsgiPacket BuildMsgi(UpgradeContext ctx, UpgradeOutcome outcome, Game18NConstString message) => new() { Type = MessageType.Default, Message = message, }; } ================================================ FILE: src/NosCore.GameObject/Services/UpgradeService/UpgradeOutcome.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.GameObject.Services.UpgradeService; // Outcome of a single upgrade attempt. // Success → the operation's success path runs (Upgrade += 1, Rare += 1, etc.) // Failure → the operation's failure path runs (item destroyed / degraded / unchanged) // Fixed → the item is locked (IsFixed = true) and cannot be upgraded further; // materials are consumed but no positive or negative state change to the item. // Used by the equipment-upgrade flow per OpenNos's WearableInstance.UpgradeItem // upfix table. // ProtectedSave → a failure roll was absorbed by a scroll. Materials are consumed but the // item is saved in its original state (IsFixed is NOT set, unlike Fixed). // OpenNos emits "SCROLL_PROTECT_USED" + "UPGRADE_FAILED_ITEM_SAVED" for this. public enum UpgradeOutcome { Success, Failure, Fixed, ProtectedSave, } ================================================ FILE: src/NosCore.GameObject/Services/WarehouseService/IWarehouseService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using NosCore.Data.Enumerations.Miniland; using NosCore.Data.WebApi; using NosCore.GameObject.Services.ItemGenerationService.Item; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.Services.WarehouseService { public interface IWarehouseService { int GetMaxSlots(WarehouseType warehouseType); Task<List<WarehouseLink>> GetItemsAsync(Guid? id, long? ownerId, WarehouseType warehouseType, byte? slot); Task<List<WarehouseItem>> GetWarehouseItemsAsync(long ownerId, WarehouseType warehouseType); Task<WarehouseItem?> GetItemBySlotAsync(long ownerId, WarehouseType warehouseType, short slot); Task<short?> GetFreeSlotAsync(long ownerId, WarehouseType warehouseType); Task<bool> WithdrawItemAsync(Guid id); Task<WarehouseItem?> WithdrawItemFromSlotAsync(long ownerId, WarehouseType warehouseType, short slot); Task<bool> DepositItemAsync(long ownerId, WarehouseType warehouseType, ItemInstanceDto? itemInstance, short slot); Task<bool> DepositItemAsync(long ownerId, WarehouseType warehouseType, IItemInstance itemInstance); Task<bool> MoveItemAsync(long ownerId, WarehouseType warehouseType, short sourceSlot, short destinationSlot); } } ================================================ FILE: src/NosCore.GameObject/Services/WarehouseService/WarehouseItem.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using NosCore.Data.Enumerations.Miniland; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.ItemStorage; using System; namespace NosCore.GameObject.Services.WarehouseService { public class WarehouseItem : WarehouseItemDto, ISlotItem<WarehouseType> { public IItemInstance? ItemInstance { get; set; } public WarehouseType WarehouseType { get; set; } Guid ISlotItem.Id => Id; WarehouseType ISlotItem<WarehouseType>.SlotType { get => WarehouseType; set => WarehouseType = value; } } } ================================================ FILE: src/NosCore.GameObject/Services/WarehouseService/WarehouseService.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Miniland; using NosCore.Data.WebApi; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.ItemStorage; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Services.WarehouseService { public class WarehouseService( IDao<WarehouseItemDto, Guid> warehouseItemDao, IDao<WarehouseDto, Guid> warehouseDao, IDao<IItemInstanceDto?, Guid> itemInstanceDao) : IWarehouseService { private const int DefaultWarehouseSize = 68; private const int DefaultFamilyWarehouseSize = 49; public int GetMaxSlots(WarehouseType warehouseType) { return warehouseType switch { WarehouseType.FamilyWareHouse => DefaultFamilyWarehouseSize, _ => DefaultWarehouseSize }; } public async Task<List<WarehouseLink>> GetItemsAsync(Guid? id, long? ownerId, WarehouseType warehouseType, byte? slot) { var list = new List<WarehouseLink>(); if (id == null) { var warehouses = warehouseDao.Where(s => s.Type == warehouseType && s.CharacterId == (warehouseType == WarehouseType.FamilyWareHouse ? null : ownerId) && s.FamilyId == (warehouseType == WarehouseType.FamilyWareHouse ? ownerId : null))?.ToList(); if (warehouses == null || warehouses.Count == 0) { return list; } var warehouseIds = warehouses.Select(w => w.Id).ToList(); var warehouseItems = warehouseItemDao.Where(wi => warehouseIds.Contains(wi.WarehouseId))?.ToList(); if (warehouseItems == null) { return list; } foreach (var warehouseItem in warehouseItems) { if (slot.HasValue && warehouseItem.Slot != slot.Value) { continue; } var itemInstance = await itemInstanceDao.FirstOrDefaultAsync(i => i!.Id == warehouseItem.ItemInstanceId); if (itemInstance != null) { list.Add(new WarehouseLink { Slot = warehouseItem.Slot, ItemInstance = itemInstance.Adapt<ItemInstanceDto>() }); } } } else { var warehouseItem = await warehouseItemDao.FirstOrDefaultAsync(wi => wi.Id == id.Value); if (warehouseItem != null) { var itemInstance = await itemInstanceDao.FirstOrDefaultAsync(i => i!.Id == warehouseItem.ItemInstanceId); if (itemInstance != null) { list.Add(new WarehouseLink { Slot = warehouseItem.Slot, ItemInstance = itemInstance.Adapt<ItemInstanceDto>() }); } } } return list; } public async Task<List<WarehouseItem>> GetWarehouseItemsAsync(long ownerId, WarehouseType warehouseType) { var result = new List<WarehouseItem>(); var warehouses = warehouseDao.Where(s => s.Type == warehouseType && s.CharacterId == (warehouseType == WarehouseType.FamilyWareHouse ? null : ownerId) && s.FamilyId == (warehouseType == WarehouseType.FamilyWareHouse ? ownerId : null))?.ToList(); if (warehouses == null || warehouses.Count == 0) { return result; } var warehouseIds = warehouses.Select(w => w.Id).ToList(); var warehouseItems = warehouseItemDao.Where(wi => warehouseIds.Contains(wi.WarehouseId))?.ToList(); if (warehouseItems == null) { return result; } foreach (var warehouseItem in warehouseItems) { var itemInstance = await itemInstanceDao.FirstOrDefaultAsync(i => i!.Id == warehouseItem.ItemInstanceId); if (itemInstance != null) { result.Add(new WarehouseItem { Id = warehouseItem.Id, Slot = warehouseItem.Slot, ItemInstanceId = warehouseItem.ItemInstanceId, WarehouseId = warehouseItem.WarehouseId, WarehouseType = warehouseType, ItemInstance = itemInstance.Adapt<ItemInstance>() }); } } return result; } public async Task<WarehouseItem?> GetItemBySlotAsync(long ownerId, WarehouseType warehouseType, short slot) { var items = await GetWarehouseItemsAsync(ownerId, warehouseType); return items.FirstOrDefault(i => i.Slot == slot); } public async Task<short?> GetFreeSlotAsync(long ownerId, WarehouseType warehouseType) { var items = await GetWarehouseItemsAsync(ownerId, warehouseType); var maxSlots = GetMaxSlots(warehouseType); return SlotStorageHelper.FindFreeSlot( items, item => item.Slot, maxSlots); } public async Task<bool> WithdrawItemAsync(Guid id) { var item = await warehouseItemDao.FirstOrDefaultAsync(s => s.Id == id); if (item == null) { return false; } await warehouseItemDao.TryDeleteAsync(item.Id); await itemInstanceDao.TryDeleteAsync(item.ItemInstanceId); var remainingItemsInWarehouse = warehouseItemDao.Where(wi => wi.WarehouseId == item.WarehouseId)?.Any() ?? false; if (!remainingItemsInWarehouse) { await warehouseDao.TryDeleteAsync(item.WarehouseId); } return true; } public async Task<WarehouseItem?> WithdrawItemFromSlotAsync(long ownerId, WarehouseType warehouseType, short slot) { var item = await GetItemBySlotAsync(ownerId, warehouseType, slot); if (item == null) { return null; } var success = await WithdrawItemAsync(item.Id); return success ? item : null; } public async Task<bool> DepositItemAsync(long ownerId, WarehouseType warehouseType, ItemInstanceDto? itemInstance, short slot) { if (itemInstance == null) { return false; } var existingItem = await GetItemBySlotAsync(ownerId, warehouseType, slot); if (existingItem != null) { return false; } var item = itemInstance as IItemInstanceDto; item!.Id = Guid.NewGuid(); item = await itemInstanceDao.TryInsertOrUpdateAsync(item); var existingWarehouse = await warehouseDao.FirstOrDefaultAsync(s => s.Type == warehouseType && s.CharacterId == (warehouseType == WarehouseType.FamilyWareHouse ? null : ownerId) && s.FamilyId == (warehouseType == WarehouseType.FamilyWareHouse ? ownerId : null)); WarehouseDto warehouse; if (existingWarehouse != null) { warehouse = existingWarehouse; } else { warehouse = new WarehouseDto { CharacterId = warehouseType == WarehouseType.FamilyWareHouse ? null : ownerId, Id = Guid.NewGuid(), FamilyId = warehouseType == WarehouseType.FamilyWareHouse ? ownerId : null, Type = warehouseType, }; warehouse = await warehouseDao.TryInsertOrUpdateAsync(warehouse); } var warehouseItem = new WarehouseItemDto { Slot = slot, Id = Guid.NewGuid(), ItemInstanceId = item!.Id, WarehouseId = warehouse.Id }; await warehouseItemDao.TryInsertOrUpdateAsync(warehouseItem); return true; } public async Task<bool> DepositItemAsync(long ownerId, WarehouseType warehouseType, IItemInstance itemInstance) { var freeSlot = await GetFreeSlotAsync(ownerId, warehouseType); if (!freeSlot.HasValue) { return false; } var dto = itemInstance.Adapt<ItemInstanceDto>(); return await DepositItemAsync(ownerId, warehouseType, dto, freeSlot.Value); } public async Task<bool> MoveItemAsync(long ownerId, WarehouseType warehouseType, short sourceSlot, short destinationSlot) { if (sourceSlot == destinationSlot) { return false; } var sourceItem = await GetItemBySlotAsync(ownerId, warehouseType, sourceSlot); if (sourceItem == null) { return false; } var destinationItem = await GetItemBySlotAsync(ownerId, warehouseType, destinationSlot); if (destinationItem != null) { var sourceWarehouseItem = await warehouseItemDao.FirstOrDefaultAsync(wi => wi.Id == sourceItem.Id); var destWarehouseItem = await warehouseItemDao.FirstOrDefaultAsync(wi => wi.Id == destinationItem.Id); if (sourceWarehouseItem != null && destWarehouseItem != null) { sourceWarehouseItem.Slot = destinationSlot; destWarehouseItem.Slot = sourceSlot; await warehouseItemDao.TryInsertOrUpdateAsync(sourceWarehouseItem); await warehouseItemDao.TryInsertOrUpdateAsync(destWarehouseItem); } } else { var warehouseItem = await warehouseItemDao.FirstOrDefaultAsync(wi => wi.Id == sourceItem.Id); if (warehouseItem != null) { warehouseItem.Slot = destinationSlot; await warehouseItemDao.TryInsertOrUpdateAsync(warehouseItem); } } return true; } } } ================================================ FILE: src/NosCore.LoginServer/LoginServer.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using NosCore.Core; using NosCore.Core.Configuration; using NosCore.Data.Enumerations.I18N; using NosCore.Database; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.Networking; using NosCore.Shared.I18N; using Polly; using System; using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; namespace NosCore.LoginServer { public class LoginServer(IOptions<LoginConfiguration> loginConfiguration, NetworkManager networkManager, ILogger<LoginServer> logger, NosCoreContext context, ILogLanguageLocalizer<LogLanguageKey> logLanguage, Channel channel, IChannelHub channelHubClient) : BackgroundService { protected override async Task ExecuteAsync(CancellationToken stoppingToken) { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { Console.Title += $@" - Port : {Convert.ToInt32(loginConfiguration.Value.Port)}"; } try { await context.Database.MigrateAsync(stoppingToken); await context.Database.GetDbConnection().OpenAsync(stoppingToken); logger.LogInformation(logLanguage[LogLanguageKey.DATABASE_INITIALIZED]); } catch (Exception ex) { logger.LogError(logLanguage[LogLanguageKey.DATABASE_ERROR], ex); logger.LogError(logLanguage[LogLanguageKey.DATABASE_NOT_UPTODATE]); throw; } var connectTask = Policy .Handle<Exception>() .WaitAndRetryForeverAsync(retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)), (_, __, timeSpan) => logger.LogError( logLanguage[LogLanguageKey.MASTER_SERVER_RETRY], timeSpan.TotalSeconds) ).ExecuteAsync(() => channelHubClient.Bind(channel)); await Task.WhenAny(connectTask, networkManager.RunServerAsync()); } } } ================================================ FILE: src/NosCore.LoginServer/LoginServerBootstrap.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Autofac; using Autofac.Extensions.DependencyInjection; using FastExpressionCompiler; using Mapster; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Http; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using NodaTime; using NosCore.Core; using NosCore.Core.Configuration; using NosCore.Core.Encryption; using NosCore.Core.Observability; using NosCore.Core.Services.IdService; using NosCore.Dao; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Database; using NosCore.Database.Entities; using NosCore.GameObject.Hosting.Modules; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication; using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.LoginService; using NosCore.Networking; using NosCore.Networking.Encoding; using NosCore.Networking.Encoding.Filter; using NosCore.Networking.SessionRef; using NosCore.PacketHandlers.Login; using NosCore.Packets; using NosCore.Packets.Attributes; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Shared.Authentication; using NosCore.Shared.Configuration; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Serilog; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Threading.Tasks; namespace NosCore.LoginServer { public static class LoginServerBootstrap { private const string Title = "NosCore - LoginServer"; private const string ConsoleText = "LOGIN SERVER - NosCoreIO"; private static void InitializeConfiguration(string[] args, IServiceCollection services) { var loginConfiguration = new LoginConfiguration(); var conf = ConfiguratorBuilder.InitializeConfiguration(args, new[] { "logger.yml", "login.yml" }); conf.Bind(loginConfiguration); services.AddDbContext<NosCoreContext>( conf => conf.UseNpgsql(loginConfiguration.Database.ConnectionString, options => { options.UseNodaTime(); })); services.AddOptions<LoginConfiguration>().Bind(conf).ValidateDataAnnotations(); services.AddOptions<ServerConfiguration>().Bind(conf).ValidateDataAnnotations(); services.AddOptions<WebApiConfiguration>().Bind(conf.GetSection(nameof(LoginConfiguration.MasterCommunication))).ValidateDataAnnotations(); Logger.PrintHeader(ConsoleText); CultureInfo.DefaultThreadCurrentCulture = new(loginConfiguration.Language.ToString()); } private static void InitializeContainer(ContainerBuilder containerBuilder) { containerBuilder.RegisterModule<NetworkingModule>(); containerBuilder.RegisterType<NosCoreContext>().As<DbContext>(); containerBuilder.RegisterType<Dao<Account, AccountDto, long>>().As<IDao<AccountDto, long>>() .SingleInstance(); containerBuilder.RegisterType<Dao<Database.Entities.Character, CharacterDto, long>>().As<IDao<CharacterDto, long>>() .SingleInstance(); containerBuilder.RegisterType<LoginDecoder>().AsImplementedInterfaces(); containerBuilder.RegisterType<LoginEncoder>().AsImplementedInterfaces(); containerBuilder.RegisterType<LoginPacketHandlingStrategy>().As<IPacketHandlingStrategy>().SingleInstance(); containerBuilder.Register(_ => Enumerable.Empty<ISessionDisconnectHandler>()).As<IEnumerable<ISessionDisconnectHandler>>(); containerBuilder.RegisterType<NosCore.GameObject.Services.AuthService.AuthCodeService>().As<NosCore.GameObject.Services.AuthService.IAuthCodeService>().SingleInstance(); containerBuilder.Register(c => { var conf = c.Resolve<IOptions<LoginConfiguration>>(); return new PipelineConfiguration { UseDelimiter = false, Language = conf.Value.Language }; }).As<IPipelineConfiguration>().SingleInstance(); containerBuilder.RegisterType<SpamRequestFilter>().SingleInstance().AsImplementedInterfaces(); containerBuilder.Register(_ => SystemClock.Instance).As<IClock>().SingleInstance(); containerBuilder.RegisterType<HubConnectionFactory>(); containerBuilder.RegisterType<LoginService>().AsImplementedInterfaces(); containerBuilder.RegisterType<ChannelHubClient>().AsImplementedInterfaces().SingleInstance(); containerBuilder.RegisterType<PubSubHubClient>().AsImplementedInterfaces(); containerBuilder.RegisterType<AuthHubClient>().AsImplementedInterfaces(); containerBuilder.Register<IIdService<ChannelInfo>>(_ => new IdService<ChannelInfo>(1)).SingleInstance(); containerBuilder.Register<IHasher>(o => o.Resolve<IOptions<LoginConfiguration>>().Value.MasterCommunication.HashingType switch { HashingType.BCrypt => new BcryptHasher(), HashingType.Pbkdf2 => new Pbkdf2Hasher(), _ => new Sha512Hasher() }); containerBuilder.Register(c => { var conf = c.Resolve<IOptions<LoginConfiguration>>(); return new Channel { MasterCommunication = conf.Value.MasterCommunication, ClientType = ServerType.LoginServer, ClientName = $"{ServerType.LoginServer}", Port = conf.Value.Port, Host = conf.Value.Host! }; }); containerBuilder.RegisterTypes(typeof(NoS0575PacketHandler).Assembly.GetTypes().Where(type => typeof(IPacketHandler).IsAssignableFrom(type) && typeof(ILoginPacketHandler).IsAssignableFrom(type)).ToArray()) .Where(t => typeof(IPacketHandler).IsAssignableFrom(t) && typeof(ILoginPacketHandler).IsAssignableFrom(t)) .AsImplementedInterfaces(); var listofpacket = typeof(IPacket).Assembly.GetTypes() .Where(p => p.GetInterfaces().Contains(typeof(IPacket)) && (p.GetCustomAttribute<PacketHeaderAttribute>() == null || (p.GetCustomAttribute<PacketHeaderAttribute>()!.Scopes & Scope.OnLoginScreen) != 0) && p.IsClass && !p.IsAbstract).ToList(); containerBuilder.Register(c => new Deserializer(listofpacket)) .AsImplementedInterfaces() .SingleInstance(); containerBuilder.Register(c => new Serializer(listofpacket)) .AsImplementedInterfaces() .SingleInstance(); } public static async Task Main(string[] args) { try { await BuildHost(args).RunAsync(); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadLine(); } } private static IHost BuildHost(string[] args) { return Host.CreateDefaultBuilder(args) .UseSerilog() .UseServiceProviderFactory(new AutofacServiceProviderFactory()) .ConfigureContainer<ContainerBuilder>(InitializeContainer) .ConfigureServices((hostContext, services) => { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { Console.Title = Title; } InitializeConfiguration(args, services); services.AddI18NLogs(); services.AddLogging(builder => builder.AddFilter("Microsoft", LogLevel.Warning)); services.AddNosCoreTelemetry("NosCore.LoginServer"); services.RemoveAll<IHttpMessageHandlerBuilderFilter>(); services.Configure<ConsoleLifetimeOptions>(o => o.SuppressStatusMessages = true); services.AddHostedService<LoginServer>(); TypeAdapterConfig.GlobalSettings.EnableJsonMapping(); TypeAdapterConfig.GlobalSettings.Compiler = exp => exp.CompileFast(); }) .Build(); } } } ================================================ FILE: src/NosCore.LoginServer/NosCore.LoginServer.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net10.0</TargetFramework> <TieredCompilation>true</TieredCompilation> <InvariantGlobalization>false</InvariantGlobalization> <SelfContained>false</SelfContained> </PropertyGroup> <PropertyGroup Condition="'$(TargetArch)' == 'linux-musl-x64'"> <RuntimeIdentifier>linux-musl-x64</RuntimeIdentifier> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <ItemGroup> <PackageReference Include="Autofac" /> <PackageReference Include="Autofac.Extensions.DependencyInjection" /> <PackageReference Include="FastExpressionCompiler" /> <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" /> <PackageReference Include="Microsoft.Extensions.Hosting" /> <PackageReference Include="Polly" /> <PackageReference Include="Serilog.Extensions.Logging" /> </ItemGroup> <ItemGroup> <PackageReference Include="NosCore.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> <ItemGroup> <ProjectReference Include="..\NosCore.Database\NosCore.Database.csproj" /> <ProjectReference Include="..\NosCore.PacketHandlers\NosCore.PacketHandlers.csproj" /> </ItemGroup> </Project> ================================================ FILE: src/NosCore.MasterServer/MasterConfiguration.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Configuration; using System.ComponentModel.DataAnnotations; namespace NosCore.MasterServer { public class MasterConfiguration : LanguageConfiguration { [Required] public WebApiConfiguration WebApi { get; set; } = null!; [Required] public SqlConnectionConfiguration Database { get; set; } = null!; } } ================================================ FILE: src/NosCore.MasterServer/MasterServer.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; using NosCore.Data.Enumerations.I18N; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; namespace NosCore.MasterServer { public class MasterServer(IOptions<MasterConfiguration> masterConfiguration, ILogger<MasterServer> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : BackgroundService { private readonly MasterConfiguration _masterConfiguration = masterConfiguration.Value; protected override Task ExecuteAsync(CancellationToken stoppingToken) { logger.LogInformation(logLanguage[LogLanguageKey.SUCCESSFULLY_LOADED]); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { Console.Title += $@" - WebApi : {_masterConfiguration.WebApi}"; } return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.MasterServer/MasterServerBootstrap.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Autofac; using Autofac.Extensions.DependencyInjection; using FastExpressionCompiler; using FastMember; using Mapster; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Diagnostics.HealthChecks; using Microsoft.AspNetCore.Server.Kestrel.Core; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Http; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using NodaTime; using NosCore.Core; using NosCore.Core.Encryption; using NosCore.Core.Observability; using NosCore.Core.Services.IdService; using NosCore.Dao; using NosCore.Dao.Interfaces; using NosCore.Data.DataAttributes; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Database; using NosCore.Database.Entities; using NosCore.GameObject.InterChannelCommunication; using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub; using NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.InterChannelCommunication.Hubs.MailHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Hubs.WarehouseHub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Services.AuthService; using NosCore.GameObject.Services.BazaarService; using NosCore.GameObject.Services.FriendService; using NosCore.GameObject.Services.MailService; using NosCore.Shared.Authentication; using NosCore.Shared.Configuration; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Serilog; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Threading.Tasks; using ConfigureJwtBearerOptions = NosCore.Core.ConfigureJwtBearerOptions; namespace NosCore.MasterServer { public static class MasterServerBootstrap { private const string Title = "NosCore - MasterServer"; private const string ConsoleText = "MASTER SERVER - NosCoreIO"; public static async Task Main(string[] args) { try { await BuildApp(args).RunAsync(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } private static WebApplication BuildApp(string[] args) { var builder = WebApplication.CreateBuilder(args); builder.Configuration.AddConfiguration( ConfiguratorBuilder.InitializeConfiguration(args, new[] { "logger.yml", "master.yml" })); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { Console.Title = Title; } Logger.PrintHeader(ConsoleText); builder.Host.UseSerilog(); builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()); builder.Host.ConfigureContainer<ContainerBuilder>(InitializeContainer); ConfigureServices(builder); var app = builder.Build(); ConfigurePipeline(app); return app; } private static void ConfigureServices(WebApplicationBuilder builder) { var services = builder.Services; var configuration = builder.Configuration; services.AddOptions<MasterConfiguration>().Bind(configuration).ValidateDataAnnotations(); services.AddOptions<WebApiConfiguration>().Bind(configuration.GetSection(nameof(MasterConfiguration.WebApi))).ValidateDataAnnotations(); services.AddI18NLogs(); var masterConfiguration = new MasterConfiguration(); configuration.Bind(masterConfiguration); services.Configure<KestrelServerOptions>(options => options.ListenAnyIP(masterConfiguration.WebApi.Port)); services.AddDbContext<NosCoreContext>( conf => conf.UseNpgsql(masterConfiguration.Database.ConnectionString, options => { options.UseNodaTime(); })); services.ConfigureOptions<ConfigureJwtBearerOptions>(); services.RemoveAll<IHttpMessageHandlerBuilderFilter>(); services.AddLogging(b => b.AddFilter("Microsoft", LogLevel.Warning)); services.AddNosCoreTelemetry("NosCore.MasterServer", includeAspNetCore: true); services.AddAuthentication(c => c.DefaultScheme = JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(); services.AddSignalR(options => { options.DisableImplicitFromServicesParameters = true; }).AddJsonProtocol(options => { options.PayloadSerializerOptions.Converters.Add(new PolymorphicJsonConverter<IMessage>()); }); services.AddHealthChecks().AddDbContextCheck<NosCoreContext>("database"); services.AddAuthorization(o => { o.DefaultPolicy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); }); services.AddHostedService<MasterServer>(); TypeAdapterConfig.GlobalSettings.ForDestinationType<IStaticDto>() .IgnoreMember((member, side) => typeof(I18NString).IsAssignableFrom(member.Type)); TypeAdapterConfig.GlobalSettings.EnableJsonMapping(); TypeAdapterConfig.GlobalSettings.Compiler = exp => exp.CompileFast(); } private static void InitializeContainer(ContainerBuilder containerBuilder) { containerBuilder.RegisterType<ChannelHub>().AsImplementedInterfaces().SingleInstance(); containerBuilder.RegisterType<MasterClientList>().SingleInstance(); containerBuilder.Register<IHasher>(o => o.Resolve<IOptions<WebApiConfiguration>>().Value.HashingType switch { HashingType.BCrypt => new BcryptHasher(), HashingType.Pbkdf2 => new Pbkdf2Hasher(), _ => new Sha512Hasher() }); containerBuilder.Register(c => { var configuration = c.Resolve<IOptions<MasterConfiguration>>(); return new Channel { Host = "", MasterCommunication = configuration.Value.WebApi, ClientName = "Master Server", ClientType = ServerType.MasterServer, }; }); containerBuilder.RegisterType<NosCoreContext>().As<DbContext>(); containerBuilder.Register<IIdService<ChannelInfo>>(_ => new IdService<ChannelInfo>(1)).SingleInstance(); containerBuilder.Register(_ => SystemClock.Instance).As<IClock>().SingleInstance(); containerBuilder.RegisterType<BazaarRegistry>().As<IBazaarRegistry>().SingleInstance(); containerBuilder.RegisterType<FriendRequestRegistry>().As<IFriendRequestRegistry>().SingleInstance(); containerBuilder.RegisterType<ParcelRegistry>().As<IParcelRegistry>().SingleInstance(); containerBuilder.RegisterType<ChannelHub>().SingleInstance().AsImplementedInterfaces(); containerBuilder.RegisterAssemblyTypes(typeof(ChannelHub).Assembly) .Where(t => t.Name.EndsWith("Hub") && t.Name != nameof(ChannelHub)) .AsImplementedInterfaces(); containerBuilder.RegisterAssemblyTypes(typeof(BazaarService).Assembly) .Where(t => t.Name.EndsWith("Service") && t != typeof(AuthCodeService)) .AsImplementedInterfaces(); // AuthCodeService must be a singleton so the auth-code dictionary is // shared across hub method calls; registering it AFTER the assembly // scan (or equivalently excluding it from the scan above) keeps the // singleton lifetime from being overridden by the default-lifetime // scan. containerBuilder.RegisterType<AuthCodeService>().As<IAuthCodeService>().SingleInstance(); RegisterDto(containerBuilder); } private static void RegisterDto(ContainerBuilder containerBuilder) { containerBuilder.Register(c => c.Resolve<IEnumerable<IDao<IDto>>>().OfType<IDao<II18NDto>>().ToDictionary( x => x.GetType().GetGenericArguments()[1], y => y.LoadAll().GroupBy(x => x.Key ?? "") .ToDictionary(x => x.Key, x => x.ToList().ToDictionary(o => o.RegionType, o => o)))) .AsImplementedInterfaces() .SingleInstance() .AutoActivate(); var registerDatabaseObject = typeof(MasterServerBootstrap).GetMethod(nameof(RegisterDatabaseObject)); var assemblyDto = typeof(IStaticDto).Assembly.GetTypes(); var assemblyDb = typeof(Account).Assembly.GetTypes(); assemblyDto.Where(p => typeof(IDto).IsAssignableFrom(p) && (!p.Name.Contains("InstanceDto") || p.Name.Contains("Inventory")) && p.IsClass) .ToList() .ForEach(t => { var type = assemblyDb.First(tgo => string.Compare(t.Name, $"{tgo.Name}Dto", StringComparison.OrdinalIgnoreCase) == 0); var typepk = type.GetProperties() .Where(s => new NosCoreContext(new DbContextOptionsBuilder<NosCoreContext>().UseInMemoryDatabase( Guid.NewGuid().ToString()).Options).Model.FindEntityType(type)? .FindPrimaryKey()?.Properties.Select(x => x.Name) .Contains(s.Name) ?? false ).ToArray()[0]; registerDatabaseObject?.MakeGenericMethod(t, type, typepk.PropertyType) .Invoke(null, new object?[] { containerBuilder }); }); containerBuilder.RegisterType<Dao<ItemInstance, IItemInstanceDto?, Guid>>().As<IDao<IItemInstanceDto?, Guid>>().SingleInstance(); containerBuilder.Register(c => { var dic = c.Resolve<IDictionary<Type, Dictionary<string, Dictionary<RegionType, II18NDto>>>>(); var items = c.Resolve<IDao<ItemDto, short>>().LoadAll().ToList(); var props = StaticDtoExtension.GetI18NProperties(typeof(ItemDto)); var regions = Enum.GetValues(typeof(RegionType)); var accessors = TypeAccessor.Create(typeof(ItemDto)); Parallel.ForEach(items, s => s.InjectI18N(props, dic, regions, accessors)); var staticMetaDataAttribute = typeof(ItemDto).GetCustomAttribute<StaticMetaDataAttribute>(); if ((items.Count != 0) || (staticMetaDataAttribute == null) || (staticMetaDataAttribute.EmptyMessage == LogLanguageKey.UNKNOWN)) { if ((items.Count != 0) && (staticMetaDataAttribute != null)) { c.Resolve<ILoggerFactory>().CreateLogger(nameof(MasterServerBootstrap)).LogInformation(c.Resolve<ILogLanguageLocalizer<LogLanguageKey>>()[staticMetaDataAttribute.LoadedMessage], items.Count); } } else { c.Resolve<ILoggerFactory>().CreateLogger(nameof(MasterServerBootstrap)) .LogError(c.Resolve<ILogLanguageLocalizer<LogLanguageKey>>()[staticMetaDataAttribute.EmptyMessage]); } return items; }) .As<List<ItemDto>>() .SingleInstance() .AutoActivate(); } public static void RegisterDatabaseObject<TDto, TDb, TPk>(ContainerBuilder containerBuilder) where TDb : class where TPk : struct { containerBuilder.RegisterType<Dao<TDb, TDto, TPk>>().As<IDao<TDto, TPk>>().As<IDao<IDto>>().SingleInstance(); } private static void ConfigurePipeline(WebApplication app) { app.UseAuthentication(); app.UseRouting(); app.UseWebSockets(); app.UseAuthorization(); CultureInfo.DefaultThreadCurrentCulture = new(app.Services.GetRequiredService<IOptions<MasterConfiguration>>().Value.Language.ToString()); app.MapHub<AuthHub>(nameof(AuthHub)); app.MapHub<PubSubHub>(nameof(PubSubHub)); app.MapHub<BazaarHub>(nameof(BazaarHub)); app.MapHub<BlacklistHub>(nameof(BlacklistHub)); app.MapHub<ChannelHub>(nameof(ChannelHub)); app.MapHub<FriendHub>(nameof(FriendHub)); app.MapHub<MailHub>(nameof(MailHub)); app.MapHub<WarehouseHub>(nameof(WarehouseHub)); app.MapHealthChecks("/health/live", new HealthCheckOptions { Predicate = _ => false }).AllowAnonymous(); app.MapHealthChecks("/health/ready").AllowAnonymous(); } } } ================================================ FILE: src/NosCore.MasterServer/NosCore.MasterServer.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net10.0</TargetFramework> <TieredCompilation>true</TieredCompilation> <NoWarn>ASPDEPR008</NoWarn> <InvariantGlobalization>false</InvariantGlobalization> <SelfContained>false</SelfContained> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <PropertyGroup Condition="'$(TargetArch)' == 'linux-musl-x64'"> <RuntimeIdentifier>linux-musl-x64</RuntimeIdentifier> </PropertyGroup> <ItemGroup> <PackageReference Include="Autofac.Extensions.DependencyInjection" /> <PackageReference Include="FastExpressionCompiler" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" /> <PackageReference Include="Microsoft.AspNetCore.Authorization" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" /> <PackageReference Include="Microsoft.Extensions.Configuration.Json" /> <PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" /> <PackageReference Include="Microsoft.Extensions.Logging" /> <PackageReference Include="Serilog.Extensions.Logging" /> <PackageReference Include="System.Reactive" /> </ItemGroup> <ItemGroup> <PackageReference Include="NosCore.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> <ItemGroup> <ProjectReference Include="..\NosCore.Database\NosCore.Database.csproj" /> <ProjectReference Include="..\NosCore.GameObject\NosCore.GameObject.csproj" /> </ItemGroup> </Project> ================================================ FILE: src/NosCore.PacketHandlers/Battle/RevivalPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using System.Threading.Tasks; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.MapChangeService; using NosCore.Networking; using NosCore.Packets.ClientPackets.Event; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Battle; using NosCore.Packets.ServerPackets.Entities; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using Microsoft.Extensions.Logging; namespace NosCore.PacketHandlers.Battle { // Client-driven revive branch after the death dlgi. Three flavours: // Type 0 — "continue here": free at lvl<=20; lvl>20 costs 10x Seed of Power // (item 1012) and only restores HP/MP to 50%. Not enough seeds => // fall through to the save-point branch with an info message. // Type 1 — "save point": warp to the respawn stored by IRespawnService, // full HP/MP restore. // Type 2 — "arena" (PVP respawn): −100 gold, full HP/MP, same map. // // Every branch ends with `tp` (position) + `revive` + refreshed `stat`, mirroring // the death.txt trace at lines 6338–6344. public class RevivalPacketHandler( ILogger<RevivalPacketHandler> logger, IMapChangeService mapChangeService, IRespawnService respawnService) : PacketHandler<RevivalPacket>, IWorldPacketHandler { private const short SeedOfPowerVNum = 1012; private const short SeedsRequired = 5; private const long ArenaReviveCost = 100; public override async Task ExecuteAsync(RevivalPacket packet, ClientSession session) { if (!session.HasPlayerEntity) return; var character = session.Character; if (character.IsAlive) return; character.IsAlive = true; try { switch (packet.Type) { case 0: await ReviveInPlaceAsync(session).ConfigureAwait(false); break; case 1: await ReviveAtSavePointAsync(session).ConfigureAwait(false); break; case 2: await ReviveInArenaAsync(session).ConfigureAwait(false); break; default: character.IsAlive = false; return; } } catch (Exception ex) { character.IsAlive = false; logger.LogWarning(ex, "Revival failed for character {CharacterId} type {Type}", character.CharacterId, packet.Type); } } private async Task ReviveInPlaceAsync(ClientSession session) { var character = session.Character; var percent = 100; if (character.Level > 20) { if (character.InventoryService.CountItem(SeedOfPowerVNum) < SeedsRequired) { await session.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.NotEnoughPowerSeed, }).ConfigureAwait(false); await ReviveAtSavePointAsync(session).ConfigureAwait(false); return; } ConsumeSeeds(session, SeedsRequired); percent = 50; await session.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.FivePowerSeedUsed, }).ConfigureAwait(false); } RestoreLife(session, percent); await BroadcastReviveAsync(session, character.MapX, character.MapY).ConfigureAwait(false); } private async Task ReviveAtSavePointAsync(ClientSession session) { var character = session.Character; var respawnMapTypeId = respawnService.ResolveRespawnMapTypeId(character.MapId); var (mapId, x, y) = respawnService.GetRespawnLocation(character, respawnMapTypeId); RestoreLife(session, 100); await mapChangeService.ChangeMapAsync(session, mapId, x, y).ConfigureAwait(false); await BroadcastReviveAsync(session, x, y).ConfigureAwait(false); } private async Task ReviveInArenaAsync(ClientSession session) { var character = session.Character; if (character.Gold < ArenaReviveCost) { await ReviveAtSavePointAsync(session).ConfigureAwait(false); return; } character.Gold -= ArenaReviveCost; RestoreLife(session, 100); await session.SendPacketAsync(character.GenerateGold()).ConfigureAwait(false); await BroadcastReviveAsync(session, character.MapX, character.MapY).ConfigureAwait(false); } private static void RestoreLife(ClientSession session, int percent) { var c = session.Character; c.Hp = Math.Max(1, c.MaxHp * percent / 100); c.Mp = Math.Max(1, c.MaxMp * percent / 100); c.IsAlive = true; } private static void ConsumeSeeds(ClientSession session, short needed) { var inventory = session.Character.InventoryService; short remaining = needed; foreach (var slot in inventory.GetAll().Where(i => i.ItemInstance?.ItemVNum == SeedOfPowerVNum).ToList()) { if (remaining <= 0) break; var take = (short)Math.Min(remaining, slot.ItemInstance!.Amount); inventory.RemoveItemAmountFromInventory(take, slot.ItemInstanceId); remaining -= take; } } private static async Task BroadcastReviveAsync(ClientSession session, short x, short y) { var character = session.Character; var mapInstance = character.MapInstance; if (mapInstance == null) return; await mapInstance.SendPacketAsync(new TpPacket { VisualType = VisualType.Player, VisualId = character.VisualId, X = x, Y = y, }).ConfigureAwait(false); await mapInstance.SendPacketAsync(new RevivePacket { VisualType = VisualType.Player, VisualId = character.VisualId, Data = 0, }).ConfigureAwait(false); await session.SendPacketAsync(character.Group.GeneratePinit()).ConfigureAwait(false); await session.SendPacketAsync(character.GenerateStat()).ConfigureAwait(false); } } } ================================================ FILE: src/NosCore.PacketHandlers/Battle/UseSkillPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using System.Threading.Tasks; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.ClientPackets.Battle; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Battle; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; namespace NosCore.PacketHandlers.Battle { // Client-facing guard for skill casts. Responsibilities: reject casts that the // character is not allowed to make right now (vehicled / dead / bad target), resolve // the target entity, and hand off to IBattleService. All damage math lives behind // IBattleService so swapping formulas doesn't touch this file. public class UseSkillPacketHandler( ILogger<UseSkillPacketHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage, IBattleService battleService, ISessionRegistry sessionRegistry) : PacketHandler<UseSkillPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(UseSkillPacket packet, ClientSession clientSession) { if (!clientSession.Character.CanFight) { await clientSession.SendPacketAsync(new CancelPacket { Type = CancelPacketType.CancelAutoAttack }).ConfigureAwait(false); return; } if (clientSession.Character.IsSitting) { await clientSession.Character.RestAsync().ConfigureAwait(false); } if (clientSession.Character.IsVehicled) { await clientSession.SendPacketAsync(new CancelPacket { Type = CancelPacketType.CancelAutoAttack }).ConfigureAwait(false); return; } var target = ResolveTarget(packet, clientSession); if (target == null) { return; } // Cooldown + MP cost gate. Matching OpenNos: CharacterSkill.CanBeUsed() // enforces SkillDto.Cooldown * 100ms since LastUse; MpCost is debited on cast, // not on hit (so a missed swing still burns mana — prevents spam). if (!TryConsumeSkill(clientSession, packet.CastId, out var consumed)) { await clientSession.SendPacketAsync(new CancelPacket { Type = CancelPacketType.CancelAutoAttack }).ConfigureAwait(false); return; } await battleService.Hit(clientSession.Character, target, new HitArguments { SkillId = packet.CastId, MapX = packet.MapX, MapY = packet.MapY, }).ConfigureAwait(false); // Successful dispatch → stamp LastUse so subsequent casts are cooldown-gated. // We do this after Hit so a failed cast (no skill resolved) doesn't consume // the cooldown slot and leave the player unable to retry. consumed?.Invoke(); } // Verifies MP + cooldown WHEN the character owns the skill. For casts the // character doesn't have in their learned dict (e.g. transformation-only skills, // test fixtures without skill population) we defer rejection to BattleService // so the packet path stays permissive and SkillResolver produces a single // consistent "unknown skill" response. private static bool TryConsumeSkill(ClientSession session, long castId, out System.Action? commit) { commit = null; var character = session.Character; var skill = character.Skills?.Values.FirstOrDefault(s => s.Skill != null && s.Skill.CastId == castId && s.Skill.UpgradeSkill == 0); if (skill?.Skill == null) { // Skill not in the learned dict — let BattleService decide. Matches the // pre-enforcement behaviour and keeps tests that don't populate Skills // passing without needing an explicit skill setup step. return true; } if (!skill.CanBeUsed()) { return false; } if (character.Mp < skill.Skill.MpCost) { return false; } // Deferred commit: hold the now-resolved CharacterSkill + mpCost in the closure // so the packet handler can fire them only if BattleService.Hit didn't bail. var mpCost = skill.Skill.MpCost; var trackedSkill = skill; commit = () => { trackedSkill.LastUse = System.DateTime.Now; character.Mp = System.Math.Max(0, character.Mp - mpCost); }; return true; } // Split out of ExecuteAsync so each branch reads cleanly and unknown visual // types get logged once and at the correct severity. private IAliveEntity? ResolveTarget(UseSkillPacket packet, ClientSession clientSession) { IAliveEntity? candidate; switch (packet.TargetVisualType) { case VisualType.Player: candidate = sessionRegistry.TryGetCharacter(s => s.VisualId == packet.TargetId, out var player) ? player : null; break; case VisualType.Npc: candidate = clientSession.Character.MapInstance.FindNpc(s => s.VisualId == packet.TargetId); break; case VisualType.Monster: candidate = clientSession.Character.MapInstance.FindMonster(s => s.VisualId == packet.TargetId); break; default: logger.LogError(logLanguage[LogLanguageKey.VISUALTYPE_UNKNOWN], packet.TargetVisualType); return null; } if (candidate == null) { logger.LogError(logLanguage[LogLanguageKey.VISUALENTITY_DOES_NOT_EXIST]); return null; } return candidate; } } } ================================================ FILE: src/NosCore.PacketHandlers/Bazaar/CBListPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Data.StaticEntities; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Bazaar; using NosCore.Packets.ServerPackets.Auction; using NosCore.Packets.ServerPackets.Inventory; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using static NosCore.Packets.ServerPackets.Auction.RcbListPacket; namespace NosCore.PacketHandlers.Bazaar { public class CBListPacketHandler(IBazaarHub bazaarHttpClient, List<ItemDto> items, IClock clock) : PacketHandler<CBListPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(CBListPacket packet, ClientSession clientSession) { var itemssearch = packet.ItemVNumFilter?.FirstOrDefault() == 0 ? new List<short>() : packet.ItemVNumFilter; var bzlist = await bazaarHttpClient.GetBazaar(-1, (byte?)packet.Index, 50, packet.TypeFilter, packet.SubTypeFilter, packet.LevelFilter, packet.RareFilter, packet.UpgradeFilter, null); var bzlistsearched = bzlist.Where(s => itemssearch!.Contains(s.ItemInstance!.ItemVNum)).ToList(); //price up price down quantity up quantity down var definitivelist = itemssearch?.Any() == true ? bzlistsearched : bzlist; definitivelist = packet.OrderFilter switch { 0 => definitivelist .OrderBy(s => items.First(o => o.VNum == s.ItemInstance!.ItemVNum).Name[clientSession.Account.Language]) .ThenBy(s => s.BazaarItem!.Price) .ToList(), 1 => definitivelist .OrderBy(s => items.First(o => o.VNum == s.ItemInstance!.ItemVNum).Name[clientSession.Account.Language]) .ThenByDescending(s => s.BazaarItem!.Price) .ToList(), 2 => definitivelist .OrderBy(s => items.First(o => o.VNum == s.ItemInstance!.ItemVNum).Name[clientSession.Account.Language]) .ThenBy(s => s.BazaarItem!.Amount) .ToList(), 3 => definitivelist .OrderBy(s => items.First(o => o.VNum == s.ItemInstance!.ItemVNum).Name[clientSession.Account.Language]) .ThenByDescending(s => s.BazaarItem!.Amount) .ToList(), _ => definitivelist.OrderBy(s => items.First(o => o.VNum == s.ItemInstance!.ItemVNum).Name[clientSession.Account.Language]) .ToList() }; await clientSession.SendPacketAsync(new RcbListPacket { PageIndex = packet.Index, Items = definitivelist .Where(s => ((s.BazaarItem!.DateStart.Plus(Duration.FromHours(s.BazaarItem.Duration)) > clock.GetCurrentInstant()) && (s.ItemInstance!.Amount > 0))) .Select(bzlink => new RcbListElementPacket { AuctionId = bzlink.BazaarItem!.BazaarItemId, OwnerId = bzlink.BazaarItem.SellerId, OwnerName = bzlink.SellerName, ItemId = bzlink.ItemInstance!.ItemVNum, Amount = bzlink.ItemInstance.Amount, IsPackage = bzlink.BazaarItem.IsPackage, Price = bzlink.BazaarItem.Price, MinutesLeft = (long)(bzlink.BazaarItem.DateStart.Plus(Duration.FromHours(bzlink.BazaarItem.Duration)).Minus(clock.GetCurrentInstant())) .TotalMinutes, Unknown1 = false, Unknown = 2, Rarity = bzlink.ItemInstance.Rare, Upgrade = bzlink.ItemInstance.Upgrade, EInfo = new EInfoPacket() }).ToList() as List<RcbListElementPacket?> }); } } } ================================================ FILE: src/NosCore.PacketHandlers/Bazaar/CBuyPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.Packets.ClientPackets.Bazaar; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Bazaar; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Bazaar { public class CBuyPacketHandler(IBazaarHub bazaarHttpClient, IItemGenerationService itemProvider, ILogger<CBuyPacketHandler> logger, IDao<IItemInstanceDto?, Guid> itemInstanceDao, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : PacketHandler<CBuyPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(CBuyPacket packet, ClientSession clientSession) { if (packet.Amount <= 0) { return; } var bzs = await bazaarHttpClient.GetBazaar(packet.BazaarId, null, null, null, null, null, null, null, null); var bz = bzs.FirstOrDefault(); if ((bz != null) && (bz.SellerName != clientSession.Character.Name) && (packet.Price == bz.BazaarItem?.Price) && (bz.ItemInstance?.Amount >= packet.Amount)) { if (bz.BazaarItem.IsPackage && (bz.BazaarItem.Amount != packet.Amount)) { return; } var price = bz.BazaarItem.Price * packet.Amount; if (clientSession.Character.InventoryService.CanAddItem(bz.ItemInstance.ItemVNum)) { if (clientSession.Character.Gold >= price) { clientSession.Character.Gold -= price; await clientSession.SendPacketAsync(clientSession.Character.GenerateGold()); var itemInstance = await itemInstanceDao.FirstOrDefaultAsync(s => s!.Id == bz.ItemInstance.Id); var item = itemProvider.Convert(itemInstance!); item.Id = Guid.NewGuid(); var newInv = clientSession.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(item, clientSession.Character.CharacterId)); await clientSession.SendPacketAsync(newInv!.GeneratePocketChange()); var remove = await bazaarHttpClient.DeleteBazaarAsync(packet.BazaarId, packet.Amount, clientSession.Character.Name); if (remove) { await clientSession.HandlePacketsAsync(new[] { new CBListPacket { Index = 0, ItemVNumFilter = new List<short>() } }); await clientSession.SendPacketAsync(new RCBuyPacket(bz.SellerName!) { Type = VisualType.Player, VNum = bz.ItemInstance.ItemVNum, Amount = packet.Amount, Price = packet.Price, Slot = 0, //TODO: Add slot Upgrade = bz.ItemInstance.Upgrade, Rarity = (byte)bz.ItemInstance.Rare }); await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.BoughtItem, ArgumentType = 2, Game18NArguments = { bz.ItemInstance.ItemVNum.ToString(), packet.Amount } }); return; } logger.LogError(logLanguage[LogLanguageKey.BAZAAR_BUY_ERROR]); } else { await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.InsufficientGoldAvailable }); await clientSession.SendPacketAsync(new ModaliPacket { Type = 1, Message = Game18NConstString.InsufficientGoldAvailable }); return; } } else { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.NotEnoughSpace }); return; } } await clientSession.SendPacketAsync(new ModaliPacket { Type = 1, Message = Game18NConstString.OfferUpdated }); } } } ================================================ FILE: src/NosCore.PacketHandlers/Bazaar/CModPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Json.More; using Json.Patch; using Json.Pointer; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Bazaar; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Bazaar { public class CModPacketHandler(IBazaarHub bazaarHttpClient, ILogger<CModPacketHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : PacketHandler<CModPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(CModPacket packet, ClientSession clientSession) { var bzs = await bazaarHttpClient.GetBazaar(packet.BazaarId, null, null, null, null, null, null, null, null); var bz = bzs.FirstOrDefault(); if ((bz != null) && (bz.SellerName == clientSession.Character.Name) && (bz.BazaarItem?.Price != packet.NewPrice)) { if (bz.BazaarItem?.Amount != bz.ItemInstance?.Amount) { await clientSession.SendPacketAsync(new ModaliPacket { Type = 1, Message = Game18NConstString.CannotChangePriceSoldItems }); return; } if (bz.BazaarItem?.Amount == packet.Amount) { var patch = new JsonPatch(PatchOperation.Replace(JsonPointer.Parse("/BazaarItem/Price"), packet.NewPrice.AsJsonElement().AsNode())); var bzMod = await bazaarHttpClient.ModifyBazaarAsync(packet.BazaarId, patch); if ((bzMod != null) && (bzMod.BazaarItem?.Price != bz.BazaarItem.Price)) { await clientSession.HandlePacketsAsync(new[] { new CSListPacket { Index = 0, Filter = BazaarStatusType.Default } }); await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.NewSellingPrice, ArgumentType = 4, Game18NArguments = { bzMod.BazaarItem?.Price ?? 0 } }); return; } } await clientSession.SendPacketAsync(new ModaliPacket { Type = 1, Message = Game18NConstString.OfferUpdated }); } else { logger.LogError(logLanguage[LogLanguageKey.BAZAAR_MOD_ERROR]); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Bazaar/CRegPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Buff; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.Packets.ClientPackets.Bazaar; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Bazaar; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using System; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Bazaar { public class CRegPacketHandler(IOptions<WorldConfiguration> configuration, IBazaarHub bazaarHttpClient, IDao<IItemInstanceDto?, Guid> itemInstanceDao, IDao<InventoryItemInstanceDto, Guid> inventoryItemInstanceDao) : PacketHandler<CRegPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(CRegPacket cRegPacket, ClientSession clientSession) { if (cRegPacket.Amount <= 0 || cRegPacket.Price < 0) { return; } var medal = clientSession.Character.StaticBonusList.FirstOrDefault(s => (s.StaticBonusType == StaticBonusType.BazaarMedalGold) || (s.StaticBonusType == StaticBonusType.BazaarMedalSilver)); if (cRegPacket.Price > long.MaxValue / cRegPacket.Amount) { return; } var price = cRegPacket.Price * cRegPacket.Amount; var taxmax = price > 100000 ? price / 200 : 500; var taxmin = price >= 4000 ? 60 + (price - 4000) / 2000 * 30 > 10000 ? 10000 : 60 + (price - 4000) / 2000 * 30 : 50; var tax = medal == null ? taxmax : taxmin; var maxGold = configuration.Value.MaxGoldAmount; if (clientSession.Character.Gold < tax) { await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.NotEnoughGold }); return; } var it = clientSession.Character.InventoryService.LoadBySlotAndType(cRegPacket.Slot, cRegPacket.Inventory == 4 ? 0 : (NoscorePocketType)cRegPacket.Inventory); if ((it?.ItemInstance == null) || !it.ItemInstance.Item.IsSoldable || (it.ItemInstance.BoundCharacterId != null) || (cRegPacket.Amount > it.ItemInstance.Amount)) { return; } var maxPrice = medal == null ? 1000000 : maxGold; if (price > maxPrice) { await clientSession.SendPacketAsync(new ModaliPacket { Type = 1, Message = Game18NConstString.NotExceedMaxPrice, ArgumentType = 4, Game18NArguments = { maxPrice } }); return; } if ((medal == null) && (cRegPacket.Durability > 1)) { return; } short duration; switch (cRegPacket.Durability) { case 1: duration = 24; break; case 2: duration = 168; break; case 3: duration = 360; break; case 4: duration = 720; break; default: return; } var bazar = clientSession.Character.InventoryService.LoadBySlotAndType(cRegPacket.Slot, cRegPacket.Inventory == 4 ? NoscorePocketType.Equipment : (NoscorePocketType)cRegPacket.Inventory); if (bazar?.ItemInstance == null) { return; } IItemInstanceDto bazaaritem = bazar.ItemInstance; bazaaritem = (await itemInstanceDao.TryInsertOrUpdateAsync(bazaaritem))!; var result = await bazaarHttpClient.AddBazaarAsync(new BazaarRequest { ItemInstanceId = bazaaritem.Id, CharacterId = clientSession.Character.CharacterId, CharacterName = clientSession.Character.Name, HasMedal = medal != null, Price = cRegPacket.Price, IsPackage = cRegPacket.IsPackage, Duration = duration, Amount = cRegPacket.Amount }); switch (result) { case LanguageKey.LIMIT_EXCEEDED: await clientSession.SendPacketAsync(new ModaliPacket { Type = 1, Message = Game18NConstString.ListedMaxItemsNumber }); break; case LanguageKey.OBJECT_IN_BAZAAR: if (bazar.ItemInstance.Amount == cRegPacket.Amount) { await inventoryItemInstanceDao.TryDeleteAsync(bazar.Id); clientSession.Character.InventoryService.DeleteById(bazar.ItemInstanceId); } else { clientSession.Character.InventoryService.RemoveItemAmountFromInventory(cRegPacket.Amount, bazar.ItemInstanceId); } await clientSession.SendPacketAsync(((InventoryItemInstance?)null).GeneratePocketChange( cRegPacket.Inventory == 4 ? PocketType.Equipment : (PocketType)cRegPacket.Inventory, cRegPacket.Slot)); clientSession.Character.Gold -= tax; await clientSession.SendPacketAsync(clientSession.Character.GenerateGold()); await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.ItemAddedToBazar }); await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.ItemAddedToBazar }); await clientSession.SendPacketAsync(new RCRegPacket { Type = VisualType.Player }); break; } } } } ================================================ FILE: src/NosCore.PacketHandlers/Bazaar/CSListPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Bazaar; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Auction; using NosCore.Packets.ServerPackets.Inventory; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Bazaar { public class CSListPacketHandler(IBazaarHub bazaarHttpClient, IClock clock) : PacketHandler<CSListPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(CSListPacket packet, ClientSession clientSession) { var list = new List<RcsListPacket.RcsListElementPacket?>(); var bzlist = await bazaarHttpClient.GetBazaar(-1, packet.Index, 50, 0, 0, 0, 0, 0, clientSession.Character.CharacterId); foreach (var bz in bzlist) { var soldedAmount = bz.BazaarItem!.Amount - bz.ItemInstance!.Amount; int amount = bz.BazaarItem.Amount; var isNosbazar = bz.BazaarItem.MedalUsed; var price = bz.BazaarItem.Price; var minutesLeft = (long)(bz.BazaarItem.DateStart.Plus(Duration.FromHours(bz.BazaarItem.Duration)) - clock.GetCurrentInstant()) .TotalMinutes; var status = minutesLeft >= 0 ? soldedAmount < amount ? BazaarStatusType.OnSale : BazaarStatusType.Solded : BazaarStatusType.DelayExpired; if (status == BazaarStatusType.DelayExpired) { minutesLeft = (long)(bz.BazaarItem.DateStart.Plus(Duration.FromHours(bz.BazaarItem.Duration)).Plus(Duration.FromDays(isNosbazar ? 30 : 7)) - clock.GetCurrentInstant()).TotalMinutes; } var info = new EInfoPacket(); if ((packet.Filter == BazaarStatusType.Default) || (packet.Filter == status)) { list.Add(new RcsListPacket.RcsListElementPacket { AuctionId = bz.BazaarItem.BazaarItemId, OwnerId = bz.BazaarItem.SellerId, ItemId = bz.ItemInstance.ItemVNum, SoldAmount = soldedAmount, Amount = amount, IsPackage = bz.BazaarItem.IsPackage, Status = status, Price = price, MinutesLeft = minutesLeft, IsSellerUsingMedal = isNosbazar, Unknown = 0, Rarity = bz.ItemInstance.Rare, Upgrade = bz.ItemInstance.Upgrade, EInfo = info }); } } await clientSession.SendPacketAsync(new RcsListPacket { PageNumber = packet.Index, Items = list }); } } } ================================================ FILE: src/NosCore.PacketHandlers/Bazaar/CScalcPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.Packets.ClientPackets.Bazaar; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Bazaar; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Bazaar { public class CScalcPacketHandler(IOptions<WorldConfiguration> worldConfiguration, IBazaarHub bazaarHttpClient, IItemGenerationService itemProvider, ILogger<CScalcPacketHandler> logger, IDao<IItemInstanceDto?, Guid> itemInstanceDao, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : PacketHandler<CScalcPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(CScalcPacket packet, ClientSession clientSession) { var bzs = await bazaarHttpClient.GetBazaar(packet.BazaarId, null, null, null, null, null, null, null, null); var bz = bzs.FirstOrDefault(); if ((bz != null) && (bz.SellerName == clientSession.Character.Name)) { var soldedamount = bz.BazaarItem!.Amount - bz.ItemInstance!.Amount; var taxes = bz.BazaarItem.MedalUsed ? (short)0 : (short)(bz.BazaarItem.Price * 0.10 * soldedamount); var price = bz.BazaarItem.Price * soldedamount - taxes; if (clientSession.Character.InventoryService.CanAddItem(bz.ItemInstance.ItemVNum)) { if (clientSession.Character.Gold + price <= worldConfiguration.Value.MaxGoldAmount) { clientSession.Character.Gold += price; await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.PurchaseCompleted, ArgumentType = 2, Game18NArguments = { bz.ItemInstance.ItemVNum.ToString(), bz.ItemInstance.Amount } }); await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.PurchaseCompletedWithGoldUsed, ArgumentType = 4, Game18NArguments = { price } }); await clientSession.SendPacketAsync(clientSession.Character.GenerateGold()); if (bz.ItemInstance.Amount > 0) { var itemInstance = await itemInstanceDao.FirstOrDefaultAsync(s => s!.Id == bz.ItemInstance.Id); if (itemInstance == null) { return; } var item = itemProvider.Convert(itemInstance); item.Id = Guid.NewGuid(); var newInv = clientSession.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(item, clientSession.Character.CharacterId)); if (newInv != null) { await clientSession.SendPacketAsync(newInv.GeneratePocketChange()); } } var remove = await bazaarHttpClient.DeleteBazaarAsync(packet.BazaarId, bz.ItemInstance.Amount, clientSession.Character.Name, clientSession.Character.CharacterId); if (remove) { await clientSession.SendPacketAsync(new RCScalcPacket { Type = VisualType.Player, Price = bz.BazaarItem.Price, RemainingAmount = (short)(bz.BazaarItem.Amount - bz.ItemInstance.Amount), Amount = bz.BazaarItem.Amount, Taxes = taxes, Total = price + taxes }); await clientSession.HandlePacketsAsync(new[] {new CSListPacket {Index = 0, Filter = BazaarStatusType.Default}}); return; } logger.LogError(logLanguage[LogLanguageKey.BAZAAR_DELETE_ERROR]); } else { await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.MaxGoldReached }); } } else { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.NotEnoughSpace }); } await clientSession.SendPacketAsync(new RCScalcPacket { Type = VisualType.Player, Price = bz.BazaarItem.Price, RemainingAmount = 0, Amount = bz.BazaarItem.Amount, Taxes = 0, Total = 0 }); } else { await clientSession.SendPacketAsync(new RCScalcPacket { Type = VisualType.Player, Price = 0, RemainingAmount = 0, Amount = 0, Taxes = 0, Total = 0 }); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Bazaar/CSkillPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Data.Enumerations.Buff; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Bazaar; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Bazaar { public class CSkillPacketHandler(IClock clock) : PacketHandler<CSkillPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(CSkillPacket packet, ClientSession clientSession) { var medalBonus = clientSession.Character.StaticBonusList.FirstOrDefault(s => (s.StaticBonusType == StaticBonusType.BazaarMedalGold) || (s.StaticBonusType == StaticBonusType.BazaarMedalSilver)); if (medalBonus != null) { var medal = medalBonus.StaticBonusType == StaticBonusType.BazaarMedalGold ? (byte)MedalType.Gold : (byte)MedalType.Silver; var time = (int)(medalBonus.DateEnd == null ? 720 : (((Instant)medalBonus.DateEnd) - clock.GetCurrentInstant()).TotalHours); await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.AttackWhileBazar }); await clientSession.SendPacketAsync(new WopenPacket { Type = WindowType.NosBazaar, Unknown = medal, Unknown2 = (byte)time }); } else { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.NosMerchantMedaleAllowPlayerToUseNosbazarOnAllGeneralMaps }); } } } } ================================================ FILE: src/NosCore.PacketHandlers/CharacterScreen/CharNewJobPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Character; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.CharacterSelectionScreen; using NosCore.Shared.Enumerations; using System.Threading.Tasks; namespace NosCore.PacketHandlers.CharacterScreen { public class CharNewJobPacketHandler(IDao<CharacterDto, long> characterDao, IOptions<WorldConfiguration> configuration) : PacketHandler<CharNewJobPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(CharNewJobPacket packet, ClientSession clientSession) { if (clientSession.HasSelectedCharacter) { return; } var targetClass = MapJobClass(packet.JobClass); if (targetClass == null) { return; } if (targetClass == CharacterClassType.MartialArtist) { var alreadyMartialArtist = await characterDao.FirstOrDefaultAsync(s => (s.AccountId == clientSession.Account.AccountId) && (s.Class == CharacterClassType.MartialArtist) && (s.State == CharacterState.Active)); if (alreadyMartialArtist != null) { return; } if (!configuration.Value.AllClassAvailableOnCreate) { var hasLevel80 = await characterDao.FirstOrDefaultAsync(s => (s.Level >= 80) && (s.AccountId == clientSession.Account.AccountId) && (s.ServerId == configuration.Value.ServerId) && (s.State == CharacterState.Active)); if (hasLevel80 == null) { return; } //todo add cooldown for recreate 30days } } var forwarded = packet.Adapt<CharNewPacket>(); forwarded.TargetClass = (byte)targetClass.Value; await clientSession.HandlePacketsAsync(new[] { forwarded }); } private static CharacterClassType? MapJobClass(byte? jobClass) => jobClass switch { 1 => CharacterClassType.MartialArtist, 2 => CharacterClassType.Swordsman, 3 => CharacterClassType.Archer, 4 => CharacterClassType.Mage, _ => null }; } } ================================================ FILE: src/NosCore.PacketHandlers/CharacterScreen/CharNewPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Algorithm.HpService; using NosCore.Algorithm.MpService; using NosCore.Core.Configuration; using NosCore.Dao.Interfaces; using NosCore.Data.CommandPackets; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Character; using NosCore.Data.StaticEntities; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.Packets.ClientPackets.CharacterSelectionScreen; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.CharacterSelectionScreen; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Shared.Helpers; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace NosCore.PacketHandlers.CharacterScreen { public class CharNewPacketHandler(IDao<CharacterDto, long> characterDao, IItemGenerationService itemBuilderService, IDao<QuicklistEntryDto, Guid> quicklistEntryDao, IDao<IItemInstanceDto?, Guid> itemInstanceDao, IDao<InventoryItemInstanceDto, Guid> inventoryItemInstanceDao, IHpService hpService, IMpService mpService, IOptions<WorldConfiguration> worldConfiguration, IDao<CharacterSkillDto, Guid> characterSkillDao, List<ItemDto> items, ILoggerFactory loggerFactory) : PacketHandler<CharNewPacket>, IWorldPacketHandler { private readonly WorldConfiguration _worldConfiguration = worldConfiguration.Value; public const string Nameregex = @"^[\u0021-\u007E\u00A1-\u00AC\u00AE-\u00FF\u4E00-\u9FA5\u0E01-\u0E3A\u0E3F-\u0E5B\u002E]*$"; private static byte ResolveCreationLevel(CharacterClassType @class, bool allClassAvailable) { if (allClassAvailable && @class != CharacterClassType.Adventurer) { return 80; } return @class switch { CharacterClassType.Adventurer => 1, CharacterClassType.MartialArtist => 81, _ => 56 }; } private static StarterOrigin ResolveStarterOrigin(CharacterClassType @class, bool allClassAvailable) { if (@class == CharacterClassType.Adventurer) { return StarterOrigin.CreateAndUpgrade; } return allClassAvailable ? StarterOrigin.Create80 : StarterOrigin.Create56; } private static List<TItem> ResolvePack<TItem>( Dictionary<string, Dictionary<StarterOrigin, List<TItem>>> packs, CharacterClassType @class, StarterOrigin origin, List<TItem> fallback) { return packs.TryGetValue(@class.ToString(), out var byOrigin) && byOrigin.TryGetValue(origin, out var list) ? list : fallback; } public override async Task ExecuteAsync(CharNewPacket packet, ClientSession clientSession) { if (clientSession.HasSelectedCharacter) { return; } var accountId = clientSession.Account.AccountId; var slot = packet.Slot; var characterName = packet.Name; if (await characterDao.FirstOrDefaultAsync(s => (s.AccountId == accountId) && (s.Slot == slot) && (s.State == CharacterState.Active) && (s.ServerId == _worldConfiguration.ServerId)) != null) { return; } var rg = new Regex(Nameregex); if (rg.Matches(characterName!).Count == 1) { var character = await characterDao.FirstOrDefaultAsync(s => (s.Name == characterName) && (s.State == CharacterState.Active) && (s.ServerId == _worldConfiguration.ServerId)); if (character == null) { var @class = (CharacterClassType)(packet.TargetClass ?? (byte)CharacterClassType.Adventurer); var level = ResolveCreationLevel(@class, _worldConfiguration.AllClassAvailableOnCreate); var jobLevel = (byte)(@class == CharacterClassType.Adventurer ? 1 : 50); var chara = new CharacterDto { Class = @class, Gender = packet.Gender, HairColor = packet.HairColor, HairStyle = packet.HairStyle, Hp = (int)hpService.GetHp(@class, level), JobLevel = jobLevel, Level = level, MapId = 1, MapX = (short)RandomHelper.Instance.RandomNumber(78, 81), MapY = (short)RandomHelper.Instance.RandomNumber(114, 118), Mp = (int)mpService.GetMp(@class, level), MaxMateCount = 10, SpPoint = 10000, SpAdditionPoint = 0, Name = characterName, Slot = slot, AccountId = accountId, State = CharacterState.Active }; chara = await characterDao.TryInsertOrUpdateAsync(chara); var inventory = new InventoryService(items, worldConfiguration, loggerFactory.CreateLogger<InventoryService>()); var origin = ResolveStarterOrigin(@class, _worldConfiguration.AllClassAvailableOnCreate); var itemsToAdd = ResolvePack(_worldConfiguration.BasicEquipments, @class, origin, new List<BasicEquipment>()); foreach (var itemToAdd in itemsToAdd) { inventory.AddItemToPocket(InventoryItemInstance.Create(itemBuilderService.Create(itemToAdd.VNum, itemToAdd.Amount, itemToAdd.Rare, itemToAdd.Upgrade), chara.CharacterId), itemToAdd.NoscorePocketType); } // Universal base skills every character must own regardless of class / starter // origin — matches vanosilla's BaseSkill.cs hard-coded list (VNum 200 primary, // 201 secondary, 209 Pet Catcher). These cannot live in WorldConfiguration.BasicSkills // because that table is class/origin-specific and would let a misconfigured JSON // create a character without the capture slot (u_s 16 returns `cancel 2 ...`). var skillsToAdd = new List<short> { 200, 201, 209 }; skillsToAdd.AddRange(ResolvePack(_worldConfiguration.BasicSkills, @class, origin, new List<short>())); foreach (var skillToAdd in skillsToAdd.Distinct()) { await characterSkillDao.TryInsertOrUpdateAsync(new CharacterSkillDto { CharacterId = chara.CharacterId, SkillVNum = skillToAdd, Id = Guid.NewGuid() }); } await quicklistEntryDao.TryInsertOrUpdateAsync(new[] { new QuicklistEntryDto { Id = Guid.NewGuid(), CharacterId = chara.CharacterId, Slot = 1, Type = 0, IconType = 2, IconVNum = 0 }, new QuicklistEntryDto { Id = Guid.NewGuid(), CharacterId = chara.CharacterId, Slot = 9, Type = 1, IconType = 3, IconVNum = 1 }, new QuicklistEntryDto { Id = Guid.NewGuid(), CharacterId = chara.CharacterId, Slot = 0, Type = 1, IconType = 1, IconVNum = 1 }, new QuicklistEntryDto { Id = Guid.NewGuid(), CharacterId = chara.CharacterId, Slot = 8, Type = 1, IconType = 1, IconVNum = 16 }, }); await itemInstanceDao.TryInsertOrUpdateAsync(inventory.Values.Select(s => s.ItemInstance).ToArray()); await inventoryItemInstanceDao.TryInsertOrUpdateAsync(inventory.Values.ToArray()); await clientSession.SendPacketAsync(new SuccessPacket()); await clientSession.HandlePacketsAsync(new[] { new EntryPointPacket() { Name = clientSession.Account.Name, } }); } else { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.CharacterNameAlreadyTaken }); } } else { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.NameIsInvalid }); } } } } ================================================ FILE: src/NosCore.PacketHandlers/CharacterScreen/CharRenPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Dao.Interfaces; using NosCore.Data.CommandPackets; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Character; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.CharacterSelectionScreen; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.CharacterSelectionScreen; using NosCore.Packets.ServerPackets.UI; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace NosCore.PacketHandlers.CharacterScreen { public class CharRenPacketHandler(IDao<CharacterDto, long> characterDao, IOptions<WorldConfiguration> configuration) : PacketHandler<CharRenamePacket>, IWorldPacketHandler { public override async Task ExecuteAsync(CharRenamePacket packet, ClientSession clientSession) { if (clientSession.HasSelectedCharacter) { return; } var accountId = clientSession.Account.AccountId; var slot = packet.Slot; var characterName = packet.Name; var chara = await characterDao.FirstOrDefaultAsync(s => (s.AccountId == accountId) && (s.Slot == slot) && (s.State == CharacterState.Active) && (s.ServerId == configuration.Value.ServerId)) ; if ((chara == null) || (chara.ShouldRename == false)) { return; } var rg = new Regex(CharNewPacketHandler.Nameregex); if (rg.Matches(characterName!).Count == 1) { var character = await characterDao.FirstOrDefaultAsync(s => (s.Name == characterName) && (s.State == CharacterState.Active)); if (character == null) { chara.Name = characterName; chara.ShouldRename = false; await characterDao.TryInsertOrUpdateAsync(chara); await clientSession.SendPacketAsync(new SuccessPacket()); await clientSession.HandlePacketsAsync(new[] { new EntryPointPacket() { Name = clientSession.Account.Name, } }); } else { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.CharacterNameAlreadyTaken }); } } else { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.NameIsInvalid }); } } } } ================================================ FILE: src/NosCore.PacketHandlers/CharacterScreen/CharacterDeletePacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Dao.Interfaces; using NosCore.Data.CommandPackets; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Character; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.CharacterSelectionScreen; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Authentication; using System.Threading.Tasks; namespace NosCore.PacketHandlers.CharacterScreen { public class CharacterDeletePacketHandler(IDao<CharacterDto, long> characterDao, IDao<AccountDto, long> accountDao, IHasher hasher, IOptions<WorldConfiguration> configuration) : PacketHandler<CharacterDeletePacket>, IWorldPacketHandler { public override async Task ExecuteAsync(CharacterDeletePacket packet, ClientSession clientSession) { if (clientSession.HasSelectedCharacter) { return; } var account = await accountDao .FirstOrDefaultAsync(s => s.AccountId.Equals(clientSession.Account.AccountId)); if (account == null) { return; } if ((account.Password!.ToLower() == hasher.Hash(packet.Password!)) || (account.Name == packet.Password)) { var character = await characterDao.FirstOrDefaultAsync(s => (s.AccountId == account.AccountId) && (s.Slot == packet.Slot) && (s.ServerId == configuration.Value.ServerId) && (s.State == CharacterState.Active)); if (character == null) { return; } character.State = CharacterState.Inactive; character = await characterDao.TryInsertOrUpdateAsync(character); await clientSession.HandlePacketsAsync(new[] { new EntryPointPacket { Header = "EntryPoint", Name = account.Name, Password = account.Password } }); } else { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.IncorrectPassword }); } } } } ================================================ FILE: src/NosCore.PacketHandlers/CharacterScreen/DacPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking.SessionRef; using NosCore.Packets.ClientPackets.CharacterSelectionScreen; using NosCore.Packets.ClientPackets.Infrastructure; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Threading.Tasks; namespace NosCore.PacketHandlers.CharacterScreen { public class DacPacketHandler(IDao<AccountDto, long> accountDao, ILogger<DacPacketHandler> logger, IAuthHub authHttpClient, IPubSubHub pubSubHub, ISessionRefHolder sessionRefHolder, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : PacketHandler<DacPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(DacPacket packet, ClientSession clientSession) { await EntryPointPacketHandler.VerifyConnectionAsync(clientSession, logger, authHttpClient, accountDao, pubSubHub, true, packet.AccountName, "thisisgfmode", -1, sessionRefHolder, logLanguage); if (clientSession.Account == null!) { return; } await clientSession.HandlePacketsAsync(new[] { new SelectPacket { Slot = packet.Slot } }) ; logger.LogInformation(logLanguage[LogLanguageKey.ACCOUNT_ARRIVED], clientSession.Account.Name); } } } ================================================ FILE: src/NosCore.PacketHandlers/CharacterScreen/EntryPointPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Core.Encryption; using NosCore.Dao.Interfaces; using NosCore.Data.CommandPackets; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Character; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Networking; using NosCore.Networking.SessionRef; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.CharacterSelectionScreen; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.CharacterScreen { public class EntryPointPacketHandler(IDao<CharacterDto, long> characterDao, IDao<AccountDto, long> accountDao, IDao<MateDto, long> mateDao, ILogger<EntryPointPacketHandler> logger, IAuthHub authHttpClient, IPubSubHub pubSubHub, IOptions<WorldConfiguration> configuration, ISessionRefHolder sessionRefHolder, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : PacketHandler<EntryPointPacket>, IWorldPacketHandler { public static async Task VerifyConnectionAsync(ClientSession clientSession, ILogger _logger, IAuthHub authHttpClient, IDao<AccountDto, long> accountDao, IPubSubHub pubSubHub, bool passwordLessConnection, string accountName, string password, int sessionId, ISessionRefHolder sessionRefHolder, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { var subscribers = await pubSubHub.GetSubscribersAsync(); var alreadyConnnected = subscribers.Any(x => x.Name == accountName); if (alreadyConnnected) { _logger.LogError(logLanguage[LogLanguageKey.ALREADY_CONNECTED], new { accountName }); await clientSession.DisconnectAsync(); return; } var account = await accountDao.FirstOrDefaultAsync(s => s.Name == accountName); if (account == null) { _logger.LogError(logLanguage[LogLanguageKey.INVALID_ACCOUNT], new { accountName }); await clientSession.DisconnectAsync(); return; } var awaitingConnection = (passwordLessConnection ? await authHttpClient .GetAwaitingConnectionAsync(accountName, password, sessionId) != null : account.Password?.Equals(new Sha512Hasher().Hash(password), StringComparison.OrdinalIgnoreCase) == true); if (!awaitingConnection) { _logger.LogError(logLanguage[LogLanguageKey.INVALID_PASSWORD], new { accountName }); await clientSession.DisconnectAsync(); return; } var sessionMapping = sessionRefHolder .FirstOrDefault(s => s.Value.SessionId == clientSession.SessionId); if (!sessionMapping.Equals(default(KeyValuePair<string, RegionTypeMapping>))) { sessionMapping.Value.RegionType = account.Language; } clientSession.InitializeAccount(account); await pubSubHub.SubscribeAsync(new Subscriber { Id = clientSession.SessionId, Name = clientSession.Account.Name, Language = clientSession.Account.Language, }); } public override async Task ExecuteAsync(EntryPointPacket packet, ClientSession clientSession) { if (clientSession.Account == null!) // we bypass this when Create new char { var passwordLessConnection = packet.Password == "thisisgfmode"; await VerifyConnectionAsync(clientSession, logger, authHttpClient, accountDao, pubSubHub, passwordLessConnection, packet.Name, packet.Password ?? throw new InvalidOperationException(), clientSession.SessionId, sessionRefHolder, logLanguage); if (clientSession.Account == null!) { return; } if (passwordLessConnection) { //MFA can be validated on launcher clientSession.MfaValidated = true; } logger.LogInformation(logLanguage[LogLanguageKey.ACCOUNT_ARRIVED], clientSession.Account.Name); if (!clientSession.MfaValidated && clientSession.Account.MfaSecret != null) { await clientSession.SendPacketAsync(new GuriPacket { Type = GuriPacketType.TextInput, Argument = 3, EntityId = 0 }); return; } } var characters = characterDao.Where(s => (s.AccountId == clientSession.Account.AccountId) && (s.State == CharacterState.Active) && s.ServerId == configuration.Value.ServerId); // load characterlist packet for each character in Character await clientSession.SendPacketAsync(new ClistStartPacket { Type = (byte)(configuration.Value.AllClassAvailableOnCreate ? 1 : 0) }); foreach (var character in characters!) { var equipment = new WearableInstance?[16]; /* IEnumerable<ItemInstanceDTO> inventory = _iteminstanceDAO.Where(s => s.CharacterId == character.CharacterId && s.Type == (byte)InventoryType.Wear); foreach (ItemInstanceDTO equipmentEntry in inventory) { // explicit load of iteminstance WearableInstance currentInstance = equipmentEntry as WearableInstance; equipment[(short)currentInstance.Item.EquipmentSlot] = currentInstance; } */ var petlist = new List<short?>(); var mates = mateDao.Where(s => s.CharacterId == character.CharacterId)! .ToList(); for (var i = 0; i < 26; i++) { if (mates.Count > i) { petlist.Add(mates[i].Skin); petlist.Add(mates[i].VNum); } else { petlist.Add(-1); } } // 1 1 before long string of -1.-1 = act completion await clientSession.SendPacketAsync(new ClistPacket { Slot = character.Slot, Name = character.Name, Unknown = 0, Gender = character.Gender, HairStyle = character.HairStyle, HairColor = character.HairColor, Unknown1 = 0, Class = character.Class, Level = character.Level, HeroLevel = character.HeroLevel, Equipments = new List<short?> { equipment[(byte) EquipmentType.Hat]?.ItemVNum, equipment[(byte) EquipmentType.Armor]?.ItemVNum, equipment[(byte) EquipmentType.WeaponSkin]?.ItemVNum ?? equipment[(byte) EquipmentType.MainWeapon]?.ItemVNum, equipment[(byte) EquipmentType.SecondaryWeapon]?.ItemVNum, equipment[(byte) EquipmentType.Mask]?.ItemVNum, equipment[(byte) EquipmentType.Fairy]?.ItemVNum, equipment[(byte) EquipmentType.CostumeSuit]?.ItemVNum, equipment[(byte) EquipmentType.CostumeHat]?.ItemVNum }, JobLevel = character.JobLevel, QuestCompletion = 1, QuestPart = 1, Pets = petlist, Design = equipment[(byte)EquipmentType.Hat]?.Item?.IsColored ?? false ? equipment[(byte)EquipmentType.Hat]?.Design ?? 0 : 0, Rename = character.ShouldRename }); } await clientSession.SendPacketAsync(new ClistEndPacket()); } } } ================================================ FILE: src/NosCore.PacketHandlers/CharacterScreen/SelectPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using Microsoft.Extensions.Options; using NodaTime; using NosCore.Algorithm.DignityService; using NosCore.Algorithm.HpService; using NosCore.Algorithm.MpService; using NosCore.Algorithm.ReputationService; using NosCore.Algorithm.SpeedService; using NosCore.Core.Configuration; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Character; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Group; using NosCore.Data.StaticEntities; using NosCore.Data.WebApi; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Ecs.Components; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.CharacterService; using NosCore.GameObject.Services.GroupService; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.MapInstanceAccessService; using NosCore.GameObject.Services.QuestService; using NosCore.Networking.SessionGroup; using Wolverine; using NosCore.Packets.ClientPackets.CharacterSelectionScreen; using NosCore.Packets.ServerPackets.CharacterSelectionScreen; using NosCore.Core.I18N; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Reactive.Subjects; using System.Threading; using System.Threading.Tasks; namespace NosCore.PacketHandlers.CharacterScreen { public class SelectPacketHandler(IDao<CharacterDto, long> characterDao, ILogger<SelectPacketHandler> logger, ILoggerFactory loggerFactory, IItemGenerationService itemProvider, IMapInstanceAccessorService mapInstanceAccessorService, IDao<IItemInstanceDto?, Guid> itemInstanceDao, IDao<InventoryItemInstanceDto, Guid> inventoryItemInstanceDao, IDao<StaticBonusDto, long> staticBonusDao, IDao<QuicklistEntryDto, Guid> quickListEntriesDao, IDao<TitleDto, Guid> titleDao, IDao<CharacterQuestDto, Guid> characterQuestDao, IDao<CharacterQuestObjectiveDto, Guid> characterQuestObjectiveDao, IDao<RespawnDto, long> respawnDao, IDao<ScriptDto, Guid> scriptDao, List<QuestDto> quests, List<QuestObjectiveDto> questObjectives, IOptions<WorldConfiguration> configuration, ILogLanguageLocalizer<LogLanguageKey> logLanguage, IPubSubHub pubSubHub, IClock clock, List<ItemDto> items, IHpService hpService, IMpService mpService, ISpeedService speedService, ISessionGroupFactory sessionGroupFactory, ICharacterInitializationService characterInitializationService, IMessageBus messageBus) : PacketHandler<SelectPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(SelectPacket packet, ClientSession clientSession) { try { var characterDto = await characterDao.FirstOrDefaultAsync(s => (s.AccountId == clientSession.Account.AccountId) && (s.Slot == packet.Slot) && (s.State == CharacterState.Active) && s.ServerId == configuration.Value.ServerId); if (characterDto == null) { logger.LogError(logLanguage[LogLanguageKey.CHARACTER_SLOT_EMPTY], new { clientSession.Account.AccountId, packet.Slot }); return; } var characterId = characterDto.CharacterId; var characterName = characterDto.Name ?? string.Empty; await pubSubHub.SubscribeAsync(new Subscriber { Id = clientSession.SessionId, Name = clientSession.Account.Name, Language = clientSession.Account.Language, ConnectedCharacter = new Data.WebApi.Character { Name = characterName, Id = characterId, FriendRequestBlocked = characterDto.FriendRequestBlocked } }); var mapInstance = mapInstanceAccessorService.GetBaseMapById(characterDto.MapId)!; var script = characterDto.CurrentScriptId != null ? await scriptDao.FirstOrDefaultAsync(s => s.Id == characterDto.CurrentScriptId) : null; var inventories = inventoryItemInstanceDao .Where(s => s.CharacterId == characterId) ?.ToList() ?? new List<InventoryItemInstanceDto>(); var ids = inventories.Select(o => o.ItemInstanceId).ToList(); var itemInstances = itemInstanceDao.Where(s => ids.Contains(s!.Id))?.ToList() ?? new List<IItemInstanceDto?>(); var inventoryService = new InventoryService(items, configuration, loggerFactory.CreateLogger<InventoryService>()); inventories.ForEach(k => inventoryService[k.ItemInstanceId] = InventoryItemInstance.Create(itemProvider.Convert(itemInstances.First(s => s!.Id == k.ItemInstanceId)!), characterId, k)); var maxHp = (int)hpService.GetHp(characterDto.Class, characterDto.Level); var maxMp = (int)mpService.GetMp(characterDto.Class, characterDto.Level); var authority = clientSession.Account.Authority; // If the character was persisted at 0 HP (died right before a crash / // disconnect-on-death), we load them in that state, then at the end of // this handler we publish EntityDiedEvent to replay the normal revival // flow — equivalent to declining the revive dialog. This keeps death // semantics in one place (PlayerRevivalHandler) instead of hard-coding // a "wake up at 1 HP" fallback here. var wasDeadOnLoad = characterDto.Hp <= 0; var playerEntity = mapInstance.EcsWorld.CreatePlayer( (int)characterId, characterId, clientSession.Account.AccountId, characterName, mapInstance.MapInstanceId, characterDto.MapX, characterDto.MapY, 2, characterDto.Hp, maxHp, characterDto.Mp, maxMp, characterDto.Level, characterDto.LevelXp, characterDto.JobLevel, characterDto.JobLevelXp, characterDto.HeroLevel, characterDto.HeroXp, characterDto.Gold, characterDto.Reput, (short)characterDto.Dignity, (short)characterDto.Compliment, characterDto.Gender, characterDto.HairStyle, characterDto.HairColor, characterDto.Class, 0, speedService.GetSpeed(characterDto.Class), authority, authority >= NosCore.Shared.Enumerations.AuthorityType.GameMaster, configuration.Value.ServerId); var now = clock.GetCurrentInstant(); var group = new NosCore.GameObject.Services.GroupService.Group(GroupType.Group, sessionGroupFactory); var playerStateComponent = new PlayerStateComponent( characterDto, clientSession.Account, script, false, false, false, false, true, now, now, 0 ); mapInstance.EcsWorld.AddComponent(playerEntity, playerStateComponent); mapInstance.EcsWorld.AddComponent(playerEntity, new PlayerNetworkComponent(clientSession, clientSession.Channel)); mapInstance.EcsWorld.AddComponent(playerEntity, new PlayerContextComponent(mapInstance, group, null)); mapInstance.EcsWorld.AddComponent(playerEntity, new PlayerInventoryComponent( inventoryService, new ConcurrentDictionary<short, CharacterSkill>(), new ConcurrentDictionary<Guid, CharacterQuest>(), new List<QuicklistEntryDto>(), new List<StaticBonusDto>(), new List<TitleDto>(), new List<RespawnDto>())); mapInstance.EcsWorld.AddComponent(playerEntity, new PlayerSocialComponent( new ConcurrentDictionary<long, long>(), null)); mapInstance.EcsWorld.AddComponent(playerEntity, new PlayerRequestsComponent( new Dictionary<Type, Subject<RequestData>> { { typeof(NpcDialogRequestSubject), new Subject<RequestData>() } })); clientSession.SetPlayerEntity(playerEntity, mapInstance.EcsWorld); var character = clientSession.Character; group.JoinGroup(character); #pragma warning disable CS0618 await clientSession.SendPacketsAsync(character.GenerateInv(logger, logLanguage)); #pragma warning restore CS0618 await clientSession.SendPacketAsync(character.GenerateMlobjlst()); if (character.Hp > character.MaxHp) { character.Hp = character.MaxHp; } if (character.Mp > character.MaxMp) { character.Mp = character.MaxMp; } var daoQuests = (characterQuestDao .Where(s => s.CharacterId == characterId) ?? new List<CharacterQuestDto>()).ToList(); var daoQuestIds = daoQuests.Select(q => q.Id).ToHashSet(); var daoObjectives = characterQuestObjectiveDao .Where(o => daoQuestIds.Contains(o.CharacterQuestId))?.ToList() ?? new List<CharacterQuestObjectiveDto>(); character.Quests = new ConcurrentDictionary<Guid, CharacterQuest>(daoQuests.ToDictionary(x => x.Id, x => { var charquest = x.Adapt<CharacterQuest>(); charquest.Quest = quests.First(s => s.QuestId == charquest.QuestId).Adapt<GameObject.Services.QuestService.Quest>(); charquest.Quest.QuestObjectives = questObjectives.Where(s => s.QuestId == charquest.QuestId).ToList(); foreach (var progress in daoObjectives.Where(o => o.CharacterQuestId == charquest.Id)) { charquest.ObjectiveProgress[progress.QuestObjectiveId] = progress.Count; } return charquest; })); character.QuicklistEntries = quickListEntriesDao .Where(s => s.CharacterId == characterId)?.ToList() ?? new List<QuicklistEntryDto>(); character.StaticBonusList = staticBonusDao .Where(s => s.CharacterId == characterId)?.ToList() ?? new List<StaticBonusDto>(); character.Titles = titleDao .Where(s => s.CharacterId == characterId)?.ToList() ?? new List<TitleDto>(); character.Respawns = respawnDao .Where(s => s.CharacterId == characterId)?.ToList() ?? new List<RespawnDto>(); await characterInitializationService.InitializeAsync(character); await clientSession.SendPacketAsync(new OkPacket()); // Character was persisted at 0 HP (died then disconnected). Replay the // death flow in ResumeInPlace mode — the decline-dialog equivalent: // we already loaded them at their saved position, so the handler just // needs to refill (Hp=Mp=1) and push the revive/stat packets. Killer // is null because there's no in-session attacker to credit. if (wasDeadOnLoad) { await messageBus.PublishAsync(new EntityDiedEvent(character, null, RevivalMode.ResumeInPlace)).ConfigureAwait(false); } } catch (Exception ex) { logger.LogError(logLanguage[LogLanguageKey.CHARACTER_SELECTION_FAILED], ex, new { clientSession.Account.AccountId, packet.Slot }); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Chat/BtkPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Core; using NosCore.Core.I18N; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Interaction; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.ClientPackets.Chat; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.UI; using Microsoft.Extensions.Logging; using System.Linq; using System.Threading.Tasks; using Character = NosCore.Data.WebApi.Character; namespace NosCore.PacketHandlers.Chat { public class BtkPacketHandler(ILogger<BtkPacketHandler> logger, ISerializer packetSerializer, IFriendHub friendHttpClient, IPubSubHub packetHttpClient, IPubSubHub pubSubHub, Channel channel, IGameLanguageLocalizer gameLanguageLocalizer, ISessionRegistry sessionRegistry) : PacketHandler<BtkPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(BtkPacket btkPacket, ClientSession session) { var friendlist = await friendHttpClient.GetFriendsAsync(session.Character.VisualId); if (friendlist.All(s => s.CharacterId != btkPacket.CharacterId)) { logger.LogError(gameLanguageLocalizer[LanguageKey.USER_IS_NOT_A_FRIEND, session.Account.Language]); return; } var message = btkPacket.Message ?? ""; if (message.Length > 60) { message = message.Substring(0, 60); } message = message.Trim(); if (sessionRegistry.TryGetCharacter(s => s.VisualId == btkPacket.CharacterId, out var receiverSession)) { await receiverSession.SendPacketAsync(session.Character.GenerateTalk(message)); return; } var accounts = await pubSubHub.GetSubscribersAsync(); var receiver = accounts.FirstOrDefault(x => x.ConnectedCharacter?.Id == btkPacket.CharacterId); if (receiver == null) { await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.FriendOffline }); return; } await packetHttpClient.SendMessageAsync(new PostedPacket { Packet = packetSerializer.Serialize(new[] { session.Character.GenerateTalk(message) }), ReceiverCharacter = new Character { Id = btkPacket.CharacterId, Name = receiver.ConnectedCharacter?.Name ?? "" }, SenderCharacter = new Character { Name = session.Character.Name, Id = session.Character.CharacterId }, OriginWorldId = channel.ChannelId, ReceiverType = ReceiverType.OnlySomeone }); } } } ================================================ FILE: src/NosCore.PacketHandlers/Chat/ClientSayPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using NosCore.Networking.SessionGroup.ChannelMatcher; using NosCore.Packets.ClientPackets.Chat; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Chat { public class ClientSayPacketHandler : PacketHandler<ClientSayPacket>, IWorldPacketHandler { public override Task ExecuteAsync(ClientSayPacket clientSayPacket, ClientSession session) { //TODO: Add a penalty check when it will be ready const SayColorType type = SayColorType.Default; return session.Character.MapInstance.SendPacketAsync(session.Character.GenerateSay(new SayPacket { Message = clientSayPacket.Message, Type = type }), new EveryoneBut(session.Channel!.Id)); } } } ================================================ FILE: src/NosCore.PacketHandlers/Chat/WhisperPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Core; using NosCore.Core.I18N; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Interaction; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.ClientPackets.Chat; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using Microsoft.Extensions.Logging; using System; using System.Linq; using System.Text; using System.Threading.Tasks; using Character = NosCore.Data.WebApi.Character; namespace NosCore.PacketHandlers.Chat { public class WhisperPacketHandler(ILogger<WhisperPacketHandler> logger, ISerializer packetSerializer, IBlacklistHub blacklistHttpClient, IPubSubHub pubSubHub, Channel channel, IGameLanguageLocalizer gameLanguageLocalizer, ISessionRegistry sessionRegistry) : PacketHandler<WhisperPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(WhisperPacket whisperPacket, ClientSession session) { try { var messageBuilder = new StringBuilder(); //Todo: review this var messageData = whisperPacket.Message!.Split(' '); var receiverName = messageData[whisperPacket.Message.StartsWith("GM ") ? 1 : 0]; for (var i = messageData[0] == "GM" ? 2 : 1; i < messageData.Length; i++) { messageBuilder.Append(messageData[i]).Append(" "); } var message = new StringBuilder(messageBuilder.ToString().Length > 60 ? messageBuilder.ToString().Substring(0, 60) : messageBuilder.ToString()); await session.SendPacketAsync(session.Character.GenerateSpk(new SpeakPacket { SpeakType = SpeakType.Player, Message = message.ToString() })); var speakPacket = session.Character.GenerateSpk(new SpeakPacket { SpeakType = session.Account.Authority >= AuthorityType.GameMaster ? SpeakType.GameMaster : SpeakType.Player, Message = message.ToString() }); var accounts = await pubSubHub.GetSubscribersAsync(); var receiver = accounts.FirstOrDefault(x => x.ConnectedCharacter?.Name == receiverName); if (receiver == null) { await session.SendPacketAsync(new Infoi2Packet { Message = Game18NConstString.IsNotPlaying, ArgumentType = 1, Game18NArguments = { receiverName } }); return; } var blacklisteds = await blacklistHttpClient.GetBlacklistedAsync(session.Character.VisualId); if (blacklisteds.Any(s => s.CharacterId == receiver.ConnectedCharacter?.Id)) { await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.AlreadyBlacklisted }); return; } var receiverOnSameChannel = sessionRegistry.TryGetCharacter(s => s.Name == receiverName, out _); speakPacket.Message = receiverOnSameChannel ? speakPacket.Message : $"{speakPacket.Message} <{gameLanguageLocalizer[LanguageKey.CHANNEL, receiver.Language]}: {channel.ChannelId}>"; await pubSubHub.SendMessageAsync(new PostedPacket { Packet = packetSerializer.Serialize(new[] { speakPacket }), ReceiverCharacter = new Character { Name = receiverName }, SenderCharacter = new Character { Name = session.Character.Name }, OriginWorldId = channel.ChannelId, ReceiverType = ReceiverType.OnlySomeone }); } catch (Exception e) { logger.LogError(e, "Whisper failed."); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/ChangeChannelPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.CommandPackets; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ChannelService; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Command { public class ChangeChannelPacketHandler(IChannelService loginService) : PacketHandler<ChangeChannelPacket>, IWorldPacketHandler { public override Task ExecuteAsync(ChangeChannelPacket changeClassPacket, ClientSession session) { return loginService.MoveChannelAsync(session, changeClassPacket.ChannelId); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/ChangeClassPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Core.Configuration; using NosCore.Data.CommandPackets; using NosCore.Data.Enumerations; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using System.Linq; using System.Threading.Tasks; using Character = NosCore.Data.WebApi.Character; namespace NosCore.PacketHandlers.Command { public class ChangeClassPacketHandler(IPubSubHub pubSubHub, IOptions<WorldConfiguration> worldConfiguration, IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService, IItemGenerationService itemProvider) : PacketHandler<ChangeClassPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(ChangeClassPacket changeClassPacket, ClientSession session) { if ((changeClassPacket.Name == session.Character.Name) || string.IsNullOrEmpty(changeClassPacket.Name)) { await session.ChangeClassAsync(changeClassPacket.ClassType, worldConfiguration, experienceService, jobExperienceService, heroExperienceService, itemProvider); return; } var data = new StatData { ActionType = UpdateStatActionType.UpdateClass, Character = new Character { Name = changeClassPacket.Name }, Data = (byte)changeClassPacket.ClassType }; var accounts = await pubSubHub.GetSubscribersAsync(); var receiver = accounts.FirstOrDefault(x => x.ConnectedCharacter?.Name == changeClassPacket.Name); if (receiver == null) { await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.UnknownCharacter }); return; } await pubSubHub.SendMessageAsync(data); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/ChangeGenderPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.Data.CommandPackets; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using NosCore.Packets.Enumerations; namespace NosCore.PacketHandlers.Command { public class ChangeGenderPacketHandler : PacketHandler<ChangeGenderPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(ChangeGenderPacket _, ClientSession session) { var character = session.Character; character.Gender = character.Gender == GenderType.Female ? GenderType.Male : GenderType.Female; await session.SendPacketAsync(character.GenerateEq()); await character.MapInstance.SendPacketAsync(character.GenerateIn(string.Empty)); await character.MapInstance.SendPacketAsync(character.GenerateCMode()); await character.MapInstance.SendPacketAsync(character.GenerateEff(196)); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/CreateItemPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Data.CommandPackets; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Items; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Command { public class CreateItemPackettHandler(ILogger<CreateItemPackettHandler> logger, List<ItemDto> items, IOptions<WorldConfiguration> worldConfiguration, IItemGenerationService itemProvider, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : PacketHandler<CreateItemPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(CreateItemPacket createItemPacket, ClientSession session) { var vnum = createItemPacket.VNum; sbyte rare = 0; byte upgrade = 0; byte design = 0; short amount = 1; if (vnum == 1046) { return; // cannot Create gold as item, use $Gold instead } var iteminfo = items.Find(item => item.VNum == vnum); if (iteminfo == null) { await session.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.ItemDoesNotExist }); return; } if (iteminfo.IsColored || (iteminfo.Effect == ItemEffectType.BoxEffect)) { if (createItemPacket.DesignOrAmount.HasValue) { design = (byte)createItemPacket.DesignOrAmount.Value; } rare = createItemPacket.Upgrade.HasValue && (iteminfo.Effect == ItemEffectType.BoxEffect) ? (sbyte)createItemPacket.Upgrade.Value : rare; } else if (iteminfo.Type == NoscorePocketType.Equipment) { if (createItemPacket.Upgrade.HasValue) { if (iteminfo.EquipmentSlot != EquipmentType.Sp) { upgrade = createItemPacket.Upgrade.Value; } else { design = createItemPacket.Upgrade.Value; } if ((iteminfo.EquipmentSlot != EquipmentType.Sp) && (upgrade == 0) && (iteminfo.BasicUpgrade != 0)) { upgrade = iteminfo.BasicUpgrade; } } if (createItemPacket.DesignOrAmount.HasValue) { if (iteminfo.EquipmentSlot == EquipmentType.Sp) { upgrade = (byte)createItemPacket.DesignOrAmount.Value; } else if (iteminfo.EquipmentSlot == EquipmentType.Armor || iteminfo.EquipmentSlot == EquipmentType.MainWeapon || iteminfo.EquipmentSlot == EquipmentType.SecondaryWeapon) { rare = (sbyte)createItemPacket.DesignOrAmount.Value; } } } else if (createItemPacket.DesignOrAmount.HasValue && !createItemPacket.Upgrade.HasValue) { amount = createItemPacket.DesignOrAmount.Value > worldConfiguration.Value.MaxItemAmount ? worldConfiguration.Value.MaxItemAmount : createItemPacket.DesignOrAmount.Value; } var inv = session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemProvider.Create( vnum, amount, rare, upgrade, design), session.Character.CharacterId)); if (inv == null || inv.Count <= 0) { await session.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.NotEnoughSpace }); return; } await session.SendPacketAsync(inv.GeneratePocketChange()); var firstItem = inv[0]; if (session.Character.InventoryService.LoadBySlotAndType(firstItem.Slot, firstItem.Type)!.ItemInstance is WearableInstance wearable) { switch (wearable.Item.EquipmentSlot) { case EquipmentType.Armor: case EquipmentType.MainWeapon: case EquipmentType.SecondaryWeapon: wearable.SetRarityPoint(); break; case EquipmentType.Boots: case EquipmentType.Gloves: wearable.FireResistance = (short)(wearable.Item.FireResistance * upgrade); wearable.DarkResistance = (short)(wearable.Item.DarkResistance * upgrade); wearable.LightResistance = (short)(wearable.Item.LightResistance * upgrade); wearable.WaterResistance = (short)(wearable.Item.WaterResistance * upgrade); break; default: logger.LogDebug( logLanguage[LogLanguageKey.NO_SPECIAL_PROPERTIES_WEARABLE]); break; } } await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Green, Message = Game18NConstString.ReceivedThisItem, ArgumentType = 2, Game18NArguments = { iteminfo.VNum.ToString(), amount } }); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/EffectCommandPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.CommandPackets; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Command { public class EffectCommandPackettHandler : PacketHandler<EffectCommandPacket>, IWorldPacketHandler { public override Task ExecuteAsync(EffectCommandPacket effectCommandpacket, ClientSession session) { return session.Character.MapInstance.SendPacketAsync( session.Character.GenerateEff(effectCommandpacket.EffectId)); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/GiftPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Data.CommandPackets; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.MailHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MailService; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Command { public class GiftPacketHandler(IPubSubHub pubSubHub, IMailHub mailHttpClient, IClock clock) : PacketHandler<GiftPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(GiftPacket giftPacket, ClientSession session) { var accounts = await pubSubHub.GetSubscribersAsync(); var receiver = accounts.FirstOrDefault(x => x.ConnectedCharacter?.Name == giftPacket.CharacterName); if (receiver == null) { await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.UnknownCharacter }); return; } await mailHttpClient.SendMailAsync(GiftHelper.GenerateMailRequest(clock, session.Character, receiver.ConnectedCharacter!.Id, null, giftPacket.VNum, giftPacket.Amount, giftPacket.Rare, giftPacket.Upgrade, false, null, null)); await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Red, Message = Game18NConstString.GiftDelivered }); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/HelpPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Core.Extensions; using NosCore.Data.CommandPackets; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.Enumerations; using System.Linq; using System.Reflection; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Command { public class HelpPacketHandler : PacketHandler<HelpPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(HelpPacket helpPacket, ClientSession session) { await session.SendPacketAsync(session.Character.GenerateSay("-------------Help command-------------", SayColorType.Red)); var classes = helpPacket.GetType().Assembly.GetTypes().Where(t => typeof(ICommandPacket).IsAssignableFrom(t) && (t.GetCustomAttribute<CommandPacketHeaderAttribute>()?.Authority <= session.Account.Authority)) .OrderBy(x => x.Name).ToList(); foreach (var type in classes) { var classInstance = type.CreateInstance<ICommandPacket>(); var method = type.GetMethod("Help"); if (method == null) { continue; } var message = method.Invoke(classInstance, null)?.ToString(); if (!string.IsNullOrEmpty(message)) { await session.SendPacketAsync(session.Character.GenerateSay(message, SayColorType.Green)); } } } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/InvisibleCommandPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.CommandPackets; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Command { public class InvisibleCommandPacketHandler : PacketHandler<InvisibleCommandPacket>, IWorldPacketHandler { public override Task ExecuteAsync(InvisibleCommandPacket changeClassPacket, ClientSession session) { session.Character.Camouflage = !session.Character.Camouflage; session.Character.Invisible = !session.Character.Invisible; return session.Character.MapInstance.SendPacketAsync(session.Character.GenerateInvisible()); //Session.SendPacket(Session.Character.GenerateEq()); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/KickPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.CommandPackets; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Command { public class KickPacketHandler(IPubSubHub pubSubHub) : PacketHandler<KickPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(KickPacket kickPacket, ClientSession session) { var accounts = await pubSubHub.GetSubscribersAsync(); var receiver = accounts.FirstOrDefault(x => x.ConnectedCharacter?.Name == kickPacket.Name); if (receiver == null) { await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.UnknownCharacter }); return; } await pubSubHub.UnsubscribeAsync(receiver.ConnectedCharacter!.Id); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/KillCommandPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.Data.CommandPackets; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Networking.ClientSession; using Wolverine; namespace NosCore.PacketHandlers.Command { public class KillCommandPacketHandler(IMessageBus messageBus) : PacketHandler<KillPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(KillPacket _, ClientSession session) { if (session.Character.Hp <= 0) { return; } session.Character.Hp = 0; await messageBus.PublishAsync(new EntityDiedEvent(session.Character, session.Character)).ConfigureAwait(false); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/PositionPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.CommandPackets; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.Enumerations; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Command { public class PositionPacketHandler : PacketHandler<PositionPacket>, IWorldPacketHandler { public override Task ExecuteAsync(PositionPacket _, ClientSession session) { return session.SendPacketAsync(session.Character.GenerateSay( $"Map:{session.Character.MapInstance.Map.MapId} - X:{session.Character.PositionX} - Y:{session.Character.PositionY} - " + $"Dir:{session.Character.Direction} - Cell:{session.Character.MapInstance.Map[session.Character.PositionX, session.Character.PositionY]}", SayColorType.Green)); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/SetBankGoldPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.Data.CommandPackets; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; namespace NosCore.PacketHandlers.Command { public class SetBankGoldPacketHandler : PacketHandler<SetBankGoldPacket>, IWorldPacketHandler { public override Task ExecuteAsync(SetBankGoldPacket packet, ClientSession session) { session.Character.BankGold = packet.BankGold < 0 ? 0 : packet.BankGold; return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/SetGoldCommandPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.CommandPackets; using NosCore.Data.Enumerations; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using NosCore.Packets; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Character = NosCore.Data.WebApi.Character; namespace NosCore.PacketHandlers.Command { public class SetGoldCommandPacketHandler(IPubSubHub pubSubHub, List<ItemDto> items) : PacketHandler<SetGoldCommandPacket>, IWorldPacketHandler { private const short GoldVNum = 1046; public override async Task ExecuteAsync(SetGoldCommandPacket goldPacket, ClientSession session) { // Self-targeting short-circuit (mirrors SetLevel/SetHeroLevel/SetReputation): when no // Name is given, or the Name matches us, mutate locally and skip the cross-channel // PubSub round-trip. The previous implementation always went through PubSub but used // raw `goldPacket.Name` (null) for the receiver lookup, which never matched and made // bare `$Gold N` fail with UnknownCharacter. if (string.IsNullOrEmpty(goldPacket.Name) || goldPacket.Name == session.Character.Name) { session.Character.Gold = goldPacket.Gold; await session.SendPacketAsync(session.Character.GenerateGold()); var goldName = items.First(i => i.VNum == GoldVNum).Name[session.Account.Language]; #pragma warning disable NosCoreAnalyzers await session.SendPacketAsync(new Sayi2Packet { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Green, Message = Game18NConstString.ItemReceived, ArgumentType = 9, Game18NArguments = new Game18NArguments(2) { goldPacket.Gold, goldName }, }); #pragma warning restore NosCoreAnalyzers return; } var data = new StatData { ActionType = UpdateStatActionType.UpdateGold, Character = new Character { Name = goldPacket.Name }, Data = goldPacket.Gold }; var accounts = await pubSubHub.GetSubscribersAsync(); var receiver = accounts.FirstOrDefault(x => x.ConnectedCharacter?.Name == goldPacket.Name); if (receiver == null) { await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.UnknownCharacter }); return; } await pubSubHub.SendMessageAsync(data); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/SetHairColorPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Threading.Tasks; using NosCore.Data.CommandPackets; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using NosCore.Packets.Enumerations; namespace NosCore.PacketHandlers.Command { public class SetHairColorPacketHandler : PacketHandler<SetHairColorPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(SetHairColorPacket packet, ClientSession session) { if (!Enum.IsDefined(typeof(HairColorType), packet.Color)) { return; } var character = session.Character; character.HairColor = (HairColorType)packet.Color; await session.SendPacketAsync(character.GenerateEq()); await character.MapInstance.SendPacketAsync(character.GenerateIn(string.Empty)); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/SetHairStylePacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Threading.Tasks; using NosCore.Data.CommandPackets; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using NosCore.Packets.Enumerations; namespace NosCore.PacketHandlers.Command { public class SetHairStylePacketHandler : PacketHandler<SetHairStylePacket>, IWorldPacketHandler { public override async Task ExecuteAsync(SetHairStylePacket packet, ClientSession session) { if (!Enum.IsDefined(typeof(HairStyleType), packet.Style) || packet.Style > (byte)HairStyleType.HairStyleB) { return; } var character = session.Character; character.HairStyle = (HairStyleType)packet.Style; await session.SendPacketAsync(character.GenerateEq()); await character.MapInstance.SendPacketAsync(character.GenerateIn(string.Empty)); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/SetHeroLevelCommandPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Data.CommandPackets; using NosCore.Data.Enumerations; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using System.Linq; using System.Threading.Tasks; using Character = NosCore.Data.WebApi.Character; namespace NosCore.PacketHandlers.Command { public class SetHeroLevelCommandPacketHandler(IPubSubHub pubSubHub, IChannelHub channelHub, IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService) : PacketHandler<SetHeroLevelCommandPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(SetHeroLevelCommandPacket levelPacket, ClientSession session) { if (string.IsNullOrEmpty(levelPacket.Name) || (levelPacket.Name == session.Character.Name)) { await session.Character.SetHeroLevelAsync(levelPacket.Level, experienceService, jobExperienceService, heroExperienceService); return; } var data = new StatData { ActionType = UpdateStatActionType.UpdateHeroLevel, Character = new Character { Name = levelPacket.Name }, Data = levelPacket.Level }; var channels = await channelHub.GetCommunicationChannels(); var subscribers = await pubSubHub.GetSubscribersAsync(); var receiver = subscribers.FirstOrDefault(s => s.ConnectedCharacter?.Name == levelPacket.Name); if (receiver == null) { await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.UnknownCharacter }); return; } await pubSubHub.SendMessageAsync(data); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/SetHeroXpPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Data.CommandPackets; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; namespace NosCore.PacketHandlers.Command { public class SetHeroXpPacketHandler(IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService) : PacketHandler<SetHeroXpPacket>, IWorldPacketHandler { public override Task ExecuteAsync(SetHeroXpPacket packet, ClientSession session) { session.Character.HeroXp = packet.HeroXp < 0 ? 0 : packet.HeroXp; return session.SendPacketAsync(session.Character.GenerateLev(experienceService, jobExperienceService, heroExperienceService)); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/SetJobLevelCommandPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Data.CommandPackets; using NosCore.Data.Enumerations; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using System.Linq; using System.Threading.Tasks; using Character = NosCore.Data.WebApi.Character; namespace NosCore.PacketHandlers.Command { public class SetJobLevelCommandPacketHandler(IPubSubHub pubSubHub, IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService) : PacketHandler<SetJobLevelCommandPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(SetJobLevelCommandPacket levelPacket, ClientSession session) { if (string.IsNullOrEmpty(levelPacket.Name) || (levelPacket.Name == session.Character.Name)) { await session.Character.SetJobLevelAsync(levelPacket.Level, experienceService, jobExperienceService, heroExperienceService); return; } var data = new StatData { ActionType = UpdateStatActionType.UpdateJobLevel, Character = new Character { Name = levelPacket.Name }, Data = levelPacket.Level }; var accounts = await pubSubHub.GetSubscribersAsync(); var receiver = accounts.FirstOrDefault(x => x.ConnectedCharacter?.Name == levelPacket.Name); if (receiver == null) { await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.UnknownCharacter }); return; } await pubSubHub.SendMessageAsync(data); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/SetJobLevelXpPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Data.CommandPackets; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; namespace NosCore.PacketHandlers.Command { public class SetJobLevelXpPacketHandler(IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService) : PacketHandler<SetJobLevelXpPacket>, IWorldPacketHandler { public override Task ExecuteAsync(SetJobLevelXpPacket packet, ClientSession session) { session.Character.JobLevelXp = packet.JobLevelXp < 0 ? 0 : packet.JobLevelXp; return session.SendPacketAsync(session.Character.GenerateLev(experienceService, jobExperienceService, heroExperienceService)); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/SetLevelCommandPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Core.I18N; using NosCore.Data.CommandPackets; using NosCore.Data.Enumerations; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using System.Linq; using System.Threading.Tasks; using Character = NosCore.Data.WebApi.Character; namespace NosCore.PacketHandlers.Command { public class SetLevelCommandPacketHandler(IPubSubHub pubSubHub, IChannelHub channelHub, IExperienceService experienceService, IJobExperienceService jobExperienceService, IHeroExperienceService heroExperienceService, ISessionRegistry sessionRegistry, IGameLanguageLocalizer gameLanguageLocalizer) : PacketHandler<SetLevelCommandPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(SetLevelCommandPacket levelPacket, ClientSession session) { if (string.IsNullOrEmpty(levelPacket.Name) || (levelPacket.Name == session.Character.Name)) { await session.Character.SetLevelAsync(levelPacket.Level, experienceService, jobExperienceService, heroExperienceService, sessionRegistry, gameLanguageLocalizer); return; } var data = new StatData { ActionType = UpdateStatActionType.UpdateLevel, Character = new Character { Name = levelPacket.Name }, Data = levelPacket.Level }; var channels = await channelHub.GetCommunicationChannels(); var subscribers = await pubSubHub.GetSubscribersAsync(); var receiver = subscribers.FirstOrDefault(s => s.ConnectedCharacter?.Name == levelPacket.Name); if (receiver == null) { await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.UnknownCharacter }); return; } await pubSubHub.SendMessageAsync(data); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/SetMaintenancePacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.CommandPackets; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.Networking.ClientSession; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Command { public class SetMaintenancePacketHandler (IChannelHub channelHttpClient) : PacketHandler<SetMaintenancePacket>, IWorldPacketHandler { public override async Task ExecuteAsync(SetMaintenancePacket setMaintenancePacket, ClientSession session) { await channelHttpClient.SetMaintenance(setMaintenancePacket.IsGlobal, setMaintenancePacket.MaintenanceMode); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/SetReputationPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Core.I18N; using NosCore.Data.CommandPackets; using NosCore.Data.Enumerations; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using System.Linq; using System.Threading.Tasks; using Character = NosCore.Data.WebApi.Character; namespace NosCore.PacketHandlers.Command { public class SetReputationPacketHandler(IPubSubHub pubSubHub, IGameLanguageLocalizer gameLanguageLocalizer) : PacketHandler<SetReputationPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(SetReputationPacket setReputationPacket, ClientSession session) { if ((setReputationPacket.Name == session.Character.Name) || string.IsNullOrEmpty(setReputationPacket.Name)) { await session.Character.SetReputationAsync(setReputationPacket.Reputation, gameLanguageLocalizer); return; } var data = new StatData { ActionType = UpdateStatActionType.UpdateReputation, Character = new Character { Name = setReputationPacket.Name }, Data = setReputationPacket.Reputation }; var accounts = await pubSubHub.GetSubscribersAsync(); var receiver = accounts.FirstOrDefault(x => x.ConnectedCharacter?.Name == setReputationPacket.Name); if (receiver == null) { await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.UnknownCharacter }); return; } await pubSubHub.SendMessageAsync(data); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/SetSpAdditionPointPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Data.CommandPackets; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; namespace NosCore.PacketHandlers.Command { public class SetSpAdditionPointPacketHandler(IOptions<WorldConfiguration> worldConfiguration) : PacketHandler<SetSpAdditionPointPacket>, IWorldPacketHandler { public override Task ExecuteAsync(SetSpAdditionPointPacket packet, ClientSession session) { var clamped = packet.SpAdditionPoint < 0 ? 0 : packet.SpAdditionPoint > worldConfiguration.Value.MaxAdditionalSpPoints ? worldConfiguration.Value.MaxAdditionalSpPoints : packet.SpAdditionPoint; session.Character.SpAdditionPoint = clamped; return session.SendPacketAsync(session.Character.GenerateSpPoint(worldConfiguration)); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/SetSpPointPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Data.CommandPackets; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; namespace NosCore.PacketHandlers.Command { public class SetSpPointPacketHandler(IOptions<WorldConfiguration> worldConfiguration) : PacketHandler<SetSpPointPacket>, IWorldPacketHandler { public override Task ExecuteAsync(SetSpPointPacket packet, ClientSession session) { var clamped = packet.SpPoint < 0 ? 0 : packet.SpPoint > worldConfiguration.Value.MaxSpPoints ? worldConfiguration.Value.MaxSpPoints : packet.SpPoint; session.Character.SpPoint = clamped; return session.SendPacketAsync(session.Character.GenerateSpPoint(worldConfiguration)); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/ShoutHerePacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.Data.CommandPackets; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using NosCore.Packets.Enumerations; namespace NosCore.PacketHandlers.Command { public class ShoutHerePacketHandler : PacketHandler<ShoutHerePacket>, IWorldPacketHandler { public override Task ExecuteAsync(ShoutHerePacket packet, ClientSession session) { if (string.IsNullOrWhiteSpace(packet.Message)) { return session.SendPacketAsync(session.Character.GenerateSay(packet.Help(), SayColorType.Yellow)); } return session.Character.MapInstance.SendPacketAsync( session.Character.GenerateSay(packet.Message, SayColorType.Yellow)); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/ShoutPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Core.I18N; using NosCore.Data.CommandPackets; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Interaction; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using System.Collections.Generic; using System.Threading.Tasks; using Character = NosCore.Data.WebApi.Character; //TODO stop using obsolete #pragma warning disable 618 namespace NosCore.PacketHandlers.Command { public class ShoutPacketHandler(ISerializer packetSerializer, IPubSubHub packetHttpClient, IGameLanguageLocalizer gameLanguageLocalizer) : PacketHandler<ShoutPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(ShoutPacket shoutPacket, ClientSession session) { var message = $"({gameLanguageLocalizer[LanguageKey.ADMINISTRATOR, session.Account.Language]}) {shoutPacket.Message}"; var sayPacket = new Sayi2Packet { VisualType = VisualType.Player, VisualId = -1, Type = SayColorType.Yellow, Message = Game18NConstString.Administrator, Game18NArguments = { 999, message } }; var msgiPacket = new MsgPacket { Type = MessageType.Shout, Message = message }; var sayPostedPacket = new PostedPacket { Packet = packetSerializer.Serialize(new[] { sayPacket }), SenderCharacter = new Character { Name = session.Character.Name, Id = session.Character.CharacterId }, ReceiverType = ReceiverType.All }; var msgPostedPacket = new PostedPacket { Packet = packetSerializer.Serialize(new[] { msgiPacket }), ReceiverType = ReceiverType.All }; await packetHttpClient.SendMessagesAsync(new List<IMessage>(new[] { sayPostedPacket, msgPostedPacket })); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/SizePacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.CommandPackets; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Command { public class SizePacketHandler(ILogger<SizePacketHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : PacketHandler<SizePacket>, IWorldPacketHandler { public override Task ExecuteAsync(SizePacket sizePacket, ClientSession session) { IAliveEntity? entity; switch (sizePacket.VisualType) { case VisualType.Player: entity = session.Character; break; case VisualType.Monster: entity = session.Character.MapInstance.FindMonster(s => s.VisualId == sizePacket.VisualId); break; case VisualType.Npc: entity = session.Character.MapInstance.FindNpc(s => s.VisualId == sizePacket.VisualId); break; default: logger.LogError(logLanguage[LogLanguageKey.VISUALTYPE_UNKNOWN], sizePacket.VisualType); return Task.CompletedTask; } if (entity == null) { logger.LogError(logLanguage[LogLanguageKey.VISUALENTITY_DOES_NOT_EXIST], sizePacket.VisualType); return Task.CompletedTask; } entity.Size = sizePacket.Size; return session.Character.MapInstance.SendPacketAsync(entity.GenerateCharSc()); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/SpeedPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.CommandPackets; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.Enumerations; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Command { public class SpeedPacketHandler : PacketHandler<SpeedPacket>, IWorldPacketHandler { public override Task ExecuteAsync(SpeedPacket speedPacket, ClientSession session) { if ((speedPacket.Speed <= 0) || (speedPacket.Speed >= 60)) { return session.SendPacketAsync(session.Character.GenerateSay(speedPacket.Help(), SayColorType.Yellow)); } session.Character.VehicleSpeed = speedPacket.Speed >= 60 ? (byte)59 : speedPacket.Speed; return session.SendPacketAsync(session.Character.GenerateCond()); } } } ================================================ FILE: src/NosCore.PacketHandlers/Command/TeleportPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Core.I18N; using NosCore.Data.CommandPackets; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.MapChangeService; using Microsoft.Extensions.Logging; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Command { public class TeleportPacketHandler(ILogger<TeleportPacketHandler> logger, IMapChangeService mapChangeService, IGameLanguageLocalizer gameLanguageLocalizer, ISessionRegistry sessionRegistry) : PacketHandler<TeleportPacket>, IWorldPacketHandler { public override Task ExecuteAsync(TeleportPacket teleportPacket, ClientSession session) { if (!short.TryParse(teleportPacket.TeleportArgument, out var mapId)) { if (sessionRegistry.TryGetCharacter(s => s.Name == teleportPacket.TeleportArgument, out var targetSession)) { return mapChangeService.ChangeMapInstanceAsync(session, targetSession.MapInstanceId, targetSession.MapX, targetSession.MapY); } logger.LogError(gameLanguageLocalizer[LanguageKey.USER_NOT_CONNECTED, session.Account.Language]); return Task.CompletedTask; } return mapChangeService.ChangeMapAsync(session, mapId, teleportPacket.MapX, teleportPacket.MapY); } } } ================================================ FILE: src/NosCore.PacketHandlers/Exchange/ExcListPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.ExchangeService; using NosCore.Packets.ClientPackets.Exchanges; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Exchanges; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Exchange { public class ExcListPacketHandler(IExchangeService exchangeService, ILogger<ExcListPacketHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage, ISessionRegistry sessionRegistry) : PacketHandler<ExcListPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(ExcListPacket packet, ClientSession clientSession) { if ((packet.Gold > clientSession.Character.Gold) || (packet.BankGold > clientSession.Account.BankMoney)) { logger.LogError(logLanguage[LogLanguageKey.NOT_ENOUGH_GOLD]); return; } var subPacketList = new List<ServerExcListSubPacket?>(); var hasTarget = sessionRegistry.TryGetCharacter(s => (s.VisualId == exchangeService.GetTargetId(clientSession.Character.VisualId)) && (s.MapInstanceId == clientSession.Character.MapInstanceId), out var target); if ((packet.SubPackets!.Count > 0) && hasTarget) { byte i = 0; foreach (var value in packet.SubPackets) { var item = clientSession.Character.InventoryService.LoadBySlotAndType(value!.Slot, (NoscorePocketType)value.PocketType); if ((item == null) || (item.ItemInstance.Amount < value.Amount)) { var closeExchange = exchangeService.CloseExchange(clientSession.Character.VisualId, ExchangeResultType.Failure); await clientSession.SendPacketAsync(closeExchange); await target.SendPacketAsync(closeExchange); logger.LogError(logLanguage[LogLanguageKey.INVALID_EXCHANGE_LIST]); return; } if (!item.ItemInstance.Item.IsTradable) { await clientSession.SendPacketAsync(exchangeService.CloseExchange(clientSession.Character.CharacterId, ExchangeResultType.Failure)); await target.SendPacketAsync(exchangeService.CloseExchange(target.VisualId, ExchangeResultType.Failure)); logger.LogError( logLanguage[LogLanguageKey.CANNOT_TRADE_NOT_TRADABLE_ITEM]); return; } exchangeService.AddItems(clientSession.Character.CharacterId, item, value.Amount); var subPacket = new ServerExcListSubPacket { ExchangeSlot = i, PocketType = value.PocketType, ItemVnum = item.ItemInstance.ItemVNum, Upgrade = item.ItemInstance.Upgrade, AmountOrRare = value.PocketType == PocketType.Equipment ? item.ItemInstance.Rare : value.Amount }; subPacketList.Add(subPacket); i++; } } else { subPacketList.Add(new ServerExcListSubPacket { ExchangeSlot = null }); } exchangeService.SetGold(clientSession.Character.CharacterId, packet.Gold, packet.BankGold); if (hasTarget) { await target.SendPacketAsync( clientSession.Character.GenerateServerExcListPacket(packet.Gold, packet.BankGold, subPacketList)); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Exchange/ExchangeRequestPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Core.I18N; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.ExchangeService; using NosCore.Packets.ClientPackets.Exchanges; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Exchanges; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Exchange { public class ExchangeRequestPackettHandler(IExchangeService exchangeService, ILogger<ExchangeRequestPackettHandler> logger, IBlacklistHub blacklistHttpClient, ILogLanguageLocalizer<LogLanguageKey> logLanguage, ISessionRegistry sessionRegistry, IGameLanguageLocalizer gameLanguageLocalizer) : PacketHandler<ExchangeRequestPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(ExchangeRequestPacket packet, ClientSession clientSession) { var hasTarget = sessionRegistry.TryGetCharacter(s => (s.VisualId == packet.VisualId) && (s.MapInstanceId == clientSession.Character.MapInstanceId), out var target); ExcClosePacket closeExchange; if (hasTarget && ((packet.RequestType == RequestExchangeType.Confirmed) || (packet.RequestType == RequestExchangeType.Cancelled))) { logger.LogError(logLanguage[LogLanguageKey.CANT_FIND_CHARACTER]); return; } if (clientSession.Character.InShop || (hasTarget && target.InShop)) { logger.LogError(logLanguage[LogLanguageKey.PLAYER_IN_SHOP]); return; } switch (packet.RequestType) { case RequestExchangeType.Requested: if (exchangeService.CheckExchange(clientSession.Character.CharacterId) || exchangeService.CheckExchange(hasTarget ? target.VisualId : 0)) { await clientSession.SendPacketAsync(new Infoi2Packet { Message = Game18NConstString.TradingWithSomeoneElse, ArgumentType = 1, Game18NArguments = { hasTarget ? target.Name : "" } }); return; } if (!hasTarget || target.ExchangeBlocked) { await clientSession.SendPacketAsync(new Infoi2Packet { Message = Game18NConstString.BlockingTrades, ArgumentType = 1, Game18NArguments = { hasTarget ? target.Name : "" } }); return; } var blacklisteds = await blacklistHttpClient.GetBlacklistedAsync(clientSession.Character.VisualId); if (blacklisteds.Any(s => s.CharacterId == target.VisualId)) { await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.AlreadyBlacklisted }); return; } if (clientSession.Character.InShop || target.InShop) { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.CanNotTradeShopOwners }); return; } await clientSession.SendPacketAsync(new Infoi2Packet { Message = Game18NConstString.YouInvitedToTrade, ArgumentType = 1, Game18NArguments = { target.Name } }); await target.SendPacketAsync(new Dlgi2Packet { YesPacket = new ExchangeRequestPacket { RequestType = RequestExchangeType.List, VisualId = clientSession.Character.VisualId }, NoPacket = new ExchangeRequestPacket { RequestType = RequestExchangeType.Declined, VisualId = clientSession.Character.VisualId }, Question = Game18NConstString.WantAcceptTrade, ArgumentType = 2, Game18NArguments = { $"{clientSession.Character.Level}", clientSession.Character.Name ?? "" } }); return; case RequestExchangeType.List: if (!exchangeService.OpenExchange(clientSession.Character.VisualId, hasTarget ? target.CharacterId : 0)) { return; } await clientSession.SendPacketAsync(clientSession.Character.GenerateServerExcListPacket(null, null, null)); if (hasTarget) { await target.SendPacketAsync(target.GenerateServerExcListPacket(null, null, null)); } return; case RequestExchangeType.Declined: await clientSession.SendPacketAsync(new Sayi2Packet { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.CancelledTrade, ArgumentType = 1, Game18NArguments = { hasTarget ? target.Name : "" } }); if (hasTarget) { await target.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = target.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.TradeCancelled2 }); } return; case RequestExchangeType.Confirmed: var targetId = exchangeService.GetTargetId(clientSession.Character.CharacterId); if (!targetId.HasValue) { logger.LogError(logLanguage[LogLanguageKey.INVALID_EXCHANGE]); return; } if (!sessionRegistry.TryGetCharacter(s => (s.VisualId == targetId.Value) && (s.MapInstance == clientSession.Character.MapInstance), out var exchangeTarget)) { logger.LogError(logLanguage[LogLanguageKey.CANT_FIND_CHARACTER]); return; } exchangeService.ConfirmExchange(clientSession.Character.VisualId); if (!exchangeService.IsExchangeConfirmed(clientSession.Character.VisualId) || !exchangeService.IsExchangeConfirmed(exchangeTarget.VisualId)) { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.TradeWaitingConfirm }); return; } var success = exchangeService.ValidateExchange(clientSession, exchangeTarget); if (success.Item1 == ExchangeResultType.Success) { foreach (var infoPacket in success.Item2!) { if (infoPacket.Key == clientSession.Character.CharacterId) { await clientSession.SendPacketAsync(infoPacket.Value); } else if (infoPacket.Key == exchangeTarget.VisualId) { await exchangeTarget.SendPacketAsync(infoPacket.Value); } else { logger.LogError(logLanguage[LogLanguageKey.INVALID_EXCHANGE]); } } } else { var itemList = exchangeService.ProcessExchange(clientSession.Character.VisualId, exchangeTarget.VisualId, clientSession.Character.InventoryService, exchangeTarget.InventoryService); foreach (var item in itemList) { if (item.Key == clientSession.Character.CharacterId) { await clientSession.SendPacketAsync(item.Value); } else { await exchangeTarget.SendPacketAsync(item.Value); } } var getSessionData = exchangeService.GetData(clientSession.Character.CharacterId); await clientSession.Character.RemoveGoldAsync(getSessionData.Gold, gameLanguageLocalizer); clientSession.Character.RemoveBankGold(getSessionData.BankGold * 1000); await exchangeTarget.AddGoldAsync(getSessionData.Gold, gameLanguageLocalizer); exchangeTarget.AddBankGold(getSessionData.BankGold * 1000); var getTargetData = exchangeService.GetData(exchangeTarget.VisualId); await exchangeTarget.RemoveGoldAsync(getTargetData.Gold, gameLanguageLocalizer); exchangeTarget.RemoveBankGold(getTargetData.BankGold * 1000); await clientSession.Character.AddGoldAsync(getTargetData.Gold, gameLanguageLocalizer); clientSession.Character.AddBankGold(getTargetData.BankGold * 1000); } closeExchange = exchangeService.CloseExchange(clientSession.Character.VisualId, success.Item1)!; await exchangeTarget.SendPacketAsync(closeExchange); await clientSession.SendPacketAsync(closeExchange); return; case RequestExchangeType.Cancelled: var cancelId = exchangeService.GetTargetId(clientSession.Character.CharacterId); if (!cancelId.HasValue) { logger.LogError(logLanguage[LogLanguageKey.USER_NOT_IN_EXCHANGE]); return; } closeExchange = exchangeService.CloseExchange(clientSession.Character.VisualId, ExchangeResultType.Failure)!; if (sessionRegistry.TryGetCharacter(s => s.VisualId == cancelId.Value, out var cancelTarget)) { await cancelTarget.SendPacketAsync(closeExchange); } await clientSession.SendPacketAsync(closeExchange); return; default: throw new ArgumentOutOfRangeException(); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Friend/BlDelPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Core.I18N; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Relations; using NosCore.Packets.ServerPackets.UI; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Friend { public class BlDelPacketHandler(IBlacklistHub blacklistHttpClient, IGameLanguageLocalizer gameLanguageLocalizer) : PacketHandler<BlDelPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(BlDelPacket bldelPacket, ClientSession session) { var list = await blacklistHttpClient.GetBlacklistedAsync(session.Character.VisualId); var idtorem = list.FirstOrDefault(s => s.CharacterId == bldelPacket.CharacterId); if (idtorem != null) { await blacklistHttpClient.DeleteAsync(idtorem.CharacterRelationId); await session.SendPacketAsync(await session.Character.GenerateBlinitAsync(blacklistHttpClient)); } else { await session.SendPacketAsync(new InfoPacket { Message = gameLanguageLocalizer[LanguageKey.NOT_IN_BLACKLIST, session.Account.Language] }); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Friend/BlInsPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Relations; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Friend { public class BlInsPackettHandler(IBlacklistHub blacklistHttpClient, ILogger<BlInsPackettHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : PacketHandler<BlInsPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(BlInsPacket blinsPacket, ClientSession session) { var result = await blacklistHttpClient.AddBlacklistAsync(new BlacklistRequest { CharacterId = session.Character.CharacterId, BlInsPacket = blinsPacket }); switch (result) { case LanguageKey.CANT_BLOCK_FRIEND: await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.CannotBlackListFriend }); break; case LanguageKey.ALREADY_BLACKLISTED: await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.AlreadyBlacklisted }); break; case LanguageKey.BLACKLIST_ADDED: await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.CharacterBlacklisted }); await session.SendPacketAsync(await session.Character.GenerateBlinitAsync(blacklistHttpClient)); break; default: logger.LogWarning(logLanguage[LogLanguageKey.FRIEND_REQUEST_DISCONNECTED]); break; } } } } ================================================ FILE: src/NosCore.PacketHandlers/Friend/BlPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.ClientPackets.Relations; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Friend { public class BlPacketHandler(ISessionRegistry sessionRegistry) : PacketHandler<BlPacket>, IWorldPacketHandler { public override Task ExecuteAsync(BlPacket finsPacket, ClientSession session) { if (!sessionRegistry.TryGetCharacter(s => s.Name == finsPacket.CharacterName, out var target)) { return session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.UnknownCharacter }); } var blinsPacket = new BlInsPacket { CharacterId = target.VisualId }; return session.HandlePacketsAsync(new[] { blinsPacket }); } } } ================================================ FILE: src/NosCore.PacketHandlers/Friend/FdelPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Core.I18N; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.ClientPackets.Relations; using NosCore.Packets.ServerPackets.UI; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Friend { public class FdelPacketHandler(IFriendHub friendHttpClient, IChannelHub channelHttpClient, IPubSubHub pubSubHub, IGameLanguageLocalizer gameLanguageLocalizer, ISessionRegistry sessionRegistry) : PacketHandler<FdelPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(FdelPacket fdelPacket, ClientSession session) { var list = await friendHttpClient.GetFriendsAsync(session.Character.VisualId); var idtorem = list.FirstOrDefault(s => s.CharacterId == fdelPacket.CharacterId); if (idtorem != null) { await friendHttpClient.DeleteAsync(idtorem.CharacterRelationId); if (sessionRegistry.TryGetCharacter(s => s.VisualId == fdelPacket.CharacterId, out var targetCharacter)) { await targetCharacter.SendPacketAsync(await targetCharacter.GenerateFinitAsync(friendHttpClient, channelHttpClient, pubSubHub)); } await session.Character.SendPacketAsync(await session.Character.GenerateFinitAsync(friendHttpClient, channelHttpClient, pubSubHub)); } else { await session.SendPacketAsync(new InfoPacket { Message = gameLanguageLocalizer[LanguageKey.NOT_IN_FRIENDLIST, session.Account.Language] }); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Friend/FinsPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.ClientPackets.Relations; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using System; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Friend { public class FinsPacketHandler(IFriendHub friendHttpClient, IChannelHub channelHttpClient, IPubSubHub pubSubHub, ISessionRegistry sessionRegistry) : PacketHandler<FinsPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(FinsPacket finsPacket, ClientSession session) { if (!sessionRegistry.TryGetCharacter(s => s.VisualId == finsPacket.CharacterId, out var targetCharacter)) { return; } var result = await friendHttpClient.AddFriendAsync(new FriendShipRequest { CharacterId = session.Character.CharacterId, FinsPacket = finsPacket }); switch (result) { case LanguageKey.FRIENDLIST_FULL: await session.Character.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.MaxFriendReachedAdd }); break; case LanguageKey.BLACKLIST_BLOCKED: await session.Character.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.AlreadyBlacklisted }); break; case LanguageKey.ALREADY_FRIEND: await session.Character.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.RegisteredAsFriend }); break; case LanguageKey.FRIEND_REQUEST_BLOCKED: await session.Character.SendPacketAsync(new Infoi2Packet { Message = Game18NConstString.HAsFriendRequestBlocked, ArgumentType = 1, Game18NArguments = { targetCharacter.Name! } }); break; case LanguageKey.FRIEND_REQUEST_SENT: await targetCharacter.SendPacketAsync(new Dlgi2Packet { Question = Game18NConstString.AskBecomeFriend, ArgumentType = 1, Game18NArguments = { session.Character.Name! }, YesPacket = new FinsPacket { Type = FinsPacketType.Accepted, CharacterId = session.Character.VisualId }, NoPacket = new FinsPacket { Type = FinsPacketType.Rejected, CharacterId = session.Character.VisualId } }); break; case LanguageKey.FRIEND_ADDED: await session.Character.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.Registered }); await targetCharacter.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.Registered }); await targetCharacter.SendPacketAsync(await targetCharacter.GenerateFinitAsync(friendHttpClient, channelHttpClient, pubSubHub)); await session.Character.SendPacketAsync(await session.Character.GenerateFinitAsync(friendHttpClient, channelHttpClient, pubSubHub)); break; case LanguageKey.FRIEND_REJECTED: await targetCharacter.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.YouAreBlocked }); break; default: throw new ArgumentException(); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Friend/FlPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.CommandPackets; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.ClientPackets.Relations; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Friend { public class FlCommandPacketHandler(ISessionRegistry sessionRegistry) : PacketHandler<FlCommandPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(FlCommandPacket flPacket, ClientSession session) { if (!sessionRegistry.TryGetCharacter(s => s.Name == flPacket.CharacterName, out var target)) { await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.UnknownCharacter }); return; } var fins = new FinsPacket { CharacterId = target.VisualId, Type = FinsPacketType.Accepted }; await session.HandlePacketsAsync(new[] { fins }); } } } ================================================ FILE: src/NosCore.PacketHandlers/Game/GameStartPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Data.Enumerations.Buff; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.InterChannelCommunication.Hubs.MailHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MapChangeService; using NosCore.GameObject.Services.QuestService; using NosCore.GameObject.Services.SkillService; using NosCore.Packets.ClientPackets.CharacterSelectionScreen; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Quest; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Game { public class GameStartPacketHandler(IOptions<WorldConfiguration> worldConfiguration, IFriendHub friendHttpClient, IChannelHub channelHttpClient, IPubSubHub pubSubHub, IBlacklistHub blacklistHttpClient, ISerializer packetSerializer, IMailHub mailHttpClient, IQuestService questProvider, IMapChangeService mapChangeService, ISkillService skillService) : PacketHandler<GameStartPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(GameStartPacket packet, ClientSession session) { if (session.GameStarted || !session.HasSelectedCharacter) { // character should have been selected in SelectCharacter return; } session.GameStarted = true; if (worldConfiguration.Value.WorldInformation) { await session.SendPacketAsync(session.Character.GenerateSay("-------------------[NosCore]---------------", SayColorType.Yellow)); await session.SendPacketAsync(session.Character.GenerateSay("Github : https://github.com/NosCoreIO/NosCore/", SayColorType.Red)); await session.SendPacketAsync(session.Character.GenerateSay("-----------------------------------------------", SayColorType.Yellow)); } await skillService.LoadSkill(session.Character); await session.SendPacketAsync(session.Character.GenerateTit()); await session.SendPacketAsync(session.Character.GenerateSpPoint(worldConfiguration)); await session.SendPacketAsync(session.Character.GenerateRsfi()); await session.SendPacketAsync(session.Character.GenerateQuestPacket()); if (session.Character.Hp <= 0) { // ServerManager.Instance.ReviveFirstPosition(Session.Character.CharacterId); } else { await mapChangeService.ChangeMapAsync(session); } if (session.Character.CurrentScriptId == null) { _ = questProvider.RunScriptAsync(session.Character); } else if (session.Character.Script is { } currentStep) { await session.SendPacketAsync(new ScriptPacket { ScriptId = currentStep.ScriptId, ScriptStepId = currentStep.ScriptStepId, }); } // Session.SendPacket(Session.Character.GenerateSki()); // Session.SendPacket($"fd {Session.Character.Reput} 0 {(int)Session.Character.Dignity} {Math.Abs(Session.Character.GetDignityIco())}"); await session.SendPacketAsync(session.Character.GenerateFd()); await session.SendPacketAsync(session.Character.GenerateStat()); // Session.SendPacket("rage 0 250000"); // Session.SendPacket("rank_cool 0 0 18000"); // SpecialistInstance specialistInstance = Session.Character.Inventory.LoadBySlotAndType<SpecialistInstance>(8, InventoryType.Wear); var medal = session.Character.StaticBonusList.FirstOrDefault(s => s.StaticBonusType == StaticBonusType.BazaarMedalGold || s.StaticBonusType == StaticBonusType.BazaarMedalSilver); if (medal != null) { await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Green, Message = Game18NConstString.NosMerchantActive, }); } // if (Session.Character.StaticBonusList.Any(s => s.StaticBonusType == StaticBonusType.PetBasket)) // { // Session.SendPacket("ib 1278 1"); // } // if (Session.Character.MapInstance.Map.MapTypes.Any(m => m.MapTypeId == (short)MapTypeEnum.CleftOfDarkness)) // { // Session.SendPacket("bc 0 0 0"); // } // if (specialistInstance != null) // { // Session.SendPacket(Session.Character.GenerateSpPoint()); // } // Session.SendPacket("scr 0 0 0 0 0 0"); // for (int i = 0; i < 10; i++) // { // Session.SendPacket($"bn {i} {Language.Instance.GetMessageFromKey($"BN{i}")}"); // } session.Character.LoadExpensions(); await session.SendPacketAsync(session.Character.GenerateExts(worldConfiguration)); // Session.SendPacket(Session.Character.GenerateMlinfo()); await session.SendPacketAsync(new PclearPacket()); // Group init even for solo players — the client expects pinit + a self-row pst // so its party UI is in a known state for later joins/leaves. await session.SendPacketAsync(session.Character.Group.GeneratePinit()); await session.SendPacketsAsync(session.Character.Group.GeneratePst()); // Session.SendPacket("zzim"); await session.SendPacketAsync(new TwkPacket(session.Account.Name, session.Character.Name) { VisualId = session.Character.VisualId, VisualType = VisualType.Player, AccountName = session.Account.Name, ClientLanguage = session.Account.Language, ServerLanguage = worldConfiguration.Value.Language }); // Session.SendPacket($"twk 2 {Session.Character.CharacterId} {Session.Account.Name} {Session.Character.Name} shtmxpdlfeoqkr"); await session.SendPacketsAsync(session.Character.Quests.Values.Where(o => o.CompletedOn == null).Select(qst => qst.Quest.GenerateTargetPacket())); // // sqst bf // Session.SendPacket("act6"); // Session.SendPacket(Session.Character.GenerateFaction()); // // MATES // Session.SendPackets(Session.Character.GenerateScP()); // Session.SendPackets(Session.Character.GenerateScN()); // Session.Character.GenerateStartupInventory(); await session.SendPacketAsync(session.Character.GenerateGold()); await session.SendPacketAsync(session.Character.GenerateCond()); await session.SendPacketAsync(session.Character.GenerateSki()); await session.SendPacketsAsync(session.Character.GenerateQuicklist()); // string clinit = ServerManager.Instance.TopComplimented.Aggregate("clinit", // (current, character) => current + $" {character.CharacterId}|{character.Level}|{character.HeroLevel}|{character.Compliment}|{character.Name}"); // string flinit = ServerManager.Instance.TopReputation.Aggregate("flinit", // (current, character) => current + $" {character.CharacterId}|{character.Level}|{character.HeroLevel}|{character.Reput}|{character.Name}"); // string kdlinit = ServerManager.Instance.TopPoints.Aggregate("kdlinit", // (current, character) => current + $" {character.CharacterId}|{character.Level}|{character.HeroLevel}|{character.Act4Points}|{character.Name}"); // Session.CurrentMapInstance?.Broadcast(Session.Character.GenerateGidx()); await session.Character.SendFinfoAsync(friendHttpClient, pubSubHub, packetSerializer, true); await session.SendPacketAsync(await session.Character.GenerateFinitAsync(friendHttpClient, channelHttpClient, pubSubHub)); await session.SendPacketAsync(await session.Character.GenerateBlinitAsync(blacklistHttpClient)); // Session.SendPacket(clinit); // Session.SendPacket(flinit); // Session.SendPacket(kdlinit); // Session.Character.LastPVPRevive = SystemTime.Now; // long? familyId = _familyCharacterDao.FirstOrDefaultAsync(s => s.CharacterId == Session.Character.CharacterId)?.FamilyId; // if (familyId != null) // { // Session.Character.Family = ServerManager.Instance.FamilyList.FirstOrDefault(s => s.FamilyId == familyId.Value); // } // if (Session.Character.Family != null && Session.Character.FamilyCharacter != null) // { // Session.SendPacket(Session.Character.GenerateGInfo()); // Session.SendPackets(Session.Character.GetFamilyHistory()); // Session.SendPacket(Session.Character.GenerateFamilyMember()); // Session.SendPacket(Session.Character.GenerateFamilyMemberMessage()); // Session.SendPacket(Session.Character.GenerateFamilyMemberExp()); // if (!string.IsNullOrWhiteSpace(Session.Character.Family.FamilyMessage)) // { // Session.SendPacket(UserInterfaceHelper.Instance.GenerateInfo("--- Family IMessage ---\n" + Session.Character.Family.FamilyMessage)); // } // } // IEnumerable<PenaltyLogDTO> warning = _penaltyDao.Where(s => s.AccountId == Session.Character.AccountId).Where(p => p.Penalty == PenaltyType.Warning); // IEnumerable<PenaltyLogDTO> penaltyLogDtos = warning as IList<PenaltyLogDTO> ?? warning.ToList(); // if (penaltyLogDtos.Any()) // { // Session.SendPacket(UserInterfaceHelper.Instance.GenerateInfo(string.Format(Language.Instance.GetMessageFromKey("WARNING_INFO"), penaltyLogDtos.Count()))); // } // // finfo - friends info var mails = await mailHttpClient.GetMails(-1, session.Character.CharacterId, false); await session.GenerateMailAsync(mails); await session.SendPacketAsync(session.Character.GenerateTitle()); int giftcount = mails.Select(s => s.MailDto).Count(mail => !mail.IsSenderCopy && mail.ReceiverId == session.Character.CharacterId && mail.ItemInstanceId != null && !mail.IsOpened); int mailcount = mails.Select(s => s.MailDto).Count(mail => !mail.IsSenderCopy && mail.ReceiverId == session.Character.CharacterId && mail.ItemInstanceId == null && !mail.IsOpened); if (giftcount > 0) { await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Green, Message = Game18NConstString.NewParcelArrived, ArgumentType = 4, Game18NArguments = { giftcount } }); } if (mailcount > 0) { await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Green, Message = Game18NConstString.NewNoteArrived, ArgumentType = 4, Game18NArguments = { mailcount } }); } // Session.Character.DeleteTimeout(); // foreach (StaticBuffDTO sb in _staticBuffDao.Where(s => s.CharacterId == Session.Character.CharacterId)) // { // Session.Character.AddStaticBuff(sb); // } // if (Session.Character.MapInstance.Map.MapTypes.Any(m => m.MapTypeId == (short)MapTypeEnum.Act4 || m.MapTypeId == (short)MapTypeEnum.Act42)) // { // Session.Character.ConnectAct4(); // } } } } ================================================ FILE: src/NosCore.PacketHandlers/Game/GuriPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.UI; using System.Threading.Tasks; using Wolverine; namespace NosCore.PacketHandlers.Game { public class GuriPacketHandler(IMessageBus messageBus) : PacketHandler<GuriPacket>, IWorldPacketHandler { public override Task ExecuteAsync(GuriPacket guriPacket, ClientSession session) { return messageBus.PublishAsync(new GuriPacketReceivedEvent(session, guriPacket)).AsTask(); } } } ================================================ FILE: src/NosCore.PacketHandlers/Game/NcifPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.ClientPackets.Battle; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Game { public class NcifPacketHandler(ILogger<NcifPacketHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage, ISessionRegistry sessionRegistry) : PacketHandler<NcifPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(NcifPacket ncifPacket, ClientSession session) { IAliveEntity? entity; switch (ncifPacket.Type) { case VisualType.Player: entity = sessionRegistry.TryGetCharacter(s => s.VisualId == ncifPacket.TargetId, out var player) ? player : null; break; case VisualType.Monster: entity = session.Character.MapInstance.FindMonster(s => s.VisualId == ncifPacket.TargetId); break; case VisualType.Npc: entity = session.Character.MapInstance.FindNpc(s => s.VisualId == ncifPacket.TargetId); break; default: logger.LogError(logLanguage[LogLanguageKey.VISUALTYPE_UNKNOWN], ncifPacket.Type); return; } if (entity != null) { await session.SendPacketAsync(entity.GenerateStatInfo()); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Game/NpinfoPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ServerPackets.Player; using NosCore.Packets.ServerPackets.UI; namespace NosCore.PacketHandlers.Game { // Client sends `npinfo <page>` when it opens or pages through the pet panel. // OpenNos BasicPacketHandler.GetStats replies with stat_char, caches the page, // emits p_clear, then a sc_p per Mate on that page. // // NosCore has no runtime Mate subsystem yet, so we reply with p_clear so the // client renders an empty roster rather than the "loading" state that pins the // tab open forever. No sc_p follow-ups. public sealed class NpinfoPacketHandler : PacketHandler<NpInfoPacket>, IWorldPacketHandler { public override Task ExecuteAsync(NpInfoPacket packet, ClientSession session) { return session.SendPacketAsync(new PclearPacket()); } } } ================================================ FILE: src/NosCore.PacketHandlers/Game/PulsePacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Movement; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Game { public class PulsePacketHandler : PacketHandler<PulsePacket>, IWorldPacketHandler { public override async Task ExecuteAsync(PulsePacket pulsePacket, ClientSession session) { session.LastPulse += 60; if (pulsePacket.Tick != session.LastPulse) { await session.DisconnectAsync(); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Game/QSetPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Quicklist; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Quicklist; using System; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Game { public class QSetPacketHandler : PacketHandler<QsetPacket>, IWorldPacketHandler { private async Task SendQSetAsync(ClientSession session, short q1, short q2, QSetType type, short data1, short data2) { await session.SendPacketAsync(new QsetClientPacket { OriginQuickList = q1, OriginQuickListSlot = q2, Data = new QsetClientSubPacket { Type = type, OriginQuickList = data1, OriginQuickListSlot = data2, Data = 0 } }); } public override async Task ExecuteAsync(QsetPacket qSetPacket, ClientSession session) { short data1 = 0, data2 = 0, quickListIndex = qSetPacket.OriginQuickList, q2 = qSetPacket.OriginQuickListSlot; var type = qSetPacket.Type; var morph = session.Character.UseSp ? session.Character.Morph : (short)0; if (qSetPacket.FirstData.HasValue) { data1 = qSetPacket.FirstData.Value; } if (qSetPacket.SecondData.HasValue) { data2 = qSetPacket.SecondData.Value; } switch (type) { case QSetType.Default: case QSetType.Set: session.Character.QuicklistEntries.RemoveAll( n => (n.QuickListIndex == quickListIndex) && (n.Slot == q2) && (n.Morph == morph)); session.Character.QuicklistEntries.Add(new QuicklistEntryDto { Id = Guid.NewGuid(), CharacterId = session.Character.CharacterId, Type = (short)type, QuickListIndex = quickListIndex, Slot = q2, IconType = data1, IconVNum = data2, Morph = morph }); await SendQSetAsync(session, quickListIndex, q2, type, data1, data2); break; case QSetType.Move: var qlFrom = session.Character.QuicklistEntries.Find(n => (n.QuickListIndex == data1) && (n.Slot == data2) && (n.Morph == morph)); if (qlFrom != null) { var qlTo = session.Character.QuicklistEntries.Find(n => (n.QuickListIndex == quickListIndex) && (n.Slot == q2) && (n.Morph == morph)); qlFrom.QuickListIndex = quickListIndex; qlFrom.Slot = q2; if (qlTo == null) { await SendQSetAsync(session, qlFrom.QuickListIndex, qlFrom.Slot, (QSetType)qlFrom.Type, qlFrom.IconType, qlFrom.IconVNum); await SendQSetAsync(session, data1, data2, QSetType.Reset, 7, -1); } else { await SendQSetAsync(session, qlFrom.QuickListIndex, qlFrom.Slot, (QSetType)qlFrom.Type, qlFrom.IconType, qlFrom.IconVNum); qlTo.QuickListIndex = data1; qlTo.Slot = data2; await SendQSetAsync(session, qlTo.QuickListIndex, qlTo.Slot, (QSetType)qlTo.Type, qlTo.IconType, qlTo.IconVNum); } } break; case QSetType.Remove: session.Character.QuicklistEntries.RemoveAll( n => (n.QuickListIndex == quickListIndex) && (n.Slot == q2) && (n.Morph == morph)); await SendQSetAsync(session, quickListIndex, q2, QSetType.Reset, 7, -1); break; default: return; } } } } ================================================ FILE: src/NosCore.PacketHandlers/Game/ReqInfoPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Entities; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; namespace NosCore.PacketHandlers.Game { // Handles the client `req_info` packet. Dispatch mirrors the official NosTale wire // shape captured from a live session (OpenNos routed the same way): // // req_info 1 <characterId> -> tc_info for the targeted player // req_info 5 <npcMonsterVNum> -> e_info for the NPC monster TEMPLATE // (static catalog lookup, not map-scoped) // req_info 6 <visualType> <visualId> -> e_info for the LIVE entity on the // current map. TargetVNum is the // VisualType discriminator (1/2/3/…) // and MateVNum carries the VisualId. // // Type 6 is not mate-only — it's "info for any map entity"; the VisualType field picks // between player/npc/monster/mate. For NPC (2) and monster (3) branches we use the same // NpcMonsterDto template the in-packet carries. public sealed class ReqInfoPacketHandler(ILogger<ReqInfoPacketHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage, ISessionRegistry sessionRegistry, List<NpcMonsterDto> npcMonsters) : PacketHandler<ReqInfoPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(ReqInfoPacket packet, ClientSession session) { switch (packet.ReqType) { case ReqInfoType.PlayerInfo: if (sessionRegistry.TryGetCharacter(s => s.VisualId == packet.TargetVNum, out var target)) { await session.SendPacketAsync(target.GenerateReqInfo()).ConfigureAwait(false); } return; case ReqInfoType.NpcInfo: // Static catalog lookup by NpcMonsterVNum — the client passes a VNum, not // a map-scoped VisualId, because this request is used for tooltip/info // on any NPC the client knows about (shop menus, inventory hover, etc). var template = npcMonsters.FirstOrDefault(n => n.NpcMonsterVNum == (short)packet.TargetVNum); if (template is null) { return; } await session.SendPacketAsync(template.GenerateNpcInfo(session.Character.AccountLanguage)).ConfigureAwait(false); return; case ReqInfoType.MateInfo: if (packet.MateVNum.HasValue) { await HandleMapEntityInfoAsync(packet, session).ConfigureAwait(false); } else { await HandleMateInfoAsync(packet, session).ConfigureAwait(false); } return; default: logger.LogWarning(logLanguage[LogLanguageKey.UNHANDLED_REQINFO_TYPE], packet.ReqType); return; } } // `req_info 6 <visualType> <visualId>` — live-map entity lookup. TargetVNum is the // VisualType byte (1 player, 2 npc, 3 monster, 9 pet/mate) and MateVNum is the // VisualId of the clicked entity on the current map. private async Task HandleMapEntityInfoAsync(ReqInfoPacket packet, ClientSession session) { var visualType = (VisualType)(int)packet.TargetVNum; var visualId = packet.MateVNum!.Value; NpcMonsterDto? template = null; switch (visualType) { case VisualType.Npc: var npcLookup = session.Character.MapInstance.FindNpc(n => n.VisualId == visualId); template = npcLookup?.NpcMonster; break; case VisualType.Monster: var monsterLookup = session.Character.MapInstance.FindMonster(m => m.VisualId == visualId); template = monsterLookup?.NpcMonster; break; default: logger.LogDebug("req_info 6 for unsupported visualType={VisualType} visualId={VisualId}", visualType, visualId); return; } if (template is null) { return; } await session.SendPacketAsync(template.GenerateNpcInfo(session.Character.AccountLanguage)).ConfigureAwait(false); } // `req_info 6 <mateTransportId>` (single-arg form) — mate / partner info card. // OpenNos BasicPacketHandler looks up Session.Character.Mates by MateTransportId and // calls mate.GenerateEInfo. NosCore has no runtime Mates collection on the character // yet (see Database/Entities/Mate.cs), so we log the miss and no-op — OpenNos also // no-ops when the lookup returns null, so this keeps byte-for-byte parity until the // mate subsystem lands. private Task HandleMateInfoAsync(ReqInfoPacket packet, ClientSession session) { logger.LogDebug("req_info 6 <mateTransportId={TransportId}> received but mate subsystem is not wired", packet.TargetVNum); return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/Game/ScpCtsPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets; using NosCore.Packets.ServerPackets.Specialists; namespace NosCore.PacketHandlers.Game { // Post-OpenNos "refresh pet tab" request; the `_cts` suffix is the client-to-server // convention (same as frank_cts / fhis_cts). OpenNos never implemented a handler // because the packet post-dates the codebase. Siblings of this packet (in a live // session) also come with sc_p_stc 0 0 from the server to confirm the roster cap. // Mate subsystem isn't wired, so we answer with sc_p_stc 0 (empty roster) and // leave it at that. public sealed class ScpCtsPacketHandler : PacketHandler<ScpCtsPacket>, IWorldPacketHandler { public override Task ExecuteAsync(ScpCtsPacket packet, ClientSession session) { return session.SendPacketAsync(new ScPStcPacket { MaxMateCountTenths = 0 }); } } } ================================================ FILE: src/NosCore.PacketHandlers/Game/TitEqPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using NosCore.Packets.ClientPackets.Player; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Game { public class TitEqPacketHandler : PacketHandler<TitEqPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(TitEqPacket titEqPacket, ClientSession session) { var tit = session.Character.Titles.FirstOrDefault(s => s.TitleType == titEqPacket.TitleId); if (tit == null) { return; } switch (titEqPacket.Mode) { case 1: foreach (var title in session.Character.Titles.Where(s => s.TitleType != titEqPacket.TitleId)) { title.Visible = false; } tit.Visible = !tit.Visible; await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.TitleChangedOrHidden }); break; default: foreach (var title in session.Character.Titles.Where(s => s.TitleType != titEqPacket.TitleId)) { title.Active = false; } tit.Active = !tit.Active; await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.TitleEffectChangedOrDeactivated }); break; } await session.Character.MapInstance.SendPacketAsync(session.Character.GenerateTitInfo()); await session.Character.SendPacketAsync(session.Character.GenerateTitle()); } } } ================================================ FILE: src/NosCore.PacketHandlers/Group/GroupTalkPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using NosCore.Packets.ClientPackets.Chat; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Group { public class GroupTalkPacketHandler : PacketHandler<GroupTalkPacket>, IWorldPacketHandler { public override Task ExecuteAsync(GroupTalkPacket groupTalkPacket, ClientSession clientSession) { if (clientSession.Character.Group.Count == 1) { return Task.CompletedTask; } return clientSession.Character.Group.SendPacketAsync( clientSession.Character.GenerateSpk(new SpeakPacket { Message = groupTalkPacket.Message, SpeakType = SpeakType.Group })); } } } ================================================ FILE: src/NosCore.PacketHandlers/Group/PjoinPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Core.I18N; using NosCore.Core.Services.IdService; using NosCore.Data.Enumerations.Group; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Networking; using NosCore.Networking.SessionGroup; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Groups; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Group { public class PjoinPacketHandler(ILogger<PjoinPacketHandler> logger, IBlacklistHub blacklistHttpCLient, IClock clock, IIdService<GameObject.Services.GroupService.Group> groupIdService, ILogLanguageLocalizer<LogLanguageKey> logLanguage, IGameLanguageLocalizer gameLanguageLocalizer, ISessionRegistry sessionRegistry) : PacketHandler<PjoinPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(PjoinPacket pjoinPacket, ClientSession clientSession) { var hasTargetSession = sessionRegistry.TryGetCharacter(s => s.VisualId == pjoinPacket.CharacterId, out var targetSession); if (!hasTargetSession && (pjoinPacket.RequestType != GroupRequestType.Sharing)) { logger.LogError(gameLanguageLocalizer[LanguageKey.UNABLE_TO_REQUEST_GROUP, clientSession.Account.Language]); return; } switch (pjoinPacket.RequestType) { case GroupRequestType.Requested: case GroupRequestType.Invited: if (pjoinPacket.CharacterId == clientSession.Character.CharacterId) { return; } if (!hasTargetSession || targetSession.Group.IsGroupFull) { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.GroupIsFull }); return; } if ((targetSession.Group.Count > 1) && (clientSession.Character.Group.Count > 1)) { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.AlreadyInAnotherGroup }); return; } var blacklisteds = await blacklistHttpCLient.GetBlacklistedAsync(clientSession.Character.VisualId); if (blacklisteds != null && blacklisteds.Any(s => s.CharacterId == pjoinPacket.CharacterId)) { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.AlreadyBlacklisted }); return; } if (targetSession.GroupRequestBlocked) { await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.GroupBlocked }); return; } if (clientSession.Character.LastGroupRequest != null) { var diffTimeSpan = ((Instant)clientSession.Character.LastGroupRequest).Plus(Duration.FromSeconds(5)) - clock.GetCurrentInstant(); if (diffTimeSpan.Seconds > 0 && diffTimeSpan.Seconds <= 5) { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.CannotSendInvite, ArgumentType = 4, Game18NArguments = { diffTimeSpan.Seconds } }); return; } } clientSession.Character.GroupRequestCharacterIds.TryAdd(pjoinPacket.CharacterId, pjoinPacket.CharacterId); clientSession.Character.LastGroupRequest = clock.GetCurrentInstant(); if (((clientSession.Character.Group.Count == 1) || (clientSession.Character.Group.Type == GroupType.Group)) && ((targetSession.Group.Count == 1) || (targetSession.Group.Type == GroupType.Group))) { await clientSession.SendPacketAsync(new Infoi2Packet { Message = Game18NConstString.YouInvitedToGroup, ArgumentType = 1, Game18NArguments = { targetSession.Name ?? "" } }); await targetSession.SendPacketAsync(new Dlgi2Packet { Question = Game18NConstString.GroupInvite, ArgumentType = 1, Game18NArguments = { clientSession.Character.Name }, YesPacket = new PjoinPacket { CharacterId = clientSession.Character.CharacterId, RequestType = GroupRequestType.Accepted }, NoPacket = new PjoinPacket { CharacterId = clientSession.Character.CharacterId, RequestType = GroupRequestType.Declined } }); } break; case GroupRequestType.Sharing: if (clientSession.Character.Group.Count == 1) { return; } await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.CanNotChangeGroupMode }); await Task.WhenAll(clientSession.Character.Group.Values .Where(s => s.Item2.VisualId != clientSession.Character.CharacterId) .Select(s => { if (!sessionRegistry.TryGetCharacter(v => v.VisualId == s.Item2.VisualId, out var session)) { return Task.CompletedTask; } session.GroupRequestCharacterIds.TryAdd(s.Item2.VisualId, s.Item2.VisualId); return session.SendPacketAsync(new Dlgi2Packet { Question = Game18NConstString.ConfirmSetPointOfReturn, ArgumentType = 1, Game18NArguments = { s.Item2.Name ?? "" }, YesPacket = new PjoinPacket { CharacterId = clientSession.Character.CharacterId, RequestType = GroupRequestType.AcceptedShare }, NoPacket = new PjoinPacket { CharacterId = clientSession.Character.CharacterId, RequestType = GroupRequestType.DeclinedShare } }); })); break; case GroupRequestType.Accepted: if (!hasTargetSession || !targetSession.GroupRequestCharacterIds.Values.Contains(clientSession.Character.CharacterId)) { return; } targetSession.GroupRequestCharacterIds.TryRemove(clientSession.Character.CharacterId, out _); if ((clientSession.Character.Group.Count > 1) && (targetSession.Group.Count > 1)) { return; } if (clientSession.Character.Group.IsGroupFull || targetSession.Group.IsGroupFull) { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.GroupIsFull }); await targetSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.GroupIsFull }); return; } if (clientSession.Character.Group.Count > 1) { targetSession.JoinGroup(clientSession.Character.Group); } else if (targetSession.Group.Count > 1) { if (targetSession.Group.Type == GroupType.Group) { clientSession.Character.JoinGroup(targetSession.Group); } } else { clientSession.Character.Group.GroupId = groupIdService.GetNextId(); targetSession.JoinGroup(clientSession.Character.Group); await targetSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.YouAreNowGroupLeader }); targetSession.Group = clientSession.Character.Group; clientSession.Character.GroupRequestCharacterIds.Clear(); } if (clientSession.Character.Group.Type != GroupType.Group) { return; } var currentGroup = clientSession.Character.Group; foreach (var member in currentGroup.Values.Where(s => s.Item2 is ICharacterEntity)) { if (sessionRegistry.TryGetCharacter(s => s.VisualId == member.Item2.VisualId, out var session)) { await session.SendPacketAsync(currentGroup.GeneratePinit()); await session.SendPacketsAsync(currentGroup.GeneratePst().Where(p => p.VisualId != session.VisualId)); } } groupIdService.Items[currentGroup.GroupId] = currentGroup; await clientSession.Character.MapInstance.SendPacketAsync( clientSession.Character.Group.GeneratePidx(clientSession.Character)); break; case GroupRequestType.Declined: if (!hasTargetSession || !targetSession.GroupRequestCharacterIds.Values.Contains(clientSession.Character.CharacterId)) { return; } targetSession.GroupRequestCharacterIds.TryRemove(clientSession.Character.CharacterId, out _); await clientSession.SendPacketAsync(new Sayi2Packet { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.GroupInviteRejected, ArgumentType = 1, Game18NArguments = { targetSession.Name ?? "" } }); break; case GroupRequestType.AcceptedShare: if (!hasTargetSession || !targetSession.GroupRequestCharacterIds.Values.Contains(clientSession.Character.CharacterId)) { return; } if (clientSession.Character.Group.Count == 1) { return; } targetSession.GroupRequestCharacterIds.TryRemove(clientSession.Character.CharacterId, out _); await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.ChangedSamePointOfReturn }); await clientSession.SendPacketAsync(new Msgi2Packet { Type = MessageType.Default, Message = Game18NConstString.SomeoneChangedPointOfReturn, ArgumentType = 1, Game18NArguments = { targetSession.Name ?? "" } }); //TODO: add a way to change respawn points when system will be done break; case GroupRequestType.DeclinedShare: if (!hasTargetSession || !targetSession.GroupRequestCharacterIds.Values.Contains(clientSession.Character.CharacterId)) { return; } targetSession.GroupRequestCharacterIds.TryRemove(clientSession.Character.CharacterId, out _); await targetSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.RefusedSharePointOfReturn }); await clientSession.SendPacketAsync(new Msgi2Packet { Type = MessageType.Default, Message = Game18NConstString.SomeoneRefusedToSharePointOfReturn, ArgumentType = 1, Game18NArguments = { targetSession.Name ?? "" } }); break; default: logger.LogError(logLanguage[LogLanguageKey.GROUPREQUESTTYPE_UNKNOWN]); break; } } } } ================================================ FILE: src/NosCore.PacketHandlers/Group/PleavePacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Core.Services.IdService; using NosCore.Data.Enumerations.Group; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Networking; using NosCore.Networking.SessionGroup; using NosCore.Packets.ClientPackets.Groups; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Group { public class PleavePacketHandler(IIdService<GameObject.Services.GroupService.Group> groupIdService, ISessionRegistry sessionRegistry, ISessionGroupFactory sessionGroupFactory) : PacketHandler<PleavePacket>, IWorldPacketHandler { public override async Task ExecuteAsync(PleavePacket bIPacket, ClientSession clientSession) { var group = clientSession.Character.Group; if (group!.Count == 1) { return; } if (group.Count > 2) { var isLeader = group.IsGroupLeader(clientSession.Character.CharacterId); await clientSession.Character.LeaveGroupAsync(sessionGroupFactory, sessionRegistry); if (isLeader) { if (!sessionRegistry.TryGetCharacter(s => s.VisualId == group.Values.First().Item2.VisualId, out var targetsession)) { return; } await targetsession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.YouAreNowGroupLeader }); } if (group.Type != GroupType.Group) { return; } foreach (var member in group.Values.Where(s => s.Item2 is ICharacterEntity)) { var character = member.Item2 as ICharacterEntity; await (character == null ? Task.CompletedTask : character.SendPacketAsync(character.Group.GeneratePinit())); } await clientSession.SendPacketAsync(clientSession.Character.Group.GeneratePinit()); await clientSession.Character.MapInstance.SendPacketAsync( clientSession.Character.Group.GeneratePidx(clientSession.Character)); } else { var memberList = new List<INamedEntity>(); memberList.AddRange(group.Values.Select(s => s.Item2)); foreach (var member in memberList.Where(s => s is ICharacterEntity)) { if (!sessionRegistry.TryGetCharacter(s => s.VisualId == member.VisualId, out var targetsession)) { continue; } await targetsession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.PartyDisbanded }); await targetsession.LeaveGroupAsync(sessionGroupFactory, sessionRegistry); await targetsession.SendPacketAsync(targetsession.Group.GeneratePinit()); await targetsession.MapInstance.SendPacketAsync(targetsession.Group.GeneratePidx(targetsession)); } groupIdService.Items.TryRemove(group.GroupId, out _); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Inventory/BiPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Inventory { public class BiPacketHandler(ILogger<BiPacketHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : PacketHandler<BiPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(BiPacket bIPacket, ClientSession clientSession) { switch (bIPacket.Option) { case null: await clientSession.SendPacketAsync( new DlgiPacket { YesPacket = new BiPacket { PocketType = bIPacket.PocketType, Slot = bIPacket.Slot, Option = RequestDeletionType.Requested }, NoPacket = new BiPacket { PocketType = bIPacket.PocketType, Slot = bIPacket.Slot, Option = RequestDeletionType.Declined }, Question = Game18NConstString.ItemWillDestroy }); break; case RequestDeletionType.Requested: await clientSession.SendPacketAsync( new DlgiPacket { YesPacket = new BiPacket { PocketType = bIPacket.PocketType, Slot = bIPacket.Slot, Option = RequestDeletionType.Confirmed }, NoPacket = new BiPacket { PocketType = bIPacket.PocketType, Slot = bIPacket.Slot, Option = RequestDeletionType.Declined }, Question = Game18NConstString.AskDestroyItem }); break; case RequestDeletionType.Confirmed: if (clientSession.Character.InExchangeOrShop) { logger.LogError(logLanguage[LogLanguageKey.CANT_MOVE_ITEM_IN_SHOP]); return; } var item = clientSession.Character.InventoryService.DeleteFromTypeAndSlot( (NoscorePocketType)bIPacket.PocketType, bIPacket.Slot); await clientSession.SendPacketAsync(item.GeneratePocketChange(bIPacket.PocketType, bIPacket.Slot)); break; default: return; } } } } ================================================ FILE: src/NosCore.PacketHandlers/Inventory/GetPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Drops; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.PathFinder.Interfaces; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Threading.Tasks; using Wolverine; namespace NosCore.PacketHandlers.Inventory { public class GetPacketHandler(ILogger<GetPacketHandler> logger, IHeuristic distanceCalculator, IClock clock, ILogLanguageLocalizer<LogLanguageKey> logLanguage, IMessageBus messageBus) : PacketHandler<GetPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(GetPacket getPacket, ClientSession clientSession) { var mapInstance = clientSession.Character.MapInstance; var mapItemNullable = mapInstance.TryGetMapItem(getPacket.VisualId); if (mapItemNullable == null) { return; } var mapItem = mapItemNullable.Value; bool canpick; switch (getPacket.PickerType) { case VisualType.Player: canpick = distanceCalculator.GetDistance( (clientSession.Character.PositionX, clientSession.Character.PositionY), (mapItem.PositionX, mapItem.PositionY)) < 8; break; case VisualType.Npc: return; default: logger.LogError(logLanguage[LogLanguageKey.UNKNOWN_PICKERTYPE]); return; } if (!canpick) { return; } //TODO add group drops if (mapItem.OwnerId != null && mapItem.DroppedAt.Plus(Duration.FromSeconds(30)) > clock.GetCurrentInstant() && mapItem.OwnerId != clientSession.Character.CharacterId) { await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.UnableToPickUp }); return; } await messageBus.PublishAsync(new MapItemPickedUpEvent( clientSession, mapItem.VisualId, mapItem.VNum, mapItem.Amount, mapItem.ItemInstance, getPacket)); } } } ================================================ FILE: src/NosCore.PacketHandlers/Inventory/MvePacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.Packets.ClientPackets.Inventory; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Inventory { public class MvePacketHandler : PacketHandler<MvePacket>, IWorldPacketHandler { public override async Task ExecuteAsync(MvePacket mvePacket, ClientSession clientSession) { var inv = clientSession.Character.InventoryService.MoveInPocket(mvePacket.Slot, (NoscorePocketType)mvePacket.InventoryType, (NoscorePocketType)mvePacket.DestinationInventoryType, mvePacket.DestinationSlot, false); await clientSession.SendPacketAsync(inv.GeneratePocketChange(mvePacket.DestinationInventoryType, mvePacket.DestinationSlot)); await clientSession.SendPacketAsync( ((InventoryItemInstance?)null).GeneratePocketChange(mvePacket.InventoryType, mvePacket.Slot)); } } } ================================================ FILE: src/NosCore.PacketHandlers/Inventory/MviPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Inventory; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Inventory { public class MviPacketHandler : PacketHandler<MviPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(MviPacket mviPacket, ClientSession clientSession) { // actually move the item from source to destination clientSession.Character.InventoryService.TryMoveItem((NoscorePocketType)mviPacket.InventoryType, mviPacket.Slot, mviPacket.Amount, mviPacket.DestinationSlot, out var previousInventory, out var newInventory); await clientSession.SendPacketAsync( newInventory.GeneratePocketChange(mviPacket.InventoryType, mviPacket.DestinationSlot)); await clientSession.SendPacketAsync(previousInventory.GeneratePocketChange(mviPacket.InventoryType, mviPacket.Slot)); } } } ================================================ FILE: src/NosCore.PacketHandlers/Inventory/PutPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Core.I18N; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using System.Threading.Tasks; //TODO stop using obsolete #pragma warning disable 618 namespace NosCore.PacketHandlers.Inventory { public class PutPacketHandler(IOptions<WorldConfiguration> worldConfiguration, IGameLanguageLocalizer gameLanguageLocalizer) : PacketHandler<PutPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(PutPacket putPacket, ClientSession clientSession) { var invitem = clientSession.Character.InventoryService.LoadBySlotAndType(putPacket.Slot, (NoscorePocketType)putPacket.PocketType); if (invitem?.ItemInstance?.Item?.IsDroppable ?? false) { if ((putPacket.Amount > 0) && (putPacket.Amount <= worldConfiguration.Value.MaxItemAmount)) { if (clientSession.Character.MapInstance.MapItemCount < 200) { var droppedItem = clientSession.Character.MapInstance.PutItem(putPacket.Amount, invitem.ItemInstance, clientSession); if (droppedItem == null) { await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.CantDropItem }); return; } invitem = clientSession.Character.InventoryService.LoadBySlotAndType(putPacket.Slot, (NoscorePocketType)putPacket.PocketType); await clientSession.SendPacketAsync(invitem.GeneratePocketChange(putPacket.PocketType, putPacket.Slot)); await clientSession.Character.MapInstance.SendPacketAsync(droppedItem.Value.GenerateDrop()); } else { await clientSession.SendPacketAsync(new MsgPacket { Type = MessageType.Default, Message = gameLanguageLocalizer[LanguageKey.DROP_MAP_FULL, clientSession.Account.Language], }); } } else { await clientSession.SendPacketAsync(new MsgPacket { Type = MessageType.Default, Message = gameLanguageLocalizer[LanguageKey.BAD_DROP_AMOUNT, clientSession.Account.Language], }); } } else { await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.CantDropItem }); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Inventory/RemovePacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.ClientPackets.Specialists; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Inventory { public class RemovePacketHandler : PacketHandler<RemovePacket>, IWorldPacketHandler { public override async Task ExecuteAsync(RemovePacket removePacket, ClientSession clientSession) { if (clientSession.Character.InExchangeOrShop) { return; } var inventory = clientSession.Character.InventoryService.LoadBySlotAndType((short)removePacket.InventorySlot, NoscorePocketType.Wear); if (inventory == null) { return; } if (inventory.ItemInstance.Item.EquipmentSlot == EquipmentType.Sp) { await clientSession.HandlePacketsAsync(new[] { new SpTransformPacket { Type = SlPacketType.WearSpAndTransform } }); } var inv = clientSession.Character.InventoryService.MoveInPocket((short)removePacket.InventorySlot, NoscorePocketType.Wear, NoscorePocketType.Equipment); if (inv == null) { await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.NotEnoughSpace }); return; } await clientSession.SendPacketAsync(inv.GeneratePocketChange((PocketType)inv.Type, inv.Slot)); await clientSession.Character.MapInstance.SendPacketAsync(clientSession.Character.GenerateEq()); await clientSession.SendPacketAsync(clientSession.Character.GenerateEquipment()); if (inv.ItemInstance.Item.EquipmentSlot == EquipmentType.Fairy) { await clientSession.Character.MapInstance.SendPacketAsync( clientSession.Character.GeneratePairy(null)); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Inventory/SpTransformPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Core.I18N; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.TransformationService; using NosCore.Networking; using NosCore.Packets.ClientPackets.Specialists; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using System; using System.Threading.Tasks; //TODO stop using obsolete #pragma warning disable 618 namespace NosCore.PacketHandlers.Inventory { public class SpTransformPacketHandler(IClock clock, ITransformationService transformationService, IGameLanguageLocalizer gameLanguageLocalizer) : PacketHandler<SpTransformPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(SpTransformPacket spTransformPacket, ClientSession clientSession) { if (spTransformPacket.Type == SlPacketType.ChangePoints) { //TODO set points } else { if (clientSession.Character.IsSitting) { return; } if (!(clientSession.Character.InventoryService.LoadBySlotAndType((byte)EquipmentType.Sp, NoscorePocketType.Wear)?.ItemInstance is SpecialistInstance specialistInstance)) { await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.NoSpecialistCardEquipped }); return; } if (clientSession.Character.IsVehicled) { await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.CantUseInVehicle }); return; } var currentRunningSeconds = (clock.GetCurrentInstant() - clientSession.Character.LastSp).TotalSeconds; if (clientSession.Character.UseSp) { clientSession.Character.LastSp = clock.GetCurrentInstant(); await transformationService.RemoveSpAsync(clientSession); } else { if ((clientSession.Character.SpPoint == 0) && (clientSession.Character.SpAdditionPoint == 0)) { await clientSession.SendPacketAsync(new MsgPacket { Message = gameLanguageLocalizer[LanguageKey.SP_NOPOINTS, clientSession.Account.Language] }); return; } if (currentRunningSeconds >= clientSession.Character.SpCooldown) { if (spTransformPacket.Type == SlPacketType.WearSpAndTransform) { await transformationService.ChangeSpAsync(clientSession); } else { await clientSession.SendPacketAsync(new DelayPacket { Type = DelayPacketType.Locomotion, Delay = 5000, Packet = new SpTransformPacket { Type = SlPacketType.WearSpAndTransform } }); await clientSession.Character.MapInstance.SendPacketAsync(new GuriPacket { Type = GuriPacketType.Dance, Argument = 1, EntityId = clientSession.Character.CharacterId }); } } else { await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.CantTrasformWithSideEffect, ArgumentType = 4, Game18NArguments = { (short)(clientSession.Character.SpCooldown - (int)Math.Round(currentRunningSeconds)) } }); } } } } } } ================================================ FILE: src/NosCore.PacketHandlers/Inventory/UseItemPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Inventory; using System.Threading.Tasks; using Wolverine; namespace NosCore.PacketHandlers.Inventory { public class UseItemPacketHandler(IMessageBus messageBus) : PacketHandler<UseItemPacket>, IWorldPacketHandler { public override Task ExecuteAsync(UseItemPacket useItemPacket, ClientSession clientSession) { var inv = clientSession.Character.InventoryService.LoadBySlotAndType( useItemPacket.Slot, (NoscorePocketType)useItemPacket.Type); if (inv?.ItemInstance?.Item == null) { return Task.CompletedTask; } return messageBus.PublishAsync(new ItemUsedEvent(clientSession, inv, useItemPacket)).AsTask(); } } } ================================================ FILE: src/NosCore.PacketHandlers/Inventory/WearPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Inventory; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Inventory { public class WearPacketHandler : PacketHandler<WearPacket>, IWorldPacketHandler { public override Task ExecuteAsync(WearPacket wearPacket, ClientSession clientSession) { return clientSession.HandlePacketsAsync(new[] { new UseItemPacket { Slot = wearPacket.InventorySlot, Type = wearPacket.Type } }); } } } ================================================ FILE: src/NosCore.PacketHandlers/Login/NoS0575PacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.LoginService; using NosCore.Packets.ClientPackets.Login; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Login { public class NoS0575PacketHandler(ILoginService loginService, IOptions<LoginConfiguration> loginConfiguration, ILogger<NoS0575PacketHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : PacketHandler<NoS0575Packet>, ILoginPacketHandler { public override Task ExecuteAsync(NoS0575Packet packet, ClientSession clientSession) { if (!loginConfiguration.Value.EnforceNewAuth) { return loginService.LoginAsync(packet.Username, packet.Md5String!, packet.ClientVersion!, clientSession, packet.Password!, false, packet.RegionType); } logger.LogWarning(logLanguage[LogLanguageKey.TRY_OLD_AUTH], packet.Username); return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/Login/NoS0577PacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.LoginService; using NosCore.Packets.ClientPackets.Login; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Login { public class NoS0577PacketHandler(ILoginService loginService) : PacketHandler<NoS0577Packet>, ILoginPacketHandler { public override Task ExecuteAsync(NoS0577Packet packet, ClientSession clientSession) { return loginService.LoginAsync(null, packet.Md5String!, packet.ClientVersion!, clientSession, packet.AuthToken!, true, packet.RegionType); } } } ================================================ FILE: src/NosCore.PacketHandlers/Miniland/AddobjPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Map; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MinilandService; using NosCore.Packets.ClientPackets.Miniland; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Miniland; using NosCore.Packets.ServerPackets.UI; using System; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Miniland { public class AddobjPacketHandler(IMinilandService minilandProvider) : PacketHandler<AddobjPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(AddobjPacket addobjPacket, ClientSession clientSession) { var minilandobject = clientSession.Character.InventoryService.LoadBySlotAndType(addobjPacket.Slot, NoscorePocketType.Miniland); if (minilandobject == null) { return; } if (clientSession.Character.MapInstance.MapDesignObjects.ContainsKey(minilandobject.Id)) { await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.YouAlreadyHaveThisMinilandObject }); return; } if (minilandProvider.GetMiniland(clientSession.Character.CharacterId).State != MinilandState.Lock) { await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.InstallationOnlyLockMode }); return; } var minilandobj = new MapDesignObject { MinilandObjectId = Guid.NewGuid(), MapX = addobjPacket.PositionX, MapY = addobjPacket.PositionY, Level1BoxAmount = 0, Level2BoxAmount = 0, Level3BoxAmount = 0, Level4BoxAmount = 0, Level5BoxAmount = 0 }; if (minilandobject.ItemInstance?.Item?.ItemType == ItemType.House) { var min = clientSession.Character.MapInstance.MapDesignObjects .FirstOrDefault(s => (s.Value.InventoryItemInstance?.ItemInstance?.Item?.ItemType == ItemType.House) && (s.Value.InventoryItemInstance.ItemInstance.Item.ItemSubType == minilandobject.ItemInstance.Item.ItemSubType)).Value; if (min != null) { await clientSession.HandlePacketsAsync(new[] { new RmvobjPacket { Slot = min.InventoryItemInstance?.Slot ?? 0 } }); } } minilandProvider.AddMinilandObject(minilandobj, clientSession.Character.CharacterId, minilandobject); await clientSession.SendPacketAsync(minilandobj.GenerateEffect()); await clientSession.SendPacketAsync(new MinilandPointPacket { MinilandPoint = minilandobject.ItemInstance?.Item?.MinilandObjectPoint ?? 0, Unknown = 100 }); await clientSession.SendPacketAsync(minilandobj.GenerateMapDesignObject()); } } } ================================================ FILE: src/NosCore.PacketHandlers/Miniland/MJoinPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.MapChangeService; using NosCore.GameObject.Services.MinilandService; using NosCore.Packets.ClientPackets.Miniland; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Miniland { public class MJoinPacketHandler(IFriendHub friendHttpClient, IMinilandService minilandProvider, IMapChangeService mapChangeService, ISessionRegistry sessionRegistry) : PacketHandler<MJoinPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(MJoinPacket mJoinPacket, ClientSession session) { var friendList = await friendHttpClient.GetFriendsAsync(session.Character.CharacterId); if (sessionRegistry.TryGetCharacter(s => s.VisualId == mJoinPacket.VisualId, out var target) && friendList.Any(s => s.CharacterId == mJoinPacket.VisualId)) { var miniland = minilandProvider.GetMiniland(mJoinPacket.VisualId); if (miniland.State == MinilandState.Open) { await mapChangeService.ChangeMapInstanceAsync(session, miniland.MapInstanceId, 5, 8); } else { if (miniland.State == MinilandState.Private && friendList.Where(w => w.RelationType != CharacterRelationType.Blocked) .Select(s => s.CharacterId) .ToList() .Contains(target.VisualId)) { await mapChangeService.ChangeMapInstanceAsync(session, miniland.MapInstanceId, 5, 8); return; } await session.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.MinilandLocked }); } } } } } ================================================ FILE: src/NosCore.PacketHandlers/Miniland/MinilandObjects/MgPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Map; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.MailService; using NosCore.GameObject.Services.MinilandService; using NosCore.Networking; using NosCore.Packets.ClientPackets.Miniland; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Miniland; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; //TODO stop using obsolete #pragma warning disable 618 namespace NosCore.PacketHandlers.Miniland.MinilandObjects { public class MgPacketHandler(IMinilandService minilandProvider, IItemGenerationService itemProvider) : PacketHandler<MinigamePacket>, IWorldPacketHandler { private ClientSession? _clientSession; private MinigamePacket? _minigamePacket; private GameObject.Services.MinilandService.Miniland? _miniland; private MapDesignObject? _minilandObject; public override async Task ExecuteAsync(MinigamePacket minigamePacket, ClientSession clientSession) { _clientSession = clientSession; _minigamePacket = minigamePacket; _miniland = minilandProvider.GetMiniland(clientSession.Character.CharacterId); _minilandObject = clientSession.Character.MapInstance.MapDesignObjects.Values.FirstOrDefault(s => s.Slot == minigamePacket.Id); if ((_minilandObject == null) || (_miniland == null)) { return; } if (_minilandObject?.InventoryItemInstance?.ItemInstance?.Item?.IsWarehouse != false) { return; } var game = (byte)(_minilandObject.InventoryItemInstance.ItemInstance.Item.EquipmentSlot == EquipmentType.MainWeapon ? (4 + _minilandObject.InventoryItemInstance.ItemInstance.ItemVNum) % 10 : (int)_minilandObject.InventoryItemInstance.ItemInstance.Item.EquipmentSlot / 3); //todo check if enought points switch (minigamePacket.Type) { case 1: await PlayAsync(game); break; case 2: await BroadcastEffectAsync(); break; case 3: await ShowBoxLevelsAsync(game); break; case 4: await SelectGiftAsync(); break; case 5: await ShowMinilandManagmentAsync(); break; case 6: await RefillAsync(); break; case 7: await ShowGiftsAsync(); break; case 8: await OpenGiftBatchAsync(); break; case 9: await UseCouponAsync(); break; } } private async Task UseCouponAsync() { var item = _clientSession!.Character.InventoryService.Select(s => s.Value) .Where(s => (s.ItemInstance?.ItemVNum == 1269) || (s.ItemInstance?.ItemVNum == 1271)).OrderBy(s => s.Slot) .FirstOrDefault(); if (item != null) { var point = item.ItemInstance.ItemVNum == 1269 ? 300 : 500; _clientSession.Character.InventoryService.RemoveItemAmountFromInventory(1, item.ItemInstance.Id); _minilandObject!.InventoryItemInstance!.ItemInstance.DurabilityPoint += point; await _clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.ToppedUpPoints, ArgumentType = 4, Game18NArguments = { point } }); await ShowMinilandManagmentAsync(); } } private Task ShowMinilandManagmentAsync() { return _clientSession!.SendPacketAsync(new MloMgPacket { MinigameVNum = _minigamePacket!.MinigameVNum, MinilandPoint = _miniland!.MinilandPoint, Unknown1 = 0, Unknown2 = 0, DurabilityPoint = _minilandObject!.InventoryItemInstance!.ItemInstance.DurabilityPoint, MinilandObjectPoint = _minilandObject.InventoryItemInstance.ItemInstance.Item.MinilandObjectPoint }); } private async Task OpenGiftBatchAsync() { var amount = 0; switch (_minigamePacket!.Point) { case 0: amount = _minilandObject?.Level1BoxAmount ?? 0; break; case 1: amount = _minilandObject?.Level2BoxAmount ?? 0; break; case 2: amount = _minilandObject?.Level3BoxAmount ?? 0; break; case 3: amount = _minilandObject?.Level4BoxAmount ?? 0; break; case 4: amount = _minilandObject?.Level5BoxAmount ?? 0; break; } var gifts = new List<Gift>(); for (var i = 0; i < amount; i++) { var gift = MinilandHelper.Instance.GetMinilandGift(_minigamePacket.MinigameVNum, _minigamePacket.Point ?? 0); if (gift == null) { return; } if (gifts.Any(o => o.VNum == gift.VNum)) { gifts.First(o => o.Amount == gift.Amount).Amount += gift.Amount; } else { gifts.Add(gift); } } var str = string.Empty; var list = new List<MloPmgSubPacket>(); for (var i = 0; i < 9; i++) { if (gifts.Count > i) { var item = itemProvider.Create(gifts.ElementAt(i).VNum, gifts.ElementAt(i).Amount); var inv = _clientSession!.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(item, _clientSession.Character.CharacterId)); if (inv != null && inv.Count != 0) { await _clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = _clientSession.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.ReceivedThisItem, ArgumentType = 2, Game18NArguments = { item.Item.VNum.ToString(), amount } }); } list.Add(new MloPmgSubPacket { BoxVNum = gifts.ElementAt(i).VNum, BoxAmount = gifts.ElementAt(i).Amount }); } else { list.Add(new MloPmgSubPacket { BoxVNum = 0, BoxAmount = 0 }); } } await ShowGiftsAsync(list.ToArray()); } private Task ShowGiftsAsync() { return ShowGiftsAsync(new[] { new MloPmgSubPacket {BoxVNum = 0, BoxAmount = 0}, new MloPmgSubPacket {BoxVNum = 0, BoxAmount = 0}, new MloPmgSubPacket {BoxVNum = 0, BoxAmount = 0}, new MloPmgSubPacket {BoxVNum = 0, BoxAmount = 0}, new MloPmgSubPacket {BoxVNum = 0, BoxAmount = 0}, new MloPmgSubPacket {BoxVNum = 0, BoxAmount = 0}, new MloPmgSubPacket {BoxVNum = 0, BoxAmount = 0}, new MloPmgSubPacket {BoxVNum = 0, BoxAmount = 0}, new MloPmgSubPacket {BoxVNum = 0, BoxAmount = 0} }); } private Task ShowGiftsAsync(MloPmgSubPacket[] array) { return _clientSession!.SendPacketAsync(new MloPmgPacket { MinigameVNum = _minigamePacket!.MinigameVNum, MinilandPoint = _miniland!.MinilandPoint, LowDurability = _minilandObject!.InventoryItemInstance!.ItemInstance.DurabilityPoint < 1000, IsFull = false, MloPmgSubPackets = new[] { new MloPmgSubPacket {BoxVNum = 392, BoxAmount = _minilandObject.Level1BoxAmount}, new MloPmgSubPacket {BoxVNum = 393, BoxAmount = _minilandObject.Level2BoxAmount}, new MloPmgSubPacket {BoxVNum = 394, BoxAmount = _minilandObject.Level3BoxAmount}, new MloPmgSubPacket {BoxVNum = 395, BoxAmount = _minilandObject.Level4BoxAmount}, new MloPmgSubPacket {BoxVNum = 396, BoxAmount = _minilandObject.Level5BoxAmount} }.Concat(array).ToArray() }); } private async Task RefillAsync() { if (_minigamePacket?.Point == null) { return; } if (_clientSession?.Character.Gold > _minigamePacket.Point) { _clientSession.Character.Gold -= (int)_minigamePacket.Point; await _clientSession.SendPacketAsync(_clientSession.Character.GenerateGold()); _minilandObject!.InventoryItemInstance!.ItemInstance.DurabilityPoint += (int)(_minigamePacket.Point / 100); await _clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.ToppedUpPoints, ArgumentType = 4, Game18NArguments = { (int)_minigamePacket.Point / 100 } }); await ShowMinilandManagmentAsync(); } } private async Task SelectGiftAsync() { if (_miniland!.MinilandPoint < 100) { return; } var obj = MinilandHelper.Instance.GetMinilandGift(_minigamePacket!.MinigameVNum, _minigamePacket.Point ?? 0); if (obj == null) { return; } await _clientSession!.SendPacketAsync(new MloRwPacket { Amount = obj.Amount, VNum = obj.VNum }); // _clientSession.SendPacket(new MlptPacket {_miniland.MinilandPoint, 100}); var inv = _clientSession.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create( itemProvider.Create(obj.VNum, obj.Amount), _clientSession.Character.CharacterId)); _miniland.MinilandPoint -= 100; if (inv == null || inv.Count == 0) { //todo add gifts //_clientSession.Character.SendGift(_clientSession.Character.CharacterId, obj.VNum, obj.Amount, 0, 0, false); } if (_miniland.MapInstanceId != _clientSession.Character.MapInstanceId) { switch (_minigamePacket.Point) { case 0: _minilandObject!.Level1BoxAmount++; break; case 1: _minilandObject!.Level2BoxAmount++; break; case 2: _minilandObject!.Level3BoxAmount++; break; case 3: _minilandObject!.Level4BoxAmount++; break; case 4: _minilandObject!.Level5BoxAmount++; break; } } } private async Task ShowBoxLevelsAsync(byte game) { _miniland!.CurrentMinigame = 0; await _clientSession!.Character.MapInstance.SendPacketAsync(new GuriPacket { Type = GuriPacketType.Dance, Value = 1, EntityId = _clientSession.Character.CharacterId }); short level = -1; for (short i = 0; i < MinilandHelper.Instance.MinilandMaxPoint[game].Count(); i++) { if (_minigamePacket!.Point > MinilandHelper.Instance.MinilandMaxPoint[game][i]) { level = i; } else { break; } } await _clientSession.SendPacketAsync(level != -1 ? new MloLvPacket { Level = level } : (IPacket)new MinigamePacket { Type = 3, Id = game, MinigameVNum = _minigamePacket!.MinigameVNum, Unknown = 0, Point = 0 }); } private Task BroadcastEffectAsync() { _miniland!.CurrentMinigame = 0; return _clientSession!.Character.MapInstance.SendPacketAsync(new GuriPacket { Type = GuriPacketType.Dance, Value = 1, EntityId = _clientSession.Character.CharacterId }); } private async Task PlayAsync(byte game) { if (_minilandObject!.InventoryItemInstance!.ItemInstance.DurabilityPoint <= 0) { await _clientSession!.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = _clientSession.Character.CharacterId, Type = SayColorType.Red, Message = Game18NConstString.NeedToRestoreDurability }); return; } if (_miniland == null || _miniland.MinilandPoint <= 0) { await _clientSession!.SendPacketAsync(new QnaiPacket { YesPacket = new MinigamePacket { Type = 1, Id = 7, MinigameVNum = 3125, Point = 1, Unknown = 1 }, Question = Game18NConstString.NotEnoughProductionPointsAskStart }); return; } await _clientSession!.Character.MapInstance.SendPacketAsync(new GuriPacket { Type = GuriPacketType.Dance, Value = 1, EntityId = _clientSession.Character.CharacterId }); _miniland.CurrentMinigame = (short)(game == 0 ? 5102 : game == 1 ? 5103 : game == 2 ? 5105 : game == 3 ? 5104 : game == 4 ? 5113 : 5112); await _clientSession.SendPacketAsync(new MloStPacket { Game = game }); } } } ================================================ FILE: src/NosCore.PacketHandlers/Miniland/MinilandObjects/UseobjPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Miniland; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.WarehouseHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.Services.WarehouseService; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Miniland; using NosCore.Packets.ServerPackets.Warehouse; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using UseObjPacket = NosCore.Packets.ClientPackets.Miniland.UseObjPacket; namespace NosCore.PacketHandlers.Miniland.MinilandObjects { public class UseobjPacketHandler(IMinilandService minilandProvider, IWarehouseHub warehouseHttpClient, IDao<IItemInstanceDto?, Guid> itemInstanceDao, IItemGenerationService itemProvider) : PacketHandler<UseObjPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(UseObjPacket useobjPacket, ClientSession clientSession) { var miniland = minilandProvider.GetMiniland(clientSession.Character.CharacterId); var minilandObject = clientSession.Character.MapInstance.MapDesignObjects.Values.FirstOrDefault(s => s.Slot == useobjPacket.Slot); if (minilandObject == null) { return; } if (!minilandObject.InventoryItemInstance!.ItemInstance.Item.IsWarehouse) { var game = (byte)(minilandObject.InventoryItemInstance.ItemInstance.Item.EquipmentSlot == EquipmentType.MainWeapon ? (4 + minilandObject.InventoryItemInstance.ItemInstance.ItemVNum) % 10 : (int)minilandObject.InventoryItemInstance.ItemInstance.Item.EquipmentSlot / 3); var full = false; await clientSession.SendPacketAsync(new MloInfoPacket { IsOwner = miniland.MapInstanceId == clientSession.Character.MapInstanceId, ObjectVNum = minilandObject.InventoryItemInstance.ItemInstance.ItemVNum, Slot = (byte)useobjPacket.Slot, MinilandPoints = miniland.MinilandPoint, LawDurability = minilandObject.DurabilityPoint < 1000, IsFull = full, MinigamePoints = new MloInfoPacketSubPacket[] { new() {MinimumPoints = 0, MaximumPoints = MinilandHelper.Instance.MinilandMaxPoint[game][0]}, new() { MinimumPoints = MinilandHelper.Instance.MinilandMaxPoint[game][0] + 1, MaximumPoints = MinilandHelper.Instance.MinilandMaxPoint[game][1] }, new() { MinimumPoints = MinilandHelper.Instance.MinilandMaxPoint[game][1] + 1, MaximumPoints = MinilandHelper.Instance.MinilandMaxPoint[game][2] }, new() { MinimumPoints = MinilandHelper.Instance.MinilandMaxPoint[game][2] + 1, MaximumPoints = MinilandHelper.Instance.MinilandMaxPoint[game][3] }, new() { MinimumPoints = MinilandHelper.Instance.MinilandMaxPoint[game][3] + 1, MaximumPoints = MinilandHelper.Instance.MinilandMaxPoint[game][4] }, new() { MinimumPoints = MinilandHelper.Instance.MinilandMaxPoint[game][4] + 1, MaximumPoints = MinilandHelper.Instance.MinilandMaxPoint[game][5] } } }); } else { var links = await warehouseHttpClient.GetWarehouseItems(null, clientSession.Character.CharacterId, WarehouseType.Warehouse, null); var warehouseItems = new List<WarehouseItem>(); foreach (var warehouselink in links) { var warehouseItem = warehouselink.Warehouse!.Adapt<WarehouseItem>(); var itemInstance = await itemInstanceDao.FirstOrDefaultAsync(s => s!.Id == warehouselink.ItemInstance!.Id); warehouseItem.ItemInstance = itemProvider.Convert(itemInstance!); warehouseItems.Add(warehouseItem); } await clientSession.SendPacketAsync(new StashAllPacket { WarehouseSize = (byte)minilandObject.InventoryItemInstance.ItemInstance.Item.MinilandObjectPoint, IvnSubPackets = warehouseItems.Select(invItem => invItem.ItemInstance.GenerateIvnSubPacket((PocketType)invItem.ItemInstance!.Item.Type, invItem.Slot)).ToList() }); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Miniland/MlobjPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MinilandService; using NosCore.Packets.ClientPackets.Miniland; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Miniland; using NosCore.Packets.ServerPackets.UI; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Miniland { public class MlEditPacketHandler(IMinilandService minilandProvider) : PacketHandler<MLEditPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(MLEditPacket mlEditPacket, ClientSession clientSession) { var miniland = minilandProvider.GetMiniland(clientSession.Character.CharacterId); switch (mlEditPacket.Type) { case 1: await clientSession.SendPacketAsync(new MlintroPacket { Intro = mlEditPacket.MinilandInfo!.Replace(' ', '^') }); miniland.MinilandMessage = mlEditPacket.MinilandInfo; await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.MinilandChanged }); break; case 2: switch (mlEditPacket.Parameter) { case MinilandState.Private: await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.MinilandPrivate }); await minilandProvider.SetStateAsync(clientSession.Character.CharacterId, MinilandState.Private); break; case MinilandState.Lock: await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.MinilandLocked }); await minilandProvider.SetStateAsync(clientSession.Character.CharacterId, MinilandState.Lock); break; case MinilandState.Open: await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.MinilandPublic }); await minilandProvider.SetStateAsync(clientSession.Character.CharacterId, MinilandState.Open); break; default: return; } break; } } } } ================================================ FILE: src/NosCore.PacketHandlers/Miniland/RmvobjPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MinilandService; using NosCore.Packets.ClientPackets.Miniland; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Miniland; using NosCore.Packets.ServerPackets.UI; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Miniland { public class RmvobjPacketHandler(IMinilandService minilandProvider) : PacketHandler<RmvobjPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(RmvobjPacket rmvobjPacket, ClientSession clientSession) { var minilandobject = clientSession.Character.InventoryService.LoadBySlotAndType(rmvobjPacket.Slot, NoscorePocketType.Miniland); if (minilandobject == null) { return; } if (minilandProvider.GetMiniland(clientSession.Character.CharacterId).State != MinilandState.Lock) { await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.RemoveOnlyLockMode }); return; } if (!clientSession.Character.MapInstance.MapDesignObjects.ContainsKey(minilandobject.Id)) { return; } var minilandObject = clientSession.Character.MapInstance.MapDesignObjects[minilandobject.Id]; clientSession.Character.MapInstance.MapDesignObjects.TryRemove(minilandobject.Id, out _); await clientSession.SendPacketAsync(minilandObject.GenerateEffect(true)); await clientSession.SendPacketAsync(new MinilandPointPacket { MinilandPoint = minilandobject.ItemInstance.Item.MinilandObjectPoint, Unknown = 100 }); await clientSession.SendPacketAsync(minilandObject.GenerateMapDesignObject(true)); } } } ================================================ FILE: src/NosCore.PacketHandlers/Movement/ClientDirPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Movement; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Movement { public class ClientDirPacketHandler(ILogger<ClientDirPacketHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : PacketHandler<ClientDirPacket>, IWorldPacketHandler { public override Task ExecuteAsync(ClientDirPacket dirpacket, ClientSession session) { IAliveEntity entity; switch (dirpacket.VisualType) { case VisualType.Player: entity = session.Character; break; default: logger.LogError(logLanguage[LogLanguageKey.VISUALTYPE_UNKNOWN], dirpacket.VisualType); return Task.CompletedTask; } return entity.ChangeDirAsync(dirpacket.Direction); } } } ================================================ FILE: src/NosCore.PacketHandlers/Movement/PreqPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Data.Enumerations.Map; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Map; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MapChangeService; using NosCore.GameObject.Services.MapInstanceAccessService; using NosCore.GameObject.Services.MinilandService; using NosCore.Packets.ClientPackets.Movement; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.PathFinder.Interfaces; using NosCore.Shared.Enumerations; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Movement { public class PreqPacketHandler(IMapInstanceAccessorService mapInstanceAccessorService, IMinilandService minilandProvider, IHeuristic distanceCalculator, IClock clock, IMapChangeService mapChangeService) : PacketHandler<PreqPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(PreqPacket _, ClientSession session) { if (((clock.GetCurrentInstant() - session.Character.LastPortal).TotalSeconds < 4) || (session.Character.LastPortal > session.Character.LastMove)) { await session.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = session.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.WillMoveShortly }); return; } var portals = new List<Portal>(); portals.AddRange(session.Character.MapInstance.Portals); portals.AddRange(minilandProvider .GetMinilandPortals(session.Character.CharacterId) .Where(s => s.SourceMapInstanceId == session.Character.MapInstanceId)); var portal = portals.Find(port => distanceCalculator.GetDistance((session.Character.PositionX, session.Character.PositionY), (port.SourceX, port.SourceY)) <= 2); if (portal == null) { return; } if (portal.DestinationMapInstanceId == default) { return; } if (!IsPortalAccessible(portal.Type)) { return; } session.Character.LastPortal = clock.GetCurrentInstant(); if ((mapInstanceAccessorService.GetMapInstance(portal.SourceMapInstanceId)!.MapInstanceType != MapInstanceType.BaseMapInstance) && (mapInstanceAccessorService.GetMapInstance(portal.DestinationMapInstanceId)!.MapInstanceType == MapInstanceType.BaseMapInstance)) { await mapChangeService.ChangeMapAsync(session, session.Character.MapId, session.Character.MapX, session.Character.MapY); } else { await mapChangeService.ChangeMapInstanceAsync(session, portal.DestinationMapInstanceId, portal.DestinationX, portal.DestinationY); } } private static bool IsPortalAccessible(PortalType type) => type switch { PortalType.MapPortal => true, PortalType.TsNormal => true, PortalType.Open => true, PortalType.Miniland => true, PortalType.TsEnd => true, PortalType.Exit => true, PortalType.Effect => true, PortalType.TimeSpace => true, PortalType.ShopTeleport => true, _ => false, }; } } ================================================ FILE: src/NosCore.PacketHandlers/Movement/SitPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.ClientPackets.Movement; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Movement { public class SitPacketHandler(ILogger<SitPacketHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage, ISessionRegistry sessionRegistry) : PacketHandler<SitPacket>, IWorldPacketHandler { public override Task ExecuteAsync(SitPacket sitpacket, ClientSession clientSession) { return Task.WhenAll(sitpacket.Users!.Select(u => { IAliveEntity entity; switch (u!.VisualType) { case VisualType.Player: if (!sessionRegistry.TryGetCharacter(s => s.VisualId == u.VisualId, out var player)) { return Task.CompletedTask; } if (player.VisualId != clientSession.Character.VisualId) { logger.LogError( logLanguage[LogLanguageKey.DIRECT_ACCESS_OBJECT_DETECTED], clientSession.Character, sitpacket); return Task.CompletedTask; } entity = player; break; default: logger.LogError(logLanguage[LogLanguageKey.VISUALTYPE_UNKNOWN], u.VisualType); return Task.CompletedTask; } return entity.RestAsync(); })); } } } ================================================ FILE: src/NosCore.PacketHandlers/Movement/WalkPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NodaTime; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Map; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using NosCore.Networking.SessionGroup.ChannelMatcher; using NosCore.Packets.ClientPackets.Movement; using NosCore.PathFinder.Interfaces; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Threading.Tasks; using Wolverine; namespace NosCore.PacketHandlers.Movement { public class WalkPacketHandler(IHeuristic distanceCalculator, ILogger<WalkPacketHandler> logger, IClock clock, ILogLanguageLocalizer<LogLanguageKey> logLanguage, IMessageBus messageBus) : PacketHandler<WalkPacket>, IWorldPacketHandler { // this is used to avoid network issue to be counted as speed hack. private readonly double _speedDiffAllowed = 1D / 3; public override async Task ExecuteAsync(WalkPacket walkPacket, ClientSession session) { var distance = (int)distanceCalculator.GetDistance((session.Character.PositionX, session.Character.PositionY), (walkPacket.XCoordinate, walkPacket.YCoordinate)) - 1; if (session.Character.Speed < walkPacket.Speed) { logger.LogWarning( "walk dropped: server speed {ServerSpeed} < packet speed {PacketSpeed} for character {VisualId} from ({FromX},{FromY}) to ({ToX},{ToY})", session.Character.Speed, walkPacket.Speed, session.Character.VisualId, session.Character.PositionX, session.Character.PositionY, walkPacket.XCoordinate, walkPacket.YCoordinate); return; } if (distance > session.Character.Speed / 2) { logger.LogWarning( "walk dropped: distance {Distance} > speed/2 ({HalfSpeed}) for character {VisualId} from ({FromX},{FromY}) to ({ToX},{ToY}) packetSpeed={PacketSpeed}", distance, session.Character.Speed / 2, session.Character.VisualId, session.Character.PositionX, session.Character.PositionY, walkPacket.XCoordinate, walkPacket.YCoordinate, walkPacket.Speed); return; } if ((walkPacket.XCoordinate + walkPacket.YCoordinate) % 3 % 2 != walkPacket.CheckSum) { await session.DisconnectAsync(); logger.LogError(logLanguage[LogLanguageKey.WALK_CHECKSUM_INVALID], session.Character.VisualId); return; } var travelTime = 2500 / walkPacket.Speed * distance; if (travelTime > 1000 * (_speedDiffAllowed + 1)) { await session.DisconnectAsync(); logger.LogError(logLanguage[LogLanguageKey.SPEED_INVALID], session.Character.VisualId); return; } if (!session.Character.MapInstance.Map.IsWalkable(walkPacket.XCoordinate, walkPacket.YCoordinate)) { logger.LogWarning( "walk dropped: destination not walkable for character {VisualId} from ({FromX},{FromY}) to ({ToX},{ToY})", session.Character.VisualId, session.Character.PositionX, session.Character.PositionY, walkPacket.XCoordinate, walkPacket.YCoordinate); return; } // Write the new position into the ECS BEFORE broadcasting `mv`: GenerateMove // reads PositionX/Y, and monsters / other clients resolve target coords off // the ECS as well. Broadcasting first left every observer at the stale spawn // coords and made monsters pathfind back to the saved login position. session.Character.PositionX = walkPacket.XCoordinate; session.Character.PositionY = walkPacket.YCoordinate; if (session.Character.MapInstance.MapInstanceType == MapInstanceType.BaseMapInstance) { session.Character.MapX = walkPacket.XCoordinate; session.Character.MapY = walkPacket.YCoordinate; } session.Character.LastMove = clock.GetCurrentInstant(); logger.LogInformation( "walk accepted: character {VisualId} wrote ({WrittenX},{WrittenY}); ECS now reads PositionX/Y=({StoredX},{StoredY}) MapX/Y=({StoredMapX},{StoredMapY})", session.Character.VisualId, walkPacket.XCoordinate, walkPacket.YCoordinate, session.Character.PositionX, session.Character.PositionY, session.Character.MapX, session.Character.MapY); await session.Character.MapInstance.SendPacketAsync(session.Character.GenerateMove(), new EveryoneBut(session.Channel!.Id)); await messageBus.PublishAsync(new CharacterMovedEvent( session.Character, session.Character.MapX, session.Character.MapY, session.Character.MapId)); } } } ================================================ FILE: src/NosCore.PacketHandlers/NoAction/BpClosePacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Player; using System.Threading.Tasks; namespace NosCore.PacketHandlers.NoAction { public class BpClosePacketHandler : PacketHandler<BpClosePacket>, IWorldPacketHandler { public override Task ExecuteAsync(BpClosePacket packet, ClientSession clientSession) { return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/NoAction/CClosePacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Shops; using System.Threading.Tasks; namespace NosCore.PacketHandlers.NoAction { public class CClosePackettHandler : PacketHandler<CClosePacket>, IWorldPacketHandler { public override Task ExecuteAsync(CClosePacket packet, ClientSession clientSession) { return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/NoAction/LbsPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets; using System.Threading.Tasks; namespace NosCore.PacketHandlers.NoAction { public class LbsPacketHandler : PacketHandler<LbsPacket>, IWorldPacketHandler { public override Task ExecuteAsync(LbsPacket packet, ClientSession clientSession) { return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/NoAction/SnapPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Player; using System.Threading.Tasks; namespace NosCore.PacketHandlers.NoAction { public class SnapPacketHandler : PacketHandler<SnapPacket>, IWorldPacketHandler { public override Task ExecuteAsync(SnapPacket packet, ClientSession clientSession) { return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/NoAction/SortOpenPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Inventory; using System.Threading.Tasks; namespace NosCore.PacketHandlers.NoAction { public class SortOpenPacketHandler : PacketHandler<SortOpenPacket>, IWorldPacketHandler { public override Task ExecuteAsync(SortOpenPacket packet, ClientSession clientSession) { return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/NoAction/ZeroPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Infrastructure; using System.Threading.Tasks; namespace NosCore.PacketHandlers.NoAction { public class ZeroPacketHandler : PacketHandler<ZeroPacket>, IWorldPacketHandler { public override Task ExecuteAsync(ZeroPacket packet, ClientSession clientSession) { return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/NosCore.PacketHandlers.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net10.0</TargetFramework> <TieredCompilation>true</TieredCompilation> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <ItemGroup> <PackageReference Include="JetBrains.Annotations" /> </ItemGroup> <ItemGroup> <PackageReference Include="NosCore.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> <ItemGroup> <ProjectReference Include="..\NosCore.GameObject\NosCore.GameObject.csproj" /> </ItemGroup> </Project> ================================================ FILE: src/NosCore.PacketHandlers/Parcel/PclPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.MailHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.Packets.ClientPackets.Parcel; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Parcel; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using System; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Parcel { public class PclPacketHandler(IMailHub mailHttpClient, IItemGenerationService itemProvider, IDao<IItemInstanceDto?, Guid> itemInstanceDao) : PacketHandler<PclPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(PclPacket getGiftPacket, ClientSession clientSession) { var isCopy = getGiftPacket.Type == 2; var mails = await mailHttpClient.GetMails(getGiftPacket.GiftId, clientSession.Character.VisualId, isCopy); var mail = mails.FirstOrDefault(); if (mail == null) { return; } if ((getGiftPacket.Type == 4) && (mail.ItemInstance != null)) { var itemInstance = await itemInstanceDao.FirstOrDefaultAsync(s => s!.Id == mail.ItemInstance.Id); var item = itemProvider.Convert(itemInstance!); item.Id = Guid.NewGuid(); var newInv = clientSession.Character.InventoryService .AddItemToPocket(InventoryItemInstance.Create(item, clientSession.Character.CharacterId))? .FirstOrDefault(); if (newInv != null) { await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Red, Message = Game18NConstString.ParcelReceived, ArgumentType = 2, Game18NArguments = { newInv.ItemInstance.Item.VNum.ToString(), newInv.ItemInstance.Amount } }); await clientSession.SendPacketAsync( new ParcelPacket { Type = 2, Unknown = 1, Id = (short)getGiftPacket.GiftId }); await mailHttpClient.DeleteMailAsync(getGiftPacket.GiftId, clientSession.Character.VisualId, isCopy); } else { await clientSession.SendPacketAsync(new ParcelPacket { Type = 5, Unknown = 1, Id = 0 }); await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.NotEnoughSpace }); } } else if (getGiftPacket.Type == 5) { await clientSession.SendPacketAsync(new ParcelPacket { Type = 7, Unknown = 1, Id = (short)getGiftPacket.GiftId }); await mailHttpClient.DeleteMailAsync(getGiftPacket.GiftId, clientSession.Character.VisualId, isCopy); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Parcel/PstClientPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Json.More; using Json.Patch; using Json.Pointer; using NodaTime; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.MailHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MailService; using NosCore.Packets.ClientPackets.Parcel; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Shared.Enumerations; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Parcel { public class PstClientPacketHandler(IMailHub mailHttpClient, IDao<CharacterDto, long> characterDao, IClock clock) : PacketHandler<PstClientPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(PstClientPacket pstClientPacket, ClientSession clientSession) { var isCopy = pstClientPacket.Type == 2; var mails = await mailHttpClient.GetMails(pstClientPacket.Id, clientSession.Character.VisualId, isCopy); var mail = mails.FirstOrDefault(); switch (pstClientPacket.ActionType) { case 3: if (mail == null) { return; } var patch = new JsonPatch(PatchOperation.Replace(JsonPointer.Parse("/IsOpened"), true.AsJsonElement().AsNode())); await mailHttpClient.ViewMailAsync(mail.MailDto.MailId, patch); await clientSession.SendPacketAsync(mail.GeneratePostMessage(pstClientPacket.Type)); break; case 2: if (mail == null) { return; } await mailHttpClient.DeleteMailAsync(pstClientPacket.Id, clientSession.Character.VisualId, isCopy); await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Red, Message = Game18NConstString.NoteDeleted }); break; case 1: if (string.IsNullOrEmpty(pstClientPacket.Text) || string.IsNullOrEmpty(pstClientPacket.Title)) { return; } var serverId = clientSession.Character.ServerId; var dest = await characterDao.FirstOrDefaultAsync(s => s.Name == pstClientPacket.ReceiverName && s.ServerId == serverId); if (dest != null) { await mailHttpClient.SendMailAsync(GiftHelper.GenerateMailRequest(clock, clientSession.Character, dest.CharacterId, null, null, null, null, null, false, pstClientPacket.Title, pstClientPacket.Text)); await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Red, Message = Game18NConstString.NoteSent }); } else { await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.CanNotFindPlayer }); } break; default: return; } } } } ================================================ FILE: src/NosCore.PacketHandlers/Quest/QTPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.QuestService; using NosCore.Packets.ClientPackets.Quest; using NosCore.Packets.Enumerations; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Quest { public class QtPacketHandler(IQuestService questProvider) : PacketHandler<QtPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(QtPacket qtPacket, ClientSession session) { switch (qtPacket.Type) { case QuestActionType.Validate: case QuestActionType.Achieve: if (session.Character.Script == null) { return; } await questProvider.RunScriptAsync(session.Character, new ScriptClientPacket { Type = qtPacket.Type, FirstArgument = session.Character.Script.Argument1, SecondArgument = session.Character.Script.ScriptId, ThirdArgument = session.Character.Script.ScriptStepId, }); break; case QuestActionType.GiveUp: var charQuest = session.Character.Quests.FirstOrDefault(q => q.Value.QuestId == qtPacket.Data); if (charQuest.Equals(new KeyValuePair<Guid, CharacterQuest>())) { return; } session.Character.Quests.TryRemove(charQuest.Key, out var questToRemove); if (questToRemove != null) { await session.SendPacketAsync(questToRemove.GenerateQstiPacket(false)); } break; } } } } ================================================ FILE: src/NosCore.PacketHandlers/Quest/ScriptPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.QuestService; using NosCore.Packets.ClientPackets.Quest; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Quest { public class ScriptPacketHandler(IQuestService questProvider) : PacketHandler<ScriptClientPacket>, IWorldPacketHandler { public override Task ExecuteAsync(ScriptClientPacket scriptPacket, ClientSession session) { return questProvider.RunScriptAsync(session.Character, scriptPacket); } } } ================================================ FILE: src/NosCore.PacketHandlers/Shops/BuyPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Core.I18N; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.Packets.ClientPackets.Shops; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Shops { public class BuyPacketHandler(ILogger<BuyPacketHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage, ISessionRegistry sessionRegistry, IOptions<WorldConfiguration> worldConfiguration, IItemGenerationService itemProvider, IGameLanguageLocalizer gameLanguageLocalizer) : PacketHandler<BuyPacket>, IWorldPacketHandler { public override Task ExecuteAsync(BuyPacket buyPacket, ClientSession clientSession) { IAliveEntity? aliveEntity; switch (buyPacket.VisualType) { case VisualType.Player: aliveEntity = sessionRegistry.TryGetCharacter(s => s.VisualId == buyPacket.VisualId, out var buyer) ? buyer : null; break; case VisualType.Npc: aliveEntity = clientSession.Character.MapInstance.FindNpc(s => s.VisualId == buyPacket.VisualId); break; default: logger.LogError(logLanguage[LogLanguageKey.VISUALTYPE_UNKNOWN], buyPacket.VisualType); return Task.CompletedTask; } if (aliveEntity != null) { return clientSession.Character.BuyAsync(aliveEntity.Shop!, buyPacket.Slot, buyPacket.Amount, worldConfiguration, itemProvider, gameLanguageLocalizer); } logger.LogError(logLanguage[LogLanguageKey.VISUALENTITY_DOES_NOT_EXIST]); return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/Shops/MShopPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Group; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ShopService; using NosCore.Networking; using NosCore.Networking.SessionGroup.ChannelMatcher; using NosCore.Packets.ClientPackets.Shops; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Shop; using NosCore.Packets.ServerPackets.UI; using NosCore.PathFinder.Interfaces; using NosCore.Shared.Enumerations; using System; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Shops { public class MShopPacketHandler(IHeuristic distanceCalculator) : PacketHandler<MShopPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(MShopPacket mShopPacket, ClientSession clientSession) { var portal = clientSession.Character.MapInstance.Portals.Find(port => distanceCalculator.GetDistance((clientSession.Character.PositionX, clientSession.Character.PositionY), (port.SourceX, port.SourceY)) <= 6); if (portal != null) { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.OpenShopAwayPortal }); return; } if (clientSession.Character.Group.Type != GroupType.Group) { await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Red, Message = Game18NConstString.TeammateCanNotOpenShop }); return; } if (!clientSession.Character.MapInstance.ShopAllowed) { await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.UseCommercialMapToShop }); await clientSession.SendPacketAsync(new ShopEndPacket { Type = ShopEndPacketType.PersonalShop }); return; } switch (mShopPacket.Type) { case CreateShopPacketType.Open: clientSession.Character.Shop = new Shop(); sbyte shopSlot = -1; foreach (var item in mShopPacket.ItemList!) { shopSlot++; if (item!.Amount == 0) { continue; } var inv = clientSession.Character.InventoryService.LoadBySlotAndType(item.Slot, (NoscorePocketType)item.Type); if (inv == null) { //log continue; } if (inv.ItemInstance.Amount < item.Amount || item.Amount <= 0) { //todo log return; } if (item.Price < 0) { return; } if (!inv.ItemInstance.Item.IsTradable || (inv.ItemInstance.BoundCharacterId != null)) { await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Red, Message = Game18NConstString.SomeItemsCannotBeTraded }); await clientSession.SendPacketAsync(new ShopEndPacket { Type = ShopEndPacketType.PersonalShop }); clientSession.Character.Shop = null; return; } clientSession.Character.Shop.ShopItems.TryAdd(shopSlot, new ShopItem { Amount = item.Amount, Price = item.Price, Slot = (byte)shopSlot, Type = 0, ItemInstance = inv.ItemInstance }); } if (clientSession.Character.Shop.ShopItems.IsEmpty) { await clientSession.SendPacketAsync(new SayiPacket { VisualType = VisualType.Player, VisualId = clientSession.Character.CharacterId, Type = SayColorType.Yellow, Message = Game18NConstString.NoItemToSell }); await clientSession.SendPacketAsync(new ShopEndPacket { Type = ShopEndPacketType.PersonalShop }); clientSession.Character.Shop = null; return; } clientSession.Character.Shop.OwnerCharacter = clientSession.Character; clientSession.Character.Shop.MenuType = 3; clientSession.Character.Shop.ShopId = 501; clientSession.Character.Shop.Size = 60; for (var i = 0; i < clientSession.Character.Shop.Name.Keys.Count; i++) { var key = clientSession.Character.Shop.Name.Keys.ElementAt(i); clientSession.Character.Shop.Name[key] = string.IsNullOrWhiteSpace(mShopPacket.Name) ? ((byte)Game18NConstString.PrivateShop).ToString() : mShopPacket.Name.Substring(0, Math.Min(mShopPacket.Name.Length, 20)); } await clientSession.Character.MapInstance.SendPacketAsync(clientSession.Character.GenerateShop(clientSession.Character.AccountLanguage)); await clientSession.SendPacketAsync(new InfoiPacket { Message = Game18NConstString.ShopOpened }); clientSession.Character.Requests[typeof(NpcDialogRequestSubject)].Subscribe(data => data.ClientSession.SendPacketAsync( clientSession.Character.GenerateNpcReq(clientSession.Character.Shop.ShopId))); await clientSession.Character.MapInstance.SendPacketAsync(clientSession.Character.GeneratePFlag(), new EveryoneBut(clientSession.Channel!.Id)); clientSession.Character.IsSitting = true; await clientSession.SendPacketAsync(clientSession.Character.GenerateCond()); await clientSession.Character.MapInstance.SendPacketAsync(clientSession.Character.GenerateRest()); break; case CreateShopPacketType.Close: await clientSession.Character.CloseShopAsync(); break; case CreateShopPacketType.Create: await clientSession.SendPacketAsync(new IshopPacket()); break; default: //todo log return; } } } } ================================================ FILE: src/NosCore.PacketHandlers/Shops/NrunPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Messaging.Handlers.Nrun; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; namespace NosCore.PacketHandlers.Shops { public class NrunPacketHandler( ILogger<NrunPacketHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage, ISessionRegistry sessionRegistry, IEnumerable<INrunEventHandler> handlers) : PacketHandler<NrunPacket>, IWorldPacketHandler { public override Task ExecuteAsync(NrunPacket packet, ClientSession session) { var handler = handlers.FirstOrDefault(h => h.Runner == packet.Runner); if (handler is null) { logger.LogDebug("Unhandled n_run runner {Runner}", packet.Runner); return Task.CompletedTask; } IAliveEntity? target; switch (packet.VisualType) { case VisualType.Player: target = sessionRegistry.TryGetCharacter(s => s.VisualId == packet.VisualId, out var runner) ? runner : null; break; case VisualType.Npc: target = session.Character.MapInstance.FindNpc(s => s.VisualId == packet.VisualId); break; case null: target = null; break; default: logger.LogError(logLanguage[LogLanguageKey.VISUALTYPE_UNKNOWN], packet.Type); return Task.CompletedTask; } return handler.HandleAsync(session, target, packet); } } } ================================================ FILE: src/NosCore.PacketHandlers/Shops/RequestNpcPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Shops { public class RequestNpcPacketHandler(ILogger<RequestNpcPacketHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage, ISessionRegistry sessionRegistry) : PacketHandler<RequestNpcPacket>, IWorldPacketHandler { public override Task ExecuteAsync(RequestNpcPacket requestNpcPacket, ClientSession clientSession) { switch (requestNpcPacket.Type) { case VisualType.Player: if (sessionRegistry.TryGetCharacter(s => s.VisualId == requestNpcPacket.TargetId, out var player)) { player.Requests[typeof(NpcDialogRequestSubject)].OnNext(new RequestData(clientSession)); return Task.CompletedTask; } break; case VisualType.Npc: var npc = clientSession.Character.MapInstance.FindNpc(s => s.VisualId == requestNpcPacket.TargetId); if (npc.HasValue) { npc.Value.Requests[typeof(NpcDialogRequestSubject)].OnNext(new RequestData(clientSession)); return Task.CompletedTask; } break; default: logger.LogError(logLanguage[LogLanguageKey.VISUALTYPE_UNKNOWN], requestNpcPacket.Type); return Task.CompletedTask; } logger.LogError(logLanguage[LogLanguageKey.VISUALENTITY_DOES_NOT_EXIST]); return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/Shops/SellPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Shops; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Shop; using NosCore.Packets.ServerPackets.UI; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Shops { public class SellPacketHandler(IOptions<WorldConfiguration> worldConfiguration) : PacketHandler<SellPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(SellPacket sellPacket, ClientSession clientSession) { var type = (NoscorePocketType)sellPacket.Data; if (sellPacket.Amount <= 0) { return; } var inv = clientSession.Character.InventoryService.LoadBySlotAndType(sellPacket.Slot, type); if ((inv == null) || (sellPacket.Amount > inv.ItemInstance.Amount)) { //TODO log return; } if (!inv.ItemInstance.Item.IsSoldable) { await clientSession.SendPacketAsync(new SMemoiPacket { Type = SMemoType.FailNpc, Message = Game18NConstString.ItemCanNotBeSold }); return; } var price = inv.ItemInstance.Item.ItemType == ItemType.Sell ? inv.ItemInstance.Item.Price : inv.ItemInstance.Item.Price / 20; if (price < 0 || price > long.MaxValue / sellPacket.Amount) { return; } var totalPrice = price * sellPacket.Amount; if (clientSession.Character.Gold + totalPrice > worldConfiguration.Value.MaxGoldAmount) { await clientSession.SendPacketAsync(new MsgiPacket { Type = MessageType.Default, Message = Game18NConstString.MaxGoldReached }); return; } clientSession.Character.Gold += totalPrice; await clientSession.SendPacketAsync(new SMemoiPacket { Type = SMemoType.SuccessPlayer, Message = Game18NConstString.TradeSuccessfull }); clientSession.Character.InventoryService.RemoveItemAmountFromInventory(sellPacket.Amount, inv.ItemInstanceId); await clientSession.SendPacketAsync(clientSession.Character.GenerateGold()); await clientSession.SendPacketAsync(inv.GeneratePocketChange((PocketType)inv.Type, inv.Slot)); } } } ================================================ FILE: src/NosCore.PacketHandlers/Shops/ShoppingPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Algorithm.DignityService; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.Packets.ClientPackets.Shops; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Shops { public class ShoppingPacketHandler(ILogger<ShoppingPacketHandler> logger, IDignityService dignityService, ILogLanguageLocalizer<LogLanguageKey> logLanguage, ISessionRegistry sessionRegistry) : PacketHandler<ShoppingPacket>, IWorldPacketHandler { public override async Task ExecuteAsync(ShoppingPacket shoppingPacket, ClientSession clientSession) { var percent = 0d; IAliveEntity? aliveEntity; switch (shoppingPacket.VisualType) { case VisualType.Player: aliveEntity = sessionRegistry.TryGetCharacter(s => s.VisualId == shoppingPacket.VisualId, out var shopper) ? shopper : null; break; case VisualType.Npc: percent = (dignityService.GetLevelFromDignity(clientSession.Character.Dignity)) switch { DignityType.Dreadful => 1.1, DignityType.Unqualified => 1.2, DignityType.Failed => 1.5, DignityType.Useless => 1.5, _ => 1.0, }; aliveEntity = clientSession.Character.MapInstance.FindNpc(s => s.VisualId == shoppingPacket.VisualId); break; default: logger.LogError(logLanguage[LogLanguageKey.VISUALTYPE_UNKNOWN], shoppingPacket.VisualType); return; } if (aliveEntity == null) { logger.LogError(logLanguage[LogLanguageKey.VISUALENTITY_DOES_NOT_EXIST]); return; } if (aliveEntity.Shop?.ShopItems.IsEmpty == false) { await clientSession.SendPacketAsync(aliveEntity.GenerateNInv(percent, shoppingPacket.ShopType)) ; } } } } ================================================ FILE: src/NosCore.PacketHandlers/Upgrades/UpgradePacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.UpgradeService; using NosCore.Packets.ClientPackets.Player; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; namespace NosCore.PacketHandlers.Upgrades { // Dispatches up_gr to whichever IUpgradeOperation declares a matching Kind. Unhandled // upgrade types log a warning and no-op — adding a new variant is just registering // another IUpgradeOperation with DI. public sealed class UpgradePacketHandler( IEnumerable<IUpgradeOperation> operations, ILogger<UpgradePacketHandler> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) : PacketHandler<UpgradePacket>, IWorldPacketHandler { public override async Task ExecuteAsync(UpgradePacket packet, ClientSession session) { var operation = operations.FirstOrDefault(o => o.Kind == packet.UpgradeType); if (operation == null) { logger.LogWarning(logLanguage[LogLanguageKey.UNHANDLED_UPGRADE_TYPE], packet.UpgradeType); return; } var packets = await operation.ExecuteAsync(session, packet).ConfigureAwait(false); if (packets.Count > 0) { await session.SendPacketsAsync(packets).ConfigureAwait(false); } } } } ================================================ FILE: src/NosCore.PacketHandlers/Warehouse/DepositPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Miniland; using NosCore.Data.WebApi; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.WarehouseHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.ClientPackets.Warehouse; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Warehouse { public class DepositPacketHandler(IWarehouseHub warehouseHttpClient) : PacketHandler<DepositPacket>, IWorldPacketHandler { public override Task ExecuteAsync(DepositPacket depositPacket, ClientSession clientSession) { #pragma warning disable CS0612 //remove the pragma when the actual itemInstance is fetched IItemInstance itemInstance = new ItemInstance(); #pragma warning restore CS0612 short slot = 0; return warehouseHttpClient.AddWarehouseItemAsync(new WareHouseDepositRequest { OwnerId = clientSession.Character.CharacterId, WarehouseType = WarehouseType.Warehouse, ItemInstance = itemInstance.Adapt<ItemInstanceDto>(), Slot = slot }); } } } ================================================ FILE: src/NosCore.PacketHandlers/Warehouse/FDepositPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Warehouse; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Warehouse { public class FDepositPacketHandler : PacketHandler<FDepositPacket>, IWorldPacketHandler { public override Task ExecuteAsync(FDepositPacket fdepositPacket, ClientSession clientSession) { return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/Warehouse/FReposPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Warehouse; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Warehouse { public class FReposPacketHandler : PacketHandler<FReposPacket>, IWorldPacketHandler { public override Task ExecuteAsync(FReposPacket freposPacket, ClientSession clientSession) { return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/Warehouse/FStashEndPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Warehouse; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Warehouse { public class FStashEndPackettHandler : PacketHandler<FStashEndPacket>, IWorldPacketHandler { public override Task ExecuteAsync(FStashEndPacket packet, ClientSession clientSession) { return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/Warehouse/FWithdrawPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Warehouse; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Warehouse { public class FWithdrawPacketHandler : PacketHandler<FWithdrawPacket>, IWorldPacketHandler { public override Task ExecuteAsync(FWithdrawPacket fwithdrawPacket, ClientSession clientSession) { return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/Warehouse/ReposPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Warehouse; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Warehouse { public class ReposPacketHandler : PacketHandler<ReposPacket>, IWorldPacketHandler { public ReposPacketHandler() { } public override Task ExecuteAsync(ReposPacket reposPacket, ClientSession clientSession) { return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/Warehouse/StashEndPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Warehouse; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Warehouse { public class StashEndPacketHandler : PacketHandler<StashEndPacket>, IWorldPacketHandler { public override Task ExecuteAsync(StashEndPacket packet, ClientSession clientSession) { return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.PacketHandlers/Warehouse/WithdrawPacketHandler.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Warehouse; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Warehouse { public class WithdrawPacketHandler : PacketHandler<WithdrawPacket>, IWorldPacketHandler { public override Task ExecuteAsync(WithdrawPacket withdrawPacket, ClientSession clientSession) { return Task.CompletedTask; } } } ================================================ FILE: src/NosCore.Parser/ImportFactory.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Core.Encryption; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.I18N; using NosCore.Parser.Parsers; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Threading.Tasks; namespace NosCore.Parser { public class ImportFactory(CardParser cardParser, DropParser dropParser, ItemParser itemParser, MapMonsterParser mapMonsterParser, MapNpcParser mapNpcParser, MapParser mapParser, MapTypeMapParser mapTypeMapParser, MapTypeParser mapTypeParser, NpcMonsterParser npcMonsterParser, PortalParser portalParser, RespawnMapTypeParser respawnMapTypeParser, ShopItemParser shopItemParser, ShopParser shopParser, SkillParser skillParser, NpcTalkParser npcTalkParser, QuestPrizeParser questPrizeParser, QuestParser questParser, ActParser actParser, ScriptParser scriptParser, IDao<AccountDto, long> accountDao, IDao<I18NQuestDto, int> i18NQuestDao, IDao<I18NSkillDto, int> i18NSkillDao, IDao<I18NNpcMonsterTalkDto, int> i18NNpcMonsterTalkDao, IDao<I18NNpcMonsterDto, int> i18NNpcMonsterDao, IDao<I18NMapPointDataDto, int> i18NMapPointDataDao, IDao<I18NMapIdDataDto, int> i18NMapIdDataDao, IDao<I18NItemDto, int> i18NItemDao, IDao<I18NBCardDto, int> i18NbCardDao, IDao<I18NCardDto, int> i18NCardDao, IDao<I18NActDescDto, int> i18NActDescDao, ILoggerFactory loggerFactory, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { private readonly List<string[]> _packetList = new(); private readonly string _password = new Sha512Hasher().Hash("test"); private string _folder = ""; public async Task ImportAccountsAsync() { var acc1 = new AccountDto { Authority = AuthorityType.GameMaster, Name = "admin", Password = _password }; if (await accountDao.FirstOrDefaultAsync(s => s.Name == acc1.Name) == null) { acc1 = await accountDao.TryInsertOrUpdateAsync(acc1); } var acc2 = new AccountDto { Authority = AuthorityType.User, Name = "test", Password = _password }; if (await accountDao.FirstOrDefaultAsync(s => s.Name == acc1.Name) == null) { acc2 = await accountDao.TryInsertOrUpdateAsync(acc2); } } public Task ImportCardsAsync() { return cardParser.InsertCardsAsync(_folder); } public async Task ImportMapNpcsAsync() { await npcTalkParser.ParseAsync(_folder); await mapNpcParser.InsertMapNpcsAsync(_packetList); } public Task ImportMapMonstersAsync() { return mapMonsterParser.InsertMapMonsterAsync(_packetList); } public Task ImportShopsAsync() { return shopParser.InsertShopsAsync(_packetList); } public Task ImportShopItemsAsync() { return shopItemParser.InsertShopItemsAsync(_packetList); } public Task ImportMapsAsync() { return mapParser.InsertOrUpdateMapsAsync(_folder, _packetList); } public Task ImportScriptsAsync() { return scriptParser.InsertScriptsAsync(_folder); } public async Task ImportQuestsAsync() { await actParser.ImportActAsync(_folder); await questPrizeParser.ImportQuestPrizesAsync(_folder); await questParser.ImportQuestsAsync(_folder); } public Task ImportMapTypeAsync() { return mapTypeParser.InsertMapTypesAsync(); } public Task ImportMapTypeMapAsync() { return mapTypeMapParser.InsertMapTypeMapsAsync(); } public Task ImportNpcMonstersAsync() { return npcMonsterParser.InsertNpcMonstersAsync(_folder); } public Task ImportRespawnMapTypeAsync() { return respawnMapTypeParser.InsertRespawnMapTypeAsync(); } public async Task ImportPacketsAsync() { var filePacket = $"{_folder}{Path.DirectorySeparatorChar}packet.txt"; using var packetTxtStream = new StreamReader(filePacket, Encoding.Default); var lines = (await packetTxtStream.ReadToEndAsync()).Split( new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None ); foreach (var line in lines) { var linesave = line.Split(' '); _packetList.Add(linesave); } } public Task ImportSkillsAsync() { return skillParser.InsertSkillsAsync(_folder); } public Task ImportDropsAsync() { return dropParser.InsertDropAsync(); } public Task ImportPortalsAsync() { return portalParser.InsertPortalsAsync(_packetList); } public async Task ImportI18NAsync() { await new I18NParser<I18NActDescDto, int>(i18NActDescDao, loggerFactory.CreateLogger<I18NParser<I18NActDescDto, int>>(), logLanguage).InsertI18NAsync(_folder + Path.DirectorySeparatorChar + "_code_{0}_act_desc.txt", LogLanguageKey.I18N_ACTDESC_PARSED); await new I18NParser<I18NBCardDto, int>(i18NbCardDao, loggerFactory.CreateLogger<I18NParser<I18NBCardDto, int>>(), logLanguage).InsertI18NAsync(_folder + Path.DirectorySeparatorChar + "_code_{0}_BCard.txt", LogLanguageKey.I18N_BCARD_PARSED); await new I18NParser<I18NCardDto, int>(i18NCardDao, loggerFactory.CreateLogger<I18NParser<I18NCardDto, int>>(), logLanguage).InsertI18NAsync(_folder + Path.DirectorySeparatorChar + "_code_{0}_Card.txt", LogLanguageKey.I18N_CARD_PARSED); await new I18NParser<I18NItemDto, int>(i18NItemDao, loggerFactory.CreateLogger<I18NParser<I18NItemDto, int>>(), logLanguage).InsertI18NAsync(_folder + Path.DirectorySeparatorChar + "_code_{0}_Item.txt", LogLanguageKey.I18N_ITEM_PARSED); await new I18NParser<I18NMapIdDataDto, int>(i18NMapIdDataDao, loggerFactory.CreateLogger<I18NParser<I18NMapIdDataDto, int>>(), logLanguage).InsertI18NAsync(_folder + Path.DirectorySeparatorChar + "_code_{0}_MapIDData.txt", LogLanguageKey.I18N_MAPIDDATA_PARSED); await new I18NParser<I18NMapPointDataDto, int>(i18NMapPointDataDao, loggerFactory.CreateLogger<I18NParser<I18NMapPointDataDto, int>>(), logLanguage).InsertI18NAsync(_folder + Path.DirectorySeparatorChar + "_code_{0}_MapPointData.txt", LogLanguageKey.I18N_MAPPOINTDATA_PARSED); await new I18NParser<I18NNpcMonsterDto, int>(i18NNpcMonsterDao, loggerFactory.CreateLogger<I18NParser<I18NNpcMonsterDto, int>>(), logLanguage).InsertI18NAsync(_folder + Path.DirectorySeparatorChar + "_code_{0}_monster.txt", LogLanguageKey.I18N_MPCMONSTER_PARSED); await new I18NParser<I18NQuestDto, int>(i18NQuestDao, loggerFactory.CreateLogger<I18NParser<I18NQuestDto, int>>(), logLanguage).InsertI18NAsync(_folder + Path.DirectorySeparatorChar + "_code_{0}_quest.txt", LogLanguageKey.I18N_QUEST_PARSED); await new I18NParser<I18NSkillDto, int>(i18NSkillDao, loggerFactory.CreateLogger<I18NParser<I18NSkillDto, int>>(), logLanguage).InsertI18NAsync(_folder + Path.DirectorySeparatorChar + "_code_{0}_Skill.txt", LogLanguageKey.I18N_SKILL_PARSED); await new I18NParser<I18NNpcMonsterTalkDto, int>(i18NNpcMonsterTalkDao, loggerFactory.CreateLogger<I18NParser<I18NNpcMonsterTalkDto, int>>(), logLanguage).InsertI18NAsync(_folder + Path.DirectorySeparatorChar + "_code_{0}_npctalk.txt", LogLanguageKey.I18N_NPCMONSTERTALK_PARSED); } public Task ImportItemsAsync() { return itemParser.ParseAsync(_folder); } public void SetFolder(string folder) { _folder = folder; } } } ================================================ FILE: src/NosCore.Parser/NosCore.Parser.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net10.0</TargetFramework> <TieredCompilation>true</TieredCompilation> <InvariantGlobalization>false</InvariantGlobalization> <SelfContained>false</SelfContained> </PropertyGroup> <PropertyGroup Condition="'$(TargetArch)' == 'linux-musl-x64'"> <RuntimeIdentifier>linux-musl-x64</RuntimeIdentifier> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <ItemGroup> <PackageReference Include="Autofac" /> <PackageReference Include="Autofac.Extensions.DependencyInjection" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" /> <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" /> <PackageReference Include="Microsoft.Extensions.Hosting" /> </ItemGroup> <ItemGroup> <PackageReference Include="NosCore.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> <ItemGroup> <ProjectReference Include="..\NosCore.Database\NosCore.Database.csproj" /> </ItemGroup> </Project> ================================================ FILE: src/NosCore.Parser/Parser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Hosting; using NosCore.Data.Enumerations.I18N; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.IO; using System.Threading; using System.Threading.Tasks; namespace NosCore.Parser { public class Parser( ImportFactory factory, ILogger<Parser> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage, ParserCliOptions cli, IHostApplicationLifetime lifetime) : BackgroundService { protected override async Task ExecuteAsync(CancellationToken stoppingToken) { try { if (cli.HasFolder) { await RunNonInteractiveAsync(cli.Folder!, stoppingToken).ConfigureAwait(false); } else { await RunInteractiveAsync(stoppingToken).ConfigureAwait(false); } logger.LogInformation(logLanguage[LogLanguageKey.DONE]); } catch (FileNotFoundException) { logger.LogError(logLanguage[LogLanguageKey.AT_LEAST_ONE_FILE_MISSING]); throw; } finally { if (cli.HasFolder) { lifetime.StopApplication(); } } } private async Task RunNonInteractiveAsync(string folder, CancellationToken stoppingToken) { if (!Directory.Exists(folder)) { throw new DirectoryNotFoundException($"Folder not found: {folder}"); } logger.LogInformation("Parsing non-interactively from {Folder}", folder); factory.SetFolder(folder); await factory.ImportPacketsAsync().ConfigureAwait(false); await RunFullImportAsync().ConfigureAwait(false); } private async Task RunInteractiveAsync(CancellationToken stoppingToken) { logger.LogWarning(logLanguage[LogLanguageKey.ENTER_PATH]); var folder = Console.ReadLine(); var inputRedirected = Console.IsInputRedirected; logger.LogInformation( $"{logLanguage[LogLanguageKey.PARSE_ALL]} [Y/n]"); var key = default(ConsoleKeyInfo); if (!inputRedirected) { key = Console.ReadKey(true); } factory.SetFolder(folder!); await factory.ImportPacketsAsync().ConfigureAwait(false); if (inputRedirected || key.KeyChar != 'n') { await RunFullImportAsync().ConfigureAwait(false); await Task.Delay(5000, stoppingToken).ConfigureAwait(false); return; } await RunPromptedImportsAsync().ConfigureAwait(false); await Task.Delay(5000, stoppingToken).ConfigureAwait(false); } private async Task RunFullImportAsync() { await factory.ImportAccountsAsync().ConfigureAwait(false); await factory.ImportMapsAsync().ConfigureAwait(false); await factory.ImportRespawnMapTypeAsync().ConfigureAwait(false); await factory.ImportMapTypeAsync().ConfigureAwait(false); await factory.ImportMapTypeMapAsync().ConfigureAwait(false); await factory.ImportPortalsAsync().ConfigureAwait(false); await factory.ImportI18NAsync().ConfigureAwait(false); await factory.ImportItemsAsync().ConfigureAwait(false); await factory.ImportSkillsAsync().ConfigureAwait(false); await factory.ImportCardsAsync().ConfigureAwait(false); await factory.ImportNpcMonstersAsync().ConfigureAwait(false); await factory.ImportDropsAsync().ConfigureAwait(false); await factory.ImportMapNpcsAsync().ConfigureAwait(false); await factory.ImportMapMonstersAsync().ConfigureAwait(false); await factory.ImportShopsAsync().ConfigureAwait(false); await factory.ImportShopItemsAsync().ConfigureAwait(false); await factory.ImportScriptsAsync().ConfigureAwait(false); await factory.ImportQuestsAsync().ConfigureAwait(false); } private async Task RunPromptedImportsAsync() { ConsoleKeyInfo key; logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_MAPS]} [Y/n]"); key = Console.ReadKey(true); if (key.KeyChar != 'n') await factory.ImportMapsAsync().ConfigureAwait(false); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_MAPTYPES]} [Y/n]"); key = Console.ReadKey(true); if (key.KeyChar != 'n') { await factory.ImportRespawnMapTypeAsync().ConfigureAwait(false); await factory.ImportMapTypeAsync().ConfigureAwait(false); await factory.ImportMapTypeMapAsync().ConfigureAwait(false); } logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_ACCOUNTS]} [Y/n]"); key = Console.ReadKey(true); if (key.KeyChar != 'n') await factory.ImportAccountsAsync().ConfigureAwait(false); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_PORTALS]} [Y/n]"); key = Console.ReadKey(true); if (key.KeyChar != 'n') await factory.ImportPortalsAsync().ConfigureAwait(false); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_I18N]} [Y/n]"); key = Console.ReadKey(true); if (key.KeyChar != 'n') await factory.ImportI18NAsync().ConfigureAwait(false); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_TIMESPACES]} [Y/n]"); Console.ReadKey(true); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_ITEMS]} [Y/n]"); key = Console.ReadKey(true); if (key.KeyChar != 'n') await factory.ImportItemsAsync().ConfigureAwait(false); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_NPCMONSTERS]} [Y/n]"); key = Console.ReadKey(true); if (key.KeyChar != 'n') await factory.ImportNpcMonstersAsync().ConfigureAwait(false); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_DROPS]} [Y/n]"); key = Console.ReadKey(true); if (key.KeyChar != 'n') await factory.ImportDropsAsync().ConfigureAwait(false); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_NPCMONSTERDATA]} [Y/n]"); Console.ReadKey(true); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_CARDS]} [Y/n]"); key = Console.ReadKey(true); if (key.KeyChar != 'n') await factory.ImportCardsAsync().ConfigureAwait(false); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_SKILLS]} [Y/n]"); key = Console.ReadKey(true); if (key.KeyChar != 'n') await factory.ImportSkillsAsync().ConfigureAwait(false); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_MAPNPCS]} [Y/n]"); key = Console.ReadKey(true); if (key.KeyChar != 'n') await factory.ImportMapNpcsAsync().ConfigureAwait(false); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_MONSTERS]} [Y/n]"); key = Console.ReadKey(true); if (key.KeyChar != 'n') await factory.ImportMapMonstersAsync().ConfigureAwait(false); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_SHOPS]} [Y/n]"); key = Console.ReadKey(true); if (key.KeyChar != 'n') await factory.ImportShopsAsync().ConfigureAwait(false); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_TELEPORTERS]} [Y/n]"); Console.ReadKey(true); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_SHOPITEMS]} [Y/n]"); key = Console.ReadKey(true); if (key.KeyChar != 'n') await factory.ImportShopItemsAsync().ConfigureAwait(false); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_SHOPSKILLS]} [Y/n]"); Console.ReadKey(true); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_RECIPES]} [Y/n]"); Console.ReadKey(true); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_SCRIPTS]} [Y/n]"); key = Console.ReadKey(true); if (key.KeyChar != 'n') await factory.ImportScriptsAsync().ConfigureAwait(false); logger.LogInformation($"{logLanguage[LogLanguageKey.PARSE_QUESTS]} [Y/n]"); key = Console.ReadKey(true); if (key.KeyChar != 'n') await factory.ImportQuestsAsync().ConfigureAwait(false); } } } ================================================ FILE: src/NosCore.Parser/ParserBootstrap.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Autofac; using Autofac.Extensions.DependencyInjection; using Mapster; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using NosCore.Dao; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Database; using NosCore.Database.Entities; using NosCore.Database.Entities.Base; using NosCore.Parser.Parsers; using NosCore.Shared.Configuration; using NosCore.Shared.I18N; using Serilog; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Runtime.InteropServices; using System.Threading.Tasks; namespace NosCore.Parser { public static class ParserBootstrap { private const string Title = "NosCore - Parser"; private const string ConsoleText = "PARSER - NosCoreIO"; public static void RegisterDatabaseObject<TDto, TDb, TPk>(ContainerBuilder containerBuilder, bool isStatic) where TDb : class where TPk : struct { containerBuilder.RegisterType<Dao<TDb, TDto, TPk>>().As<IDao<TDto, TPk>>().SingleInstance(); if (isStatic) { containerBuilder.Register(c => c.Resolve<IDao<TDto, TPk>>().LoadAll().ToList()) .As<List<TDto>>() .SingleInstance() .AutoActivate(); } } private static void InitializeConfiguration(string[] args, IServiceCollection services) { var parserConfiguration = new ParserConfiguration(); var conf = ConfiguratorBuilder.InitializeConfiguration(args, new[] { "logger.yml", "parser.yml" }); conf.Bind(parserConfiguration); services.AddDbContext<NosCoreContext>( builder => builder.UseNpgsql(parserConfiguration.Database.ConnectionString, options => { options.UseNodaTime(); })); services.AddOptions<ParserConfiguration>().Bind(conf).ValidateDataAnnotations(); Logger.GetLoggerConfiguration().CreateLogger(); try { Logger.PrintHeader(ConsoleText); } catch (System.IO.IOException) { // No attached console (e.g. CLI invocation from a shell with redirected stdout) — // skip the banner rather than crashing on Console.WindowWidth. } CultureInfo.DefaultThreadCurrentCulture = new(parserConfiguration.Language.ToString()); } private static void InitializeContainer(ContainerBuilder containerBuilder) { containerBuilder.RegisterType<NosCoreContext>().As<DbContext>() .OnActivated(c => c.Instance.Database.Migrate()); containerBuilder.RegisterAssemblyTypes(typeof(CardParser).Assembly) .Where(t => t.Name.EndsWith("Parser") && !t.IsGenericType) .AsSelf(); containerBuilder.RegisterType<ImportFactory>(); var registerDatabaseObject = typeof(ParserBootstrap).GetMethod(nameof(RegisterDatabaseObject)); var assemblyDto = typeof(IStaticDto).Assembly.GetTypes(); var assemblyDb = typeof(Account).Assembly.GetTypes(); assemblyDto.Where(p => typeof(IDto).IsAssignableFrom(p) && !p.Name.Contains("InstanceDto") && p.IsClass) .ToList() .ForEach(t => { var type = assemblyDb.First(tgo => string.Compare(t.Name, $"{tgo.Name}Dto", StringComparison.OrdinalIgnoreCase) == 0); var optionsBuilder = new DbContextOptionsBuilder<NosCoreContext>().UseInMemoryDatabase( Guid.NewGuid().ToString()); var typepk = type.GetProperties() .Where(s => new NosCoreContext(optionsBuilder.Options).Model.FindEntityType(type)? .FindPrimaryKey()?.Properties.Select(x => x.Name) .Contains(s.Name) ?? false ).ToArray()[0]; registerDatabaseObject?.MakeGenericMethod(t, type, typepk.PropertyType).Invoke(null, new[] { containerBuilder, (object)typeof(IStaticDto).IsAssignableFrom(t) }); }); containerBuilder.RegisterType<Dao<ItemInstance, IItemInstanceDto?, Guid>>().As<IDao<IItemInstanceDto?, Guid>>() .SingleInstance(); } public static async Task Main(string[] args) { var cli = ParserCliOptions.Parse(args); try { await BuildHost(args, cli).RunAsync(); } catch (Exception ex) { Console.WriteLine(ex.Message); if (!cli.HasFolder) { Console.ReadLine(); } } } private static IHost BuildHost(string[] args, ParserCliOptions cli) { return new HostBuilder() .UseSerilog() .UseConsoleLifetime() .UseServiceProviderFactory(new AutofacServiceProviderFactory()) .ConfigureContainer<ContainerBuilder>(InitializeContainer) .ConfigureServices((hostContext, services) => { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && !Console.IsOutputRedirected) { try { Console.Title = Title; } catch { /* redirected/non-interactive console */ } } InitializeConfiguration(args, services); services.AddSingleton(cli); services.AddI18NLogs(); services.AddLogging(builder => builder.AddFilter("Microsoft", LogLevel.Warning)); services.Configure<ConsoleLifetimeOptions>(o => o.SuppressStatusMessages = true); services.AddHostedService<Parser>(); TypeAdapterConfig.GlobalSettings.Default.IgnoreAttribute(typeof(I18NFromAttribute)); TypeAdapterConfig.GlobalSettings.Default .IgnoreMember((member, side) => side == MemberSide.Destination && member.Type.GetInterfaces().Contains(typeof(IEntity)) || (member.Type.GetGenericArguments().Any() && member.Type.GetGenericArguments()[0].GetInterfaces().Contains(typeof(IEntity)))); }) .Build(); } } } ================================================ FILE: src/NosCore.Parser/ParserCliOptions.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Parser; public sealed record ParserCliOptions(string? Folder) { public bool HasFolder => !string.IsNullOrWhiteSpace(Folder); public static ParserCliOptions Parse(string[] args) { string? folder = null; for (var i = 0; i < args.Length; i++) { var arg = args[i]; if ((arg == "--folder" || arg == "-f") && i + 1 < args.Length) { folder = args[++i]; } else if (arg.StartsWith("--folder=", System.StringComparison.Ordinal)) { folder = arg["--folder=".Length..]; } } return new ParserCliOptions(folder); } } ================================================ FILE: src/NosCore.Parser/ParserConfiguration.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Configuration; using System.ComponentModel.DataAnnotations; namespace NosCore.Parser { public class ParserConfiguration : LanguageConfiguration { [Required] public SqlConnectionConfiguration Database { get; set; } = null!; } } ================================================ FILE: src/NosCore.Parser/Parsers/ActParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { //# Act Data //#=================================== //Data {ActPartId} {ActId} {} 10 //Data 2 1 2 6 //Data 3 1 3 8 //Data 4 1 4 10 //Data 5 1 5 6 //Data 6 1 6 6 //Data 7 2 1 3 //Data 8 2 2 2 //Data 9 2 3 3 //Data 10 2 4 3 //Data 11 2 5 1 //Data 12 2 6 1 //Data 13 3 1 2 //Data 14 3 2 3 //Data 15 3 3 2 //Data 16 3 4 3 //Data 17 3 5 3 //Data 18 3 6 2 //Data 19 4 1 1 //Data 20 5 1 1 //end //#==================================# //# Title //A {ActId} {Name} //~ public class ActParser(IDao<ActDto, byte> actDao, IDao<ActPartDto, byte> actDescDao, ILogger<ActParser> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { private readonly string _fileQuestDat = $"{Path.DirectorySeparatorChar}act_desc.dat"; public async Task ImportActAsync(string folder) { var acts = new List<ActDto>(); var actParts = new List<ActPartDto>(); using (var stream = new StreamReader(folder + _fileQuestDat, Encoding.Default)) { string? line; while ((line = await stream.ReadLineAsync()) != null) { var splitted = line.Split(' ', '\t'); switch (splitted.Length) { case 3 when splitted[0] == "A": acts.Add(new ActDto { TitleI18NKey = splitted[2], ActId = Convert.ToByte(splitted[1]), Scene = (byte)(39 + Convert.ToByte(splitted[1])) }); continue; case 5 when splitted[0] == "Data": actParts.Add(new ActPartDto { ActPartId = Convert.ToByte(splitted[1]), ActPartNumber = Convert.ToByte(splitted[3]), ActId = Convert.ToByte(splitted[2]), MaxTs = Convert.ToByte(splitted[4]), }); continue; } } } await actDao.TryInsertOrUpdateAsync(acts); await actDescDao.TryInsertOrUpdateAsync(actParts); logger.LogInformation(logLanguage[LogLanguageKey.ACTS_PARTS_PARSED], actParts.Count); } } } ================================================ FILE: src/NosCore.Parser/Parsers/CardParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.Buff; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers.Generic; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { public class CardParser(IDao<CardDto, short> cardDao, IDao<BCardDto, short> bcardDao, ILoggerFactory loggerFactory, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { // VNUM CardId // NAME Name // // GROUP Level 0 // STYLE 0 0 BuffType 0 0 // EFFECT 0 0 // TIME Duration Delay // 1ST 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 // 2ST 0 0 0 0 0 0 0 0 0 0 0 0 // LAST 0 0 // DESC Description // // END //#======================================================== private readonly string _fileCardDat = $"{Path.DirectorySeparatorChar}Card.dat"; public FluentParserBuilder<CardDto> BuildParser(string folder) { return FluentParserBuilder<CardDto>.Create(folder + _fileCardDat, "END", 1) .Field(x => x.CardId, "VNUM", 0, 2, s => Convert.ToInt16(s), "Card vnum") .Field(x => x.NameI18NKey, "NAME", 0, 2, s => s, "Localization key (zts##e)") .Field(x => x.Level, "GROUP", 0, 3, s => Convert.ToByte(s), "Card level tier") .Field(x => x.EffectId, "EFFECT", 0, 2, s => Convert.ToInt32(s), "Visual effect id") .Field(x => x.BuffType, "STYLE", 0, 3, s => (BCardType.CardType)Convert.ToByte(s), "Buff type from STYLE column 3") .Field(x => x.Duration, "TIME", 0, 2, s => Convert.ToInt32(s), "Duration in deciseconds") .Field(x => x.Delay, "TIME", 0, 3, s => Convert.ToInt32(s), "Activation delay") .Field(x => x.TimeoutBuff, "LAST", 0, 2, s => Convert.ToInt16(s), "Follow-up buff id when card expires") .Field(x => x.TimeoutBuffChance, "LAST", 0, 3, s => Convert.ToByte(s), "% chance the follow-up buff fires") .Field(x => x.BCards, chunk => AddBCards(chunk), source: "1ST + 2ST (5 groups of 6)", description: "Up to 5 BCards, first 3 from 1ST then 2 from 2ST"); } private readonly ILogger<CardParser> _logger = loggerFactory.CreateLogger<CardParser>(); public async Task InsertCardsAsync(string folder) { var parser = BuildParser(folder).Build(loggerFactory, logLanguage); var cards = (await parser.GetDtosAsync()).GroupBy(p => p.CardId).Select(g => g.First()).ToList(); await cardDao.TryInsertOrUpdateAsync(cards); await bcardDao.TryInsertOrUpdateAsync(cards.Where(s => s.BCards != null).SelectMany(s => s.BCards)); _logger.LogInformation(logLanguage[LogLanguageKey.CARDS_PARSED], cards.Count); } public List<BCardDto> AddBCards(Dictionary<string, string[][]> chunks) { var list = new List<BCardDto>(); for (var j = 0; j < 5; j++) { var key = (j > 2) ? "2ST" : "1ST"; var i = (j > 2) ? j - 3 : j; var row = chunks[key][0]; var lastCol = i * 6 + 7; if (row.Length <= lastCol) { continue; } if ((row[2 + i * 6] == "-1") || (row[2 + i * 6] == "0")) { continue; } var first = int.Parse(row[i * 6 + 6]); list.Add(new BCardDto { CardId = Convert.ToInt16(chunks["VNUM"][0][2]), Type = byte.Parse(row[2 + i * 6]), SubType = (byte)((Convert.ToByte(row[3 + i * 6]) + 1) * 10 + 1 + (first < 0 ? 1 : 0)), FirstData = (first > 0 ? first : -first) / 4, SecondData = int.Parse(row[7 + i * 6]) / 4, ThirdData = int.Parse(row[5 + i * 6]), IsLevelScaled = Convert.ToBoolean(first % 4), IsLevelDivided = Math.Abs(first % 4) == 2 }); } return list; } } } ================================================ FILE: src/NosCore.Parser/Parsers/DropParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.Map; using NosCore.Data.StaticEntities; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { public class DropParser(IDao<DropDto, short> dropDao) { public DropDto GenerateDropDto(short vnum, int amount, short? monsterVNum, int dropChance, short mapTypeId) { return new DropDto { VNum = vnum, Amount = amount, MonsterVNum = monsterVNum, DropChance = dropChance, MapTypeId = mapTypeId }; } public Task InsertDropAsync() { var drops = new List<DropDto> { // Act 1 GenerateDropDto(1002, 1, null, 100, (short)MapTypeType.Act1), GenerateDropDto(1012, 1, null, 12000, (short)MapTypeType.Act1), GenerateDropDto(2015, 1, null, 100, (short)MapTypeType.Act1), GenerateDropDto(2016, 1, null, 100, (short)MapTypeType.Act1), GenerateDropDto(2023, 1, null, 100, (short)MapTypeType.Act1), GenerateDropDto(2024, 1, null, 100, (short)MapTypeType.Act1), GenerateDropDto(2028, 1, null, 100, (short)MapTypeType.Act1 ), // Act2 GenerateDropDto(1004, 1, null, 500, (short)MapTypeType.Act2), GenerateDropDto(1007, 1, null, 500, (short)MapTypeType.Act2), GenerateDropDto(1012, 1, null, 7000, (short)MapTypeType.Act2), GenerateDropDto(1028, 1, null, 100, (short)MapTypeType.Act2), GenerateDropDto(1086, 1, null, 100, (short)MapTypeType.Act2), GenerateDropDto(1114, 1, null, 100, (short)MapTypeType.Act2), GenerateDropDto(1237, 1, null, 100, (short)MapTypeType.Act2), GenerateDropDto(1239, 1, null, 100, (short)MapTypeType.Act2), GenerateDropDto(1241, 1, null, 100, (short)MapTypeType.Act2), GenerateDropDto(2098, 1, null, 100, (short)MapTypeType.Act2), GenerateDropDto(2099, 1, null, 100, (short)MapTypeType.Act2), GenerateDropDto(2100, 1, null, 100, (short)MapTypeType.Act2), GenerateDropDto(2101, 1, null, 100, (short)MapTypeType.Act2), GenerateDropDto(2102, 1, null, 100, (short)MapTypeType.Act2), GenerateDropDto(2114, 1, null, 900, (short)MapTypeType.Act2), GenerateDropDto(2115, 1, null, 900, (short)MapTypeType.Act2), GenerateDropDto(2116, 1, null, 900, (short)MapTypeType.Act2), GenerateDropDto(2117, 1, null, 900, (short)MapTypeType.Act2), GenerateDropDto(2118, 1, null, 900, (short)MapTypeType.Act2), GenerateDropDto(2129, 1, null, 200, (short)MapTypeType.Act2), GenerateDropDto(2205, 1, null, 200, (short)MapTypeType.Act2), GenerateDropDto(2206, 1, null, 200, (short)MapTypeType.Act2), GenerateDropDto(2207, 1, null, 200, (short)MapTypeType.Act2), GenerateDropDto(2208, 1, null, 200, (short)MapTypeType.Act2), GenerateDropDto(2282, 1, null, 2500, (short)MapTypeType.Act2), GenerateDropDto(2283, 1, null, 1000, (short)MapTypeType.Act2), GenerateDropDto(2284, 1, null, 500, (short)MapTypeType.Act2), GenerateDropDto(2296, 1, null, 250, (short)MapTypeType.Act2), GenerateDropDto(5119, 1, null, 30, (short)MapTypeType.Act2), GenerateDropDto(5853, 1, null, 80, (short)MapTypeType.Oasis), GenerateDropDto(5854, 1, null, 80, (short)MapTypeType.Oasis), GenerateDropDto(5855, 1, null, 80, (short)MapTypeType.Oasis ), // Act3 GenerateDropDto(1004, 1, null, 500, (short)MapTypeType.Act3), GenerateDropDto(1007, 1, null, 500, (short)MapTypeType.Act3), GenerateDropDto(1012, 1, null, 8000, (short)MapTypeType.Act3), GenerateDropDto(1086, 1, null, 100, (short)MapTypeType.Act3), GenerateDropDto(1078, 1, null, 500, (short)MapTypeType.Act3), GenerateDropDto(1114, 1, null, 100, (short)MapTypeType.Act3), GenerateDropDto(1235, 1, null, 150, (short)MapTypeType.Act3), GenerateDropDto(1237, 1, null, 150, (short)MapTypeType.Act3), GenerateDropDto(1238, 1, null, 30, (short)MapTypeType.Act3), GenerateDropDto(1239, 1, null, 150, (short)MapTypeType.Act3), GenerateDropDto(1240, 1, null, 30, (short)MapTypeType.Act3), GenerateDropDto(1241, 1, null, 400, (short)MapTypeType.Act3), GenerateDropDto(2098, 1, null, 100, (short)MapTypeType.Act3), GenerateDropDto(2099, 1, null, 100, (short)MapTypeType.Act3), GenerateDropDto(2100, 1, null, 100, (short)MapTypeType.Act3), GenerateDropDto(2101, 1, null, 100, (short)MapTypeType.Act3), GenerateDropDto(2102, 1, null, 100, (short)MapTypeType.Act3), GenerateDropDto(2114, 1, null, 800, (short)MapTypeType.Act3), GenerateDropDto(2115, 1, null, 800, (short)MapTypeType.Act3), GenerateDropDto(2116, 1, null, 800, (short)MapTypeType.Act3), GenerateDropDto(2117, 1, null, 800, (short)MapTypeType.Act3), GenerateDropDto(2118, 1, null, 800, (short)MapTypeType.Act3), GenerateDropDto(2129, 1, null, 100, (short)MapTypeType.Act3), GenerateDropDto(2205, 1, null, 300, (short)MapTypeType.Act3), GenerateDropDto(2206, 1, null, 300, (short)MapTypeType.Act3), GenerateDropDto(2207, 1, null, 300, (short)MapTypeType.Act3), GenerateDropDto(2208, 1, null, 300, (short)MapTypeType.Act3), GenerateDropDto(2282, 1, null, 4000, (short)MapTypeType.Act3), GenerateDropDto(2283, 1, null, 700, (short)MapTypeType.Act3), GenerateDropDto(2284, 1, null, 350, (short)MapTypeType.Act3), GenerateDropDto(2285, 1, null, 150, (short)MapTypeType.Act3), GenerateDropDto(2296, 1, null, 150, (short)MapTypeType.Act3), GenerateDropDto(5119, 1, null, 30, (short)MapTypeType.Act3), GenerateDropDto(5853, 1, null, 100, (short)MapTypeType.Act3), GenerateDropDto(5854, 1, null, 100, (short)MapTypeType.Act3), GenerateDropDto(5855, 1, null, 100, (short)MapTypeType.Act3 ), // Act3.2 (Midgard) GenerateDropDto(1004, 1, null, 500, (short)MapTypeType.Act32), GenerateDropDto(1007, 1, null, 500, (short)MapTypeType.Act32), GenerateDropDto(1012, 1, null, 6000, (short)MapTypeType.Act32), GenerateDropDto(1086, 1, null, 100, (short)MapTypeType.Act32), GenerateDropDto(1078, 1, null, 250, (short)MapTypeType.Act32), GenerateDropDto(1114, 1, null, 100, (short)MapTypeType.Act32), GenerateDropDto(1235, 1, null, 100, (short)MapTypeType.Act32), GenerateDropDto(1237, 1, null, 100, (short)MapTypeType.Act32), GenerateDropDto(1238, 1, null, 20, (short)MapTypeType.Act32), GenerateDropDto(1239, 1, null, 100, (short)MapTypeType.Act32), GenerateDropDto(1240, 1, null, 20, (short)MapTypeType.Act32), GenerateDropDto(1241, 1, null, 200, (short)MapTypeType.Act32), GenerateDropDto(2098, 1, null, 50, (short)MapTypeType.Act32), GenerateDropDto(2099, 1, null, 60, (short)MapTypeType.Act32), GenerateDropDto(2100, 1, null, 40, (short)MapTypeType.Act32), GenerateDropDto(2101, 1, null, 60, (short)MapTypeType.Act32), GenerateDropDto(2102, 1, null, 40, (short)MapTypeType.Act32), GenerateDropDto(2114, 1, null, 500, (short)MapTypeType.Act32), GenerateDropDto(2115, 1, null, 500, (short)MapTypeType.Act32), GenerateDropDto(2116, 1, null, 500, (short)MapTypeType.Act32), GenerateDropDto(2117, 1, null, 500, (short)MapTypeType.Act32), GenerateDropDto(2118, 1, null, 500, (short)MapTypeType.Act32), GenerateDropDto(2129, 1, null, 100, (short)MapTypeType.Act32), GenerateDropDto(2205, 1, null, 300, (short)MapTypeType.Act32), GenerateDropDto(2206, 1, null, 300, (short)MapTypeType.Act32), GenerateDropDto(2207, 1, null, 300, (short)MapTypeType.Act32), GenerateDropDto(2208, 1, null, 300, (short)MapTypeType.Act32), GenerateDropDto(2282, 1, null, 3500, (short)MapTypeType.Act32), GenerateDropDto(2283, 1, null, 500, (short)MapTypeType.Act32), GenerateDropDto(2284, 1, null, 200, (short)MapTypeType.Act32), GenerateDropDto(2285, 1, null, 100, (short)MapTypeType.Act32), GenerateDropDto(2296, 1, null, 100, (short)MapTypeType.Act32), GenerateDropDto(2600, 1, null, 200, (short)MapTypeType.Act32), GenerateDropDto(2605, 1, null, 200, (short)MapTypeType.Act32), GenerateDropDto(5119, 1, null, 30, (short)MapTypeType.Act32), GenerateDropDto(5857, 1, null, 50, (short)MapTypeType.Act32), GenerateDropDto(5853, 1, null, 50, (short)MapTypeType.Act32), GenerateDropDto(5854, 1, null, 50, (short)MapTypeType.Act32), GenerateDropDto(5855, 1, null, 100, (short)MapTypeType.Act32), // Act 3.4 Oasis GenerateDropDto(1004, 1, null, 300, (short)MapTypeType.Oasis), GenerateDropDto(1007, 1, null, 300, (short)MapTypeType.Oasis), GenerateDropDto(1012, 1, null, 7000, (short)MapTypeType.Oasis), GenerateDropDto(1086, 1, null, 100, (short)MapTypeType.Oasis), GenerateDropDto(1078, 1, null, 500, (short)MapTypeType.Oasis), GenerateDropDto(1114, 1, null, 100, (short)MapTypeType.Oasis), GenerateDropDto(1235, 1, null, 100, (short)MapTypeType.Oasis), GenerateDropDto(1237, 1, null, 150, (short)MapTypeType.Oasis), GenerateDropDto(1238, 1, null, 30, (short)MapTypeType.Oasis), GenerateDropDto(1239, 1, null, 100, (short)MapTypeType.Oasis), GenerateDropDto(1240, 1, null, 30, (short)MapTypeType.Oasis), GenerateDropDto(1241, 1, null, 400, (short)MapTypeType.Oasis), GenerateDropDto(2098, 1, null, 100, (short)MapTypeType.Oasis), GenerateDropDto(2099, 1, null, 100, (short)MapTypeType.Oasis), GenerateDropDto(2100, 1, null, 100, (short)MapTypeType.Oasis), GenerateDropDto(2101, 1, null, 100, (short)MapTypeType.Oasis), GenerateDropDto(2102, 1, null, 100, (short)MapTypeType.Oasis), GenerateDropDto(2114, 1, null, 800, (short)MapTypeType.Oasis), GenerateDropDto(2115, 1, null, 800, (short)MapTypeType.Oasis), GenerateDropDto(2116, 1, null, 800, (short)MapTypeType.Oasis), GenerateDropDto(2117, 1, null, 800, (short)MapTypeType.Oasis), GenerateDropDto(2118, 1, null, 800, (short)MapTypeType.Oasis), GenerateDropDto(2129, 1, null, 100, (short)MapTypeType.Oasis), GenerateDropDto(2205, 1, null, 300, (short)MapTypeType.Oasis), GenerateDropDto(2206, 1, null, 300, (short)MapTypeType.Oasis), GenerateDropDto(2207, 1, null, 300, (short)MapTypeType.Oasis), GenerateDropDto(2208, 1, null, 300, (short)MapTypeType.Oasis), GenerateDropDto(2282, 1, null, 3000, (short)MapTypeType.Oasis), GenerateDropDto(2283, 1, null, 700, (short)MapTypeType.Oasis), GenerateDropDto(2284, 1, null, 300, (short)MapTypeType.Oasis), GenerateDropDto(2285, 1, null, 100, (short)MapTypeType.Oasis), GenerateDropDto(2296, 1, null, 100, (short)MapTypeType.Oasis), GenerateDropDto(5119, 1, null, 30, (short)MapTypeType.Oasis), GenerateDropDto(5853, 1, null, 100, (short)MapTypeType.Oasis), GenerateDropDto(5854, 1, null, 100, (short)MapTypeType.Oasis), GenerateDropDto(5855, 1, null, 100, (short)MapTypeType.Oasis), GenerateDropDto(5999, 1, null, 100, (short)MapTypeType.Oasis ), // Act4 GenerateDropDto(1004, 1, null, 1000, (short)MapTypeType.Act4), GenerateDropDto(1007, 1, null, 1000, (short)MapTypeType.Act4), GenerateDropDto(1010, 3, null, 1500, (short)MapTypeType.Act4), GenerateDropDto(1012, 2, null, 3000, (short)MapTypeType.Act4), GenerateDropDto(1241, 3, null, 3000, (short)MapTypeType.Act4), GenerateDropDto(1078, 3, null, 1500, (short)MapTypeType.Act4), GenerateDropDto(1246, 1, null, 2500, (short)MapTypeType.Act4), GenerateDropDto(1247, 1, null, 2500, (short)MapTypeType.Act4), GenerateDropDto(1248, 1, null, 2500, (short)MapTypeType.Act4), GenerateDropDto(1429, 1, null, 2500, (short)MapTypeType.Act4), GenerateDropDto(2296, 1, null, 1000, (short)MapTypeType.Act4), GenerateDropDto(2307, 1, null, 1500, (short)MapTypeType.Act4), GenerateDropDto(2308, 1, null, 1500, (short)MapTypeType.Act4), //Act4.2 GenerateDropDto(1004, 1, null, 1000, (short)MapTypeType.Act42), GenerateDropDto(1007, 1, null, 1000, (short)MapTypeType.Act42), GenerateDropDto(1010, 3, null, 1500, (short)MapTypeType.Act42), GenerateDropDto(1012, 2, null, 3000, (short)MapTypeType.Act42), GenerateDropDto(1241, 3, null, 3000, (short)MapTypeType.Act42), GenerateDropDto(1078, 3, null, 1500, (short)MapTypeType.Act42), GenerateDropDto(1246, 1, null, 2500, (short)MapTypeType.Act42), GenerateDropDto(1247, 1, null, 2500, (short)MapTypeType.Act42), GenerateDropDto(1248, 1, null, 2500, (short)MapTypeType.Act42), GenerateDropDto(1429, 1, null, 2500, (short)MapTypeType.Act42), GenerateDropDto(2296, 1, null, 1000, (short)MapTypeType.Act42), GenerateDropDto(2307, 1, null, 1500, (short)MapTypeType.Act42), GenerateDropDto(2308, 1, null, 1500, (short)MapTypeType.Act42), GenerateDropDto(2445, 1, null, 700, (short)MapTypeType.Act42), GenerateDropDto(2448, 1, null, 700, (short)MapTypeType.Act42), GenerateDropDto(2449, 1, null, 700, (short)MapTypeType.Act42), GenerateDropDto(2450, 1, null, 700, (short)MapTypeType.Act42), GenerateDropDto(2451, 1, null, 700, (short)MapTypeType.Act42), GenerateDropDto(5986, 1, null, 700, (short)MapTypeType.Act42 ), // Act5 GenerateDropDto(1004, 1, null, 400, (short)MapTypeType.Act51), GenerateDropDto(1007, 1, null, 400, (short)MapTypeType.Act51), GenerateDropDto(1012, 1, null, 6000, (short)MapTypeType.Act51), GenerateDropDto(1086, 1, null, 200, (short)MapTypeType.Act51), GenerateDropDto(1114, 1, null, 150, (short)MapTypeType.Act51), GenerateDropDto(1872, 1, null, 500, (short)MapTypeType.Act51), GenerateDropDto(1873, 1, null, 500, (short)MapTypeType.Act51), GenerateDropDto(1874, 1, null, 500, (short)MapTypeType.Act51), GenerateDropDto(2099, 1, null, 700, (short)MapTypeType.Act51), GenerateDropDto(2102, 1, null, 700, (short)MapTypeType.Act51), GenerateDropDto(2114, 1, null, 700, (short)MapTypeType.Act51), GenerateDropDto(2115, 1, null, 700, (short)MapTypeType.Act51), GenerateDropDto(2116, 1, null, 700, (short)MapTypeType.Act51), GenerateDropDto(2117, 1, null, 700, (short)MapTypeType.Act51), GenerateDropDto(2129, 1, null, 300, (short)MapTypeType.Act51), GenerateDropDto(2206, 1, null, 500, (short)MapTypeType.Act51), GenerateDropDto(2207, 1, null, 500, (short)MapTypeType.Act51), GenerateDropDto(2282, 1, null, 2500, (short)MapTypeType.Act51), GenerateDropDto(2283, 1, null, 800, (short)MapTypeType.Act51), GenerateDropDto(2284, 1, null, 400, (short)MapTypeType.Act51), GenerateDropDto(2285, 1, null, 200, (short)MapTypeType.Act51), GenerateDropDto(2351, 1, null, 800, (short)MapTypeType.Act51), GenerateDropDto(2379, 1, null, 1000, (short)MapTypeType.Act51), GenerateDropDto(5119, 1, null, 30, (short)MapTypeType.Act51), GenerateDropDto(5853, 1, null, 100, (short)MapTypeType.Act51), GenerateDropDto(5854, 1, null, 100, (short)MapTypeType.Act51), GenerateDropDto(5855, 1, null, 100, (short)MapTypeType.Act51 ), // Act5.2 GenerateDropDto(1004, 1, null, 600, (short)MapTypeType.Act52), GenerateDropDto(1007, 1, null, 600, (short)MapTypeType.Act52), GenerateDropDto(1012, 1, null, 5000, (short)MapTypeType.Act52), GenerateDropDto(1086, 1, null, 400, (short)MapTypeType.Act52), GenerateDropDto(1092, 1, null, 1200, (short)MapTypeType.Act52), GenerateDropDto(1093, 1, null, 1500, (short)MapTypeType.Act52), GenerateDropDto(1094, 1, null, 1200, (short)MapTypeType.Act52), GenerateDropDto(1114, 1, null, 100, (short)MapTypeType.Act52), GenerateDropDto(2098, 1, null, 1500, (short)MapTypeType.Act52), GenerateDropDto(2099, 1, null, 1200, (short)MapTypeType.Act52), GenerateDropDto(2102, 1, null, 1200, (short)MapTypeType.Act52), GenerateDropDto(2114, 1, null, 1200, (short)MapTypeType.Act52), GenerateDropDto(2115, 1, null, 1200, (short)MapTypeType.Act52), GenerateDropDto(2116, 1, null, 1200, (short)MapTypeType.Act52), GenerateDropDto(2117, 1, null, 1200, (short)MapTypeType.Act52), GenerateDropDto(2206, 1, null, 1200, (short)MapTypeType.Act52), GenerateDropDto(2379, 1, null, 3000, (short)MapTypeType.Act52), GenerateDropDto(2380, 1, null, 6000, (short)MapTypeType.Act52), GenerateDropDto(5119, 1, null, 100, (short)MapTypeType.Act52 ), // Act6.1 Angel GenerateDropDto(1004, 1, null, 600, (short)MapTypeType.Act61A), GenerateDropDto(1007, 1, null, 600, (short)MapTypeType.Act61A), GenerateDropDto(1010, 1, null, 400, (short)MapTypeType.Act61A), GenerateDropDto(1012, 1, null, 5000, (short)MapTypeType.Act61A), GenerateDropDto(1028, 1, null, 400, (short)MapTypeType.Act61A), GenerateDropDto(1078, 1, null, 400, (short)MapTypeType.Act61A), GenerateDropDto(1086, 1, null, 400, (short)MapTypeType.Act61A), GenerateDropDto(1092, 1, null, 500, (short)MapTypeType.Act61A), GenerateDropDto(1093, 1, null, 600, (short)MapTypeType.Act61A), GenerateDropDto(1094, 1, null, 600, (short)MapTypeType.Act61A), GenerateDropDto(1114, 1, null, 100, (short)MapTypeType.Act61A), GenerateDropDto(2098, 1, null, 400, (short)MapTypeType.Act61A), GenerateDropDto(2099, 1, null, 600, (short)MapTypeType.Act61A), GenerateDropDto(2102, 1, null, 600, (short)MapTypeType.Act61A), GenerateDropDto(2114, 1, null, 600, (short)MapTypeType.Act61A), GenerateDropDto(2115, 1, null, 600, (short)MapTypeType.Act61A), GenerateDropDto(2116, 1, null, 600, (short)MapTypeType.Act61A), GenerateDropDto(2117, 1, null, 600, (short)MapTypeType.Act61A), GenerateDropDto(2129, 1, null, 400, (short)MapTypeType.Act61A), GenerateDropDto(2206, 1, null, 400, (short)MapTypeType.Act61A), GenerateDropDto(2282, 1, null, 2000, (short)MapTypeType.Act61A), GenerateDropDto(2283, 1, null, 400, (short)MapTypeType.Act61A), GenerateDropDto(2284, 1, null, 200, (short)MapTypeType.Act61A), GenerateDropDto(2285, 1, null, 100, (short)MapTypeType.Act61A), GenerateDropDto(2446, 1, null, 100, (short)MapTypeType.Act61A), GenerateDropDto(2806, 1, null, 300, (short)MapTypeType.Act61A), GenerateDropDto(2807, 1, null, 300, (short)MapTypeType.Act61A), GenerateDropDto(2813, 1, null, 150, (short)MapTypeType.Act61A), GenerateDropDto(2815, 1, null, 200, (short)MapTypeType.Act61A), GenerateDropDto(2816, 1, null, 200, (short)MapTypeType.Act61A), GenerateDropDto(2818, 1, null, 200, (short)MapTypeType.Act61A), GenerateDropDto(2819, 1, null, 200, (short)MapTypeType.Act61A), GenerateDropDto(5119, 1, null, 50, (short)MapTypeType.Act61A), GenerateDropDto(5853, 1, null, 50, (short)MapTypeType.Act61A), GenerateDropDto(5854, 1, null, 50, (short)MapTypeType.Act61A), GenerateDropDto(5855, 1, null, 50, (short)MapTypeType.Act61A), GenerateDropDto(5880, 1, null, 100, (short)MapTypeType.Act61A), // Act6.1 Demon GenerateDropDto(1004, 1, null, 600, (short)MapTypeType.Act61D), GenerateDropDto(1007, 1, null, 600, (short)MapTypeType.Act61D), GenerateDropDto(1010, 1, null, 400, (short)MapTypeType.Act61D), GenerateDropDto(1012, 1, null, 5000, (short)MapTypeType.Act61D), GenerateDropDto(1028, 1, null, 400, (short)MapTypeType.Act61D), GenerateDropDto(1078, 1, null, 400, (short)MapTypeType.Act61D), GenerateDropDto(1086, 1, null, 400, (short)MapTypeType.Act61D), GenerateDropDto(1092, 1, null, 500, (short)MapTypeType.Act61D), GenerateDropDto(1093, 1, null, 600, (short)MapTypeType.Act61D), GenerateDropDto(1094, 1, null, 600, (short)MapTypeType.Act61D), GenerateDropDto(1114, 1, null, 100, (short)MapTypeType.Act61D), GenerateDropDto(2098, 1, null, 500, (short)MapTypeType.Act61D), GenerateDropDto(2099, 1, null, 600, (short)MapTypeType.Act61D), GenerateDropDto(2102, 1, null, 600, (short)MapTypeType.Act61D), GenerateDropDto(2114, 1, null, 600, (short)MapTypeType.Act61D), GenerateDropDto(2115, 1, null, 800, (short)MapTypeType.Act61D), GenerateDropDto(2116, 1, null, 600, (short)MapTypeType.Act61D), GenerateDropDto(2117, 1, null, 600, (short)MapTypeType.Act61D), GenerateDropDto(2129, 1, null, 400, (short)MapTypeType.Act61D), GenerateDropDto(2206, 1, null, 500, (short)MapTypeType.Act61D), GenerateDropDto(2282, 1, null, 2000, (short)MapTypeType.Act61D), GenerateDropDto(2283, 1, null, 400, (short)MapTypeType.Act61D), GenerateDropDto(2284, 1, null, 200, (short)MapTypeType.Act61D), GenerateDropDto(2285, 1, null, 100, (short)MapTypeType.Act61D), GenerateDropDto(2446, 1, null, 150, (short)MapTypeType.Act61D), GenerateDropDto(2806, 1, null, 200, (short)MapTypeType.Act61D), GenerateDropDto(2807, 1, null, 200, (short)MapTypeType.Act61D), GenerateDropDto(2813, 1, null, 150, (short)MapTypeType.Act61D), GenerateDropDto(2815, 1, null, 200, (short)MapTypeType.Act61D), GenerateDropDto(2816, 1, null, 200, (short)MapTypeType.Act61D), GenerateDropDto(2818, 1, null, 200, (short)MapTypeType.Act61D), GenerateDropDto(2819, 1, null, 200, (short)MapTypeType.Act61D), GenerateDropDto(5119, 1, null, 100, (short)MapTypeType.Act61D), GenerateDropDto(5853, 1, null, 50, (short)MapTypeType.Act61D), GenerateDropDto(5854, 1, null, 50, (short)MapTypeType.Act61D), GenerateDropDto(5855, 1, null, 50, (short)MapTypeType.Act61D), GenerateDropDto(5881, 1, null, 100, (short)MapTypeType.Act61D ), // Act6.2 GenerateDropDto(1004, 1, null, 600, (short)MapTypeType.Act62), GenerateDropDto(1007, 1, null, 600, (short)MapTypeType.Act62), GenerateDropDto(1010, 1, null, 400, (short)MapTypeType.Act61), GenerateDropDto(1010, 1, null, 400, (short)MapTypeType.Act62), GenerateDropDto(1012, 1, null, 6000, (short)MapTypeType.Act62), GenerateDropDto(1028, 1, null, 400, (short)MapTypeType.Act62), GenerateDropDto(1078, 1, null, 700, (short)MapTypeType.Act62), GenerateDropDto(1086, 1, null, 400, (short)MapTypeType.Act62), GenerateDropDto(1092, 1, null, 500, (short)MapTypeType.Act62), GenerateDropDto(1093, 1, null, 600, (short)MapTypeType.Act62), GenerateDropDto(1094, 1, null, 600, (short)MapTypeType.Act62), GenerateDropDto(1114, 1, null, 100, (short)MapTypeType.Act62), GenerateDropDto(1191, 1, null, 100, (short)MapTypeType.Act62), GenerateDropDto(1192, 1, null, 100, (short)MapTypeType.Act62), GenerateDropDto(1193, 1, null, 100, (short)MapTypeType.Act62), GenerateDropDto(1194, 1, null, 100, (short)MapTypeType.Act62), GenerateDropDto(2098, 1, null, 500, (short)MapTypeType.Act62), GenerateDropDto(2099, 1, null, 600, (short)MapTypeType.Act62), GenerateDropDto(2102, 1, null, 500, (short)MapTypeType.Act62), GenerateDropDto(2114, 1, null, 400, (short)MapTypeType.Act62), GenerateDropDto(2115, 1, null, 600, (short)MapTypeType.Act62), GenerateDropDto(2116, 1, null, 500, (short)MapTypeType.Act62), GenerateDropDto(2117, 1, null, 600, (short)MapTypeType.Act62), GenerateDropDto(2129, 1, null, 400, (short)MapTypeType.Act62), GenerateDropDto(2206, 1, null, 500, (short)MapTypeType.Act62), GenerateDropDto(2452, 1, null, 100, (short)MapTypeType.Act62), GenerateDropDto(2453, 1, null, 100, (short)MapTypeType.Act62), GenerateDropDto(2454, 1, null, 100, (short)MapTypeType.Act62), GenerateDropDto(2455, 1, null, 100, (short)MapTypeType.Act62), GenerateDropDto(2456, 1, null, 100, (short)MapTypeType.Act62), GenerateDropDto(5119, 1, null, 50, (short)MapTypeType.Act62), GenerateDropDto(5853, 1, null, 50, (short)MapTypeType.Act62), GenerateDropDto(5854, 1, null, 50, (short)MapTypeType.Act62), GenerateDropDto(5855, 1, null, 100, (short)MapTypeType.Act62), // Comet plain GenerateDropDto(1004, 1, null, 300, (short)MapTypeType.CometPlain), GenerateDropDto(1007, 1, null, 300, (short)MapTypeType.CometPlain), GenerateDropDto(1012, 1, null, 7000, (short)MapTypeType.CometPlain), GenerateDropDto(1114, 1, null, 100, (short)MapTypeType.CometPlain), GenerateDropDto(2098, 1, null, 200, (short)MapTypeType.CometPlain), GenerateDropDto(2099, 1, null, 200, (short)MapTypeType.CometPlain), GenerateDropDto(2100, 1, null, 200, (short)MapTypeType.CometPlain), GenerateDropDto(2101, 1, null, 200, (short)MapTypeType.CometPlain), GenerateDropDto(2102, 1, null, 200, (short)MapTypeType.CometPlain), GenerateDropDto(2114, 1, null, 1200, (short)MapTypeType.CometPlain), GenerateDropDto(2115, 1, null, 1200, (short)MapTypeType.CometPlain), GenerateDropDto(2116, 1, null, 1200, (short)MapTypeType.CometPlain), GenerateDropDto(2117, 1, null, 1200, (short)MapTypeType.CometPlain), GenerateDropDto(2205, 1, null, 300, (short)MapTypeType.CometPlain), GenerateDropDto(2206, 1, null, 300, (short)MapTypeType.CometPlain), GenerateDropDto(2207, 1, null, 300, (short)MapTypeType.CometPlain), GenerateDropDto(2208, 1, null, 300, (short)MapTypeType.CometPlain), GenerateDropDto(2296, 1, null, 300, (short)MapTypeType.CometPlain), GenerateDropDto(5119, 1, null, 30, (short)MapTypeType.CometPlain), // Mine1 GenerateDropDto(1002, 1, null, 500, (short)MapTypeType.Mine1), GenerateDropDto(1005, 1, null, 500, (short)MapTypeType.Mine1), GenerateDropDto(1012, 1, null, 11000, (short)MapTypeType.Mine1 ), // Mine2 GenerateDropDto(1002, 1, null, 500, (short)MapTypeType.Mine2), GenerateDropDto(1005, 1, null, 500, (short)MapTypeType.Mine2), GenerateDropDto(1012, 1, null, 11000, (short)MapTypeType.Mine2), GenerateDropDto(1241, 1, null, 200, (short)MapTypeType.Mine2), GenerateDropDto(2099, 1, null, 100, (short)MapTypeType.Mine2), GenerateDropDto(2100, 1, null, 100, (short)MapTypeType.Mine2), GenerateDropDto(2101, 1, null, 100, (short)MapTypeType.Mine2), GenerateDropDto(2102, 1, null, 100, (short)MapTypeType.Mine2), GenerateDropDto(2115, 1, null, 600, (short)MapTypeType.Mine2), GenerateDropDto(2116, 1, null, 600, (short)MapTypeType.Mine2), GenerateDropDto(2205, 1, null, 300, (short)MapTypeType.Mine2 ), // MeadownOfMine GenerateDropDto(1002, 1, null, 400, (short)MapTypeType.MeadowOfMine), GenerateDropDto(1005, 1, null, 400, (short)MapTypeType.MeadowOfMine), GenerateDropDto(1012, 1, null, 10000, (short)MapTypeType.MeadowOfMine), GenerateDropDto(2016, 1, null, 400, (short)MapTypeType.MeadowOfMine), GenerateDropDto(2023, 1, null, 300, (short)MapTypeType.MeadowOfMine), GenerateDropDto(2024, 1, null, 300, (short)MapTypeType.MeadowOfMine), GenerateDropDto(2028, 1, null, 100, (short)MapTypeType.MeadowOfMine), GenerateDropDto(2116, 1, null, 200, (short)MapTypeType.MeadowOfMine), GenerateDropDto(2118, 1, null, 200, (short)MapTypeType.MeadowOfMine), // SunnyPlain GenerateDropDto(1003, 1, null, 300, (short)MapTypeType.SunnyPlain), GenerateDropDto(1006, 1, null, 300, (short)MapTypeType.SunnyPlain), GenerateDropDto(1012, 1, null, 8000, (short)MapTypeType.SunnyPlain), GenerateDropDto(1078, 1, null, 100, (short)MapTypeType.SunnyPlain), GenerateDropDto(1092, 1, null, 200, (short)MapTypeType.SunnyPlain), GenerateDropDto(1093, 1, null, 200, (short)MapTypeType.SunnyPlain), GenerateDropDto(1094, 1, null, 200, (short)MapTypeType.SunnyPlain), GenerateDropDto(2098, 1, null, 200, (short)MapTypeType.SunnyPlain), GenerateDropDto(2099, 1, null, 200, (short)MapTypeType.SunnyPlain), GenerateDropDto(2100, 1, null, 200, (short)MapTypeType.SunnyPlain), GenerateDropDto(2101, 1, null, 200, (short)MapTypeType.SunnyPlain), GenerateDropDto(2102, 1, null, 200, (short)MapTypeType.SunnyPlain), GenerateDropDto(2114, 1, null, 200, (short)MapTypeType.SunnyPlain), GenerateDropDto(2115, 1, null, 300, (short)MapTypeType.SunnyPlain), GenerateDropDto(2116, 1, null, 300, (short)MapTypeType.SunnyPlain), GenerateDropDto(2118, 1, null, 300, (short)MapTypeType.SunnyPlain), GenerateDropDto(2205, 1, null, 300, (short)MapTypeType.SunnyPlain), GenerateDropDto(2206, 1, null, 300, (short)MapTypeType.SunnyPlain), GenerateDropDto(2207, 1, null, 300, (short)MapTypeType.SunnyPlain), GenerateDropDto(2208, 1, null, 300, (short)MapTypeType.SunnyPlain), GenerateDropDto(2296, 1, null, 300, (short)MapTypeType.SunnyPlain), GenerateDropDto(5119, 1, null, 30, (short)MapTypeType.SunnyPlain ), // Fernon GenerateDropDto(1003, 1, null, 500, (short)MapTypeType.Fernon), GenerateDropDto(1006, 1, null, 500, (short)MapTypeType.Fernon), GenerateDropDto(1012, 1, null, 9000, (short)MapTypeType.Fernon), GenerateDropDto(1114, 1, null, 200, (short)MapTypeType.Fernon), GenerateDropDto(1092, 1, null, 300, (short)MapTypeType.Fernon), GenerateDropDto(1093, 1, null, 300, (short)MapTypeType.Fernon), GenerateDropDto(1094, 1, null, 300, (short)MapTypeType.Fernon), GenerateDropDto(2098, 1, null, 300, (short)MapTypeType.Fernon), GenerateDropDto(2099, 1, null, 300, (short)MapTypeType.Fernon), GenerateDropDto(2100, 1, null, 300, (short)MapTypeType.Fernon), GenerateDropDto(2101, 1, null, 400, (short)MapTypeType.Fernon), GenerateDropDto(2102, 1, null, 300, (short)MapTypeType.Fernon), GenerateDropDto(2114, 1, null, 500, (short)MapTypeType.Fernon), GenerateDropDto(2115, 1, null, 500, (short)MapTypeType.Fernon), GenerateDropDto(2116, 1, null, 500, (short)MapTypeType.Fernon), GenerateDropDto(2117, 1, null, 500, (short)MapTypeType.Fernon), GenerateDropDto(2296, 1, null, 400, (short)MapTypeType.Fernon), GenerateDropDto(5119, 1, null, 30, (short)MapTypeType.Fernon), // FernonF GenerateDropDto(1004, 1, null, 600, (short)MapTypeType.FernonF), GenerateDropDto(1007, 1, null, 600, (short)MapTypeType.FernonF), GenerateDropDto(1012, 1, null, 9000, (short)MapTypeType.FernonF), GenerateDropDto(1078, 1, null, 200, (short)MapTypeType.FernonF), GenerateDropDto(1114, 1, null, 200, (short)MapTypeType.FernonF), GenerateDropDto(1092, 1, null, 500, (short)MapTypeType.FernonF), GenerateDropDto(1093, 1, null, 500, (short)MapTypeType.FernonF), GenerateDropDto(1094, 1, null, 500, (short)MapTypeType.FernonF), GenerateDropDto(2098, 1, null, 200, (short)MapTypeType.FernonF), GenerateDropDto(2099, 1, null, 200, (short)MapTypeType.FernonF), GenerateDropDto(2100, 1, null, 200, (short)MapTypeType.FernonF), GenerateDropDto(2101, 1, null, 200, (short)MapTypeType.FernonF), GenerateDropDto(2102, 1, null, 200, (short)MapTypeType.FernonF), GenerateDropDto(2114, 1, null, 700, (short)MapTypeType.FernonF), GenerateDropDto(2115, 1, null, 700, (short)MapTypeType.FernonF), GenerateDropDto(2116, 1, null, 700, (short)MapTypeType.FernonF), GenerateDropDto(2117, 1, null, 700, (short)MapTypeType.FernonF), GenerateDropDto(2205, 1, null, 300, (short)MapTypeType.FernonF), GenerateDropDto(2206, 1, null, 300, (short)MapTypeType.FernonF), GenerateDropDto(2207, 1, null, 300, (short)MapTypeType.FernonF), GenerateDropDto(2208, 1, null, 300, (short)MapTypeType.FernonF), GenerateDropDto(2296, 1, null, 300, (short)MapTypeType.FernonF), GenerateDropDto(5119, 1, null, 30, (short)MapTypeType.FernonF), // Cliff GenerateDropDto(1012, 1, null, 8000, (short)MapTypeType.Cliff), GenerateDropDto(2098, 1, null, 400, (short)MapTypeType.Cliff), GenerateDropDto(2099, 1, null, 400, (short)MapTypeType.Cliff), GenerateDropDto(2100, 1, null, 400, (short)MapTypeType.Cliff), GenerateDropDto(2101, 1, null, 400, (short)MapTypeType.Cliff), GenerateDropDto(2102, 1, null, 400, (short)MapTypeType.Cliff), GenerateDropDto(2296, 1, null, 400, (short)MapTypeType.Cliff), GenerateDropDto(5119, 1, null, 30, (short)MapTypeType.Cliff ), // LandOfTheDead GenerateDropDto(1007, 1, null, 800, (short)MapTypeType.LandOfTheDead), GenerateDropDto(1010, 1, null, 800, (short)MapTypeType.LandOfTheDead), GenerateDropDto(1012, 1, null, 8000, (short)MapTypeType.LandOfTheDead), GenerateDropDto(1015, 1, null, 600, (short)MapTypeType.LandOfTheDead), GenerateDropDto(1016, 1, null, 600, (short)MapTypeType.LandOfTheDead), GenerateDropDto(1078, 1, null, 400, (short)MapTypeType.LandOfTheDead), GenerateDropDto(1114, 1, null, 400, (short)MapTypeType.LandOfTheDead), GenerateDropDto(1019, 1, null, 2000, (short)MapTypeType.LandOfTheDead), GenerateDropDto(1020, 1, null, 1200, (short)MapTypeType.LandOfTheDead), GenerateDropDto(1021, 1, null, 600, (short)MapTypeType.LandOfTheDead), GenerateDropDto(1022, 1, null, 300, (short)MapTypeType.LandOfTheDead), GenerateDropDto(1211, 1, null, 250, (short)MapTypeType.LandOfTheDead), GenerateDropDto(5119, 1, null, 100, (short)MapTypeType.LandOfTheDead ) }; IEnumerable<DropDto> dropDtos = drops; return dropDao.TryInsertOrUpdateAsync(dropDtos); } } } ================================================ FILE: src/NosCore.Parser/Parsers/Generic/DatDocumentationGenerator.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace NosCore.Parser.Parsers.Generic { // Emits a NSgtd-style Markdown dump of a builder's metadata. // // Layout: // 1. Shape template — one line per section, tab-indented. Columns render as // `{PropertyName}` for parsed fields, `{DocName}` for documented-not-read // columns, or `0` for columns we have no metadata on. // 2. Per-section tables — column / name / type / description. // 3. Computed / multi-section fields — lambdas without a single (section, col). public static class DatDocumentationGenerator { public static string Generate<T>(FluentParserBuilder<T> builder) where T : new() { // Parser plumbing (leading empty + section tag) ends at builder.FirstIndex; // real .dat data columns start at the next slot. Skip the plumbing in the // rendered shape and in the "not read" / "without metadata" tables. var firstDataColumn = builder.FirstIndex + 1; var sb = new StringBuilder(); sb.Append("# ").AppendLine(builder.FileName); sb.AppendLine(); // Schema derives from the parser's Field calls themselves. A section // exists in the doc iff at least one Field reads it; each section's // column count is inferred as `max(column)+1` from those reads. That // means the "columns not read" gap list only covers the range we have // evidence about — we can't flag columns or whole sections we've never // seen without reading the actual .dat file. var fieldsBySection = builder.Fields .Where(f => f.Section != null) .GroupBy(f => f.Section!) .ToDictionary(g => g.Key, g => g.ToList()); var docsBySection = builder.ColumnDocs .GroupBy(d => d.Section) .ToDictionary(g => g.Key, g => g.ToList()); var notesBySection = builder.SectionNotes .GroupBy(n => n.Section) .ToDictionary(g => g.Key, g => g.Select(n => n.Description).ToList()); var orderedSections = fieldsBySection.Keys .Union(docsBySection.Keys) .OrderBy(s => s) .ToList(); // Pass 1 — build the shape template. Placeholder is always the // DTO property name (for parsed columns) or the Doc name (for // documented-not-read columns); the per-section tables below // carry the description so we don't need a separate References block. var shape = new StringBuilder(); shape.AppendLine("```text"); foreach (var section in orderedSections) { shape.Append('\t').Append(section); fieldsBySection.TryGetValue(section, out var sectionFields); docsBySection.TryGetValue(section, out var sectionDocs); var maxField = sectionFields?.Max(f => f.Column ?? -1) ?? -1; var maxDoc = sectionDocs?.Max(d => d.Column) ?? -1; var columnCount = Math.Max(maxField, maxDoc) + 1; for (var col = firstDataColumn; col < columnCount; col++) { var match = sectionFields?.FirstOrDefault(f => f.Column == col); var doc = sectionDocs?.FirstOrDefault(d => d.Column == col); string placeholder; if (match != null) { placeholder = $"{{{match.PropertyName}}}"; } else if (doc != null) { placeholder = $"{{{doc.Name}}}"; } else { // Matches the existing parser comment-header convention: `0` // for columns we don't currently read but fall within the // inferred section extent. placeholder = "0"; } shape.Append('\t').Append(placeholder); } shape.AppendLine(); } shape.AppendLine("```"); sb.Append(shape); sb.AppendLine(); // Pass 2 — per-section tables. foreach (var section in orderedSections) { fieldsBySection.TryGetValue(section, out var sectionFields); docsBySection.TryGetValue(section, out var sectionDocs); if ((sectionFields == null || sectionFields.Count == 0) && (sectionDocs == null || sectionDocs.Count == 0)) { continue; } sb.Append("## ").AppendLine(section); sb.AppendLine(); if (notesBySection.TryGetValue(section, out var notes)) { foreach (var note in notes) sb.AppendLine(note); sb.AppendLine(); } sb.AppendLine("| Column | Status | Name | Type | Description |"); sb.AppendLine("|---:|---|---|---|---|"); var covered = new HashSet<int>(); var parsedRows = (sectionFields?.Select(f => (Col: f.Column ?? -1, Status: "Parsed", Name: f.PropertyName, Type: f.PropertyTypeName, Desc: f.Description ?? "")) ?? Enumerable.Empty<(int, string, string, string, string)>()).ToList(); var parsedCols = new HashSet<int>(parsedRows.Where(r => r.Col >= 0).Select(r => r.Col)); var docRows = sectionDocs? .Where(d => !parsedCols.Contains(d.Column)) .Select(d => (Col: d.Column, Status: "NonParsed", Name: d.Name, Type: "", Desc: d.Description ?? "")) ?? Enumerable.Empty<(int, string, string, string, string)>(); var namedRows = parsedRows.Concat(docRows).ToList(); foreach (var row in namedRows) { if (row.Col >= 0) covered.Add(row.Col); } var maxKnownColumn = covered.Count > 0 ? covered.Max() : firstDataColumn - 1; var unknownRows = Enumerable.Range(firstDataColumn, maxKnownColumn - firstDataColumn + 1) .Where(i => !covered.Contains(i)) .Select(i => (Col: i, Status: "Unknown", Name: "", Type: "", Desc: "")); foreach (var row in namedRows.Concat(unknownRows).OrderBy(r => r.Col).ThenBy(r => r.Name)) { sb.Append("| ").Append(row.Col >= 0 ? row.Col.ToString() : "-") .Append(" | ").Append(row.Status) .Append(" | ").Append(row.Name) .Append(" | ").Append(row.Type) .Append(" | ").Append(row.Desc).AppendLine(" |"); } sb.AppendLine(); } // Pass 3 — computed / multi-section. var computed = builder.Fields.Where(f => f.Section == null).ToList(); if (computed.Count > 0) { sb.AppendLine("## Computed / multi-section fields"); sb.AppendLine(); sb.AppendLine("| DTO property | Type | Source | Description |"); sb.AppendLine("|---|---|---|---|"); foreach (var f in computed.OrderBy(f => f.PropertyName)) { sb.Append("| ").Append(f.PropertyName) .Append(" | ").Append(f.PropertyTypeName) .Append(" | ").Append(f.Source ?? "") .Append(" | ").Append(f.Description ?? "").AppendLine(" |"); } sb.AppendLine(); } return sb.ToString(); } } } ================================================ FILE: src/NosCore.Parser/Parsers/Generic/DatFieldMetadata.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.Parser.Parsers.Generic { // Column-level metadata attached to each `.Field(...)` call in a parser builder. // The doc generator reads these to emit per-section tables and to diff against // the curated `ExpectedColumns` schema, surfacing .dat columns we don't read. public sealed record DatFieldMetadata( string PropertyName, string PropertyTypeName, string? Section, int? Row, int? Column, string? Source, string? Description); // Free-form note attached to a whole section (e.g. ETC bitmask semantics). public sealed record DatSectionNote(string Section, string Description); // A column the parser knows about but doesn't read. Lets us carry NSgtd-style // documentation on unparsed columns so the shape header still names them // (`{DisappearAfterSeconds}` instead of `0`) and the section table explains // their purpose. public sealed record DatColumnDoc( string Section, int Column, string Name, string? Description); // Curated claim about how many columns a section is expected to carry, for gap // detection. `ColumnDescriptions[i]` is the human-readable purpose of column i. public sealed record DatSectionSchema( string Section, int ExpectedColumnCount, string[]? ColumnDescriptions = null); } ================================================ FILE: src/NosCore.Parser/Parsers/Generic/FluentParserBuilder.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Enumerations.I18N; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq.Expressions; using System.Threading.Tasks; namespace NosCore.Parser.Parsers.Generic { public class FluentParserBuilder<T> where T : new() { private readonly string _fileAddress; private readonly string _endPattern; private readonly int _firstIndex; private readonly Dictionary<string, Func<Dictionary<string, string[][]>, object?>> _actionList = new(); private readonly List<DatFieldMetadata> _fields = new(); private readonly List<DatSectionNote> _sectionNotes = new(); private readonly List<DatSectionSchema> _sectionSchemas = new(); private readonly List<DatColumnDoc> _columnDocs = new(); private string _splitter = "\t"; private FluentParserBuilder(string fileAddress, string endPattern, int firstIndex = 1) { _fileAddress = fileAddress; _endPattern = endPattern; _firstIndex = firstIndex; } public static FluentParserBuilder<T> Create(string fileAddress, string endPattern, int firstIndex = 1) { return new FluentParserBuilder<T>(fileAddress, endPattern, firstIndex); } // The canonical filename this builder targets (for doc generation output). public string FileName => Path.GetFileName(_fileAddress); // Parser-level index where the section tag sits in the split row. Data // columns start at `FirstIndex + 1`. Exposed so the doc generator can // distinguish parser plumbing from real .dat columns. public int FirstIndex => _firstIndex; public IReadOnlyList<DatFieldMetadata> Fields => _fields; public IReadOnlyList<DatSectionNote> SectionNotes => _sectionNotes; public IReadOnlyList<DatSectionSchema> SectionSchemas => _sectionSchemas; public IReadOnlyList<DatColumnDoc> ColumnDocs => _columnDocs; public FluentParserBuilder<T> WithSplitter(string splitter) { _splitter = splitter; return this; } public FluentParserBuilder<T> Field<TProperty>( Expression<Func<T, TProperty>> propertyExpression, Func<Dictionary<string, string[][]>, object?> extractor, string? source = null, string? description = null) { return Field(propertyExpression, extractor, Array.Empty<(string, int, int)>(), source, description); } public FluentParserBuilder<T> Field<TProperty>( Expression<Func<T, TProperty>> propertyExpression, Func<Dictionary<string, string[][]>, object?> extractor, (string Section, int Row, int Column)[] reads, string? source = null, string? description = null) { var propertyName = GetPropertyName(propertyExpression); _actionList[propertyName] = extractor; if (reads.Length == 0) { _fields.Add(new DatFieldMetadata( propertyName, typeof(TProperty).Name, Section: null, Row: null, Column: null, Source: source, Description: description)); } else { foreach (var (section, row, column) in reads) { _fields.Add(new DatFieldMetadata( propertyName, typeof(TProperty).Name, section, row, column, Source: source, Description: description)); } } return this; } public FluentParserBuilder<T> Field<TProperty>( Expression<Func<T, TProperty>> propertyExpression, string section, int row, int column, string? description = null) { var propertyName = GetPropertyName(propertyExpression); _actionList[propertyName] = chunk => ConvertValue<TProperty>(chunk[section][row][column]); _fields.Add(new DatFieldMetadata( propertyName, typeof(TProperty).Name, section, row, column, Source: null, description)); return this; } public FluentParserBuilder<T> Field<TProperty>( Expression<Func<T, TProperty>> propertyExpression, string section, int row, int column, Func<string, TProperty> converter, string? description = null) { var propertyName = GetPropertyName(propertyExpression); _actionList[propertyName] = chunk => converter(chunk[section][row][column]); _fields.Add(new DatFieldMetadata( propertyName, typeof(TProperty).Name, section, row, column, Source: null, description)); return this; } // Section-level documentation. Call once per section that needs extra prose // (bitmask layouts, ID encodings, etc.). public FluentParserBuilder<T> Describe(string section, string description) { _sectionNotes.Add(new DatSectionNote(section, description)); return this; } // Document a column the parser doesn't actually read. Zero effect on // parsing; the doc generator surfaces the `name` as the shape placeholder // and renders `description` alongside the parsed columns so reviewers // can see *what we know exists* vs *what we actually capture*. public FluentParserBuilder<T> Doc(string section, int column, string name, string? description = null) { _columnDocs.Add(new DatColumnDoc(section, column, name, description)); return this; } // Declare how many columns the section is *supposed* to carry. Gap detection // flags any column not covered by a typed `.Field(...)` call. public FluentParserBuilder<T> ExpectedColumns(string section, int count, params string[] columnDescriptions) { _sectionSchemas.Add(new DatSectionSchema(section, count, columnDescriptions is { Length: > 0 } ? columnDescriptions : null)); return this; } public FluentParser<T> Build(ILoggerFactory loggerFactory, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { return new FluentParser<T>(_fileAddress, _endPattern, _firstIndex, _actionList, _splitter, loggerFactory, logLanguage); } private static string GetPropertyName<TProperty>(Expression<Func<T, TProperty>> expression) { if (expression.Body is MemberExpression memberExpression) { return memberExpression.Member.Name; } throw new ArgumentException("Expression must be a member expression", nameof(expression)); } private static object? ConvertValue<TProperty>(string value) { var targetType = typeof(TProperty); var underlyingType = Nullable.GetUnderlyingType(targetType) ?? targetType; if (underlyingType == typeof(string)) return value; if (underlyingType == typeof(short)) return Convert.ToInt16(value); if (underlyingType == typeof(int)) return Convert.ToInt32(value); if (underlyingType == typeof(long)) return Convert.ToInt64(value); if (underlyingType == typeof(byte)) return Convert.ToByte(value); if (underlyingType == typeof(bool)) return value == "1"; if (underlyingType.IsEnum) return Enum.Parse(underlyingType, value); return Convert.ChangeType(value, underlyingType); } } public class FluentParser<T> where T : new() { private readonly GenericParser<T> _parser; private readonly string _splitter; internal FluentParser( string fileAddress, string endPattern, int firstIndex, Dictionary<string, Func<Dictionary<string, string[][]>, object?>> actionList, string splitter, ILoggerFactory loggerFactory, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { _parser = new GenericParser<T>(fileAddress, endPattern, firstIndex, actionList, loggerFactory.CreateLogger<GenericParser<T>>(), logLanguage); _splitter = splitter; } public Task<List<T>> GetDtosAsync() { return _parser.GetDtosAsync(_splitter); } } } ================================================ FILE: src/NosCore.Parser/Parsers/Generic/GenericParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using FastMember; using NosCore.Data.Enumerations.I18N; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NosCore.Parser.Parsers.Generic { public class GenericParser<T>(string fileAddress, string endPattern, int firstIndex, Dictionary<string, Func<Dictionary<string, string[][]>, object?>> actionList, ILogger<GenericParser<T>> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) where T : new() { private readonly TypeAccessor _typeAccessor = TypeAccessor.Create(typeof(T), true); private IEnumerable<string> ParseTextFromFile() { using var stream = new StreamReader(fileAddress, Encoding.Default); var content = stream.ReadToEnd(); var i = 0; return content.Split(endPattern).Select(s => $"{(i++ == 0 ? "" : endPattern)}{s}"); } public Task<List<T>> GetDtosAsync() => GetDtosAsync("\t"); public async Task<List<T>> GetDtosAsync(string splitter) { var items = ParseTextFromFile(); ConcurrentBag<T> resultCollection = new ConcurrentBag<T>(); await Task.WhenAll(items.Select(item => Task.Run(() => { var lines = item.Split( new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None ) .Select(s => s.Split(splitter)) .Where(s => s.Length > firstIndex) .GroupBy(x => x[firstIndex]).ToDictionary(x => x.Key, y => y.ToArray()); if (lines.Count == 0) { return; } try { var parsedItem = new T(); foreach (var actionOnKey in actionList.Keys) { try { _typeAccessor[parsedItem, actionOnKey] = actionList[actionOnKey].Invoke(lines); } catch (Exception ex) { ex.Data.Add("actionKey", actionOnKey); throw; } } resultCollection.Add(parsedItem); } catch (Exception ex) { logger.LogTrace(logLanguage[LogLanguageKey.CHUNK_FORMAT_INVALID], lines, ex); } }))); return resultCollection.ToList(); } } } ================================================ FILE: src/NosCore.Parser/Parsers/I18NParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { public class I18NParser<TDto, TPk>(IDao<TDto, TPk> dao, ILogger<I18NParser<TDto, TPk>> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) where TDto : II18NDto, new() where TPk : struct { private string I18NTextFileName(string textfilename, RegionType region) { var regioncode = region.ToString().ToLower(); regioncode = regioncode == "en" ? "uk" : regioncode == "cs" ? "cz" : regioncode; return string.Format(textfilename, regioncode); } public Task InsertI18NAsync(string file, LogLanguageKey logLanguageKey) { var listoftext = dao.LoadAll().ToDictionary(x => (x.Key, x.RegionType), x => x.Text); return Task.WhenAll(((RegionType[])Enum.GetValues(typeof(RegionType))).Select(async region => { var dtos = new Dictionary<string, TDto>(); try { using var stream = new StreamReader(I18NTextFileName(file, region), Encoding.Default); var lines = (await stream.ReadToEndAsync()).Split( new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None ); foreach (var line in lines) { var currentLine = line.Split('\t'); if (currentLine.Length > 1 && !listoftext.ContainsKey((currentLine[0], region)) && !dtos.ContainsKey(currentLine[0])) { dtos.Add(currentLine[0], new TDto() { Key = currentLine[0], RegionType = region, Text = currentLine[1], }); } } await dao.TryInsertOrUpdateAsync(dtos.Values); logger.LogInformation( logLanguage[logLanguageKey], dtos.Count, region); } catch (FileNotFoundException) { logger.LogWarning(logLanguage[LogLanguageKey.LANGUAGE_MISSING]); } })); } } } ================================================ FILE: src/NosCore.Parser/Parsers/ItemParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Items; using NosCore.Data.StaticEntities; using NosCore.Packets.Enumerations; using NosCore.Parser.Parsers.Generic; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { public class ItemParser(IDao<ItemDto, short> itemDao, IDao<BCardDto, short> bCardDao, ILoggerFactory loggerFactory, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { private readonly ILogger<ItemParser> _logger = loggerFactory.CreateLogger<ItemParser>(); // VNUM {VNum} {Price} // NAME {Name} // INDEX 0 0 0 0 0 0 // TYPE 0 0 // FLAG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 // DATA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 // BUFF 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 // LINEDESC 0 //{Desc} // END //#======================================================== private readonly string _itemCardDto = $"{Path.DirectorySeparatorChar}Item.dat"; public FluentParserBuilder<ItemDto> BuildParser(string folder) { return FluentParserBuilder<ItemDto>.Create(folder + _itemCardDto, "END", 1) .Field(x => x.VNum, "VNUM", 0, 2, s => Convert.ToInt16(s), "Item vnum") .Field(x => x.Price, "VNUM", 0, 3, s => Convert.ToInt64(s), "NPC shop sell price") .Field(x => x.ReputPrice, chunk => chunk["FLAG"][0][21] == "1" ? Convert.ToInt64(chunk["VNUM"][0][3]) : 0, source: "FLAG[20] + VNUM[1]", description: "Reputation price when FLAG[20] is set") .Field(x => x.NameI18NKey, "NAME", 0, 2, s => s, "Localization key (zts##e)") .Field(x => x.Type, chunk => ImportType(chunk), source: "FLAG[25] + DATA[0] + INDEX[0,1]", description: "Pocket type: FLAG[25]==1 -> Raid, DATA[0]==1000 && INDEX[1]==4 -> Mount, else legacy INDEX[0] map") .Field(x => x.ItemType, chunk => ImportItemType(chunk), source: "INDEX[0,1]", description: "ItemType composite enum") .Field(x => x.ItemSubType, "INDEX", 0, 4, s => Convert.ToByte(s), "Subtype within item category") .Field(x => x.EquipmentSlot, chunk => ImportEquipmentType(chunk), source: "INDEX[3]", description: "Equipment slot") .Field(x => x.Morph, chunk => ImportEffect(chunk) == ItemEffectType.ApplySkinPartner ? Convert.ToInt16(chunk["INDEX"][0][5]) : ImportEquipmentType(chunk) != EquipmentType.Amulet ? Convert.ToInt16(chunk["INDEX"][0][7]) : default, source: "INDEX[3] + INDEX[5]", description: "Morph id (partner skin) or effect value") .Field(x => x.Class, chunk => ImportEquipmentType(chunk) == EquipmentType.Fairy ? (byte)15 : Convert.ToByte(chunk["TYPE"][0][3]), source: "TYPE[1] (fairy override: 15)", description: "Class restriction bitmask") .Field(x => x.Flag8, "FLAG", 0, 24, s => s == "1", "FLAG bit 23 (unknown)") .Field(x => x.Flag7, "FLAG", 0, 23, s => s == "1", "FLAG bit 22 (unknown)") .Field(x => x.IsHeroic, "FLAG", 0, 22, s => s == "1", "Heroic item") .Field(x => x.Flag6, "FLAG", 0, 20, s => s == "1", "FLAG bit 19 (unknown)") .Field(x => x.Sex, chunk => chunk["FLAG"][0][18] == "1" ? (byte)1 : chunk["FLAG"][0][17] == "1" ? (byte)2 : (byte)0, source: "FLAG[16] + FLAG[17]", description: "Gender restriction: 1=female, 2=male, 0=any") .Field(x => x.IsColored, "FLAG", 0, 16, s => s == "1", "Uses design slot for color") .Field(x => x.RequireBinding, "FLAG", 0, 15, s => s == "1", "Binds to character on use/equip") .Field(x => x.Flag4, "FLAG", 0, 14, s => s == "1", "FLAG bit 13 (unknown)") .Field(x => x.Flag3, "FLAG", 0, 13, s => s == "1", "FLAG bit 12 (unknown)") .Field(x => x.Flag2, "FLAG", 0, 12, s => s == "1", "FLAG bit 11 (set on mounts + raid items + partner equipment)") .Field(x => x.Flag1, "FLAG", 0, 11, s => s == "1", "FLAG bit 10 (unknown)") .Field(x => x.Flag9, "FLAG", 0, 10, s => s == "1", "FLAG bit 9 (appears on beads, medals, raid seals)") .Field(x => x.IsWarehouse, "FLAG", 0, 9, s => s == "1", "Can be stored in the account warehouse") .Field(x => x.IsMinilandActionable, "FLAG", 0, 8, s => s == "1", "Miniland-actionable object") .Field(x => x.IsTradable, "FLAG", 0, 7, s => s == "0", "Inverted: dat=0 -> tradable") .Field(x => x.IsDroppable, "FLAG", 0, 6, s => s == "0", "Inverted: dat=0 -> droppable") .Field(x => x.IsSoldable, "FLAG", 0, 5, s => s == "0", "Inverted: dat=0 -> soldable") .Field(x => x.LevelMinimum, chunk => ImportLevelMinimum(chunk), source: "DATA[varies]", description: "Minimum level to equip/use, per-ItemType") .Field(x => x.BCards, chunk => ImportBCards(chunk), source: "BUFF[0..24]", description: "Up to 5 BCard groups (5 fields each)") .Field(x => x.Effect, chunk => ImportEffect(chunk), source: "DATA[varies] per ItemType", description: "ItemEffectType enum") .Field(x => x.EffectValue, chunk => ImportEffectValue(chunk), source: "DATA[varies] per ItemType", description: "Effect numeric argument") .Field(x => x.FireResistance, chunk => ImportResistance(chunk, ElementType.Fire), source: "DATA[7] or DATA[15]", description: "Fire resistance; SP uses DATA[15], others DATA[7]") .Field(x => x.DarkResistance, chunk => ImportResistance(chunk, ElementType.Dark), source: "DATA[11] or DATA[18]", description: "Dark resistance; SP uses DATA[18]") .Field(x => x.LightResistance, chunk => ImportResistance(chunk, ElementType.Light), source: "DATA[9] or DATA[17]", description: "Light resistance; SP uses DATA[17]") .Field(x => x.WaterResistance, chunk => ImportResistance(chunk, ElementType.Water), source: "DATA[8] or DATA[16]", description: "Water resistance; SP uses DATA[16]") .Field(x => x.Hp, chunk => ImportHp(chunk), source: "DATA[varies]", description: "Hp bonus on equip") .Field(x => x.Mp, chunk => ImportMp(chunk), source: "DATA[varies]", description: "Mp bonus on equip") .Field(x => x.MinilandObjectPoint, chunk => ImportMinilandObjectPoint(chunk), source: "DATA[2] (miniland only)", description: "Miniland point value") .Field(x => x.Width, chunk => ImportWidth(chunk), source: "DATA[3] (miniland only)", description: "Miniland object footprint width") .Field(x => x.Height, chunk => ImportHeight(chunk), source: "DATA[4] (miniland only)", description: "Miniland object footprint height") .Field(x => x.DefenceDodge, chunk => ImportDefenceDodge(chunk), source: "DATA[varies]", description: "Dodge chance") .Field(x => x.CloseDefence, chunk => ImportCloseDefence(chunk), source: "DATA[varies]", description: "Melee defence") .Field(x => x.DistanceDefence, chunk => ImportDistanceDefence(chunk), source: "DATA[varies]", description: "Ranged defence") .Field(x => x.MagicDefence, chunk => ImportMagicDefence(chunk), source: "DATA[varies]", description: "Magic defence") .Field(x => x.BasicUpgrade, chunk => ImportBasicUpgrade(chunk), source: "DATA[varies]", description: "Base upgrade level") .Field(x => x.WaitDelay, chunk => ImportWaitDelay(chunk), source: "DATA[varies]", description: "Cooldown / use delay") .Field(x => x.ElementRate, chunk => ImportElementRate(chunk), source: "DATA[varies]", description: "Element rate %") .Field(x => x.Speed, chunk => ImportSpeed(chunk), source: "DATA[varies]", description: "Movement speed bonus / vehicle speed") .Field(x => x.SpType, chunk => ImportSpType(chunk), source: "DATA[varies] (SP only)", description: "SP transformation type") .Field(x => x.LevelJobMinimum, chunk => ImportLevelJobMinimum(chunk), source: "DATA[varies]", description: "Minimum job level to use/equip") .Field(x => x.ReputationMinimum, chunk => ImportReputationMinimum(chunk), source: "DATA[varies]", description: "Minimum reputation tier") .Field(x => x.ItemValidTime, chunk => ImportItemValidTime(chunk), source: "DATA[varies]", description: "Expiration duration in seconds") .Field(x => x.Element, chunk => ImportElement(chunk), source: "DATA[varies]", description: "Primary elemental alignment") .Field(x => x.MaxCellonLvl, chunk => ImportMaxCellonLvl(chunk), source: "DATA[varies]", description: "Max cellon level") .Field(x => x.MaxCellon, chunk => ImportMaxCellon(chunk), source: "DATA[varies]", description: "Max cellons slotted") .Field(x => x.DistanceDefenceDodge, chunk => ImportDistanceDefenceDodge(chunk), source: "DATA[varies]", description: "Ranged dodge chance") .Field(x => x.MaximumAmmo, chunk => ImportMaximumAmmo(chunk), source: "DATA[varies]", description: "Max ammo") .Field(x => x.CriticalRate, chunk => ImportCriticalRate(chunk), source: "DATA[varies]", description: "Critical hit chance") .Field(x => x.CriticalLuckRate, chunk => ImportCriticalLuckRate(chunk), source: "DATA[varies]", description: "Critical luck multiplier") .Field(x => x.HitRate, chunk => ImportHitRate(chunk), source: "DATA[varies]", description: "Hit rate") .Field(x => x.DamageMaximum, chunk => ImportDamageMaximum(chunk), source: "DATA[varies]", description: "Max weapon damage") .Field(x => x.DamageMinimum, chunk => ImportDamageMinimum(chunk), source: "DATA[varies]", description: "Min weapon damage") .Describe("FLAG", "25 boolean bits. FLAG[25] identifies raid-inventory items (seals, boxes, chests, drops).") .Doc("FLAG", 17, "FemaleOnly", "Set together with FLAG[18]=0 to mark a female-only item; rolled up into Sex.") .Doc("FLAG", 18, "MaleOnly", "Set together with FLAG[17]=0 to mark a male-only item; rolled up into Sex.") .Doc("FLAG", 25, "RaidItem", "Set on raid seals, raid boxes, chests and drops — routed to the Raid pocket.") .Doc("FLAG", 26, "UnknownLastBit"); } public async Task ParseAsync(string folder) { var parser = BuildParser(folder).Build(loggerFactory, logLanguage); var items = (await parser.GetDtosAsync()).GroupBy(p => p.VNum).Select(g => g.First()).ToList(); foreach (var item in items) { HardcodeItem(item); if (item.ItemType != ItemType.Specialist) { continue; } var elementdic = new Dictionary<ElementType, int> { { ElementType.Neutral, 0 }, { ElementType.Fire, item.FireResistance }, { ElementType.Water, item.WaterResistance }, { ElementType.Light, item.LightResistance }, { ElementType.Dark, item.DarkResistance } }.OrderByDescending(s => s.Value).ToList(); item.Element = elementdic.First().Key; if (elementdic.First().Value != 0 && elementdic.First().Value == elementdic.ElementAt(1).Value) { item.SecondaryElement = elementdic.ElementAt(1).Key; } } SetVehicles(items, new Dictionary<byte, List<(short, short)>> { { 20, new List<(short, short)> { (9054, 2368), (1906, 2368), (9055, 2370), (1907, 2370), (9058, 2406), (1965, 2406), (9065, 2411), (5008, 2411), (5238, 1817), (5226, 1817), (5240, 1819), (5228, 1819), (5234, 2522), (5236, 2524) } }, { 21, new List<(short, short)> { (9070, 2429), (5117, 2429), (9073, 2432), (5152, 2432), (5196, 2517), (9078, 2520), (5232, 2520), (5321, 2528), (9090, 2934), (5386, 2934), (9091, 2936), (5387, 2936), (9092, 2938), (5388, 2938), (9093, 2940), (5389, 2940), (9094, 2942), (5390, 2942), (5391, 2944), (9115, 3679), (5997, 3679), (9079, 2522), (9080, 2524), (9081, 1817), (9082, 1819) } }, { 22, new List<(short, short)> { (9083, 2526), (5319, 2526), (5323, 2530), (9086, 2928), (5330, 2928), (9088, 2932), (5360, 2932), (9084, 2528), (9085, 2930) } }, { 14, new List<(short, short)> { (9087, 2930), (5332, 2930), (5914, 2513) } }, { 16, new List<(short, short)> { (5173, 2511) } }, }); await itemDao.TryInsertOrUpdateAsync(items); await bCardDao.TryInsertOrUpdateAsync(items.Where(s => s.BCards != null).SelectMany(s => s.BCards)); _logger.LogInformation(logLanguage[LogLanguageKey.ITEMS_PARSED], items.Count); } private List<BCardDto> ImportBCards(Dictionary<string, string[][]> chunk) { var list = new List<BCardDto>(); for (var i = 0; i < 5; i++) { var type = (byte)int.Parse(chunk["BUFF"][0][2 + 5 * i]); if ((type == 0) || (type == 255)) { continue; } var first = int.Parse(chunk["BUFF"][0][3 + 5 * i]); var comb = new BCardDto { ItemVNum = Convert.ToInt16(chunk["VNUM"][0][2]), Type = type, SubType = (byte)((int.Parse(chunk["BUFF"][0][5 + 5 * i]) + 1) * 10 + 1), IsLevelScaled = Convert.ToBoolean(first % 4), IsLevelDivided = (uint)(first < 0 ? 0 : first) % 4 == 2, FirstData = (short)(first > 0 ? first : -first / 4), SecondData = (short)(int.Parse(chunk["BUFF"][0][4 + 5 * i]) / 4), ThirdData = (short)(int.Parse(chunk["BUFF"][0][6 + 5 * i]) / 4) }; list.Add(comb); } return list; } private byte ImportLevelMinimum(Dictionary<string, string[][]> chunk) { return Convert.ToByte(ImportItemType(chunk) switch { ItemType.Fashion => chunk["DATA"][0][2], ItemType.Armor => chunk["DATA"][0][2], ItemType.Weapon => chunk["DATA"][0][2], ItemType.Jewelery when ImportEquipmentType(chunk) != EquipmentType.Fairy => chunk["DATA"][0][2], ItemType.Box => chunk["DATA"][0][4], _ => "0" }); } private int ImportEffectValue(Dictionary<string, string[][]> chunk) { return Convert.ToInt32(ImportItemType(chunk) switch { ItemType.Fashion when ImportEquipmentType(chunk) == EquipmentType.Amulet => chunk["INDEX"][0][7], ItemType.Special when ImportEffect(chunk) == ItemEffectType.ApplySkinPartner => chunk["DATA"][0][5], ItemType.Box => chunk["DATA"][0][3], ItemType.Event => chunk["DATA"][0][7], ItemType.Magical => chunk["DATA"][0][4], ItemType.Production => chunk["DATA"][0][4], ItemType.Map => chunk["DATA"][0][4], ItemType.Main => chunk["DATA"][0][4], ItemType.Teacher => chunk["DATA"][0][4], ItemType.Special => chunk["DATA"][0][4], ItemType.House => chunk["DATA"][0][8], ItemType.Garden => chunk["DATA"][0][8], ItemType.Minigame => chunk["DATA"][0][8], ItemType.Terrace => chunk["DATA"][0][8], ItemType.MinilandTheme => chunk["DATA"][0][8], _ => "0" }); } private int ImportMinilandObjectPoint(Dictionary<string, string[][]> chunk) { return Convert.ToInt32(ImportItemType(chunk) switch { ItemType.House => chunk["DATA"][0][2], ItemType.Garden => chunk["DATA"][0][2], ItemType.Minigame => chunk["DATA"][0][2], ItemType.Terrace => chunk["DATA"][0][2], ItemType.MinilandTheme => chunk["DATA"][0][2], _ => "0" }); } private byte ImportWidth(Dictionary<string, string[][]> chunk) { return Convert.ToByte(ImportItemType(chunk) switch { ItemType.House => chunk["DATA"][0][9], ItemType.Garden => chunk["DATA"][0][9], ItemType.Minigame => chunk["DATA"][0][9], ItemType.Terrace => chunk["DATA"][0][9], ItemType.MinilandTheme => chunk["DATA"][0][9], _ => "0" }); } private byte ImportHeight(Dictionary<string, string[][]> chunk) { return Convert.ToByte(ImportItemType(chunk) switch { ItemType.House => chunk["DATA"][0][10], ItemType.Garden => chunk["DATA"][0][10], ItemType.Minigame => chunk["DATA"][0][10], ItemType.Terrace => chunk["DATA"][0][10], ItemType.MinilandTheme => chunk["DATA"][0][10], _ => "0" }); } private short ImportMp(Dictionary<string, string[][]> chunk) { return Convert.ToInt16(ImportItemType(chunk) switch { ItemType.Food => chunk["DATA"][0][4], ItemType.Potion => chunk["DATA"][0][4], ItemType.Snack => chunk["DATA"][0][4], _ => "0" }); } private short ImportDefenceDodge(Dictionary<string, string[][]> chunk) { return Convert.ToInt16(ImportItemType(chunk) switch { ItemType.Armor => chunk["DATA"][0][6], ItemType.Fashion => chunk["DATA"][0][6], _ => "0" }); } private short ImportDamageMinimum(Dictionary<string, string[][]> chunk) { return Convert.ToInt16(ImportItemType(chunk) switch { ItemType.Weapon => chunk["DATA"][0][3], _ => "0" }); } private short ImportDamageMaximum(Dictionary<string, string[][]> chunk) { return Convert.ToInt16(ImportItemType(chunk) switch { ItemType.Weapon => chunk["DATA"][0][4], _ => "0" }); } private short ImportHitRate(Dictionary<string, string[][]> chunk) { return Convert.ToInt16(ImportItemType(chunk) switch { ItemType.Weapon => chunk["DATA"][0][5], _ => "0" }); } private byte ImportCriticalLuckRate(Dictionary<string, string[][]> chunk) { return Convert.ToByte(ImportItemType(chunk) switch { ItemType.Weapon => chunk["DATA"][0][6], _ => "0" }); } private byte ImportMaximumAmmo(Dictionary<string, string[][]> chunk) { return Convert.ToByte(ImportItemType(chunk) switch { ItemType.Weapon => 100, _ => 0 }); } private short ImportDistanceDefenceDodge(Dictionary<string, string[][]> chunk) { return Convert.ToInt16(ImportItemType(chunk) switch { ItemType.Armor => chunk["DATA"][0][6], _ => "0" }); } private short ImportCriticalRate(Dictionary<string, string[][]> chunk) { return Convert.ToInt16(ImportItemType(chunk) switch { ItemType.Armor => chunk["DATA"][0][7], _ => "0" }); } private long ImportItemValidTime(Dictionary<string, string[][]> chunk) { return ImportItemType(chunk) switch { ItemType.Jewelery when ImportEquipmentType(chunk) == EquipmentType.Amulet => Convert.ToInt64(chunk["DATA"][0][3]) / 10, ItemType.Fashion when ImportEquipmentType(chunk) == EquipmentType.CostumeHat || ImportEquipmentType(chunk) == EquipmentType.CostumeSuit => Convert.ToInt64(chunk["DATA"][0][13]) * 3600, _ => 0 }; } private ElementType ImportElement(Dictionary<string, string[][]> chunk) { return (ElementType)Enum.Parse(typeof(ElementType), ImportItemType(chunk) switch { ItemType.Jewelery when ImportEquipmentType(chunk) == EquipmentType.Fairy => chunk["DATA"][0][2], _ => "0" }); } private byte ImportMaxCellonLvl(Dictionary<string, string[][]> chunk) { return Convert.ToByte(ImportItemType(chunk) switch { ItemType.Jewelery when ImportEquipmentType(chunk) != EquipmentType.Amulet && ImportEquipmentType(chunk) != EquipmentType.Fairy => chunk["DATA"][0][3], _ => "0" }); } private byte ImportMaxCellon(Dictionary<string, string[][]> chunk) { return Convert.ToByte(ImportItemType(chunk) switch { ItemType.Jewelery when ImportEquipmentType(chunk) != EquipmentType.Amulet && ImportEquipmentType(chunk) != EquipmentType.Fairy => chunk["DATA"][0][4], _ => "0" }); } private short ImportCloseDefence(Dictionary<string, string[][]> chunk) { return Convert.ToInt16(ImportItemType(chunk) switch { ItemType.Armor => chunk["DATA"][0][3], ItemType.Fashion => chunk["DATA"][0][3], _ => "0" }); } private short ImportDistanceDefence(Dictionary<string, string[][]> chunk) { return Convert.ToInt16(ImportItemType(chunk) switch { ItemType.Armor => chunk["DATA"][0][4], ItemType.Fashion => chunk["DATA"][0][4], _ => "0" }); } private short ImportMagicDefence(Dictionary<string, string[][]> chunk) { return Convert.ToInt16(ImportItemType(chunk) switch { ItemType.Armor => chunk["DATA"][0][5], ItemType.Fashion => chunk["DATA"][0][5], _ => "0" }); } private short ImportHp(Dictionary<string, string[][]> chunk) { return Convert.ToInt16(ImportItemType(chunk) switch { ItemType.Food => chunk["DATA"][0][2], ItemType.Potion => chunk["DATA"][0][2], ItemType.Snack => chunk["DATA"][0][2], _ => "0" }); } private short ImportWaitDelay(Dictionary<string, string[][]> chunk) { return ImportItemType(chunk) switch { ItemType.Special => 5000, _ => 0 }; } private short ImportElementRate(Dictionary<string, string[][]> chunk) { return Convert.ToInt16(ImportItemType(chunk) switch { ItemType.Jewelery when ImportEquipmentType(chunk) == EquipmentType.Fairy => chunk["DATA"][0][3], ItemType.Specialist => chunk["DATA"][0][4], _ => "0" }); } private byte ImportSpeed(Dictionary<string, string[][]> chunk) { return Convert.ToByte(ImportItemType(chunk) switch { ItemType.Specialist => chunk["DATA"][0][5], _ => "0" }); } private byte ImportSpType(Dictionary<string, string[][]> chunk) { return Convert.ToByte(ImportItemType(chunk) switch { ItemType.Specialist => chunk["DATA"][0][13], _ => "0" }); } private byte ImportLevelJobMinimum(Dictionary<string, string[][]> chunk) { return Convert.ToByte(ImportItemType(chunk) switch { ItemType.Specialist => chunk["DATA"][0][20], _ => "0" }); } private byte ImportReputationMinimum(Dictionary<string, string[][]> chunk) { return Convert.ToByte(ImportItemType(chunk) switch { ItemType.Specialist => chunk["DATA"][0][21], _ => "0" }); } private byte ImportBasicUpgrade(Dictionary<string, string[][]> chunk) { return Convert.ToByte(ImportItemType(chunk) switch { ItemType.Armor => chunk["DATA"][0][10], ItemType.Weapon => chunk["DATA"][0][10], _ => "0" }); } private ItemEffectType ImportEffect(Dictionary<string, string[][]> chunk) { return (ItemEffectType)Convert.ToUInt16(ImportItemType(chunk) switch { ItemType.Special => chunk["DATA"][0][2], ItemType.Box => chunk["DATA"][0][2], ItemType.Magical => chunk["DATA"][0][2], ItemType.Production => chunk["DATA"][0][2], ItemType.Map => chunk["DATA"][0][2], ItemType.Main => chunk["DATA"][0][2], ItemType.Teacher => chunk["DATA"][0][2], ItemType.Upgrade => chunk["DATA"][0][2], _ => "0" }); } private EquipmentType ImportEquipmentType(Dictionary<string, string[][]> chunks) => (EquipmentType)Enum.Parse(typeof(EquipmentType), chunks["INDEX"][0][5] != "-1" ? chunks["INDEX"][0][5] : "0"); private ItemType ImportItemType(Dictionary<string, string[][]> chunk) => chunk["INDEX"][0][3] != "-1" ? (ItemType)Enum.Parse(typeof(ItemType), $"{(short)ImportType(chunk)}{chunk["INDEX"][0][3]}") : ItemType.Weapon; private NoscorePocketType ImportType(Dictionary<string, string[][]> chunks) { var flag = chunks["FLAG"][0]; if (flag.Length > 26 && flag[26] == "1") return NoscorePocketType.Raid; if (chunks["DATA"][0][2] == "1000" && chunks["INDEX"][0][3] == "4") { return NoscorePocketType.Mount; } return Convert.ToByte(chunks["INDEX"][0][2]) switch { 4 => NoscorePocketType.Equipment, 8 => NoscorePocketType.Equipment, 9 => NoscorePocketType.Main, 10 => NoscorePocketType.Etc, _ => (NoscorePocketType)Enum.Parse(typeof(NoscorePocketType), chunks["INDEX"][0][2]) }; } private short ImportResistance(Dictionary<string, string[][]> chunk, ElementType element) { var equipmentType = ImportEquipmentType(chunk); return Convert.ToInt16(element switch { ElementType.Fire => equipmentType == EquipmentType.Sp ? chunk["DATA"][0][15] : chunk["DATA"][0][7], ElementType.Light => equipmentType == EquipmentType.Sp ? chunk["DATA"][0][17] : chunk["DATA"][0][9], ElementType.Water => equipmentType == EquipmentType.Sp ? chunk["DATA"][0][16] : chunk["DATA"][0][8], ElementType.Dark => equipmentType == EquipmentType.Sp ? chunk["DATA"][0][18] : chunk["DATA"][0][11], _ => "0" }); } private void SetVehicles(List<ItemDto> items, Dictionary<byte, List<(short, short)>> vehicleDictionary) { foreach (var vehicle in vehicleDictionary) { foreach (var vehiclematch in vehicle.Value) { var item = items.FirstOrDefault(s => s.VNum == vehiclematch.Item1); if (item == null) { continue; } item.Speed = vehicle.Key; item.WaitDelay = 3000; item.Morph = vehiclematch.Item2; } } } private void HardcodeItem(ItemDto item) { if (item.EquipmentSlot == EquipmentType.Fairy) { item.MaxElementRate = item.VNum <= 256 ? (short)50 : (short)(item.ElementRate switch { 0 => (item.VNum >= 800) && (item.VNum <= 804) ? (short)50 : (short)70, 30 => (item.VNum >= 884) && (item.VNum <= 887) ? (short)50 : (short)30, 35 => 35, 40 => 70, 50 => 80, _ => 0, }); } item.EffectValue = item.VNum switch { var _ when (item.Effect == ItemEffectType.DroppedSpRecharger || item.Effect == ItemEffectType.PremiumSpRecharger) && item.EffectValue == 1 => 30000, var _ when (item.Effect == ItemEffectType.DroppedSpRecharger || item.Effect == ItemEffectType.PremiumSpRecharger) && item.EffectValue == 2 => 70000, var _ when (item.Effect == ItemEffectType.DroppedSpRecharger || item.Effect == ItemEffectType.PremiumSpRecharger) && item.EffectValue == 3 => 180000, var _ when item.Effect == ItemEffectType.SpecialistMedal => 30_000, var x when x == 9031 || x == 1332 => 5108, var x when x == 9032 || x == 1333 => 5109, 1334 => 5111, 9035 => 5106, var x when x == 9036 || x == 1337 => 5110, var x when x == 9038 || x == 1339 => 5114, 9033 => 5011, var x when x == 9034 || x == 1335 => 5107, 1581 => 860, 1582 => 861, var x when x == 1585 || x == 9044 => 859, var x when x == 9059 || x == 1983 => 875, var x when x == 9060 || x == 1984 => 876, var x when x == 9061 || x == 1985 => 877, var x when x == 9062 || x == 1986 => 878, var x when x == 9063 || x == 1987 => 879, var x when x == 1988 || x == 9064 => 880, 4503 => 4544, 4504 => 4294, var x when x == 282 || x == 283 || x == 284 || x == 4264 || x == 4262 || x == 4194 || x == 1248 || x == 9022 => 3, var x when x == 287 || x == 1246 || x == 9020 || x == 5062 || x == 9068 => 1, var x when x == 4240 || x == 1247 || x == 9021 => 2, var x when x == 4106 || x == 1249 || x == 9023 => 4, 1245 => 10_000, var x when x == 1272 || x == 1858 || x == 9047 || x == 1923 || x == 9056 || x == 1275 || x == 1886 || x == 9026 => 10, var x when x == 1273 || x == 9024 || x == 5795 || x == 1279 || x == 9029 || x == 1276 || x == 9027 || x == 5060 || x == 9066 => 30, var x when x == 1274 || x == 9025 || x == 5796 || x == 1280 || x == 9030 || x == 1277 || x == 9028 || x == 5519 => 60, var x when x == 9123 || x == 5675 || x == 5797 => 0, var x when x == 5061 || x == 9067 => 7, 1336 => 5106, var x when x >= 1894 && x <= 1903 => item.VNum + 2152, 1218 => 26, 1363 => 27, 1364 => 28, 5107 => 47, 5207 => 50, 5369 => 61, _ => item.EffectValue }; item.Element = item.VNum switch { 901 => ElementType.Fire, 903 => ElementType.Water, 906 => ElementType.Light, 909 => ElementType.Light, _ => item.Element, }; item.Effect = item.VNum switch { var x when item.ItemType == ItemType.Special && ((x > 5891 && x < 5900) || (x > 9100 && x < 9109)) => ItemEffectType.Undefined, var x when x > 2059 && x < 2070 => ItemEffectType.ApplyHairDie, 282 => ItemEffectType.RedAmulet, 283 => ItemEffectType.BlueAmulet, 284 => ItemEffectType.ReinforcementAmulet, 4264 => ItemEffectType.Heroic, 4262 => ItemEffectType.RandomHeroic, var x when x == 287 || x == 4240 || x == 4194 || x == 4106 => ItemEffectType.Undefined, var x when item.ItemType == ItemType.Box && item.ItemSubType == 3 => ItemEffectType.BoxEffect, 1245 => ItemEffectType.CraftedSpRecharger, var x when x == 1246 || x == 9020 || x == 1247 || x == 9021 || x == 1248 || x == 9022 || x == 1249 || x == 9023 => ItemEffectType.BuffPotions, var x when x == 5130 || x == 9072 => ItemEffectType.PetSpaceUpgrade, var x when x == 1272 || x == 1858 || x == 9047 || x == 1273 || x == 9024 || x == 1274 || x == 9025 || x == 9123 || x == 5675 => ItemEffectType.InventoryUpgrade, var x when x == 5795 || x == 5796 || x == 5797 => ItemEffectType.InventoryTicketUpgrade, var x when x == 1279 || x == 9029 || x == 1280 || x == 9030 || x == 1923 || x == 9056 => ItemEffectType.PetBasketUpgrade, var x when x == 1275 || x == 1886 || x == 9026 || x == 1276 || x == 9027 || x == 1277 || x == 9028 => ItemEffectType.PetBackpackUpgrade, var x when x == 5060 || x == 9066 => ItemEffectType.GoldNosMerchantUpgrade, var x when x == 5061 || x == 9067 || x == 5062 || x == 9068 => ItemEffectType.SilverNosMerchantUpgrade, 5105 => ItemEffectType.ChangeGender, var x when x == 1336 || x == 1427 || x == 5115 => ItemEffectType.PointInitialisation, 1981 => ItemEffectType.MarriageProposal, 1982 => ItemEffectType.MarriageSeparation, var x when x >= 1894 && x <= 1903 => ItemEffectType.SealedTarotCard, var x when x >= 4046 && x <= 4055 => ItemEffectType.TarotCard, 5119 => ItemEffectType.SpeedBooster, 180 => ItemEffectType.AttackAmulet, 181 => ItemEffectType.DefenseAmulet, _ => item.Effect, }; item.EquipmentSlot = item.VNum switch { var x when x >= 4101 && x <= 4105 => EquipmentType.MainWeapon, _ => item.EquipmentSlot }; item.ItemValidTime = item.VNum switch { var x when (x >= 4055 && x <= 4061) || (x > 4172 && x < 4176) || (x > 4045 && x < 4056) || (x == 967) || (x == 968) => 10800, _ => item.ItemValidTime }; } } } ================================================ FILE: src/NosCore.Parser/Parsers/MapMonsterParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { public class MapMonsterParser(IDao<MapMonsterDto, int> mapMonsterDao, IDao<NpcMonsterDto, short> npcMonsterDao, ILogger<MapMonsterParser> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { public async Task InsertMapMonsterAsync(List<string[]> packetList) { short map = 0; var monsters = new List<MapMonsterDto>(); var mapMonsterdb = mapMonsterDao.LoadAll().ToList(); var npcMonsterdb = npcMonsterDao.LoadAll().ToDictionary(n => n.NpcMonsterVNum); foreach (var currentPacket in packetList.Where(o => (o.Length > 7 && o[0].Equals("in") && (o[1] == "3") && long.Parse(o[3]) <= 20000) || o[0].Equals("at"))) { if ((currentPacket.Length > 5) && (currentPacket[0] == "at")) { map = short.Parse(currentPacket[2]); continue; } var vnum = short.Parse(currentPacket[2]); if (!npcMonsterdb.TryGetValue(vnum, out var npcMonster)) { continue; } var monster = new MapMonsterDto { MapId = map, VNum = vnum, MapMonsterId = int.Parse(currentPacket[3]), MapX = short.Parse(currentPacket[4]), MapY = short.Parse(currentPacket[5]), Direction = (byte)(currentPacket[6] == string.Empty ? 0 : byte.Parse(currentPacket[6])), IsDisabled = false }; if ((mapMonsterdb.FirstOrDefault(s => s.MapMonsterId.Equals(monster.MapMonsterId)) != null) || (monsters.Count(i => i.MapMonsterId == monster.MapMonsterId) != 0)) { continue; } monsters.Add(monster); } await mapMonsterDao.TryInsertOrUpdateAsync(monsters); logger.LogInformation(logLanguage[LogLanguageKey.MONSTERS_PARSED], monsters.Count); } } } ================================================ FILE: src/NosCore.Parser/Parsers/MapNpcParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { public class MapNpcParser(IDao<MapNpcDto, int> mapNpcDao, IDao<NpcMonsterDto, short> npcMonsterDao, IDao<NpcTalkDto, short> npcTalkDao, ILogger<MapNpcParser> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { public async Task InsertMapNpcsAsync(List<string[]> packetList) { var npcmonsterdb = npcMonsterDao.LoadAll().ToDictionary(n => n.NpcMonsterVNum); var mapnpcdb = mapNpcDao.LoadAll().ToList(); var npcCounter = 0; short map = 0; var npcs = new List<MapNpcDto>(); var effPacketsDictionary = packetList.Where(o => o[0].Equals("eff") && o[1].Equals("2") && long.Parse(o[2]) <= 20000).GroupBy(s => Convert.ToInt16(s[2])).ToDictionary(x => x.Key, x => Convert.ToInt16(x.First()[3])); var npcTalks = npcTalkDao.LoadAll().ToDictionary(s => s.DialogId, s => s); foreach (var currentPacket in packetList.Where(o => (o.Length > 7 && o[0].Equals("in") && (o[1] == "2") && long.Parse(o[3]) <= 20000) || o[0].Equals("at"))) { if ((currentPacket.Length > 5) && (currentPacket[0] == "at")) { map = short.Parse(currentPacket[2]); continue; } var mapnpcid = short.Parse(currentPacket[3]); var vnum = short.Parse(currentPacket[2]); if (!npcmonsterdb.TryGetValue(vnum, out var npcMonster)) { continue; } var npctest = new MapNpcDto { MapX = short.Parse(currentPacket[4]), MapY = short.Parse(currentPacket[5]), MapId = map, VNum = vnum, MapNpcId = mapnpcid, Effect = effPacketsDictionary.TryGetValue(mapnpcid, out var value) ? value : (short)0, EffectDelay = 4750, IsMoving = npcMonster.CanWalk, Direction = byte.Parse(currentPacket[6]), Dialog = npcTalks.ContainsKey(short.Parse(currentPacket[9])) ? short.Parse(currentPacket[9]) : (short?)null, IsSitting = currentPacket[13] != "1", IsDisabled = false }; if ((mapnpcdb.FirstOrDefault(s => s.MapNpcId.Equals(npctest.MapNpcId)) != null) || (npcs.Count(i => i.MapNpcId == npctest.MapNpcId) != 0)) { continue; } npcs.Add(npctest); npcCounter++; } await mapNpcDao.TryInsertOrUpdateAsync(npcs); logger.LogInformation(logLanguage[LogLanguageKey.NPCS_PARSED], npcCounter); } } } ================================================ FILE: src/NosCore.Parser/Parsers/MapParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers.Generic; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { public class MapParser(IDao<MapDto, short> mapDao, ILoggerFactory loggerFactory, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { //{ID} {ID} {MapPoint} {MapPoint} {Name} //DATA 0 private readonly ILogger<MapParser> _logger = loggerFactory.CreateLogger<MapParser>(); private readonly string _fileMapIdDat = $"{Path.DirectorySeparatorChar}MapIDData.dat"; private readonly string _folderMap = $"{Path.DirectorySeparatorChar}map"; public Task<List<MapDto>> ParseDatAsync(string folder) { var actionList = new Dictionary<string, Func<Dictionary<string, string[][]>, object?>> { {nameof(MapDto.MapId), chunk => Convert.ToInt16(chunk.First(s=>char.IsDigit(s.Key.FirstOrDefault())).Value[0][0])}, {nameof(MapDto.NameI18NKey), chunk => chunk.First(s=>char.IsDigit(s.Key.FirstOrDefault())).Value[0][4]} }; var genericParser = new GenericParser<MapDto>(folder + _fileMapIdDat, "DATA 0", 0, actionList, loggerFactory.CreateLogger<GenericParser<MapDto>>(), logLanguage); return genericParser.GetDtosAsync(" "); } public async Task InsertOrUpdateMapsAsync(string folder, List<string[]> packetList) { var dictionaryId = await ParseDatAsync(folder); var folderMap = folder + _folderMap; var dictionaryMusic = packetList.Where(o => o[0].Equals("at") && (o.Length > 7)) .GroupBy(x => x[2]) .ToDictionary(x => x.Key, x => x.First()[7]); var maps = new DirectoryInfo(folderMap).GetFiles().Select(file => new MapDto { NameI18NKey = dictionaryId.FirstOrDefault(s => s.MapId == int.Parse(file.Name))?.NameI18NKey ?? string.Empty, Music = dictionaryMusic.TryGetValue(file.Name, out var value) ? int.Parse(value) : 0, MapId = short.Parse(file.Name), Data = File.ReadAllBytes(file.FullName), ShopAllowed = short.Parse(file.Name) == 147 }).ToList(); await mapDao.TryInsertOrUpdateAsync(maps); _logger.LogInformation(logLanguage[LogLanguageKey.MAPS_PARSED], maps.Count); } } } ================================================ FILE: src/NosCore.Parser/Parsers/MapTypeMapParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.Map; using NosCore.Data.StaticEntities; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { public class MapTypeMapParser(IDao<MapTypeMapDto, short> mapTypeMapDao, IDao<MapDto, short> mapDao) { internal Task InsertMapTypeMapsAsync() { var maptypemaps = new List<MapTypeMapDto>(); short mapTypeId = 1; var mapsdb = mapDao.LoadAll().ToList(); var maptypemapdb = mapTypeMapDao.LoadAll().ToList(); for (var i = 1; i < 300; i++) { var objectset = false; if ((i < 3) || ((i > 48) && (i < 53)) || ((i > 67) && (i < 76)) || (i == 102) || ((i > 103) && (i < 105)) || ((i > 144) && (i < 149))) { // "act1" mapTypeId = (short)MapTypeType.Act1; objectset = true; } else if (((i > 19) && (i < 34)) || ((i > 52) && (i < 68)) || ((i > 84) && (i < 101))) { // "act2" mapTypeId = (short)MapTypeType.Act2; objectset = true; } else if (((i > 40) && (i < 45)) || ((i > 45) && (i < 48)) || ((i > 99) && (i < 102)) || ((i > 104) && (i < 128))) { // "act3" mapTypeId = (short)MapTypeType.Act3; objectset = true; } else if (i == 260) { // "act3.2" mapTypeId = (short)MapTypeType.Act32; objectset = true; } else if (((i > 129) && (i <= 134)) || (i == 135) || (i == 137) || (i == 139) || (i == 141) || ((i > 150) && (i < 153))) { // "act4" mapTypeId = (short)MapTypeType.Act4; objectset = true; } else if (i == 153) { // "act4.2" mapTypeId = (short)MapTypeType.Act42; objectset = true; } else if ((i > 169) && (i < 205)) { // "act5.1" mapTypeId = (short)MapTypeType.Act51; objectset = true; } else if ((i > 204) && (i < 221)) { // "act5.2" mapTypeId = (short)MapTypeType.Act52; objectset = true; } else if (((i > 228) && (i < 233)) || ((i > 232) && (i < 238))) { mapTypeId = (short)MapTypeType.Act61; objectset = true; } else if (((i > 239) && (i < 251)) || (i == 299)) { // "act6.2" mapTypeId = (short)MapTypeType.Act62; objectset = true; } else if (((i > 260) && (i < 264)) || ((i > 2614) && (i < 2621))) { // "Oasis" mapTypeId = (short)MapTypeType.Oasis; objectset = true; } else if (i == 103) { // "Comet plain" mapTypeId = (short)MapTypeType.CometPlain; objectset = true; } else if (i == 6) { // "Mine1" mapTypeId = (short)MapTypeType.Mine1; objectset = true; } else if ((i > 6) && (i < 9)) { // "Mine2" mapTypeId = (short)MapTypeType.Mine2; objectset = true; } else if (i == 3) { // "Meadown of mine" mapTypeId = (short)MapTypeType.MeadowOfMine; objectset = true; } else if (i == 4) { // "Sunny plain" mapTypeId = (short)MapTypeType.SunnyPlain; objectset = true; } else if (i == 5) { // "Fernon" mapTypeId = (short)MapTypeType.Fernon; objectset = true; } else if (((i > 9) && (i < 19)) || ((i > 79) && (i < 85))) { // "FernonF" mapTypeId = (short)MapTypeType.FernonF; objectset = true; } else if ((i > 75) && (i < 79)) { // "Cliff" mapTypeId = (short)MapTypeType.Cliff; objectset = true; } else if (i == 150) { // "Land of the dead" mapTypeId = (short)MapTypeType.LandOfTheDead; objectset = true; } else if (i == 138) { // "Cleft of Darkness" mapTypeId = (short)MapTypeType.CleftOfDarkness; objectset = true; } else if (i == 130) { // "Citadel" mapTypeId = (short)MapTypeType.CitadelAngel; objectset = true; } else if (i == 131) { mapTypeId = (short)MapTypeType.CitadelDemon; objectset = true; } // add "act6.1a" and "act6.1d" when ids found var i1 = (short)i; var id = mapTypeId; if (objectset && (mapsdb.FirstOrDefault(s => s.MapId == i) != null) && (maptypemapdb .FirstOrDefault(s => (s.MapId == i1) && (s.MapTypeId == id)) == null)) { maptypemaps.Add(new MapTypeMapDto { MapId = (short)i, MapTypeId = mapTypeId }); } } IEnumerable<MapTypeMapDto> mapDtos = maptypemaps; return mapTypeMapDao.TryInsertOrUpdateAsync(mapDtos); } } } ================================================ FILE: src/NosCore.Parser/Parsers/MapTypeParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Interaction; using NosCore.Data.Enumerations.Map; using NosCore.Data.StaticEntities; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { public class MapTypeParser(IDao<MapTypeDto, short> dropDao, ILogger<MapTypeParser> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { internal async Task InsertMapTypesAsync() { var mts = new List<MapTypeDto> { new() { MapTypeId = (short) MapTypeType.Act1, MapTypeName = "Act1", PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct1, ReturnMapTypeId = (long) RespawnType.ReturnAct1 }, new() { MapTypeId = (short) MapTypeType.Act2, MapTypeName = "Act2", PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct1, ReturnMapTypeId = (long) RespawnType.ReturnAct1 }, new() { MapTypeId = (short) MapTypeType.Act3, MapTypeName = "Act3", PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct1, ReturnMapTypeId = (long) RespawnType.ReturnAct1 }, new() { MapTypeId = (short) MapTypeType.Act4, MapTypeName = "Act4", PotionDelay = 5000 }, new() { MapTypeId = (short) MapTypeType.Act51, MapTypeName = "Act5.1", PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct5, ReturnMapTypeId = (long) RespawnType.ReturnAct5 }, new() { MapTypeId = (short) MapTypeType.Act52, MapTypeName = "Act5.2", PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct5, ReturnMapTypeId = (long) RespawnType.ReturnAct5 }, new() { MapTypeId = (short) MapTypeType.Act61, MapTypeName = "Act6.1", PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct6, ReturnMapTypeId = (long) RespawnType.ReturnAct1 }, new() { MapTypeId = (short) MapTypeType.Act62, MapTypeName = "Act6.2", PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct6, ReturnMapTypeId = (long) RespawnType.ReturnAct1 }, new() { MapTypeId = (short) MapTypeType.Act61A, MapTypeName = "Act6.1a", // angel camp PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct6, ReturnMapTypeId = (long) RespawnType.ReturnAct1 }, new() { MapTypeId = (short) MapTypeType.Act61D, MapTypeName = "Act6.1d", // demon camp PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct6, ReturnMapTypeId = (long) RespawnType.ReturnAct1 }, new() { MapTypeId = (short) MapTypeType.CometPlain, MapTypeName = "CometPlain", PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct1, ReturnMapTypeId = (long) RespawnType.ReturnAct1 }, new() { MapTypeId = (short) MapTypeType.Mine1, MapTypeName = "Mine1", PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct1, ReturnMapTypeId = (long) RespawnType.ReturnAct1 }, new() { MapTypeId = (short) MapTypeType.Mine2, MapTypeName = "Mine2", PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct1, ReturnMapTypeId = (long) RespawnType.ReturnAct1 }, new() { MapTypeId = (short) MapTypeType.MeadowOfMine, MapTypeName = "MeadownOfPlain", PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct1, ReturnMapTypeId = (long) RespawnType.ReturnAct1 }, new() { MapTypeId = (short) MapTypeType.SunnyPlain, MapTypeName = "SunnyPlain", PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct1, ReturnMapTypeId = (long) RespawnType.ReturnAct1 }, new() { MapTypeId = (short) MapTypeType.Fernon, MapTypeName = "Fernon", PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct1, ReturnMapTypeId = (long) RespawnType.ReturnAct1 }, new() { MapTypeId = (short) MapTypeType.FernonF, MapTypeName = "FernonF", PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct1, ReturnMapTypeId = (long) RespawnType.ReturnAct1 }, new() { MapTypeId = (short) MapTypeType.Cliff, MapTypeName = "Cliff", PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultAct1, ReturnMapTypeId = (long) RespawnType.ReturnAct1 }, new() { MapTypeId = (short) MapTypeType.LandOfTheDead, MapTypeName = "LandOfTheDead", PotionDelay = 300 }, new() { MapTypeId = (short) MapTypeType.Act32, MapTypeName = "Act 3.2", PotionDelay = 300 }, new() { MapTypeId = (short) MapTypeType.CleftOfDarkness, MapTypeName = "Cleft of Darkness", PotionDelay = 300 }, new() { MapTypeId = (short) MapTypeType.CitadelAngel, MapTypeName = "AngelCitadel", PotionDelay = 300 }, new() { MapTypeId = (short) MapTypeType.CitadelDemon, MapTypeName = "DemonCitadel", PotionDelay = 300 }, new() { MapTypeId = (short) MapTypeType.Oasis, MapTypeName = "Oasis", PotionDelay = 300, RespawnMapTypeId = (long) RespawnType.DefaultOasis, ReturnMapTypeId = (long) RespawnType.DefaultOasis }, new() { MapTypeId = (short) MapTypeType.Act42, MapTypeName = "Act42", PotionDelay = 5000 } }; await dropDao.TryInsertOrUpdateAsync(mts); logger.LogInformation(logLanguage[LogLanguageKey.MAPTYPES_PARSED]); } } } ================================================ FILE: src/NosCore.Parser/Parsers/NpcMonsterParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Map; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers.Generic; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { // VNUM {NpcMonsterVNum} // NAME {NameI18NKey} // LEVEL {Level} // RACE {Race} {RaceType} // ATTRIB {Element} {ElementRate} {FireResistance} {WaterResistance} {LightResistance} {DarkResistance} // HP/MP {HP} {MP} // EXP {XP} {JXP} // PREATT {IsHostile} {NoticeRange} {Speed} {RespawnTime} 400 // SETTING 0 0 -1 0 0 0 // ETC 8 1 0 0 0 0 0 0 // PETINFO 1 10 0 50 // EFF 200 0 0 // ZSKILL 0 1 3 2 12 0 0 // WINFO 0 0 0 // WEAPON 16 1 0 0 0 11 -20 // AINFO 0 0 // ARMOR {CloseDefence} {DistanceDefence} {MagicDefence} {DefenceDodge} {DistanceDefenceDodge} // SKILL 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 // PARTNER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 // BASIC 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 // CARD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 // MODE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 // ITEM 2000 9000 1 16 800 1 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 //#======================================================== public class NpcMonsterParser { private readonly string _fileNpcId = $"{Path.DirectorySeparatorChar}monster.dat"; private readonly IDao<BCardDto, short> _bCardDao; private readonly IDao<DropDto, short> _dropDao; private readonly ILogger<NpcMonsterParser> _logger; private readonly ILoggerFactory _loggerFactory; private readonly IDao<NpcMonsterDto, short> _npcMonsterDao; private readonly IDao<NpcMonsterSkillDto, long> _npcMonsterSkillDao; private readonly IDao<SkillDto, short> _skillDao; private readonly int[] _basicHp = new int[100]; private readonly int[] _basicPrimaryMp = new int[100]; private readonly int[] _basicSecondaryMp = new int[100]; private Dictionary<short, SkillDto>? _skilldb; private Dictionary<short, List<DropDto>>? _dropdb; private readonly ILogLanguageLocalizer<LogLanguageKey> _logLanguage; public NpcMonsterParser(IDao<SkillDto, short> skillDao, IDao<BCardDto, short> bCardDao, IDao<DropDto, short> dropDao, IDao<NpcMonsterSkillDto, long> npcMonsterSkillDao, IDao<NpcMonsterDto, short> npcMonsterDao, ILoggerFactory loggerFactory, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { _skillDao = skillDao; _bCardDao = bCardDao; _dropDao = dropDao; _npcMonsterSkillDao = npcMonsterSkillDao; _npcMonsterDao = npcMonsterDao; _loggerFactory = loggerFactory; _logger = loggerFactory.CreateLogger<NpcMonsterParser>(); _logLanguage = logLanguage; InitStats(); } public FluentParserBuilder<NpcMonsterDto> BuildParser(string folder) { return FluentParserBuilder<NpcMonsterDto>.Create(folder + _fileNpcId, "#========================================================", 1) .Field(x => x.NpcMonsterVNum, "VNUM", 0, 2, s => Convert.ToInt16(s), "Monster vnum") .Field(x => x.NameI18NKey, "NAME", 0, 2, s => s, "Localization key (zts##e)") .Field(x => x.Race, "RACE", 0, 2, s => Convert.ToByte(s), "Race group (plant, animal, monster, dragon, …)") .Field(x => x.RaceType, "RACE", 0, 3, s => Convert.ToByte(s), "Subtype within the race group") .Field(x => x.Element, "ATTRIB", 0, 2, s => Convert.ToByte(s), "Primary elemental alignment") .Field(x => x.ElementRate, "ATTRIB", 0, 3, s => Convert.ToInt16(s), "Element rate %") .Field(x => x.FireResistance, "ATTRIB", 0, 4, s => Convert.ToInt16(s), "Fire resistance") .Field(x => x.WaterResistance, "ATTRIB", 0, 5, s => Convert.ToInt16(s), "Water resistance") .Field(x => x.LightResistance, "ATTRIB", 0, 6, s => Convert.ToInt16(s), "Light resistance") .Field(x => x.DarkResistance, "ATTRIB", 0, 7, s => Convert.ToInt16(s), "Dark resistance") .Field(x => x.IsHostile, "PREATT", 0, 2, s => s != "0", "Non-zero means the mob aggroes on sight") .Field(x => x.GroupAttack, "PREATT", 0, 3, s => Convert.ToByte(s), "Group-aggro mode (1 = with allies, 5 = with group)") .Field(x => x.NoticeRange, "PREATT", 0, 4, s => Convert.ToByte(s), "Aggro radius in cells") .Field(x => x.Speed, "PREATT", 0, 5, s => Convert.ToByte(s), "Movement speed") .Field(x => x.RespawnTime, "PREATT", 0, 6, s => Convert.ToInt32(s), "Respawn delay, deciseconds") .Field(x => x.BasicSkill, "EFF", 0, 2, s => Convert.ToInt16(s), "Basic on-attack effect id") .Field(x => x.EffectIdConstantly, "EFF", 0, 3, s => Convert.ToInt16(s), "Constantly-running aura effect id") .Field(x => x.EffectIdOnDeath, "EFF", 0, 4, s => Convert.ToInt16(s), "Effect id played on death") .Field(x => x.AttackClass, "ZSKILL", 0, 2, s => Convert.ToByte(s), "Attack class (melee/ranged/magic)") .Field(x => x.BasicRange, "ZSKILL", 0, 3, s => Convert.ToByte(s), "Basic attack range in cells") .Field(x => x.BasicHitChance, "ZSKILL", 0, 4, s => Convert.ToByte(s), "Basic-attack hit chance (each tick rolls hitChance*20%)") .Field(x => x.BasicArea, "ZSKILL", 0, 5, s => Convert.ToByte(s), "Basic attack area-of-effect radius") .Field(x => x.BasicCooldown, "ZSKILL", 0, 6, s => Convert.ToInt16(s), "Basic attack cooldown, deciseconds") .Field(x => x.DashSpeed, "ZSKILL", 0, 7, s => Convert.ToByte(s), "Dash visual speed") .Field(x => x.IconId, "SETTING", 0, 2, s => Convert.ToInt16(s), "Target-info avatar index (NSip)") .Field(x => x.SpawnMobOrColor, "SETTING", 0, 3, s => Convert.ToInt32(s), "When hostility>20000: spawn-mob vnum, else packed RGBA color") .Field(x => x.SpriteSize, "SETTING", 0, 5, s => Convert.ToSByte(s), "Sprite scale bonus % (negative shrinks, positive grows)") .Field(x => x.CellSize, "SETTING", 0, 6, s => Convert.ToByte(s), "Collision cell footprint (used for big-boss AOE math)") .Field(x => x.PetInfoVal1, "PETINFO", 0, 2, s => Convert.ToInt32(s), "Pet stat factor 1 (collectable: tries; teleporter: itemVnum; mate: HP/melee factor)") .Field(x => x.PetInfoVal2, "PETINFO", 0, 3, s => Convert.ToInt32(s), "Pet stat factor 2 (collectable: cooldown; teleporter: amount; mate: ranged/dodge factor)") .Field(x => x.PetInfoVal3, "PETINFO", 0, 4, s => Convert.ToInt32(s), "Pet stat factor 3 (collectable: needItem flag; teleporter: removeItem; mate: magic/MP factor)") .Field(x => x.PetInfoVal4, "PETINFO", 0, 5, s => Convert.ToInt32(s), "Pet stat factor 4 (collectable: dance duration; mate: level threshold)") .Field(x => x.CanWalk, "ETC", 0, 2, s => (Convert.ToInt64(s) & 1) == 0, "ETC bit 0 clear -> can walk") .Field(x => x.CanCollect, "ETC", 0, 2, s => (Convert.ToInt64(s) & 2) != 0, "ETC bit 1 -> harvestable") .Field(x => x.CantDebuff, "ETC", 0, 2, s => (Convert.ToInt64(s) & 4) != 0, "ETC bit 2 -> immune to debuffs") .Field(x => x.CanCatch, "ETC", 0, 2, s => (Convert.ToInt64(s) & 8) != 0, "ETC bit 3 -> catchable (mate)") .Field(x => x.DisappearAfterSeconds, "ETC", 0, 2, s => (Convert.ToInt64(s) & 16) != 0, "ETC bit 4 -> despawns on a timer") .Field(x => x.DisappearAfterHitting, "ETC", 0, 2, s => (Convert.ToInt64(s) & 32) != 0, "ETC bit 5 -> despawns after a hit") .Field(x => x.HasMode, "ETC", 0, 2, s => (Convert.ToInt64(s) & 64) != 0, "ETC bit 6 -> uses a MODE") .Field(x => x.DisappearAfterSecondsMana, "ETC", 0, 2, s => (Convert.ToInt64(s) & 128) != 0, "ETC bit 7 -> despawns when mana empties") .Field(x => x.OnDefenseOnlyOnce, "ETC", 0, 2, s => (Convert.ToInt64(s) & 256) != 0, "ETC bit 8 -> defensive AI fires once") .Field(x => x.HasDash, "ETC", 0, 2, s => (Convert.ToInt64(s) & 512) != 0, "ETC bit 9 -> has a dash skill") .Field(x => x.RegenerateHpOverTime, "ETC", 0, 2, s => (Convert.ToInt64(s) & 1024) != 0, "ETC bit 10 -> passive HP regen") .Field(x => x.CantVoke, "ETC", 0, 2, s => (Convert.ToInt64(s) & 2048) != 0, "ETC bit 11 -> immune to voke") .Field(x => x.DontDrainHpAfterSeconds, "ETC", 0, 2, s => (Convert.ToInt64(s) & 268435456) != 0, "ETC bit 28 -> skips HP drain over time") .Field(x => x.CantTargetInfo, "ETC", 0, 2, s => (Convert.ToInt64(s) & 2147483648L) != 0, "ETC bit 31 -> hidden from target-info UI") .Field(x => x.IsPercentileDmg, "ETC", 0, 4, s => s != "0", "Damage output is expressed as % of target max HP (boss mechanic)") .Field(x => x.CanOnlyBeDmgedByJajamaruLastSkill, "ETC", 0, 5, s => s != "0", "Only damageable by Jajamaru's final skill (Namaju)") .Field(x => x.VisibleOnMinimapAsGreenDot, "ETC", 0, 7, s => s != "0", "Renders as a green dot on the minimap") .Field(x => x.IsValhallaPartner, "ETC", 0, 9, s => s != "0", "Marks Valhalla raid partner mobs") .Field(x => x.AlwaysActive, "MODE", 0, 26, s => s != "0", "Mode always active when non-zero") .Field(x => x.Limiter, "MODE", 0, 27, s => Convert.ToByte(s), "Mode limiter") .Field(x => x.HpThreshold, "MODE", 0, 28, s => Convert.ToInt16(s), "HP% threshold that swaps the mode / item vnum") .Field(x => x.RangeThreshold, "MODE", 0, 29, s => Convert.ToInt16(s), "Range threshold for mode swap") .Field(x => x.CModeVNum, "MODE", 0, 30, s => Convert.ToInt16(s), "c_mode vnum (transform target)") .Field(x => x.CellMinRange, "MODE", 0, 31, s => Convert.ToByte(s), "Minimum cells before the mode engages") .Field(x => x.Midgard, "MODE", 0, 32, s => Convert.ToInt32(s), "Midgard-specific data") .Field(x => x.Level, chunk => Level(chunk), reads: new[] { ("LEVEL", 0, 2) }, source: "LEVEL[2]", description: "Parsed by Level(chunk) helper") .Field(x => x.HeroXp, chunk => ImportXp(chunk) / 25, reads: new[] { ("EXP", 0, 2), ("LEVEL", 0, 2) }, source: "EXP[2] / 25", description: "Hero-level XP award, scaled down from XP") .Field(x => x.MaxHp, chunk => Convert.ToInt32(chunk["HP/MP"][0][2]) + _basicHp[Level(chunk)], reads: new[] { ("HP/MP", 0, 2), ("LEVEL", 0, 2) }, source: "HP/MP[2] + basicHp[Level]", description: "Override HP plus level-based baseline") .Field(x => x.MaxMp, chunk => Convert.ToInt32(chunk["HP/MP"][0][3]) + (Convert.ToByte(chunk["RACE"][0][2]) == 0 ? _basicPrimaryMp[Level(chunk)] : _basicSecondaryMp[Level(chunk)]), reads: new[] { ("HP/MP", 0, 3), ("LEVEL", 0, 2), ("RACE", 0, 2) }, source: "HP/MP[3] + basic(Primary|Secondary)Mp[Level]", description: "Override MP plus level-based baseline, branch on Race") .Field(x => x.Xp, chunk => ImportXp(chunk), reads: new[] { ("EXP", 0, 2), ("LEVEL", 0, 2) }, source: "EXP[2]", description: "Base XP award") .Field(x => x.JobXp, chunk => ImportJxp(chunk), reads: new[] { ("EXP", 0, 3), ("LEVEL", 0, 2) }, source: "EXP[3]", description: "Base job XP award") .Field(x => x.CloseDefence, chunk => Convert.ToInt16((Convert.ToInt16(chunk["ARMOR"][0][2]) - 1) * 2 + 18), reads: new[] { ("ARMOR", 0, 2) }, source: "ARMOR[2] formula", description: "(armorLvl-1)*2 + 18") .Field(x => x.DistanceDefence, chunk => Convert.ToInt16((Convert.ToInt16(chunk["ARMOR"][0][2]) - 1) * 3 + 17), reads: new[] { ("ARMOR", 0, 2) }, source: "ARMOR[2] formula", description: "(armorLvl-1)*3 + 17") .Field(x => x.MagicDefence, chunk => Convert.ToInt16((Convert.ToInt16(chunk["ARMOR"][0][2]) - 1) * 2 + 13), reads: new[] { ("ARMOR", 0, 2) }, source: "ARMOR[2] formula", description: "(armorLvl-1)*2 + 13") .Field(x => x.DefenceDodge, chunk => Convert.ToInt16((Convert.ToInt16(chunk["ARMOR"][0][2]) - 1) * 5 + 31), reads: new[] { ("ARMOR", 0, 2) }, source: "ARMOR[2] formula", description: "(armorLvl-1)*5 + 31") .Field(x => x.DistanceDefenceDodge, chunk => Convert.ToInt16((Convert.ToInt16(chunk["ARMOR"][0][2]) - 1) * 5 + 31), reads: new[] { ("ARMOR", 0, 2) }, source: "ARMOR[2] formula", description: "(armorLvl-1)*5 + 31") .Field(x => x.AttackUpgrade, chunk => Convert.ToByte(LoadUnknownData(chunk) == 1 ? chunk["WINFO"][0][2] : chunk["WINFO"][0][4]), reads: new[] { ("WINFO", 0, 2), ("WINFO", 0, 4), ("ETC", 0, 2) }, source: "WINFO[2] or WINFO[4] (gated by LoadUnknownData)", description: "Weapon upgrade level") .Field(x => x.DefenceUpgrade, chunk => Convert.ToByte(LoadUnknownData(chunk) == 1 ? chunk["WINFO"][0][2] : chunk["AINFO"][0][3]), reads: new[] { ("WINFO", 0, 2), ("AINFO", 0, 3), ("ETC", 0, 2) }, source: "WINFO[2] or AINFO[3] (gated by LoadUnknownData)", description: "Armor upgrade level") .Field(x => x.VNumRequired, chunk => Convert.ToInt16(chunk["SETTING"][0][4] != "0" && ShouldLoadPetinfo(chunk) ? chunk["PETINFO"][0][2] : chunk["SETTING"][0][4]), reads: new[] { ("SETTING", 0, 4), ("PETINFO", 0, 2), ("ETC", 0, 2) }, source: "SETTING[4] or PETINFO[2]", description: "VNum of the item required to tame/interact") .Field(x => x.AmountRequired, chunk => Convert.ToByte(chunk["SETTING"][0][4] == "0" ? "1" : ShouldLoadPetinfo(chunk) ? chunk["PETINFO"][0][3] : "0"), reads: new[] { ("SETTING", 0, 4), ("PETINFO", 0, 3), ("ETC", 0, 2) }, source: "SETTING[4] or PETINFO[3]", description: "Amount of the required item") .Field(x => x.DamageMinimum, chunk => ImportDamageMinimum(chunk), reads: new[] { ("WEAPON", 0, 2), ("WEAPON", 0, 3), ("WEAPON", 0, 4), ("LEVEL", 0, 2) }, source: "WEAPON[2..4]", description: "Min attack damage") .Field(x => x.DamageMaximum, chunk => ImportDamageMaximum(chunk), reads: new[] { ("WEAPON", 0, 2), ("WEAPON", 0, 3), ("WEAPON", 0, 4), ("WEAPON", 0, 5), ("LEVEL", 0, 2) }, source: "WEAPON[2..5]", description: "Max attack damage") .Field(x => x.Concentrate, chunk => ImportConcentrate(chunk), reads: new[] { ("WEAPON", 0, 2), ("WEAPON", 0, 3), ("WEAPON", 0, 6) }, source: "WEAPON[2,3,6]", description: "Hit rate") .Field(x => x.CriticalChance, chunk => ImportCriticalChance(chunk), reads: new[] { ("WEAPON", 0, 3), ("WEAPON", 0, 7) }, source: "WEAPON[3,7]", description: "Critical hit chance") .Field(x => x.CriticalRate, chunk => ImportCriticalRate(chunk), reads: new[] { ("WEAPON", 0, 3), ("WEAPON", 0, 8) }, source: "WEAPON[3,8]", description: "Critical hit damage multiplier") .Field(x => x.NpcMonsterSkill, chunk => ImportNpcMonsterSkill(chunk), reads: Enumerable.Range(2, 15).Select(c => ("SKILL", 0, c)).Append(("VNUM", 0, 2)).ToArray(), source: "VNUM[2] + SKILL[2..16]", description: "Up to 5 NpcMonsterSkill entries (vnum/chance/force triples)") .Field(x => x.BCards, chunk => ImportBCards(chunk), reads: Enumerable.Range(2, 50).Select(c => ("BASIC", 0, c)) .Concat(Enumerable.Range(2, 20).Select(c => ("CARD", 0, c))) .Append(("VNUM", 0, 2)).ToArray(), source: "VNUM[2] + BASIC[2..51] + CARD[2..21]", description: "BCards from BASIC (10 groups of 5) and CARD (4 groups of 5)") .Field(x => x.Drop, chunk => ImportDrops(chunk), reads: Enumerable.Range(2, 60).Select(c => ("ITEM", 0, c)).Append(("VNUM", 0, 2)).ToArray(), source: "VNUM[2] + ITEM[2..61] + merged DropDao catalog", description: "20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO") .Field(x => x.MonsterType, chunk => ImportMonsterType(chunk), reads: new[] { ("VNUM", 0, 2), ("ETC", 0, 2), ("RACE", 0, 2), ("RACE", 0, 3) }, source: "VNUM[2] + ETC[2] + RACE[2,3]", description: "Categorisation (Mate/Normal/Trap/Unknown)") .Field(x => x.NoAggresiveIcon, chunk => { var unknowndata = LoadUnknownData(chunk); return (unknowndata == -2147483616 || unknowndata == -2147483647 || unknowndata == -2147483646) && (Convert.ToByte(chunk["RACE"][0][2]) == 8) && (Convert.ToByte(chunk["RACE"][0][3]) == 0); }, reads: new[] { ("ETC", 0, 2), ("RACE", 0, 2), ("RACE", 0, 3) }, source: "ETC[2] + RACE[2,3]", description: "Talkable / trap entities: suppress the aggressive icon") .Describe("ETC", "32-bit flag word stored as a decimal integer. Each bit flips a named gameplay behaviour; only a subset is documented in NSgtd.") .Describe("MODE", "4 BCard groups of 5 + 7 mode-meta columns; AlwaysActive onwards is meta.") .Doc("LEVEL", 2, "monsterLevel", "Base monster level.") .Doc("HP/MP", 2, "monsterMaxHpBonus", "Additive HP bonus on top of the level-derived baseline.") .Doc("HP/MP", 3, "monsterMaxMpBonus", "Additive MP bonus on top of the level-derived baseline.") .Doc("EXP", 2, "monsterXpBonus", "XP awarded on kill.") .Doc("EXP", 3, "monsterJobXpBonus", "Job XP awarded on kill.") .Doc("SETTING", 2, "iconID", "Target-info avatar index (NSip).") .Doc("SETTING", 3, "spawnMobOrColor", "When hostility>20000, the vnum of the mob this NPC spawns; otherwise a color.") .Doc("SETTING", 4, "amountOrItem", "Required item vnum (tame/interact) or spawn count.") .Doc("SETTING", 5, "spriteSize", "Sprite scale.") .Doc("SETTING", 6, "cellSize", "Collision cell footprint.") .Doc("SETTING", 7, "unknown0", "Always 0.") .Doc("ETC", 3, "unknown1") .Doc("ETC", 4, "isPercentileDmg", "Damage output is expressed as a % of the target's max HP.") .Doc("ETC", 5, "canOnlyBeDmgedByJajamaruLastSkill", "Only damageable by the final Jajamaru skill.") .Doc("ETC", 6, "unknown2", "Always 0.") .Doc("ETC", 7, "visibleOnMinimapAsGreenDot") .Doc("ETC", 8, "unknown3") .Doc("ETC", 9, "isValhallaPartner") .Doc("PETINFO", 2, "petInfoVal1", "Role unclear; first PETINFO column.") .Doc("PETINFO", 3, "petInfoVal2") .Doc("PETINFO", 4, "petInfoVal3") .Doc("PETINFO", 5, "petInfoVal4") .Doc("EFF", 3, "effIdConstantly", "Constantly-running aura effect id.") .Doc("EFF", 4, "effIdOnDeath", "Effect id played on death.") .Doc("ZSKILL", 4, "hitChance", "Basic-attack hit chance (unused by the parser).") .Doc("ZSKILL", 7, "dashSpeed", "Speed used when dashing.") .Doc("ZSKILL", 8, "unknown4") .Doc("WINFO", 2, "winfoAttType", "Attack-type override for ARMOR/WEAPON derivation (1 => special path).") .Doc("WINFO", 3, "unknown5") .Doc("WINFO", 4, "weaponGrade", "Weapon grade; used as AttackUpgrade when WINFO[0]!=1.") .Doc("WEAPON", 2, "weaponLvl") .Doc("WEAPON", 3, "weaponRange") .Doc("WEAPON", 4, "weaponDmgMin") .Doc("WEAPON", 5, "weaponDmgMax") .Doc("WEAPON", 6, "weaponHitRate") .Doc("WEAPON", 7, "weaponCritChance") .Doc("WEAPON", 8, "weaponCritDmg") .Doc("AINFO", 2, "ainfoDefType", "Defence-type override for ARMOR derivation.") .Doc("AINFO", 3, "armorGrade", "Armor grade; used as DefenceUpgrade when WINFO[0]!=1.") .Doc("ARMOR", 2, "armorLvl", "Armor level — all Close/Distance/Magic defence + dodge are derived from this.") .Doc("ARMOR", 3, "meleeDef", "Stored in .dat but we recompute from armorLvl.") .Doc("ARMOR", 4, "rangedDef", "Stored in .dat but we recompute from armorLvl.") .Doc("ARMOR", 5, "magicDef", "Stored in .dat but we recompute from armorLvl.") .Doc("ARMOR", 6, "dodge", "Stored in .dat but we recompute from armorLvl.") .Doc("SKILL", 2, "skill1Vnum", "First skill vnum.") .Doc("SKILL", 3, "skill1Chance", "Cast chance % for skill 1.") .Doc("SKILL", 4, "skill1Force", "Priority force for skill 1; groups 2-5 repeat at cols 5/8/11/14.") .Doc("PARTNER", 2, "partnerUnused", "PARTNER block is always 20 zeros in vanilla; unused.") .Doc("BASIC", 2, "basicBCard1Vnum", "First BASIC BCard vnum; 10 groups of 5 (cols 2..51) repeat the vnum/val1/val2/sub/target pattern.") .Doc("CARD", 2, "cardBCard1Vnum", "First CARD BCard vnum; 4 groups of 5 (cols 2..21) repeat the pattern. CARD slot 2 = death-trigger BCards.") .Doc("ITEM", 2, "drop1Vnum", "First drop vnum; 20 groups of 3 (cols 2..61) repeat the vnum/chance/amount triple."); } public async Task InsertNpcMonstersAsync(string folder) { _skilldb = _skillDao.LoadAll().ToDictionary(x => x.SkillVNum, x => x); _dropdb = _dropDao.LoadAll().Where(x => x.MonsterVNum != null).GroupBy(x => x.MonsterVNum).ToDictionary(x => x.Key ?? 0, x => x.ToList()); var parser = BuildParser(folder).Build(_loggerFactory, _logLanguage); var monsters = (await parser.GetDtosAsync()).GroupBy(p => p.NpcMonsterVNum).Select(g => g.First()).ToList(); await _npcMonsterDao.TryInsertOrUpdateAsync(monsters); await _bCardDao.TryInsertOrUpdateAsync(monsters.Where(s => s.BCards != null).SelectMany(s => s.BCards)); await _dropDao.TryInsertOrUpdateAsync(monsters.Where(s => s.Drop != null).SelectMany(s => s.Drop)); await _npcMonsterSkillDao.TryInsertOrUpdateAsync(monsters.Where(s => s.NpcMonsterSkill != null).SelectMany(s => s.NpcMonsterSkill)); _logger.LogInformation(_logLanguage[LogLanguageKey.NPCMONSTERS_PARSED], monsters.Count); } private int ImportJxp(Dictionary<string, string[][]> chunk) { var value = Convert.ToInt32(chunk["EXP"][0][3]); if (value < 1) { value *= -1; } if (Level(chunk) < 61) { return value + 120; } return value + 105; } private int ImportXp(Dictionary<string, string[][]> chunk) { var value = Convert.ToInt32(chunk["EXP"][0][2]); if (value < 1) { value *= -1; } if (Level(chunk) >= 19) { return Math.Abs((Level(chunk) * 60) + Level(chunk) * 10 + value); } return Math.Abs((Level(chunk) * 60) + value); } private short ImportDamageMinimum(Dictionary<string, string[][]> chunk) { return chunk["WEAPON"][0][3] switch { "1" => Convert.ToInt16((Convert.ToInt16(chunk["WEAPON"][0][2]) - 1) * 4 + 32 + Convert.ToInt16(chunk["WEAPON"][0][4]) + Math.Round(Convert.ToDecimal((Level(chunk) - 1) / 5))), "2" => Convert.ToInt16(Convert.ToInt16(chunk["WEAPON"][0][2]) * 6.5f + 23 + Convert.ToInt16(chunk["WEAPON"][0][4])), _ => (short)0, }; } private short ImportDamageMaximum(Dictionary<string, string[][]> chunk) { return chunk["WEAPON"][0][3] switch { "1" => Convert.ToInt16((Convert.ToInt16(chunk["WEAPON"][0][2]) - 1) * 6 + 40 + Convert.ToInt16(chunk["WEAPON"][0][5]) - Math.Round(Convert.ToDecimal((Level(chunk) - 1) / 5))), "2" => Convert.ToInt16(Convert.ToInt16(chunk["WEAPON"][0][2]) * 6.5f + 23 + Convert.ToInt16(chunk["WEAPON"][0][4])), _ => (short)0, }; } private short ImportConcentrate(Dictionary<string, string[][]> chunk) { return chunk["WEAPON"][0][3] switch { "1" => Convert.ToInt16((Convert.ToInt16(chunk["WEAPON"][0][2]) - 1) * 5 + 27 + Convert.ToInt16(chunk["WEAPON"][0][6])), "2" => Convert.ToInt16(70 + Convert.ToInt16(chunk["WEAPON"][0][6])), _ => (short)0, }; } private byte ImportCriticalChance(Dictionary<string, string[][]> chunk) { return chunk["WEAPON"][0][3] switch { "1" => Convert.ToByte(4 + Convert.ToInt16(chunk["WEAPON"][0][7])), _ => (byte)0, }; } private short ImportCriticalRate(Dictionary<string, string[][]> chunk) { return chunk["WEAPON"][0][3] switch { "1" => Convert.ToInt16(70 + Convert.ToInt16(chunk["WEAPON"][0][8])), _ => (short)0, }; } private List<NpcMonsterSkillDto> ImportNpcMonsterSkill(Dictionary<string, string[][]> chunk) { var monstervnum = Convert.ToInt16(chunk["VNUM"][0][2]); var skills = new List<NpcMonsterSkillDto>(); for (var i = 2; i < chunk["SKILL"][0].Length - 3; i += 3) { var vnum = short.Parse(chunk["SKILL"][0][i]); if ((vnum == -1) || (vnum == 0)) { break; } if (_skilldb?.ContainsKey(vnum) == false) { continue; } skills.Add(new NpcMonsterSkillDto { SkillVNum = vnum, Rate = Convert.ToInt16(chunk["SKILL"][0][i + 1]), Force = Convert.ToByte(chunk["SKILL"][0][i + 2]), NpcMonsterVNum = monstervnum }); } return skills; } private List<BCardDto> ImportBCards(Dictionary<string, string[][]> chunk) { var monstercards = new List<BCardDto>(); var monstervnum = Convert.ToInt16(chunk["VNUM"][0][2]); for (var i = 0; i < 4; i++) { var type = (byte)int.Parse(chunk["CARD"][0][5 * i + 2]); if ((type == 0) || (type == 255)) { continue; } var first = int.Parse(chunk["CARD"][0][5 * i + 3]); var itemCard = new BCardDto { NpcMonsterVNum = monstervnum, Type = type, SubType = (byte)(int.Parse(chunk["CARD"][0][5 * i + 5]) + 1 * 10 + 1 + (first > 0 ? 0 : 1)), IsLevelScaled = Convert.ToBoolean(first % 4), IsLevelDivided = (uint)(first > 0 ? first : -first) % 4 == 2, FirstData = (short)((first > 0 ? first : -first) / 4), SecondData = (short)(int.Parse(chunk["CARD"][0][5 * i + 4]) / 4), ThirdData = (short)(int.Parse(chunk["CARD"][0][5 * i + 6]) / 4), Slot = (byte)(i + 1) }; monstercards.Add(itemCard); first = int.Parse(chunk["BASIC"][0][5 * i + 5]); itemCard = new BCardDto { NpcMonsterVNum = monstervnum, Type = type, SubType = (byte)((int.Parse(chunk["BASIC"][0][5 * i + 6]) + 1) * 10 + 1 + (first > 0 ? 0 : 1)), FirstData = (short)((first > 0 ? first : -first) / 4), SecondData = (short)(int.Parse(chunk["BASIC"][0][5 * i + 4]) / 4), ThirdData = (short)(int.Parse(chunk["BASIC"][0][5 * i + 3]) / 4), CastType = 1, IsLevelScaled = false, IsLevelDivided = false }; monstercards.Add(itemCard); } return monstercards; } private List<DropDto> ImportDrops(Dictionary<string, string[][]> chunk) { var monstervnum = Convert.ToInt16(chunk["VNUM"][0][2]); var drops = new List<DropDto>(); for (var i = 2; i < chunk["ITEM"][0].Length - 3; i += 3) { var vnum = Convert.ToInt16(chunk["ITEM"][0][i]); if (vnum == -1) { break; } if (_dropdb?.ContainsKey(monstervnum) == true && (_dropdb[monstervnum].Count(s => s.VNum == vnum) != 0)) { continue; } drops.Add(new DropDto { VNum = vnum, Amount = Convert.ToInt32(chunk["ITEM"][0][i + 2]), MonsterVNum = monstervnum, DropChance = Convert.ToInt32(chunk["ITEM"][0][i + 1]) }); } return drops; } private MonsterType ImportMonsterType(Dictionary<string, string[][]> chunk) { var monstervnum = Convert.ToInt16(chunk["VNUM"][0][2]); var unknownData = LoadUnknownData(chunk); if (monstervnum >= 588 && monstervnum <= 607) { return MonsterType.Elite; } if (unknownData == -2147481593) { return MonsterType.Special; } return MonsterType.Unknown; } private void InitStats() { // basicHPLoad var baseHp = 138; var hPbasup = 18; for (var i = 0; i < 100; i++) { _basicHp[i] = baseHp; hPbasup++; baseHp += hPbasup; if (i == 37) { baseHp = 1765; hPbasup = 65; } if (i < 41) { continue; } if ((99 - i) % 8 == 0) { hPbasup++; } } //Race == 0 _basicPrimaryMp[0] = 10; _basicPrimaryMp[1] = 10; _basicPrimaryMp[2] = 15; var primaryBasup = 5; byte count = 0; var isStable = true; var isDouble = false; for (uint i = 3; i < 100; i++) { if (i % 10 == 1) { _basicPrimaryMp[i] += _basicPrimaryMp[i - 1] + primaryBasup * 2; continue; } if (!isStable) { primaryBasup++; count++; if (count == 2) { if (isDouble) { isDouble = false; } else { isStable = true; isDouble = true; count = 0; } } if (count == 4) { isStable = true; count = 0; } } else { count++; if (count == 2) { isStable = false; count = 0; } } _basicPrimaryMp[i] = _basicPrimaryMp[i - (i % 10 == 2 ? 2 : 1)] + primaryBasup; } // Race == 2 _basicSecondaryMp[0] = 60; _basicSecondaryMp[1] = 60; _basicSecondaryMp[2] = 78; var secondaryBasup = 18; var boostup = false; for (uint i = 3; i < 100; i++) { if (i % 10 == 1) { _basicSecondaryMp[i] += _basicSecondaryMp[i - 1] + (int)i + 10; continue; } boostup = !boostup; secondaryBasup += boostup ? 3 : 1; _basicSecondaryMp[i] = _basicSecondaryMp[i - (i % 10 == 2 ? 2 : 1)] + secondaryBasup; } } private byte Level(Dictionary<string, string[][]> chunk) { return Convert.ToByte(chunk["LEVEL"][0][2]); } private long LoadUnknownData(Dictionary<string, string[][]> chunk) { return Convert.ToInt64(chunk["ETC"][0][2]); } private bool ShouldLoadPetinfo(Dictionary<string, string[][]> chunk) { var unknownData = LoadUnknownData(chunk); return !((unknownData != -2147481593) && (unknownData != -2147481599) && (unknownData != -1610610681)); } } } ================================================ FILE: src/NosCore.Parser/Parsers/NpcTalkParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers.Generic; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { //% {DialogId} //t {Title} //s {ShopId} //c<list> //c<end> //b zts17695e . n_talk 11 0&@ //b zts3677e . shopping 3 0 //b zts7087e . n_run 14 0 //b zts3678e . n_talk 1 0 //b zts16037e . n_talk 8 0&@ //b zts16038e . n_talk 7 0&@ //b zts4759e . n_run 3000 0 //b zts4760e . n_talk 100 0 public class NpcTalkParser(IDao<NpcTalkDto, short> npcTalkDao, ILoggerFactory loggerFactory, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { private readonly ILogger<NpcTalkParser> _logger = loggerFactory.CreateLogger<NpcTalkParser>(); private readonly string _fileNpcTalkDat = $"{Path.DirectorySeparatorChar}npctalk.dat"; public async Task ParseAsync(string folder) { var actionList = new Dictionary<string, Func<Dictionary<string, string[][]>, object?>> { {nameof(NpcTalkDto.DialogId), chunk => Convert.ToInt16(chunk["%"][0][1])}, {nameof(NpcTalkDto.NameI18NKey), chunk => chunk["t"][0][1]}, }; var genericParser = new GenericParser<NpcTalkDto>(folder + _fileNpcTalkDat, "%", 0, actionList, loggerFactory.CreateLogger<GenericParser<NpcTalkDto>>(), logLanguage); var npcTalks = (await genericParser.GetDtosAsync(" ")).ToList(); npcTalks.Add(new NpcTalkDto { DialogId = 99, NameI18NKey = "" }); await npcTalkDao.TryInsertOrUpdateAsync(npcTalks); _logger.LogInformation(logLanguage[LogLanguageKey.NPCTALKS_PARSED], npcTalks.Count); } } } ================================================ FILE: src/NosCore.Parser/Parsers/PortalParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Packets.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { public class PortalParser(ILogger<PortalParser> logger, IDao<MapDto, short> mapDao, IDao<PortalDto, int> portalDao, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { private readonly List<PortalDto> _listPortals2 = new(); private List<PortalDto> _listPortals1 = new(); public async Task InsertPortalsAsync(List<string[]> packetList) { var portalsdb = portalDao.LoadAll().ToList(); var maps = mapDao.LoadAll().ToList(); short map = 0; var portalCounter = 0; var lodPortal = new PortalDto { SourceMapId = 150, SourceX = 172, SourceY = 171, DestinationMapId = 98, Type = PortalType.MapPortal, DestinationX = 6, DestinationY = 36, IsDisabled = false }; var portalsave4 = lodPortal; if (portalsdb.FirstOrDefault(s => s.SourceMapId == portalsave4.SourceMapId) == null) { portalCounter++; await portalDao.TryInsertOrUpdateAsync(lodPortal); } var minilandPortal = new PortalDto { SourceMapId = 20001, SourceX = 3, SourceY = 8, DestinationMapId = 1, Type = PortalType.MapPortal, DestinationX = 48, DestinationY = 132, IsDisabled = false }; var portalsave3 = minilandPortal; if (portalsdb.FirstOrDefault(s => s.SourceMapId == portalsave3.SourceMapId) == null) { portalCounter++; await portalDao.TryInsertOrUpdateAsync(minilandPortal); } var weddingPortal = new PortalDto { SourceMapId = 2586, SourceX = 34, SourceY = 54, DestinationMapId = 145, Type = PortalType.MapPortal, DestinationX = 61, DestinationY = 165, IsDisabled = false }; var portalsave2 = weddingPortal; if (portalsdb.FirstOrDefault(s => s.SourceMapId == portalsave2.SourceMapId) == null) { portalCounter++; await portalDao.TryInsertOrUpdateAsync(weddingPortal); } var glacerusCavernPortal = new PortalDto { SourceMapId = 2587, SourceX = 42, SourceY = 3, DestinationMapId = 189, Type = PortalType.MapPortal, DestinationX = 48, DestinationY = 156, IsDisabled = false }; var portalsave1 = glacerusCavernPortal; if (portalsdb.FirstOrDefault(s => s.SourceMapId == portalsave1.SourceMapId) == null) { portalCounter++; await portalDao.TryInsertOrUpdateAsync(glacerusCavernPortal); } foreach (var currentPacket in packetList.Where(o => o[0].Equals("at") || o[0].Equals("gp"))) { if ((currentPacket.Length > 5) && (currentPacket[0] == "at")) { map = short.Parse(currentPacket[2]); continue; } if ((currentPacket.Length <= 4) || (currentPacket[0] != "gp")) { continue; } var portal = new PortalDto { SourceMapId = map, SourceX = short.Parse(currentPacket[1]), SourceY = short.Parse(currentPacket[2]), DestinationMapId = short.Parse(currentPacket[3]), Type = (PortalType)Enum.Parse(typeof(PortalType), currentPacket[4]), DestinationX = -1, DestinationY = -1, IsDisabled = false }; if (_listPortals1.Any(s => (s.SourceMapId == map) && (s.SourceX == portal.SourceX) && (s.SourceY == portal.SourceY) && (s.DestinationMapId == portal.DestinationMapId)) || maps.All(s => s.MapId != portal.SourceMapId) || maps.All(s => s.MapId != portal.DestinationMapId)) { // Portal already in list continue; } _listPortals1.Add(portal); } _listPortals1 = _listPortals1.OrderBy(s => s.SourceMapId).ThenBy(s => s.DestinationMapId) .ThenBy(s => s.SourceY).ThenBy(s => s.SourceX).ToList(); foreach (var portal in _listPortals1) { var p = _listPortals1.Except(_listPortals2).FirstOrDefault(s => (s.SourceMapId == portal.DestinationMapId) && (s.DestinationMapId == portal.SourceMapId)); if (p == null) { continue; } portal.DestinationX = p.SourceX; portal.DestinationY = p.SourceY; p.DestinationY = portal.SourceY; p.DestinationX = portal.SourceX; _listPortals2.Add(p); _listPortals2.Add(portal); } // so this dude doesnt exist yet in DAOFactory -> insert it var portalsDtos = _listPortals2.Where(portal => !portalsdb .Where(s => s.SourceMapId.Equals(portal.SourceMapId)).Any( s => (s.DestinationMapId == portal.DestinationMapId) && (s.SourceX == portal.SourceX) && (s.SourceY == portal.SourceY))).ToList(); await portalDao.TryInsertOrUpdateAsync(portalsDtos); logger.LogInformation(logLanguage[LogLanguageKey.PORTALS_PARSED], portalsDtos.Count + portalCounter); } } } ================================================ FILE: src/NosCore.Parser/Parsers/QuestParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Packets.Enumerations; using NosCore.Parser.Parsers.Generic; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { //BEGIN //VNUM {QuestId} {QuestType} {autoFinish} {Daily} {requiredQuest} {Secondary} //LEVEL {LevelMin} {LevelMax} //TITLE {Title} //DESC {Desc} //TALK {StartDialogId} {EndDialogId} 0 0 //TARGET {TargetX} {TargetY} {TargetMap} //DATA {FirstData} {SecondData} {ThirdData} {FourthData} //PRIZE {firstPrizeVNUM} {secondPrizeVNUM} {thirdPrizeVNUM} {fourthPrizeVNUM} //LINK {NextQuest} //END // //#======= public class QuestParser(IDao<QuestDto, short> questDao, IDao<QuestObjectiveDto, Guid> questObjectiveDao, IDao<QuestRewardDto, short> questRewardDao, IDao<QuestQuestRewardDto, Guid> questQuestRewardDao, ILoggerFactory loggerFactory, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { private readonly ILogger<QuestParser> _logger = loggerFactory.CreateLogger<QuestParser>(); private readonly string _fileQuestDat = $"{Path.DirectorySeparatorChar}quest.dat"; private Dictionary<short, QuestRewardDto>? _questRewards; public FluentParserBuilder<QuestDto> BuildParser(string folder) { _questRewards ??= questRewardDao.LoadAll().ToDictionary(x => x.QuestRewardId, x => x); return FluentParserBuilder<QuestDto>.Create(folder + _fileQuestDat, "END", 0) .Field(x => x.QuestId, chunk => Convert.ToInt16(chunk["VNUM"][0][1])) .Field(x => x.QuestType, chunk => (QuestType)Enum.Parse(typeof(QuestType), chunk["VNUM"][0][2])) .Field(x => x.AutoFinish, chunk => chunk["VNUM"][0][3] == "1") .Field(x => x.IsDaily, chunk => chunk["VNUM"][0][4] == "-1") .Field(x => x.RequiredQuestId, chunk => chunk["VNUM"][0][5] != "-1" ? short.Parse(chunk["VNUM"][0][5]) : (short?)null) .Field(x => x.IsSecondary, chunk => chunk["VNUM"][0][6] != "-1") .Field(x => x.LevelMin, chunk => Convert.ToByte(chunk["LEVEL"][0][1])) .Field(x => x.LevelMax, chunk => Convert.ToByte(chunk["LEVEL"][0][2])) .Field(x => x.TitleI18NKey, chunk => chunk["TITLE"][0][1]) .Field(x => x.DescI18NKey, chunk => chunk["DESC"][0][1]) .Field(x => x.TargetX, chunk => chunk["TARGET"][0][1] == "-1" ? (short?)null : Convert.ToInt16(chunk["TARGET"][0][1])) .Field(x => x.TargetY, chunk => chunk["TARGET"][0][2] == "-1" ? (short?)null : Convert.ToInt16(chunk["TARGET"][0][2])) .Field(x => x.TargetMap, chunk => chunk["TARGET"][0][3] == "-1" ? (short?)null : Convert.ToInt16(chunk["TARGET"][0][3])) .Field(x => x.StartDialogId, chunk => chunk["TALK"][0][1] == "-1" ? (int?)null : Convert.ToInt32(chunk["TALK"][0][1])) .Field(x => x.EndDialogId, chunk => chunk["TALK"][0][2] == "-1" ? (int?)null : Convert.ToInt32(chunk["TALK"][0][2])) .Field(x => x.NextQuestId, chunk => chunk["LINK"][0][1] == "-1" ? (short?)null : Convert.ToInt16(chunk["LINK"][0][1])) .Field(x => x.QuestQuestReward, chunk => ImportQuestQuestRewards(chunk)) .Field(x => x.QuestObjective, chunk => ImportQuestObjectives(chunk)); } public async Task ImportQuestsAsync(string folder) { var parser = BuildParser(folder).Build(loggerFactory, logLanguage); var quests = await parser.GetDtosAsync(); await questDao.TryInsertOrUpdateAsync(quests); await questQuestRewardDao.TryInsertOrUpdateAsync(quests.Where(s => s.QuestQuestReward != null).SelectMany(s => s.QuestQuestReward)); await questObjectiveDao.TryInsertOrUpdateAsync(quests.Where(s => s.QuestObjective != null).SelectMany(s => s.QuestObjective)); _logger.LogInformation(logLanguage[LogLanguageKey.QUESTS_PARSED], quests.Count); } private List<QuestQuestRewardDto> ImportQuestQuestRewards(Dictionary<string, string[][]> chunk) { var currentRewards = new List<QuestQuestRewardDto>(); for (var i = 1; i < 5; i++) { var prize = Convert.ToInt16(chunk["PRIZE"][0][i]); if ((prize == -1) || (_questRewards?.ContainsKey(prize) == false)) { continue; } currentRewards.Add(new QuestQuestRewardDto { Id = Guid.NewGuid(), QuestId = Convert.ToInt16(chunk["VNUM"][0][1]), QuestRewardId = prize, }); } return currentRewards; } private List<QuestObjectiveDto> ImportQuestObjectives(Dictionary<string, string[][]> chunk) { var objectivsDtos = new List<QuestObjectiveDto>(); foreach (var line in chunk["DATA"]) { if (line[1] != "-1") { objectivsDtos.Add(new QuestObjectiveDto { QuestId = Convert.ToInt16(chunk["VNUM"][0][1]), FirstData = Convert.ToInt32(line[1]), SecondData = line[2] == "-1" ? (int?)null : Convert.ToInt32(line[2]), ThirdData = line[3] == "-1" ? (int?)null : Convert.ToInt32(line[3]), FourthData = line[4] == "-1" ? (int?)null : Convert.ToInt32(line[4]), QuestObjectiveId = Guid.NewGuid() }); } } return objectivsDtos; } } } ================================================ FILE: src/NosCore.Parser/Parsers/QuestPrizeParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Quest; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers.Generic; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { //#======= //BEGIN //VNUM 1 2 //DATA 10 -1 -1 -1 -1 //END public class QuestPrizeParser(IDao<QuestRewardDto, short> questRewardDtoDao, ILoggerFactory loggerFactory, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { private readonly ILogger<QuestPrizeParser> _logger = loggerFactory.CreateLogger<QuestPrizeParser>(); private readonly string _fileQuestPrizeDat = $"{Path.DirectorySeparatorChar}qstprize.dat"; public async Task ImportQuestPrizesAsync(string folder) { var actionList = new Dictionary<string, Func<Dictionary<string, string[][]>, object?>> { {nameof(QuestRewardDto.QuestRewardId), chunk => Convert.ToInt16(chunk["VNUM"][0][1])}, {nameof(QuestRewardDto.RewardType), chunk => Convert.ToByte(chunk["VNUM"][0][2])}, {nameof(QuestRewardDto.Data), chunk => ImportData(chunk)}, {nameof(QuestRewardDto.Amount), chunk => ImportAmount(chunk)}, }; var genericParser = new GenericParser<QuestRewardDto>(folder + _fileQuestPrizeDat, "END", 0, actionList, loggerFactory.CreateLogger<GenericParser<QuestRewardDto>>(), logLanguage); var questRewardDtos = await genericParser.GetDtosAsync(); await questRewardDtoDao.TryInsertOrUpdateAsync(questRewardDtos); _logger.LogInformation(logLanguage[LogLanguageKey.QUEST_PRIZES_PARSED], questRewardDtos.Count); } private int ImportData(Dictionary<string, string[][]> chunk) { var rewardType = (QuestRewardType)Convert.ToInt64(chunk["VNUM"][0][2]); return rewardType switch { QuestRewardType.Exp => int.Parse(chunk["DATA"][0][2]) == -1 ? 0 : int.Parse(chunk["DATA"][0][2]), QuestRewardType.PercentExp => int.Parse(chunk["DATA"][0][2]) == -1 ? 0 : int.Parse(chunk["DATA"][0][2]), QuestRewardType.JobExp => int.Parse(chunk["DATA"][0][2]) == -1 ? 0 : int.Parse(chunk["DATA"][0][2]), QuestRewardType.PercentJobExp => int.Parse(chunk["DATA"][0][2]) == -1 ? 0 : int.Parse(chunk["DATA"][0][2]), QuestRewardType.WearItem => int.Parse(chunk["DATA"][0][1]), QuestRewardType.EtcMainItem => int.Parse(chunk["DATA"][0][1]), QuestRewardType.Gold => 0, QuestRewardType.BaseGoldByAmount => 0, QuestRewardType.CapturedGold => 0, QuestRewardType.UnknowGold => 0, QuestRewardType.Reput => 0, _ => int.Parse(chunk["DATA"][0][1]), }; } private int ImportAmount(Dictionary<string, string[][]> chunk) { var rewardType = (QuestRewardType)Convert.ToInt64(chunk["VNUM"][0][2]); return rewardType switch { QuestRewardType.Exp => int.Parse(chunk["DATA"][0][1]), QuestRewardType.PercentExp => int.Parse(chunk["DATA"][0][1]), QuestRewardType.JobExp => int.Parse(chunk["DATA"][0][1]), QuestRewardType.PercentJobExp => int.Parse(chunk["DATA"][0][1]), QuestRewardType.WearItem => 1, QuestRewardType.EtcMainItem => int.Parse(chunk["DATA"][0][5]) == -1 ? 1 : int.Parse(chunk["DATA"][0][5]), QuestRewardType.Gold => int.Parse(chunk["DATA"][0][1]), QuestRewardType.BaseGoldByAmount => int.Parse(chunk["DATA"][0][1]), QuestRewardType.CapturedGold => int.Parse(chunk["DATA"][0][1]), QuestRewardType.UnknowGold => int.Parse(chunk["DATA"][0][1]), QuestRewardType.Reput => int.Parse(chunk["DATA"][0][1]), _ => int.Parse(chunk["DATA"][0][2]), }; } } } ================================================ FILE: src/NosCore.Parser/Parsers/RespawnMapTypeParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Interaction; using NosCore.Data.StaticEntities; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { public class RespawnMapTypeParser(IDao<RespawnMapTypeDto, long> respawnMapTypeDao, ILogger<RespawnMapTypeParser> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { internal async Task InsertRespawnMapTypeAsync() { var respawnmaptypemaps = new List<RespawnMapTypeDto> { new() { RespawnMapTypeId = (long) RespawnType.DefaultAct1, MapId = 1, DefaultX = 80, DefaultY = 116, Name = "Default" }, new() { RespawnMapTypeId = (long) RespawnType.ReturnAct1, MapId = 0, DefaultX = 0, DefaultY = 0, Name = "Return" }, new() { RespawnMapTypeId = (long) RespawnType.DefaultAct5, MapId = 170, DefaultX = 86, DefaultY = 48, Name = "DefaultAct5" }, new() { RespawnMapTypeId = (long) RespawnType.ReturnAct5, MapId = 0, DefaultX = 0, DefaultY = 0, Name = "ReturnAct5" }, new() { RespawnMapTypeId = (long) RespawnType.DefaultAct6, MapId = 228, DefaultX = 72, DefaultY = 102, Name = "DefaultAct6" }, new() { RespawnMapTypeId = (long) RespawnType.DefaultAct62, MapId = 228, DefaultX = 72, DefaultY = 102, Name = "DefaultAct62" }, new() { RespawnMapTypeId = (long) RespawnType.DefaultOasis, MapId = 261, DefaultX = 66, DefaultY = 70, Name = "DefaultOasis" } }; await respawnMapTypeDao.TryInsertOrUpdateAsync(respawnmaptypemaps); logger.LogInformation(logLanguage[LogLanguageKey.RESPAWNTYPE_PARSED], respawnmaptypemaps.Count()); } } } ================================================ FILE: src/NosCore.Parser/Parsers/ScriptParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { public class ScriptParser(IDao<ScriptDto, Guid> scriptDao, ILogger<ScriptParser> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { //script {ScriptId} //{ScriptStepId} {StepType} {Argument} private readonly string _fileCardDat = $"{Path.DirectorySeparatorChar}tutorial.dat"; public async Task InsertScriptsAsync(string folder) { var allScripts = scriptDao.LoadAll().ToList(); using var stream = new StreamReader(folder + _fileCardDat, Encoding.Default); var scripts = new List<ScriptDto>(); string? line; byte scriptId = 0; while ((line = await stream.ReadLineAsync()) != null) { var split = line.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries); if (line.StartsWith("#")) { continue; } if (split.Length > 1 && split[0] == "script") { scriptId = Convert.ToByte(split[1]); } else if (split.Length > 2 && !allScripts.Any(s => s.ScriptId == scriptId && s.ScriptStepId == Convert.ToInt16(split[0]))) { var canParse = short.TryParse(split[2], out var argument1); var stringArgument = !canParse ? split[2] : null; scripts.Add(new ScriptDto() { Id = Guid.NewGuid(), ScriptStepId = Convert.ToInt16(split[0]), StepType = split[1], StringArgument = stringArgument, Argument1 = canParse ? argument1 : (short?)null, Argument2 = split.Length > 3 && short.TryParse(split[3], out var argument2) ? argument2 : (short?)null, Argument3 = split.Length > 4 && short.TryParse(split[4], out var argument3) ? argument3 : (short?)null, ScriptId = scriptId }); } } await scriptDao.TryInsertOrUpdateAsync(scripts); logger.LogInformation(logLanguage[LogLanguageKey.SCRIPTS_PARSED], scripts.Count); } } } ================================================ FILE: src/NosCore.Parser/Parsers/ShopItemParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { public class ShopItemParser(IDao<ShopItemDto, int> shopItemDao, IDao<ShopDto, int> shopDao, ILogger<ShopItemParser> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { public async Task InsertShopItemsAsync(List<string[]> packetList) { var shopitems = new List<ShopItemDto>(); var itemCounter = 0; byte type = 0; var shopItemdb = shopItemDao.LoadAll().ToList(); var shopdb = shopDao.LoadAll().ToList(); foreach (var currentPacket in packetList.Where(o => o[0].Equals("n_inv") || o[0].Equals("shopping"))) { if (currentPacket[0].Equals("n_inv")) { var npcid = short.Parse(currentPacket[2]); if (shopdb.FirstOrDefault(s => s.MapNpcId == npcid) == null) { continue; } for (var i = 5; i < currentPacket.Length; i++) { var item = currentPacket[i].Split('.'); if (item.Length < 5) { continue; } var sitem = new ShopItemDto { ShopId = shopdb.FirstOrDefault(s => s.MapNpcId == npcid)! .ShopId, Type = type, Slot = byte.Parse(item[1]), ItemVNum = short.Parse(item[2]), Rare = item.Length == 6 ? sbyte.Parse(item[3]) : (short)0, Upgrade = item.Length == 6 ? byte.Parse(item[4]) : (byte)0 }; if (shopitems.Any(s => s.ItemVNum.Equals(sitem.ItemVNum) && s.ShopId.Equals(sitem.ShopId)) || shopItemdb.Where(s => s.ShopId == sitem.ShopId) .Any(s => s.ItemVNum.Equals(sitem.ItemVNum))) { continue; } shopitems.Add(sitem); itemCounter++; } } else if (currentPacket.Length > 3) { type = byte.Parse(currentPacket[1]); } } var groups = shopitems.GroupBy(s => s.ShopId); var shopListItemDtos = new List<ShopItemDto>(); foreach (var group in groups) { var shopItemDtos = group.OrderBy(s => s.Slot).ToList(); for (byte i = 0; i < shopItemDtos.Count; i++) { shopItemDtos.ElementAt(i).Slot = i; } shopListItemDtos.AddRange(shopItemDtos); } await shopItemDao.TryInsertOrUpdateAsync(shopListItemDtos); logger.LogInformation(logLanguage[LogLanguageKey.SHOPITEMS_PARSED], itemCounter); } } } ================================================ FILE: src/NosCore.Parser/Parsers/ShopParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { public class ShopParser(IDao<ShopDto, int> shopDao, IDao<MapNpcDto, int> mapNpcDao, ILogger<ShopParser> logger, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { public async Task InsertShopsAsync(List<string[]> packetList) { var shopCounter = 0; var shops = new List<ShopDto>(); var mapnpcdb = mapNpcDao.LoadAll().ToList(); var shopdb = shopDao.LoadAll().ToList(); foreach (var currentPacket in packetList.Where(o => (o.Length > 6) && o[0].Equals("shop") && o[1].Equals("2")) ) { var npcid = short.Parse(currentPacket[2]); var npc = mapnpcdb.FirstOrDefault(s => s.MapNpcId == npcid); if (npc == null) { continue; } var name = new StringBuilder(); for (var j = 6; j < currentPacket.Length; j++) { name.Append($"{currentPacket[j]}"); if (j != currentPacket.Length - 1) { name.Append(" "); } } var shop = new ShopDto { MapNpcId = npc.MapNpcId, MenuType = byte.Parse(currentPacket[4]), ShopType = byte.Parse(currentPacket[5]) }; if ((shopdb.FirstOrDefault(s => s.MapNpcId == npc.MapNpcId) != null) || shops.Any(s => s.MapNpcId == npc.MapNpcId)) { continue; } shops.Add(shop); shopCounter++; } await shopDao.TryInsertOrUpdateAsync(shops); logger.LogInformation(logLanguage[LogLanguageKey.SHOPS_PARSED], shopCounter); } } } ================================================ FILE: src/NosCore.Parser/Parsers/SkillParser.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers.Generic; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Parsers { public class SkillParser(IDao<BCardDto, short> bCardDao, IDao<ComboDto, int> comboDao, IDao<SkillDto, short> skillDao, ILoggerFactory loggerFactory, ILogLanguageLocalizer<LogLanguageKey> logLanguage) { private readonly ILogger<SkillParser> _logger = loggerFactory.CreateLogger<SkillParser>(); // VNUM {VNum} // NAME {Name} // TYPE 0 0 0 0 0 0 // COST 0 0 0 // LEVEL 0 0 0 0 0 // EFFECT 0 0 0 0 0 0 0 0 0 // TARGET 0 0 0 0 0 // DATA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 // BASIC 0 0 0 0 0 0 // BASIC 1 0 0 0 0 0 // BASIC 2 0 0 0 0 0 // BASIC 3 0 0 0 0 0 // BASIC 4 0 0 0 0 0 // FCOMBO 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 // CELL 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 // Z_DESC 0 //#========================================================= private readonly string _fileCardDat = $"{Path.DirectorySeparatorChar}Skill.dat"; public FluentParserBuilder<SkillDto> BuildParser(string folder) { return FluentParserBuilder<SkillDto>.Create(folder + _fileCardDat, "#=========================================================", 1) .Field(x => x.SkillVNum, chunk => Convert.ToInt16(chunk["VNUM"][0][2])) .Field(x => x.NameI18NKey, chunk => chunk["NAME"][0][2]) .Field(x => x.SkillType, chunk => Convert.ToByte(chunk["TYPE"][0][2])) .Field(x => x.CastId, chunk => Convert.ToInt16(chunk["TYPE"][0][3])) .Field(x => x.Class, chunk => Convert.ToByte(chunk["TYPE"][0][4])) .Field(x => x.Type, chunk => Convert.ToByte(chunk["TYPE"][0][5])) .Field(x => x.Element, chunk => Convert.ToByte(chunk["TYPE"][0][7])) .Field(x => x.Combo, chunk => AddCombos(chunk)) .Field(x => x.CpCost, chunk => chunk["COST"][0][2] == "-1" ? (byte)0 : byte.Parse(chunk["COST"][0][2])) .Field(x => x.Price, chunk => Convert.ToInt32(chunk["COST"][0][3])) .Field(x => x.CastEffect, chunk => Convert.ToInt16(chunk["EFFECT"][0][3])) .Field(x => x.CastAnimation, chunk => Convert.ToInt16(chunk["EFFECT"][0][4])) .Field(x => x.Effect, chunk => Convert.ToInt16(chunk["EFFECT"][0][5])) .Field(x => x.AttackAnimation, chunk => Convert.ToInt16(chunk["EFFECT"][0][6])) .Field(x => x.TargetType, chunk => Convert.ToByte(chunk["TARGET"][0][2])) .Field(x => x.HitType, chunk => Convert.ToByte(chunk["TARGET"][0][3])) .Field(x => x.Range, chunk => Convert.ToByte(chunk["TARGET"][0][4])) .Field(x => x.TargetRange, chunk => Convert.ToByte(chunk["TARGET"][0][5])) .Field(x => x.UpgradeSkill, chunk => Convert.ToInt16(chunk["DATA"][0][2])) .Field(x => x.UpgradeType, chunk => Convert.ToInt16(chunk["DATA"][0][3])) .Field(x => x.CastTime, chunk => Convert.ToInt16(chunk["DATA"][0][6])) .Field(x => x.Cooldown, chunk => Convert.ToInt16(chunk["DATA"][0][7])) .Field(x => x.MpCost, chunk => Convert.ToInt16(chunk["DATA"][0][10])) .Field(x => x.ItemVNum, chunk => Convert.ToInt16(chunk["DATA"][0][12])) .Field(x => x.BCards, chunk => AddBCards(chunk)) .Field(x => x.MinimumAdventurerLevel, chunk => chunk["LEVEL"][0][3] != "-1" ? byte.Parse(chunk["LEVEL"][0][3]) : (byte)0) .Field(x => x.MinimumSwordmanLevel, chunk => chunk["LEVEL"][0][4] != "-1" ? byte.Parse(chunk["LEVEL"][0][4]) : (byte)0) .Field(x => x.MinimumArcherLevel, chunk => chunk["LEVEL"][0][5] != "-1" ? byte.Parse(chunk["LEVEL"][0][5]) : (byte)0) .Field(x => x.MinimumMagicianLevel, chunk => chunk["LEVEL"][0][6] != "-1" ? byte.Parse(chunk["LEVEL"][0][6]) : (byte)0) .Field(x => x.LevelMinimum, chunk => chunk["LEVEL"][0][2] != "-1" ? byte.Parse(chunk["LEVEL"][0][2]) : (byte)0); } public async Task InsertSkillsAsync(string folder) { var parser = BuildParser(folder).Build(loggerFactory, logLanguage); var skills = await parser.GetDtosAsync(); foreach (var skill in skills.Where(s => s.Class > 31)) { var firstskill = skills.Find(s => s.Class == skill.Class); var skillscount = skills.Count(s => s.Class == skill.Class); if ((firstskill == null) || (skill.SkillVNum <= firstskill.SkillVNum + 10)) { skill.LevelMinimum = skill.Class switch { 8 => (byte)(skillscount - (1 * 10)), 9 => (byte)(skillscount - (4 * 4)), 16 => (byte)skillscount switch { 6 => 20, 5 => 15, 4 => 10, 3 => 5, 2 => 3, _ => 0 }, _ => (byte)(skillscount - (5 * 4)) }; } } await skillDao.TryInsertOrUpdateAsync(skills); await comboDao.TryInsertOrUpdateAsync(skills.Where(s => s.Combo != null).SelectMany(s => s.Combo)); await bCardDao.TryInsertOrUpdateAsync(skills.Where(s => s.BCards != null).SelectMany(s => s.BCards)); _logger.LogInformation(logLanguage[LogLanguageKey.SKILLS_PARSED], skills.Count); } private List<BCardDto> AddBCards(Dictionary<string, string[][]> chunks) { var list = new List<BCardDto>(); for (var j = 0; j < chunks["BASIC"].Length; j++) { var type = (byte)int.Parse(chunks["BASIC"][j][3]); if ((type == 0) || (type == 255)) { continue; } var first = int.Parse(chunks["BASIC"][j][5]); var comb = new BCardDto { SkillVNum = Convert.ToInt16(chunks["VNUM"][0][2]), Type = type, SubType = (byte)((int.Parse(chunks["BASIC"][j][4]) + 1) * 10 + 1 + (first < 0 ? 1 : 0)), IsLevelScaled = Convert.ToBoolean((uint)(first < 0 ? 0 : first) % 4), IsLevelDivided = (uint)(first < 0 ? 0 : first) % 4 == 2, FirstData = (short)(first > 0 ? first : -first / 4), SecondData = (short)(int.Parse(chunks["BASIC"][j][6]) / 4), ThirdData = (short)(int.Parse(chunks["BASIC"][j][7]) / 4) }; list.Add(comb); } return list; } private List<ComboDto> AddCombos(Dictionary<string, string[][]> chunks) { var list = new List<ComboDto>(); for (var j = 0; j < 5; j++) { var comb = new ComboDto { SkillVNum = Convert.ToInt16(chunks["VNUM"][0][2]), Hit = short.Parse(chunks["FCOMBO"][0][j * 3 + 2]), Animation = short.Parse(chunks["FCOMBO"][0][j * 3 + 3]), Effect = short.Parse(chunks["FCOMBO"][0][j * 3 + 4]) }; if ((comb.Hit == 0) && (comb.Animation == 0) && (comb.Effect == 0)) { continue; } list.Add(comb); } return list; } } } ================================================ FILE: src/NosCore.WebApi/ApiConfiguration.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Shared.Configuration; using System.ComponentModel.DataAnnotations; namespace NosCore.WebApi { public class ApiConfiguration : ServerConfiguration { [Required] public WebApiConfiguration MasterCommunication { get; set; } = null!; [Required] public SqlConnectionConfiguration Database { get; set; } = null!; } } ================================================ FILE: src/NosCore.WebApi/Controllers/AuthController.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Tokens; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using NosCore.Shared.Authentication; using NosCore.Shared.Configuration; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using System; using System.ComponentModel.DataAnnotations; using System.Globalization; using System.IdentityModel.Tokens.Jwt; using System.Linq; using System.Security.Claims; using System.Text; using System.Threading.Tasks; using TwoFactorAuthNet; namespace NosCore.WebApi.Controllers { [ApiController] [Route("api/v1/auth/thin")] [Route("api/[controller]")] public class AuthController(IOptions<WebApiConfiguration> apiConfiguration, IDao<AccountDto, long> accountDao, ILogger<AuthController> logger, IHasher hasher, ILogLanguageLocalizer<LogLanguageKey> logLanguage, IAuthHub authHub) : Controller { [AllowAnonymous] [HttpPost("sessions")] [HttpPost("/api/v1/auth/sessions")] public async Task<IActionResult> ConnectUserAsync(ApiSession session) { if (!ModelState.IsValid) { return BadRequest(logLanguage[LogLanguageKey.AUTH_ERROR]); } var account = await accountDao.FirstOrDefaultAsync(s => s.Name == session.Identity); if (account == null) { return BadRequest(logLanguage[LogLanguageKey.AUTH_ERROR]); } var tfa = new TwoFactorAuth(); if (!string.IsNullOrEmpty(account.MfaSecret) && !tfa.VerifyCode(account.MfaSecret, session.Mfa)) { return BadRequest(logLanguage[LogLanguageKey.MFA_INCORRECT]); } if (account.Password?.ToLower(CultureInfo.CurrentCulture) != (hasher.Hash(session.Password)) && account.NewAuthPassword?.ToLower(CultureInfo.CurrentCulture) != (hasher.Hash(session.Password, account.NewAuthSalt!))) { return BadRequest(logLanguage[LogLanguageKey.AUTH_INCORRECT]); } account.Language = Enum.Parse<RegionType>(session.GfLang?.ToUpper(CultureInfo.CurrentCulture) ?? ""); account = await accountDao.TryInsertOrUpdateAsync(account); var platformGameAccountId = Guid.NewGuid(); var claims = new ClaimsIdentity(new[] { new Claim(ClaimTypes.NameIdentifier, session.Identity), new Claim(ClaimTypes.Sid, platformGameAccountId.ToString()), new Claim(ClaimTypes.Role, account.Authority.ToString()) }); var password = hasher.Hash(apiConfiguration.Value.Password!, apiConfiguration.Value.Salt); var keyByteArray = Encoding.Default.GetBytes(password); var signinKey = new SymmetricSecurityKey(keyByteArray); var handler = new JwtSecurityTokenHandler(); var securityToken = handler.CreateToken(new SecurityTokenDescriptor { Subject = claims, Issuer = "Issuer", Audience = "Audience", SigningCredentials = new SigningCredentials(signinKey, SecurityAlgorithms.HmacSha256Signature) }); logger.LogInformation(logLanguage[LogLanguageKey.AUTH_API_SUCCESS], session.Identity, platformGameAccountId, session.Locale); return Ok(new { token = handler.WriteToken(securityToken), platformGameAccountId }); } [Authorize] [HttpPost("codes")] public async Task<IActionResult> GetAuthCodeAsync(ApiPlatformGameAccount platformGameAccount) { var identity = (ClaimsIdentity?)User.Identity; if (identity?.Claims.Any(s => (s.Type == ClaimTypes.Sid) && (s.Value == platformGameAccount.PlatformGameAccountId)) != true) { return BadRequest(logLanguage[LogLanguageKey.AUTH_INCORRECT]); } var authCode = Guid.NewGuid(); // Push via the SignalR hub so the code lands in the shared // auth-code store on MasterServer — LoginServer reads from the // same store when validating NoS0577's AuthToken. await authHub.StoreAuthCodeAsync(authCode.ToString(), identity.Claims.First(s => s.Type == ClaimTypes.NameIdentifier).Value); return Ok(new { code = authCode }); } [HttpPost] public IActionResult SetExpectingConnection([FromBody] AuthIntent intent) { if (intent == null!) { return BadRequest(logLanguage[LogLanguageKey.AUTH_INCORRECT]); } authHub.SetAwaitingConnectionAsync(intent.SessionId, intent.AccountName); return Ok(); } [HttpGet] public async Task<IActionResult> GetExpectingConnection(string? id, string? token, int sessionId) { return Ok(await authHub.GetAwaitingConnectionAsync(id, token, sessionId)); } [HttpGet("MfaEnabled")] [AllowAnonymous] public async Task<IActionResult> HasMfaEnabled(string? username) { var account = await accountDao.FirstOrDefaultAsync(s => s.Name == username); if (account == null || account.MfaSecret == null) { return Ok(false); } return Ok(true); } } [Serializable] public class ApiSession { [Required] public string GfLang { get; set; } = null!; [Required] public string Identity { get; set; } = null!; [Required] public string Locale { get; set; } = null!; [Required] public string Password { get; set; } = null!; public string? Mfa { get; set; } } [Serializable] public class ApiPlatformGameAccount { public string? PlatformGameAccountId { get; set; } } } ================================================ FILE: src/NosCore.WebApi/Controllers/NosmallController.cs ================================================ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using System; using System.Net; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace NosCore.WebApi.Controllers { [Route("[controller]")] [AllowAnonymous] // this file is an entrypoint for Mall creation. it's not recommended to add code here. public class MallController(IAuthHub authHub) : Controller { [HttpGet] [Route("")] public async Task<ActionResult> IndexAsync(string sid, string pid, string user_id, string m_szName, string sas, string c, string shopType, string display_language) { using var md5 = MD5.Create(); var md5bytes = md5.ComputeHash(Encoding.Default.GetBytes($"{sid}{pid}{user_id}{m_szName}shtmxpdlfeoqkr")); if (sas != Convert.ToHexString(md5bytes)) { throw new ArgumentException(null, nameof(sas)); } var forwarded = Request.Headers["X-Forwarded-For"].ToString(); var parts = forwarded.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries); var expected = await authHub.GetSessionIpAsync(user_id); if (parts.Length == 0 || !IPAddress.TryParse(parts[0], out var headerIp) || string.IsNullOrEmpty(expected) || !IPAddress.TryParse(expected, out var expectedIp) || !headerIp.Equals(expectedIp)) { throw new ArgumentException(null, "X-Forwarded-For"); } var result = Content(@$"<!DOCTYPE html> <html> <body> {sid} {pid} {user_id} {m_szName} {sas} {c} {shopType} {display_language} </body> </html>"); result.ContentType = "text/html; charset=UTF-8"; return result; } } } ================================================ FILE: src/NosCore.WebApi/NosCore.WebApi.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net10.0</TargetFramework> <TieredCompilation>true</TieredCompilation> <InvariantGlobalization>false</InvariantGlobalization> <SelfContained>false</SelfContained> </PropertyGroup> <PropertyGroup Condition="'$(TargetArch)' == 'linux-musl-x64'"> <RuntimeIdentifier>linux-musl-x64</RuntimeIdentifier> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <OutputPath>../../build/</OutputPath> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <OutputPath>../../build/</OutputPath> </PropertyGroup> <ItemGroup> <PackageReference Include="Autofac.Extensions.DependencyInjection" /> <PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" /> <PackageReference Include="NosCore.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> <ItemGroup> <ProjectReference Include="..\NosCore.Database\NosCore.Database.csproj" /> <ProjectReference Include="..\NosCore.GameObject\NosCore.GameObject.csproj" /> </ItemGroup> </Project> ================================================ FILE: src/NosCore.WebApi/WebApiBootstrap.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Autofac; using Autofac.Extensions.DependencyInjection; using Serilog; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Diagnostics.HealthChecks; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; using NosCore.Core.Configuration; using NosCore.Core.Encryption; using NosCore.Core.Observability; using NosCore.Dao; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Database; using NosCore.Database.Entities; using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using NosCore.Shared.Authentication; using NosCore.Shared.Configuration; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; namespace NosCore.WebApi { public class WebApiBootstrap { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); builder.Services.AddRazorPages(); builder.Services.AddHealthChecks() .AddDbContextCheck<NosCoreContext>("database"); builder.Services.AddNosCoreTelemetry("NosCore.WebApi", includeAspNetCore: true); var loginConfiguration = new ApiConfiguration(); var conf = ConfiguratorBuilder.InitializeConfiguration(args, new[] { "logger.yml", "api.yml" }); conf.Bind(loginConfiguration); builder.Services.AddDbContext<NosCoreContext>( conf => conf.UseNpgsql(loginConfiguration.Database.ConnectionString, options => { options.UseNodaTime(); })); builder.Services.AddOptions<LoginConfiguration>().Bind(conf).ValidateDataAnnotations(); builder.Services.AddOptions<ServerConfiguration>().Bind(conf).ValidateDataAnnotations(); builder.Services.AddOptions<WebApiConfiguration>().Bind(conf.GetSection(nameof(ApiConfiguration.MasterCommunication))).ValidateDataAnnotations(); builder.Services.AddI18NLogs(); builder.Services.ConfigureOptions<NosCore.Core.ConfigureJwtBearerOptions>(); builder.Services.AddAuthentication(c => c.DefaultScheme = JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(); builder.Services.AddAuthorization(); builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()); builder.Host.ConfigureContainer<ContainerBuilder>( containerBuilder => { // Talk to the shared auth-code store on MasterServer via the // AuthHub SignalR client rather than using a local // AuthCodeService — otherwise codes stored here never reach // the LoginServer process that has to validate them. containerBuilder.RegisterType<NosCore.GameObject.InterChannelCommunication.HubConnectionFactory>(); containerBuilder.RegisterType<AuthHubClient>().AsImplementedInterfaces(); containerBuilder.RegisterType<NosCoreContext>().As<DbContext>(); containerBuilder.RegisterType<Dao<Account, AccountDto, long>>().As<IDao<AccountDto, long>>().SingleInstance(); containerBuilder.Register<IHasher>(o => o.Resolve<IOptions<WebApiConfiguration>>().Value.HashingType switch { HashingType.BCrypt => new BcryptHasher(), HashingType.Pbkdf2 => new Pbkdf2Hasher(), _ => new Sha512Hasher() }); }); var app = builder.Build(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapRazorPages(); app.MapControllers(); app.MapHealthChecks("/health/live", new HealthCheckOptions { Predicate = _ => false }).AllowAnonymous(); app.MapHealthChecks("/health/ready").AllowAnonymous(); app.Run(); } } } ================================================ FILE: src/NosCore.WorldServer/NosCore.WorldServer.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net10.0</TargetFramework> <TieredCompilation>true</TieredCompilation> <InvariantGlobalization>false</InvariantGlobalization> <SelfContained>false</SelfContained> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <OutputPath>../../build/</OutputPath> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <OutputPath>../../build/</OutputPath> </PropertyGroup> <PropertyGroup Condition="'$(TargetArch)' == 'linux-musl-x64'"> <RuntimeIdentifier>linux-musl-x64</RuntimeIdentifier> </PropertyGroup> <ItemGroup> <PackageReference Include="Autofac" /> <PackageReference Include="Autofac.Extensions.DependencyInjection" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" /> <PackageReference Include="Microsoft.AspNetCore.Authorization" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" /> <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" /> <PackageReference Include="Polly" /> <PackageReference Include="Serilog.Extensions.Logging" /> <PackageReference Include="Microsoft.Extensions.Logging" /> <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\NosCore.Database\NosCore.Database.csproj" /> <ProjectReference Include="..\NosCore.PacketHandlers\NosCore.PacketHandlers.csproj" /> </ItemGroup> <ItemGroup> <PackageReference Include="NosCore.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> </Project> ================================================ FILE: src/NosCore.WorldServer/WorldServer.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using NosCore.Core; using NosCore.Core.Configuration; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.Networking; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.GameObject.Services.SaveService; using NosCore.Networking; using NosCore.Networking.SessionGroup; using NosCore.Shared.I18N; using Polly; using System; using System.Linq; using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; namespace NosCore.WorldServer { public class WorldServer(IOptions<WorldConfiguration> worldConfiguration, NetworkManager networkManager, ILogger<WorldServer> logger, IMapInstanceGeneratorService mapInstanceGeneratorService, ISaveService saveService, ILogLanguageLocalizer<LogLanguageKey> logLanguage, Channel channel, IChannelHub channelHubClient, ISessionGroupFactory sessionGroupFactory, ISessionRegistry sessionRegistry) : BackgroundService { protected override async Task ExecuteAsync(CancellationToken stoppingToken) { Broadcaster.Initialize(sessionGroupFactory); await mapInstanceGeneratorService.InitializeAsync(); logger.LogInformation(logLanguage[LogLanguageKey.SUCCESSFULLY_LOADED]); AppDomain.CurrentDomain.ProcessExit += (_, _) => { logger.LogInformation(logLanguage[LogLanguageKey.SAVING_ALL]); Task.WhenAll(sessionRegistry.GetSessions().Select(saveService.SaveAsync)).GetAwaiter().GetResult(); logger.LogInformation(logLanguage[LogLanguageKey.CHANNEL_WILL_EXIT], 30); Thread.Sleep(30000); }; if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { Console.Title += $@" - Port : {worldConfiguration.Value.Port}"; } var connectTask = Policy .Handle<Exception>() .WaitAndRetryForeverAsync(retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)), (_, __, timeSpan) => logger.LogError( logLanguage[LogLanguageKey.MASTER_SERVER_RETRY], timeSpan.TotalSeconds) ).ExecuteAsync(() => channelHubClient.Bind(channel)); await Task.WhenAny(connectTask, networkManager.RunServerAsync()); } } } ================================================ FILE: src/NosCore.WorldServer/WorldServerBootstrap.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Autofac; using Autofac.Extensions.DependencyInjection; using FastExpressionCompiler; using FastMember; using Mapster; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Http; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using NodaTime; using NosCore.Algorithm.ExperienceService; using NosCore.Core; using NosCore.Core.Configuration; using NosCore.Core.Encryption; using NosCore.Core.I18N; using NosCore.Core.Observability; using NosCore.Core.Services.IdService; using NosCore.Dao; using NosCore.Dao.Interfaces; using NosCore.Data; using NosCore.Data.CommandPackets; using NosCore.Data.DataAttributes; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Resource; using NosCore.Database; using NosCore.Database.Entities; using NosCore.Database.Entities.Base; using NosCore.Database.Hosting; using NosCore.GameObject.Ecs; using NosCore.GameObject.Hosting.Modules; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Messaging; using NosCore.GameObject.Messaging.ScheduledJobs; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.ChannelCommunicationService.Handlers; using NosCore.GameObject.Services.ExchangeService; using NosCore.GameObject.Services.GroupService; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.Services.PathfindingService; using NosCore.Networking; using NosCore.Networking.Encoding; using NosCore.Networking.Encoding.Filter; using NosCore.Networking.SessionGroup; using NosCore.Networking.SessionRef; using NosCore.PacketHandlers.Login; using NosCore.Packets; using NosCore.Packets.Attributes; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.PathFinder.Heuristic; using NosCore.PathFinder.Interfaces; using NosCore.Shared.Authentication; using NosCore.Shared.Configuration; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Serilog; using Wolverine; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Threading.Tasks; namespace NosCore.WorldServer { public static class WorldServerBootstrap { private const string Title = "NosCore - WorldServer"; private const string ConsoleText = "WORLD SERVER - NosCoreIO"; private static void InitializeConfiguration(string[] args, IServiceCollection services) { var worldConfiguration = new WorldConfiguration(); var conf = ConfiguratorBuilder.InitializeConfiguration(args, new[] { "logger.yml", "world.yml" }); conf.Bind(worldConfiguration); services.AddDbContext<NosCoreContext>( conf => conf.UseNpgsql(worldConfiguration.Database.ConnectionString, options => { options.UseNodaTime(); })); services.AddOptions<WorldConfiguration>().Bind(conf).ValidateDataAnnotations(); services.AddOptions<ServerConfiguration>().Bind(conf).ValidateDataAnnotations(); services.AddOptions<WebApiConfiguration>().Bind(conf.GetSection(nameof(LoginConfiguration.MasterCommunication))).ValidateDataAnnotations(); Logger.PrintHeader(ConsoleText); CultureInfo.DefaultThreadCurrentCulture = new(worldConfiguration.Language.ToString()); } private static void InitializeContainer(ContainerBuilder containerBuilder) { containerBuilder.RegisterModule(new PersistenceModule((b, t) => { foreach (var tgo in typeof(MapWorld).Assembly.GetTypes().Where(t.IsAssignableFrom)) { b.RegisterType(tgo); b.RegisterType(typeof(GameObjectMapper<,>).MakeGenericType(t, tgo)) .As(typeof(IGameObjectMapper<>).MakeGenericType(t)) .AutoActivate(); } })); containerBuilder.RegisterType<MapsterMapper.Mapper>().AsImplementedInterfaces(); var listofpacket = typeof(IPacket).Assembly.GetTypes() .Where(p => p.GetInterfaces().Contains(typeof(IPacket)) && (p.GetCustomAttribute<PacketHeaderAttribute>() == null || (p.GetCustomAttribute<PacketHeaderAttribute>()!.Scopes & Scope.OnLoginScreen) == 0) && p.IsClass && !p.IsAbstract).ToList(); listofpacket.AddRange(typeof(HelpPacket).Assembly.GetTypes() .Where(p => p.GetInterfaces().Contains(typeof(IPacket)) && p.IsClass && !p.IsAbstract).ToList()); containerBuilder.Register(c => new Deserializer(listofpacket)) .AsImplementedInterfaces() .SingleInstance(); containerBuilder.Register(c => new Serializer(listofpacket)) .AsImplementedInterfaces() .SingleInstance(); //NosCore.Configuration containerBuilder.RegisterAssemblyTypes(typeof(ChannelHubClient).Assembly) .Where(t => t.Name.EndsWith("HubClient") && t.Name != nameof(ChannelHubClient)) .AsImplementedInterfaces() .SingleInstance(); containerBuilder.RegisterType<ChannelHubClient>().AsImplementedInterfaces().SingleInstance(); containerBuilder.RegisterType<HubConnectionFactory>(); containerBuilder.Register(c => { var configuration = c.Resolve<IOptions<WorldConfiguration>>(); return new Channel { MasterCommunication = configuration.Value.MasterCommunication, ClientName = configuration.Value.ServerName!, ClientType = ServerType.WorldServer, ConnectedAccountLimit = configuration.Value.ConnectedAccountLimit, Port = configuration.Value.Port, DisplayPort = configuration.Value.DisplayPort, DisplayHost = configuration.Value.DisplayHost, ServerId = configuration.Value.ServerId, StartInMaintenance = configuration.Value.StartInMaintenance, Host = configuration.Value.Host!, }; }); containerBuilder.Register<IHasher>(o => o.Resolve<IOptions<WebApiConfiguration>>().Value.HashingType switch { HashingType.BCrypt => new BcryptHasher(), HashingType.Pbkdf2 => new Pbkdf2Hasher(), _ => new Sha512Hasher() }); //NosCore.Controllers containerBuilder.RegisterTypes(typeof(NoS0575PacketHandler).Assembly.GetTypes() .Where(type => typeof(IPacketHandler).IsAssignableFrom(type) && typeof(IWorldPacketHandler).IsAssignableFrom(type)).ToArray()) .AsImplementedInterfaces(); //NosCore.Core containerBuilder.RegisterModule<NetworkingModule>(); containerBuilder.RegisterType<WorldDecoder>().AsImplementedInterfaces(); containerBuilder.RegisterType<WorldEncoder>().AsImplementedInterfaces(); containerBuilder.Register(x => new List<IRequestFilter>()).As<IEnumerable<IRequestFilter>>(); containerBuilder.RegisterType<WorldPacketHandlingStrategy>().As<IPacketHandlingStrategy>().SingleInstance(); containerBuilder.RegisterAssemblyTypes(typeof(ISessionDisconnectHandler).Assembly) .Where(t => typeof(ISessionDisconnectHandler).IsAssignableFrom(t) && !t.IsInterface && !t.IsAbstract) .AsImplementedInterfaces(); containerBuilder.Register(c => { var conf = c.Resolve<IOptions<WorldConfiguration>>(); return new PipelineConfiguration { UseDelimiter = true, Language = conf.Value.Language }; }).As<IPipelineConfiguration>().SingleInstance(); // IIdService / pathfinder heuristic / session + map registries / hub clients / // combat pipeline are all registered in IServiceCollection by // WolverineDependencyRegistrar.RegisterDependencies so Wolverine can see them // at codegen time. AutofacServiceProviderFactory.Populate() copies those // registrations into the Autofac container at host-build, which is why they // aren't duplicated here — registering them on both sides would produce the // "An item with the same key..." runtime errors (see PersistenceModule.MirrorTo // comment for the same pattern on the DAO side). containerBuilder.RegisterType<NosCore.GameObject.Services.UpgradeService.RandomNumberSource>() .As<NosCore.GameObject.Services.UpgradeService.IRandomNumberSource>().SingleInstance(); containerBuilder.RegisterAssemblyTypes(typeof(MapWorld).Assembly) .Where(t => typeof(NosCore.GameObject.Services.UpgradeService.IUpgradeOperation).IsAssignableFrom(t) && !t.IsInterface && !t.IsAbstract) .AsImplementedInterfaces() .SingleInstance(); containerBuilder.RegisterAssemblyTypes(typeof(MapWorld).Assembly) .Where(t => typeof(IDto).IsAssignableFrom(t)) .AsSelf(); containerBuilder .RegisterAssemblyTypes(typeof(ChannelCommunicationMessageHandler<>).Assembly) .Where(t => typeof(IChannelCommunicationMessageHandler<NosCore.GameObject.InterChannelCommunication.Messages.IMessage>).IsAssignableFrom(t)) .SingleInstance() .AsImplementedInterfaces(); } public static async Task Main(string[] args) { try { await BuildHost(args).RunAsync(); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadLine(); } } private static IHost BuildHost(string[] args) { return Host.CreateDefaultBuilder(args) .UseSerilog() .UseNosCoreWolverine("NosCore.WorldServer", typeof(NoS0575PacketHandler).Assembly) .UseServiceProviderFactory(new AutofacServiceProviderFactory()) .ConfigureContainer<ContainerBuilder>(InitializeContainer) .ConfigureServices((hostContext, services) => { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { Console.Title = Title; } InitializeConfiguration(args, services); services.AddLogging(builder => builder.AddFilter("Microsoft", LogLevel.Warning)); services.AddNosCoreTelemetry("NosCore.WorldServer"); services.AddI18NLogs(); services.AddTransient(typeof(IGameLanguageLocalizer), typeof(GameLanguageLocalizer)); services.AddTransient(typeof(ILogLanguageLocalizer<LanguageKey>), x => new LogLanguageLocalizer<LanguageKey, LocalizedResources>( x.GetRequiredService<IStringLocalizer<LocalizedResources>>())); // IClock is wired as a singleton here because SystemClock is an external // NodaTime type with no container-friendly constructor. services.AddSingleton<IClock>(_ => SystemClock.Instance); // ID services, session/map registries, hub clients, pathfinder and the // combat pipeline live behind a single registrar. Registering them once // in IServiceCollection — Autofac populates from it — keeps Wolverine // codegen and Autofac runtime resolution on the same view of the world. // Scan the Algorithm package for *Service classes. GameObject-side // *Service/*Queue/*Ai/etc. are handled by the registrar below // with lifetime driven off the ISingletonService marker. foreach (var implType in typeof(IExperienceService).Assembly.GetTypes() .Where(t => t.Name.EndsWith("Service") && t.IsClass && !t.IsAbstract)) { foreach (var iface in implType.GetInterfaces()) { services.AddTransient(iface, implType); } services.AddTransient(implType); } NosCore.Database.Hosting.PersistenceModule.MirrorTo(services); NosCore.GameObject.Messaging.WolverineDependencyRegistrar.RegisterDependencies(services); services.RemoveAll<IHttpMessageHandlerBuilderFilter>(); services.AddHostedService<WorldServer>(); services.AddHostedService(sp => new RecurringMessagePublisher<SaveAllSessionsMessage>( sp.GetRequiredService<IMessageBus>(), sp.GetRequiredService<ILogger<RecurringMessagePublisher<SaveAllSessionsMessage>>>(), TimeSpan.FromMinutes(5))); services.AddHostedService(sp => new RecurringMessagePublisher<RemoveTimeoutStaticBonusesMessage>( sp.GetRequiredService<IMessageBus>(), sp.GetRequiredService<ILogger<RecurringMessagePublisher<RemoveTimeoutStaticBonusesMessage>>>(), TimeSpan.FromMinutes(5))); TypeAdapterConfig.GlobalSettings.AllowImplicitSourceInheritance = false; TypeAdapterConfig.GlobalSettings.ForDestinationType<IPacket>().Ignore(s => s.ValidationResult); TypeAdapterConfig.GlobalSettings.ForDestinationType<I18NString>().BeforeMapping(s => s.Clear()); TypeAdapterConfig.GlobalSettings.Default.IgnoreMember((member, side) => ((side == MemberSide.Destination) && member.Type.GetInterfaces().Contains(typeof(IEntity))) || (member.Type.GetGenericArguments().Any() && member.Type.GetGenericArguments()[0].GetInterfaces().Contains(typeof(IEntity)))); TypeAdapterConfig.GlobalSettings.When(s => !s.SourceType.IsAssignableFrom(s.DestinationType)) .IgnoreMember((member, side) => typeof(I18NString).IsAssignableFrom(member.Type)); TypeAdapterConfig.GlobalSettings.EnableJsonMapping(); TypeAdapterConfig.GlobalSettings.Compiler = exp => exp.CompileFast(); }) .Build(); } } } ================================================ FILE: test/NosCore.Core.Tests/LogLanguageTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Resource; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using SpecLight; using System; using System.Globalization; using System.Linq; namespace NosCore.Core.Tests { [TestClass] public class LogLanguageTests { private readonly LogLanguageLocalizer<LogLanguageKey, LocalizedResources> LogLanguageLocalizer; public LogLanguageTests() { var factory = new ResourceManagerStringLocalizerFactory(Options.Create(new LocalizationOptions()), new LoggerFactory()); LogLanguageLocalizer = new LogLanguageLocalizer<LogLanguageKey, LocalizedResources>( new StringLocalizer<LocalizedResources>(factory)); } [TestCategory("OPTIONAL-TEST")] [DataTestMethod] [DataRow(RegionType.EN)] [DataRow(RegionType.CS)] [DataRow(RegionType.DE)] [DataRow(RegionType.ES)] [DataRow(RegionType.FR)] [DataRow(RegionType.IT)] [DataRow(RegionType.PL)] [DataRow(RegionType.TR)] [DataRow(RegionType.RU)] public void CheckEveryLanguageValueSet(RegionType type) { CultureInfo.CurrentCulture = new CultureInfo(type.ToString()); var result = string.Join(Environment.NewLine, I18NTestHelpers.GetKeysWithMissingTranslations(LogLanguageLocalizer) .Select(x => $"value {x} not defined")); if (result.Length != 0) { Assert.Fail(result); } } [DataTestMethod] [DataRow(RegionType.EN)] [DataRow(RegionType.CS)] [DataRow(RegionType.DE)] [DataRow(RegionType.ES)] [DataRow(RegionType.FR)] [DataRow(RegionType.IT)] [DataRow(RegionType.PL)] [DataRow(RegionType.TR)] [DataRow(RegionType.RU)] public void CheckEveryLanguageAreUsefull(RegionType type) { CultureInfo.CurrentUICulture = new CultureInfo(type.ToString()); var result = string.Join(Environment.NewLine, I18NTestHelpers.GetUselessTranslations(LogLanguageLocalizer, Enum.GetValues(typeof(LanguageKey)).OfType<LanguageKey>().Select(s => s.ToString()) .Concat(Enum.GetValues(typeof(LogLanguageKey)).OfType<LogLanguageKey>().Select(s => s.ToString())).ToList()) .Select(x => $"key {x} is useless")); if (result.Length != 0) { Assert.Fail(result); } } [TestMethod] public void CheckLanguageUsage() { new Spec("Check language usage") .Then(AllLanguageKeysShouldBeUsed) .Execute(); } private void AllLanguageKeysShouldBeUsed() { var result = string.Join(Environment.NewLine, I18NTestHelpers.GetUselessLanguageKeys<LanguageKey>().Cast<Enum>() .Union(I18NTestHelpers.GetUselessLanguageKeys<LogLanguageKey>().Cast<Enum>()) .Select(x => $"{x.GetType().Name} {x} is not used!")); if (result.Length != 0) { Assert.Fail(result); } } } } ================================================ FILE: test/NosCore.Core.Tests/NosCore.Core.Tests.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net10.0</TargetFramework> <IsPackable>false</IsPackable> <NoWarn>MSTEST0001;MSTEST0037;MSTEST0044;NU1701</NoWarn> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <ItemGroup> <PackageReference Include="coverlet.msbuild"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Microsoft.NET.Test.Sdk" /> <PackageReference Include="MSTest.TestAdapter" /> <PackageReference Include="MSTest.TestFramework" /> <PackageReference Include="SpecLight" /> <PackageReference Include="AutoFixture" /> <PackageReference Include="AutoFixture.AutoMoq" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\..\src\NosCore.Core\NosCore.Core.csproj" /> <ProjectReference Include="..\..\test\NosCore.Tests.Shared\NosCore.Tests.Shared.csproj" /> </ItemGroup> <ItemGroup> <PackageReference Include="NosCore.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> </Project> ================================================ FILE: test/NosCore.Database.Tests/DatabaseTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.EntityFrameworkCore; using Microsoft.VisualStudio.TestTools.UnitTesting; using SpecLight; using System; using System.Collections.ObjectModel; using System.Linq; using System.Reflection; using System.Text; namespace NosCore.Database.Tests { [TestClass] public class DatabaseTests { public static bool IsNullable(PropertyInfo property) { var nullable = property.CustomAttributes .FirstOrDefault(x => x.AttributeType.FullName == "System.Runtime.CompilerServices.NullableAttribute"); if (nullable != null && nullable.ConstructorArguments.Count == 1) { var attributeArgument = nullable.ConstructorArguments[0]; if (attributeArgument.ArgumentType == typeof(byte[])) { var args = (ReadOnlyCollection<CustomAttributeTypedArgument>?)attributeArgument.Value; if (args?.Count > 0 && args[0].ArgumentType == typeof(byte)) { return (byte?)args[0].Value == 2; } } else if (attributeArgument.ArgumentType == typeof(byte)) { return (byte?)attributeArgument.Value == 2; } } var context = property.DeclaringType?.CustomAttributes .FirstOrDefault(x => x.AttributeType.FullName == "System.Runtime.CompilerServices.NullableContextAttribute"); if (context != null && context.ConstructorArguments.Count == 1 && context.ConstructorArguments[0].ArgumentType == typeof(byte)) { return (byte?)context.ConstructorArguments[0].Value == 2; } return false; } [TestMethod] public void AllNullableForeignKeysShouldBeAssociatedToNullableEntity() { new Spec("All nullable foreign keys should be associated to nullable entity") .Then(NullableForeignKeysShouldHaveNullableNavigationProperties) .Execute(); } private void NullableForeignKeysShouldHaveNullableNavigationProperties() { using var ctx = new NosCoreContext(new DbContextOptionsBuilder<NosCoreContext>().UseInMemoryDatabase( Guid.NewGuid().ToString()).Options); var nonNullNavigation = new StringBuilder(); foreach (var entityType in ctx.Model.GetEntityTypes()) { foreach (var navigation in entityType.GetNavigations()) { var foreignKey = navigation.ForeignKey.Properties[0].PropertyInfo?.PropertyType; if (navigation.IsCollection || navigation.PropertyInfo == null || foreignKey == null || !foreignKey.IsGenericType || foreignKey.GetGenericTypeDefinition() != typeof(Nullable<>)) { continue; } if (!IsNullable(navigation.PropertyInfo)) { nonNullNavigation.AppendLine( $"{entityType.Name} -> {navigation.Name} is not nullable but it's foreign key is not required"); } } } Assert.AreEqual(string.Empty, nonNullNavigation.ToString()); } } } ================================================ FILE: test/NosCore.Database.Tests/NosCore.Database.Tests.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net10.0</TargetFramework> <IsPackable>false</IsPackable> <NoWarn>MSTEST0001;MSTEST0037;MSTEST0044;NU1701</NoWarn> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <ItemGroup> <PackageReference Include="coverlet.msbuild"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Microsoft.NET.Test.Sdk" /> <PackageReference Include="MSTest.TestAdapter" /> <PackageReference Include="MSTest.TestFramework" /> <PackageReference Include="SpecLight" /> <PackageReference Include="AutoFixture" /> <PackageReference Include="AutoFixture.AutoMoq" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\..\src\NosCore.Database\NosCore.Database.csproj" /> <ProjectReference Include="..\..\test\NosCore.Tests.Shared\NosCore.Tests.Shared.csproj" /> </ItemGroup> <ItemGroup> <PackageReference Include="NosCore.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> </Project> ================================================ FILE: test/NosCore.GameObject.Tests/BazaarTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using AutoFixture; using NodaTime; using Json.More; using Json.Patch; using Json.Pointer; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub; using NosCore.GameObject.Services.BazaarService; using NosCore.Tests.Shared.AutoFixture; using SpecLight; using System; using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; namespace NosCore.GameObject.Tests { [TestClass] public class BazaarTests { private BazaarHub BazaarController = null!; private BazaarRegistry BazaarItemsHolder = null!; private Guid Guid; private Mock<IDao<BazaarItemDto, long>> MockBzDao = null!; private Mock<IDao<IItemInstanceDto?, Guid>> MockItemDao = null!; private NosCoreFixture Fixture = null!; private LanguageKey? LastResult; [TestInitialize] public void Setup() { Guid = Guid.NewGuid(); Fixture = new NosCoreFixture(); MockBzDao = new Mock<IDao<BazaarItemDto, long>>(); MockItemDao = new Mock<IDao<IItemInstanceDto?, Guid>>(); var mockCharacterDao = new Mock<IDao<CharacterDto, long>>(); BazaarItemsHolder = new BazaarRegistry(MockBzDao.Object, MockItemDao.Object, mockCharacterDao.Object); BazaarController = new BazaarHub(new BazaarService(BazaarItemsHolder, MockBzDao.Object, MockItemDao.Object, Fixture.Create<IClock>())); MockItemDao.Setup(s => s.TryInsertOrUpdateAsync(It.IsAny<IItemInstanceDto?>())) .Returns<IItemInstanceDto?>(Task.FromResult); MockBzDao.Setup(s => s.TryInsertOrUpdateAsync(It.IsAny<BazaarItemDto>())) .Returns<BazaarItemDto>(Task.FromResult); } [TestMethod] public async Task AddingFullStackToBazaarShouldSucceed() { await new Spec("Adding full stack to bazaar should succeed") .Given(AnItemExistsWithQuantity_, 99) .WhenAsync(RegisteringItems_, 99) .Then(TheItemShouldBeInBazaar) .And(TheBazaarAmountShouldBe_, 99) .And(TheResultShouldBeSuccess) .ExecuteAsync(); } [TestMethod] public async Task AddingPartialStackShouldCreateNewItemInstance() { await new Spec("Adding partial stack creates new item instance") .Given(AnItemExistsWithQuantity_, 99) .WhenAsync(RegisteringItems_, 50) .Then(ANewItemInstanceShouldBeCreated) .And(TheBazaarAmountShouldBe_, 50) .And(TheResultShouldBeSuccess) .ExecuteAsync(); } [TestMethod] public async Task AddingNegativeAmountShouldThrow() { await new Spec("Adding negative amount should throw") .Given(AnItemExistsWithQuantity_, 99) .When(AttemptingToRegisterNegativeAmountThrows) .ExecuteAsync(); } [TestMethod] public async Task AddingNegativePriceShouldThrow() { await new Spec("Adding negative price should throw") .Given(AnItemExistsWithQuantity_, 99) .When(AttemptingToRegisterNegativePriceThrows) .ExecuteAsync(); } [TestMethod] public async Task AddingMoreThanAvailableShouldThrow() { await new Spec("Adding more than available should throw") .Given(AnItemExistsWithQuantity_, 99) .When(AttemptingToRegisterMoreThanAvailableThrows) .ExecuteAsync(); } [TestMethod] public async Task AddingNullItemShouldThrow() { await new Spec("Adding null item should throw") .When(AttemptingToRegisterNonExistentItemThrows) .ExecuteAsync(); } [TestMethod] public async Task ExceedingBazaarLimitShouldFail() { var rand = new Random(); MockBzDao.Setup(m => m.TryInsertOrUpdateAsync(It.IsAny<BazaarItemDto>())) .Returns((BazaarItemDto y) => { y.BazaarItemId = rand.Next(0, 9999999); return Task.FromResult(y); }); await new Spec("Exceeding bazaar limit should fail") .GivenAsync(APlayerAttemptsToListManyItems) .Then(Only_ItemsShouldBeListed, 10) .And(TheResultShouldBeLimitExceeded) .ExecuteAsync(); } [TestMethod] public async Task DeletingNonExistentListingShouldThrow() { await new Spec("Deleting non-existent listing should throw") .When(AttemptingToDeleteNonExistentListingThrows) .ExecuteAsync(); } [TestMethod] public async Task OwnerCanRemoveFromBazaar() { await new Spec("Owner can remove from bazaar") .GivenAsync(AnItemIsListedByOwner) .WhenAsync(OwnerRemovesAllItems) .Then(ListingShouldBeRemoved) .ExecuteAsync(); } [TestMethod] public async Task ModifyingPriceShouldSucceed() { await new Spec("Modifying price should succeed") .GivenAsync(AnItemIsListedAtPrice_, 80L) .WhenAsync(ChangingPriceTo_, 50L) .Then(PriceShouldBe_, 50L) .ExecuteAsync(); } private void AnItemExistsWithQuantity_(int amount) { MockItemDao .Setup(s => s.FirstOrDefaultAsync(It.IsAny<Expression<Func<IItemInstanceDto?, bool>>>())) .ReturnsAsync(new ItemInstanceDto { Id = Guid, Amount = (short)amount }); } private async Task RegisteringItems_(int amount) { LastResult = await BazaarController.AddBazaarAsync(Fixture.Build<BazaarRequest>() .With(r => r.Amount, amount) .With(r => r.ItemInstanceId, Guid) .Create()); } private void TheItemShouldBeInBazaar() { Assert.AreEqual(Guid, BazaarItemsHolder.GetById(0)?.BazaarItem?.ItemInstanceId); } private void TheBazaarAmountShouldBe_(int expected) { Assert.AreEqual(expected, BazaarItemsHolder.GetById(0)?.BazaarItem?.Amount ?? 0); } private void TheResultShouldBeSuccess() { Assert.AreEqual(LanguageKey.OBJECT_IN_BAZAAR, LastResult); } private void ANewItemInstanceShouldBeCreated() { Assert.AreNotEqual(Guid, BazaarItemsHolder.GetById(0)?.BazaarItem?.ItemInstanceId); } private void AttemptingToRegisterNegativeAmountThrows() { Assert.ThrowsExactlyAsync<ArgumentException>(async () => await BazaarController.AddBazaarAsync(Fixture.Build<BazaarRequest>() .With(r => r.Amount, -50) .With(r => r.ItemInstanceId, Guid) .Create())); } private void AttemptingToRegisterNegativePriceThrows() { Assert.ThrowsExactlyAsync<ArgumentException>(async () => await BazaarController.AddBazaarAsync(Fixture.Build<BazaarRequest>() .With(r => r.Amount, 50) .With(r => r.Price, -50) .With(r => r.ItemInstanceId, Guid) .Create())); } private void AttemptingToRegisterMoreThanAvailableThrows() { Assert.ThrowsExactlyAsync<ArgumentException>(async () => await BazaarController.AddBazaarAsync(Fixture.Build<BazaarRequest>() .With(r => r.Amount, 100) .With(r => r.ItemInstanceId, Guid) .Create())); } private void AttemptingToRegisterNonExistentItemThrows() { Assert.ThrowsExactlyAsync<ArgumentException>(async () => await BazaarController.AddBazaarAsync(Fixture.Build<BazaarRequest>() .With(r => r.ItemInstanceId, Guid) .Create())); } private async Task APlayerAttemptsToListManyItems() { for (var i = 0; i < 12; i++) { var guid = Guid.NewGuid(); MockItemDao.Reset(); MockItemDao.Setup(s => s.TryInsertOrUpdateAsync(It.IsAny<IItemInstanceDto?>())) .Returns<IItemInstanceDto?>(Task.FromResult); MockItemDao .Setup(s => s.FirstOrDefaultAsync(It.IsAny<Expression<Func<IItemInstanceDto?, bool>>>())) .ReturnsAsync(new ItemInstanceDto { Id = guid, Amount = 99 }); LastResult = await BazaarController.AddBazaarAsync(Fixture.Build<BazaarRequest>() .With(r => r.Amount, 99) .With(r => r.ItemInstanceId, guid) .With(r => r.CharacterId, 1L) .With(r => r.CharacterName, "test") .With(r => r.HasMedal, false) .Create()); } } private void Only_ItemsShouldBeListed(int value) { Assert.AreEqual(10, BazaarItemsHolder.GetAll().Count()); } private void TheResultShouldBeLimitExceeded() { Assert.AreEqual(LanguageKey.LIMIT_EXCEEDED, LastResult); } private void AttemptingToDeleteNonExistentListingThrows() { Assert.ThrowsExactlyAsync<ArgumentException>(async () => await BazaarController.DeleteBazaarAsync(0, 99, "test")); } private async Task AnItemIsListedByOwner() { AnItemExistsWithQuantity_(99); await BazaarController.AddBazaarAsync(Fixture.Build<BazaarRequest>() .With(r => r.Amount, 99) .With(r => r.ItemInstanceId, Guid) .With(r => r.CharacterName, "test") .Create()); } private async Task OwnerRemovesAllItems() { var result = await BazaarController.DeleteBazaarAsync(0, 99, "test"); Assert.IsTrue(result); } private void ListingShouldBeRemoved() { Assert.AreEqual(0, BazaarItemsHolder.GetAll().Count()); } private async Task AnItemIsListedAtPrice_(long price) { AnItemExistsWithQuantity_(99); await BazaarController.AddBazaarAsync(Fixture.Build<BazaarRequest>() .With(r => r.Amount, 99) .With(r => r.ItemInstanceId, Guid) .With(r => r.Price, price) .Create()); } private async Task ChangingPriceTo_(long newPrice) { var patch = new JsonPatch(PatchOperation.Replace( JsonPointer.Parse("/BazaarItem/Price"), newPrice.AsJsonElement().AsNode())); var result = await BazaarController.ModifyBazaarAsync(0, patch); Assert.IsNotNull(result); } private void PriceShouldBe_(long expected) { Assert.AreEqual(expected, BazaarItemsHolder.GetById(0)?.BazaarItem?.Price); } } } ================================================ FILE: test/NosCore.GameObject.Tests/GroupTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core.Services.IdService; using NosCore.Data.Enumerations.Group; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.GroupService; using NosCore.Networking.SessionGroup; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests { [TestClass] public class GroupTests { private Group Group = null!; private List<ClientSession> Sessions = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Group = new Group(GroupType.Group, TestHelpers.Instance.SessionGroupFactory) { GroupId = new IdService<Group>(1).GetNextId() }; Sessions = new List<ClientSession>(); } private async Task<ClientSession> CreateCharacterAsync() { var session = await TestHelpers.Instance.GenerateSessionAsync(); Sessions.Add(session); return session; } [TestMethod] public async Task AddingSinglePlayerToGroupShouldNotFormFullGroup() { await new Spec("Adding single player to group should not form full group") .WhenAsync(ASinglePlayerJoins) .Then(GroupShouldNotHave_Members, 2) .ExecuteAsync(); } [TestMethod] public async Task RemovingOnlyPlayerShouldLeaveGroupEmpty() { await new Spec("Removing only player should leave group empty") .GivenAsync(AGroupWithOnePlayer) .When(ThePlayerLeaves) .Then(GroupShouldBeEmpty) .ExecuteAsync(); } [TestMethod] public void PetsCannotJoinGroups() { new Spec("Pets cannot join groups") .When(APetAttemptsToJoin) .Then(GroupShouldRemainEmpty) .Execute(); } [TestMethod] public async Task LeaderShouldTransferWhenOriginalLeaderLeaves() { await new Spec("Leader should transfer when original leader leaves") .GivenAsync(AFullGroupWithALeader) .Then(GroupShouldBeFullAndHaveALeader) .When(TheLeaderLeaves) .Then(LeadershipShouldTransferToNextMember) .ExecuteAsync(); } private async Task ASinglePlayerJoins() { var session = await CreateCharacterAsync(); Group.JoinGroup(session.Character); } private void GroupShouldNotHave_Members(int value) { Assert.IsFalse(Group.Count == 2); } private async Task AGroupWithOnePlayer() { var session = await CreateCharacterAsync(); Group.JoinGroup(session.Character); } private void ThePlayerLeaves() { var player = Group.ElementAt(0).Value.Item2; Group.LeaveGroup(player); } private void GroupShouldBeEmpty() { Assert.AreEqual(0, Group.Count); } private void APetAttemptsToJoin() { var pet = new Mock<INamedEntity>(); pet.SetupGet(s => s.VisualType).Returns(VisualType.Monster); pet.SetupGet(s => s.VisualId).Returns(1); Group.JoinGroup(pet.Object); } private void GroupShouldRemainEmpty() { Assert.IsTrue(Group.IsEmpty); } private async Task AFullGroupWithALeader() { for (var i = 0; i < (long)Group.Type; i++) { var session = await CreateCharacterAsync(); Group.JoinGroup(session.Character); } } private void GroupShouldBeFullAndHaveALeader() { Assert.IsTrue(Group.IsGroupFull); Assert.IsTrue(Group.IsGroupLeader(Group.ElementAt(0).Value.Item2.VisualId)); } private void TheLeaderLeaves() { Group.LeaveGroup(Group.ElementAt(0).Value.Item2); } private void LeadershipShouldTransferToNextMember() { Assert.IsFalse(Group.IsGroupFull); Assert.IsTrue(Group.IsGroupLeader(Group.ElementAt(1).Value.Item2.VisualId)); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/Battle/MonsterAggroHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NodaTime; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.Battle; using NosCore.GameObject.Services.BattleService; namespace NosCore.GameObject.Tests.Messaging.Handlers.Battle { [TestClass] public class MonsterAggroHandlerTests { [TestMethod] public async Task DamageOnMonsterBumpsAggro() { var aggro = new Mock<IAggroService>(); var handler = new MonsterAggroHandler(aggro.Object); var monster = new Mock<INonPlayableEntity>(); var player = new Mock<IAliveEntity>().Object; await handler.Handle(new EntityDamagedEvent(player, monster.Object, 42, false)); aggro.Verify(a => a.AddThreat(monster.Object, player, 42), Times.Once); } [TestMethod] public async Task DamageOnPlayerDoesNothing() { var aggro = new Mock<IAggroService>(); var handler = new MonsterAggroHandler(aggro.Object); var attacker = new Mock<IAliveEntity>().Object; var victim = new Mock<IAliveEntity>().Object; await handler.Handle(new EntityDamagedEvent(attacker, victim, 10, false)); aggro.Verify(a => a.AddThreat(It.IsAny<IAliveEntity>(), It.IsAny<IAliveEntity>(), It.IsAny<int>()), Times.Never); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/Battle/MonsterRespawnHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.Battle; using NosCore.GameObject.Services.BattleService; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Tests.Messaging.Handlers.Battle { [TestClass] public class MonsterRespawnHandlerTests { [TestMethod] public async Task PlayerDeathIsIgnored() { // Player corpses go through the revive flow, not the respawn handler. // Passing a non-monster victim should be a no-op (no aggro clear either, // since the player doesn't own monster aggro state). var aggro = new Mock<IAggroService>(); var handler = new MonsterRespawnHandler(aggro.Object, NodaTime.SystemClock.Instance); var playerVictim = new Mock<IAliveEntity>().Object; var killer = new Mock<IAliveEntity>().Object; await handler.Handle(new EntityDiedEvent(playerVictim, killer)); aggro.Verify(a => a.Clear(It.IsAny<IAliveEntity>()), Times.Never); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/Battle/PlayerRevivalHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.Battle; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.Battle { [TestClass] public class PlayerRevivalHandlerTests { private PlayerRevivalHandler _handler = null!; private ClientSession _session = null!; private ClientSession _killerSession = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _killerSession = await TestHelpers.Instance.GenerateSessionAsync(); _handler = new PlayerRevivalHandler(new Mock<ILogger<PlayerRevivalHandler>>().Object); } [TestMethod] public async Task NonPlayerVictimIsIgnored() { var victim = new Mock<IAliveEntity>(); victim.SetupGet(v => v.VisualType).Returns(VisualType.Monster); await _handler.Handle(new EntityDiedEvent(victim.Object, null)); } [TestMethod] public async Task PlayerDeathZeroesHpMpAndDecrementsDignityBy50() { await new Spec("Player death sets HP/MP=0 and applies the -50 dignity penalty") .Given(CharacterHasHpMpAndDignity_, 1000, 500, (short)0) .WhenAsync(PlayerDiesWithoutKiller) .Then(HpShouldBe_, 0) .And(MpShouldBe_, 0) .And(DignityShouldBe_, (short)-50) .ExecuteAsync(); } [TestMethod] public async Task DignityClampsAtMinusOneThousandFloor() { await new Spec("Dignity never drops below -1000 on repeated deaths") .Given(CharacterHasHpMpAndDignity_, 1000, 500, (short)-980) .WhenAsync(PlayerDiesWithoutKiller) .Then(DignityShouldBe_, (short)-1000) .ExecuteAsync(); } [TestMethod] public async Task LevelAtOrBelow20GetsFreeReviveDialog() { await new Spec("Level<=20 death sends the ContinueHereFree dialog") .Given(CharacterHasHpMpAndDignity_, 1000, 500, (short)0) .And(CharacterLevelIs_, (byte)20) .WhenAsync(PlayerDiesWithoutKiller) .Then(DialogQuestionShouldBe_, Game18NConstString.ContinueHereFree) .ExecuteAsync(); } [TestMethod] public async Task LevelAbove20GetsTenSeedsReviveDialog() { await new Spec("Level>20 death sends the ContinueHereTenSeeds dialog") .Given(CharacterHasHpMpAndDignity_, 1000, 500, (short)0) .And(CharacterLevelIs_, (byte)21) .WhenAsync(PlayerDiesWithoutKiller) .Then(DialogQuestionShouldBe_, Game18NConstString.ContinueHereTenSeeds) .ExecuteAsync(); } [TestMethod] public async Task KilledByOtherPlayerWithHighReputTransfersPortion() { await new Spec("PK victim with Reput>=50000 transfers level*50 reputation to the killer") .Given(CharacterHasHpMpAndDignity_, 1000, 500, (short)0) .And(CharacterLevelIs_, (byte)10) .And(VictimHasReputation_, 60000L) .WhenAsync(PlayerDiesKilledByOtherPlayer) .Then(VictimReputationShouldBe_, 60000L - 10 * 50L) .And(KillerReputationShouldBe_, 10 * 50L) .ExecuteAsync(); } [TestMethod] public async Task KilledByOtherPlayerWithLowReputDoesNotTransfer() { await new Spec("PK victim with Reput<50000 does not transfer reputation") .Given(CharacterHasHpMpAndDignity_, 1000, 500, (short)0) .And(CharacterLevelIs_, (byte)10) .And(VictimHasReputation_, 40000L) .WhenAsync(PlayerDiesKilledByOtherPlayer) .Then(VictimReputationShouldBe_, 40000L) .And(KillerReputationShouldBe_, 0L) .ExecuteAsync(); } private void CharacterHasHpMpAndDignity_(int hp, int mp, short dignity) { _session.Character.Hp = hp; _session.Character.Mp = mp; _session.Character.Dignity = dignity; } private void CharacterLevelIs_(byte level) { _session.Character.Level = level; } private void VictimHasReputation_(long reput) { _session.Character.Reput = reput; } private async Task PlayerDiesWithoutKiller() { await _handler.Handle(new EntityDiedEvent(_session.Character, null)); } private async Task PlayerDiesKilledByOtherPlayer() { await _handler.Handle(new EntityDiedEvent(_session.Character, _killerSession.Character)); } private void HpShouldBe_(int expected) => Assert.AreEqual(expected, _session.Character.Hp); private void MpShouldBe_(int expected) => Assert.AreEqual(expected, _session.Character.Mp); private void DignityShouldBe_(short expected) => Assert.AreEqual(expected, _session.Character.Dignity); private void DialogQuestionShouldBe_(Game18NConstString expected) { var dlg = _session.LastPackets.OfType<DlgiPacket>().FirstOrDefault(); Assert.IsNotNull(dlg); Assert.AreEqual(expected, dlg.Question); } private void VictimReputationShouldBe_(long expected) => Assert.AreEqual(expected, _session.Character.Reput); private void KillerReputationShouldBe_(long expected) => Assert.AreEqual(expected, _killerSession.Character.Reput); } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/Battle/RewardDistributionHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Concurrent; using System.Collections.Generic; using System.Threading.Tasks; using Arch.Core; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.Battle; using NosCore.GameObject.Services.BattleService; namespace NosCore.GameObject.Tests.Messaging.Handlers.Battle { [TestClass] public class RewardDistributionHandlerTests { [TestMethod] public async Task HandleForwardsToRewardService() { var rewards = new Mock<IRewardService>(); var handler = new RewardDistributionHandler(rewards.Object); var victimMock = new Mock<IAliveEntity>(); victimMock.SetupGet(v => v.HitList).Returns(new ConcurrentDictionary<Entity, int>()); var victim = victimMock.Object; var killer = new Mock<IAliveEntity>().Object; await handler.Handle(new EntityDiedEvent(victim, killer)); rewards.Verify(r => r.DistributeAsync(victim, killer, It.IsAny<IReadOnlyDictionary<Entity, int>>()), Times.Once); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/Guri/EmoticonHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.Guri; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.UI; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Player; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.Guri { [TestClass] public class EmoticonHandlerTests { private ClientSession _session = null!; private EmoticonHandler _handler = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; _handler = new EmoticonHandler(); } [TestMethod] public async Task DataBelowRangeIsIgnored() { await new Spec("Data < 973 is out of the emoticon range and ignored") .Given(EmoticonsAreAllowed) .WhenAsync(HandlingGuri_, GuriPacketType.TextInput, 972, _Owner()) .Then(NoEffPacketShouldHaveBeenBroadcast) .ExecuteAsync(); } [TestMethod] public async Task DataAboveRangeIsIgnored() { await new Spec("Data > 999 is out of the emoticon range and ignored") .Given(EmoticonsAreAllowed) .WhenAsync(HandlingGuri_, GuriPacketType.TextInput, 1000, _Owner()) .Then(NoEffPacketShouldHaveBeenBroadcast) .ExecuteAsync(); } [TestMethod] public async Task WrongGuriTypeIsIgnored() { await new Spec("Guri type other than TextInput is ignored by the emoticon handler") .Given(EmoticonsAreAllowed) .WhenAsync(HandlingGuri_, GuriPacketType.AfterSumming, 973, _Owner()) .Then(NoEffPacketShouldHaveBeenBroadcast) .ExecuteAsync(); } [TestMethod] public async Task EmoticonsBlockedSuppressesBroadcast() { await new Spec("Character with EmoticonsBlocked flag does not broadcast the effect") .Given(EmoticonsAreBlocked) .WhenAsync(HandlingGuri_, GuriPacketType.TextInput, 975, _Owner()) .Then(NoEffPacketShouldHaveBeenBroadcast) .ExecuteAsync(); } [TestMethod] public async Task SpoofedVisualIdIsIgnored() { await new Spec("Packet with a VisualId not matching the caller's character is anti-spoof ignored") .Given(EmoticonsAreAllowed) .WhenAsync(HandlingGuri_, GuriPacketType.TextInput, 975, 999999L) .Then(NoEffPacketShouldHaveBeenBroadcast) .ExecuteAsync(); } private long _Owner() => _session.Character.CharacterId; private void EmoticonsAreAllowed() => _session.Character.EmoticonsBlocked = false; private void EmoticonsAreBlocked() => _session.Character.EmoticonsBlocked = true; private async Task HandlingGuri_(GuriPacketType type, int data, long visualId) { var packet = new GuriPacket { Type = type, Data = data, VisualId = visualId, }; await _handler.Handle(new GuriPacketReceivedEvent(_session, packet)); } private void NoEffPacketShouldHaveBeenBroadcast() => Assert.IsFalse(_session.LastPackets.OfType<EffectPacket>().Any(), "Expected no EffectPacket broadcast"); } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/Guri/MfaHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Enumerations; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.Guri; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.UI; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using SpecLight; using TwoFactorAuthNet; namespace NosCore.GameObject.Tests.Messaging.Handlers.Guri { [TestClass] public class MfaHandlerTests { private ClientSession _session = null!; private MfaHandler _handler = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _handler = new MfaHandler(); } [TestMethod] public async Task WrongTypeIsIgnored() { await new Spec("Guri type other than TextInput is ignored — no re-prompt, no IncorrectPassword msg") .Given(AccountHasMfaSecret) .WhenAsync(HandlingGuri_, GuriPacketType.AfterSumming, 3, 0L, "123456") .Then(NoIncorrectPasswordShouldBeSent) .And(NoMfaRePromptShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task WrongArgumentIsIgnored() { await new Spec("Argument must be 3 (MFA field) — any other arg is ignored") .Given(AccountHasMfaSecret) .WhenAsync(HandlingGuri_, GuriPacketType.TextInput, 4, 0L, "123456") .Then(NoIncorrectPasswordShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task NonZeroVisualIdIsIgnored() { await new Spec("VisualId must be 0 (server dialog owner) — non-zero is ignored") .Given(AccountHasMfaSecret) .WhenAsync(HandlingGuri_, GuriPacketType.TextInput, 3, 42L, "123456") .Then(NoIncorrectPasswordShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task AlreadyValidatedSessionIsIgnored() { await new Spec("When session.MfaValidated is already true, re-entering a code is a no-op") .Given(AccountHasMfaSecret) .And(SessionIsAlreadyValidated) .WhenAsync(HandlingGuri_, GuriPacketType.TextInput, 3, 0L, "wrong!") .Then(NoIncorrectPasswordShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task AccountWithoutMfaSecretIsIgnored() { await new Spec("Accounts that never set up MFA are skipped — no re-prompt, no error") .Given(AccountHasNoMfaSecret) .WhenAsync(HandlingGuri_, GuriPacketType.TextInput, 3, 0L, "123456") .Then(NoIncorrectPasswordShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task IncorrectCodeRePromptsAndSendsIncorrectPassword() { await new Spec("An incorrect code re-sends the TextInput prompt and an IncorrectPassword info message") .Given(AccountHasMfaSecret) .WhenAsync(HandlingGuri_, GuriPacketType.TextInput, 3, 0L, "000000") .Then(MfaRePromptShouldBeSent) .And(IncorrectPasswordShouldBeSent) .And(SessionShouldStillBeUnvalidated) .ExecuteAsync(); } private void AccountHasMfaSecret() => _session.Account.MfaSecret = new TwoFactorAuth().CreateSecret(); private void AccountHasNoMfaSecret() => _session.Account.MfaSecret = null; private void SessionIsAlreadyValidated() => _session.MfaValidated = true; private async Task HandlingGuri_(GuriPacketType type, int argument, long visualId, string value) { var packet = new NosCore.Packets.ClientPackets.UI.GuriPacket { Type = type, Argument = argument, VisualId = visualId, Value = value, }; await _handler.Handle(new GuriPacketReceivedEvent(_session, packet)); } private void NoIncorrectPasswordShouldBeSent() => Assert.IsFalse(_session.LastPackets.OfType<InfoiPacket>() .Any(p => p.Message == Game18NConstString.IncorrectPassword)); private void NoMfaRePromptShouldBeSent() => Assert.IsFalse(_session.LastPackets .OfType<NosCore.Packets.ServerPackets.UI.GuriPacket>() .Any(p => p.Type == GuriPacketType.TextInput && p.Argument == 3)); private void IncorrectPasswordShouldBeSent() { var info = _session.LastPackets.OfType<InfoiPacket>() .FirstOrDefault(p => p.Message == Game18NConstString.IncorrectPassword); Assert.IsNotNull(info); } private void MfaRePromptShouldBeSent() { var guri = _session.LastPackets.OfType<NosCore.Packets.ServerPackets.UI.GuriPacket>() .FirstOrDefault(p => p.Type == GuriPacketType.TextInput && p.Argument == 3); Assert.IsNotNull(guri); } private void SessionShouldStillBeUnvalidated() => Assert.IsFalse(_session.MfaValidated); } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/Map/MinilandEntranceHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // #pragma warning disable 618 using System; using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.Map; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MinilandService; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Miniland; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.Map { [TestClass] public class MinilandEntranceHandlerTests { private ClientSession _session = null!; private Mock<IMinilandService> _minilandService = null!; private MinilandEntranceHandler _handler = null!; private Miniland _miniland = null!; private int _initialDailyVisitCount; private int _initialVisitCount; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _minilandService = new Mock<IMinilandService>(); _handler = new MinilandEntranceHandler(_minilandService.Object); } [TestMethod] public async Task EnteringOwnMinilandSendsMlinfoAndDoesNotIncrementVisitors() { await new Spec("Owner entering their own miniland receives mlinfo + mlobjlst; visit counters unchanged") .Given(MinilandIsRegisteredWithOwner_, true) .WhenAsync(HandlingEnterEvent) .Then(MlinfoPacketShouldHaveBeenSent) .And(MlobjlstPacketShouldHaveBeenSent) .And(DailyVisitCountShouldStillBe_, 0) .And(VisitCountShouldStillBe_, 0) .ExecuteAsync(); } [TestMethod] public async Task EnteringSomeoneElsesMinilandSendsWelcomeMessageAndIncrementsBothCounters() { await new Spec("Non-owner entering a miniland gets the welcome message and increments both visit counters by 1") .Given(MinilandIsRegisteredWithOwner_, false) .WhenAsync(HandlingEnterEvent) .Then(WelcomeMessagePacketShouldHaveBeenSent) .And(DailyVisitCountShouldStillBe_, 1) .And(VisitCountShouldStillBe_, 1) .And(TotalVisitorsSayPacketShouldCarryVisitCount_, 1) .And(TodayVisitorsSayPacketShouldCarryDailyCount_, 1) .ExecuteAsync(); } [TestMethod] public async Task EnteringANonMinilandInstanceIsANoOp() { await new Spec("Entering a map that is not registered as a miniland is a no-op") .Given(NoMinilandRegisteredForThisMapInstance) .WhenAsync(HandlingEnterEvent) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } private void MinilandIsRegisteredWithOwner_(bool ownedByThisCharacter) { _initialDailyVisitCount = 0; _initialVisitCount = 0; var mapInstanceId = _session.Character.MapInstanceId; var ownerId = ownedByThisCharacter ? _session.Character.CharacterId : _session.Character.CharacterId + 1; _miniland = new Miniland { MapInstanceId = mapInstanceId, OwnerId = ownerId, CharacterName = "OwnerName", MinilandMessage = "Welcome", DailyVisitCount = _initialDailyVisitCount, VisitCount = _initialVisitCount, }; _minilandService .Setup(s => s.GetMinilandFromMapInstanceId(mapInstanceId)) .Returns(_miniland); } private void NoMinilandRegisteredForThisMapInstance() { _minilandService .Setup(s => s.GetMinilandFromMapInstanceId(It.IsAny<Guid>())) .Returns((Miniland?)null); } private async Task HandlingEnterEvent() { await _handler.Handle(new MapInstanceEnteredEvent(_session, _session.Character.MapInstance)); } private void MlinfoPacketShouldHaveBeenSent() => Assert.IsTrue(_session.LastPackets.OfType<MlinfoPacket>().Any()); private void MlobjlstPacketShouldHaveBeenSent() => Assert.IsTrue(_session.LastPackets.OfType<MlobjlstPacket>().Any()); private void WelcomeMessagePacketShouldHaveBeenSent() => Assert.IsTrue(_session.LastPackets.OfType<MsgPacket>().Any()); private void DailyVisitCountShouldStillBe_(int expected) => Assert.AreEqual(expected, _miniland.DailyVisitCount); private void VisitCountShouldStillBe_(int expected) => Assert.AreEqual(expected, _miniland.VisitCount); private void TotalVisitorsSayPacketShouldCarryVisitCount_(int expected) { var say = _session.LastPackets.OfType<SayiPacket>() .FirstOrDefault(p => p.Message == Game18NConstString.TotalVisitors); Assert.IsNotNull(say); Assert.AreEqual(expected, say.Game18NArguments[0]); } private void TodayVisitorsSayPacketShouldCarryDailyCount_(int expected) { var say = _session.LastPackets.OfType<SayiPacket>() .FirstOrDefault(p => p.Message == Game18NConstString.TodayVisitors); Assert.IsNotNull(say); Assert.AreEqual(expected, say.Game18NArguments[0]); } private void NoPacketShouldBeSent() => Assert.AreEqual(0, _session.LastPackets.Count); } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/Nrun/SetPlaceOfRevivalHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Messaging.Handlers.Nrun; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BattleService; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; #pragma warning disable 618 namespace NosCore.GameObject.Tests.Messaging.Handlers.Nrun { [TestClass] public class SetPlaceOfRevivalHandlerTests { private ClientSession _session = null!; private Mock<IRespawnService> _respawnService = null!; private SetPlaceOfRevivalHandler _handler = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _respawnService = new Mock<IRespawnService>(); _handler = new SetPlaceOfRevivalHandler(_respawnService.Object); } [TestMethod] public async Task RunnerPropertyMatchesSetPlaceOfRevival() { await new Spec("SetPlaceOfRevivalHandler declares NrunRunnerType.SetPlaceOfRevival") .Then(RunnerShouldBe_, NrunRunnerType.SetPlaceOfRevival) .ExecuteAsync(); } [TestMethod] public async Task TypeTwoSendsConfirmationDialog() { await new Spec("n_run Type=2 prompts a Qna dialog whose YesPacket is the Type=1 commit") .WhenAsync(NrunIsHandledWithType_, (short)2) .Then(QnaWithYesPacketTypeOneShouldHaveBeenSent) .And(RespawnPointShouldNotHaveBeenUpdated) .And(NoConfirmationMsgShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task NullTargetIsIgnored() { await new Spec("Type=1 with null target is a no-op: no respawn update, no confirmation msg") .WhenAsync(NrunIsHandledWithType_AndNullTarget, (short)1) .Then(RespawnPointShouldNotHaveBeenUpdated) .And(NoConfirmationMsgShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task NonNpcTargetIsIgnored() { await new Spec("Type=1 with a non-NpcComponentBundle target is a no-op") .WhenAsync(NrunIsHandledWithType_AndGenericAliveTarget, (short)1) .Then(RespawnPointShouldNotHaveBeenUpdated) .And(NoConfirmationMsgShouldBeSent) .ExecuteAsync(); } private void RunnerShouldBe_(NrunRunnerType expected) => Assert.AreEqual(expected, _handler.Runner); private Task NrunIsHandledWithType_(short type) => _handler.HandleAsync(_session, new Mock<IAliveEntity>().Object, new NrunPacket { Runner = NrunRunnerType.SetPlaceOfRevival, Type = type, VisualType = VisualType.Npc, VisualId = 1, }); private Task NrunIsHandledWithType_AndNullTarget(short type) => _handler.HandleAsync(_session, null, new NrunPacket { Runner = NrunRunnerType.SetPlaceOfRevival, Type = type, VisualType = VisualType.Npc, VisualId = 1, }); private Task NrunIsHandledWithType_AndGenericAliveTarget(short type) => _handler.HandleAsync(_session, new Mock<IAliveEntity>().Object, new NrunPacket { Runner = NrunRunnerType.SetPlaceOfRevival, Type = type, VisualType = VisualType.Npc, VisualId = 1, }); private void QnaWithYesPacketTypeOneShouldHaveBeenSent() { var qna = _session.LastPackets.OfType<QnaPacket>().LastOrDefault(); Assert.IsNotNull(qna); var yes = qna.YesPacket as NrunPacket; Assert.IsNotNull(yes); Assert.AreEqual(NrunRunnerType.SetPlaceOfRevival, yes.Runner); Assert.AreEqual<short?>(1, yes.Type); } private void RespawnPointShouldNotHaveBeenUpdated() => _respawnService.Verify(x => x.SetRespawnPoint(It.IsAny<ICharacterEntity>(), It.IsAny<short>(), It.IsAny<short>(), It.IsAny<short>()), Times.Never); private void NoConfirmationMsgShouldBeSent() => Assert.IsFalse(_session.LastPackets.OfType<MsgPacket>().Any()); } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/Nrun/TeleporterHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Messaging.Handlers.Nrun; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MapChangeService; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.Nrun { [TestClass] public class TeleporterHandlerTests { private ClientSession _session = null!; private Mock<IMapChangeService> _mapChangeService = null!; private TeleporterHandler _handler = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _mapChangeService = new Mock<IMapChangeService>(); _handler = new TeleporterHandler(_mapChangeService.Object); } [TestMethod] public async Task RunnerPropertyMatchesTeleport() { await new Spec("TeleporterHandler declares NrunRunnerType.Teleport") .Then(RunnerShouldBe_, NrunRunnerType.Teleport) .ExecuteAsync(); } [TestMethod] public async Task NullTargetIsIgnored() { await new Spec("A null target is a no-op: no gold removed, no map change, no message") .Given(CharacterGoldIs_, 10_000L) .WhenAsync(NrunIsHandledWithType_AndNullTarget, (short)1) .Then(CharacterGoldShouldStillBe_, 10_000L) .And(NoMapChangeShouldHaveBeenInvoked) .And(NoNotEnoughGoldShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task NonNpcTargetIsIgnored() { await new Spec("A target that is not an NpcComponentBundle short-circuits before any gold/map logic") .Given(CharacterGoldIs_, 10_000L) .WhenAsync(NrunIsHandledWithType_AndGenericAliveTarget, (short)1) .Then(CharacterGoldShouldStillBe_, 10_000L) .And(NoMapChangeShouldHaveBeenInvoked) .ExecuteAsync(); } private void RunnerShouldBe_(NrunRunnerType expected) => Assert.AreEqual(expected, _handler.Runner); private void CharacterGoldIs_(long gold) => _session.Character.Gold = gold; private Task NrunIsHandledWithType_AndNullTarget(short type) => _handler.HandleAsync(_session, null, new NrunPacket { Runner = NrunRunnerType.Teleport, Type = type, VisualType = VisualType.Npc, VisualId = 1, }); private Task NrunIsHandledWithType_AndGenericAliveTarget(short type) => _handler.HandleAsync(_session, new Mock<IAliveEntity>().Object, new NrunPacket { Runner = NrunRunnerType.Teleport, Type = type, VisualType = VisualType.Npc, VisualId = 1, }); private void CharacterGoldShouldStillBe_(long expected) => Assert.AreEqual(expected, _session.Character.Gold); private void NoMapChangeShouldHaveBeenInvoked() => _mapChangeService.Verify(x => x.ChangeMapAsync( It.IsAny<ClientSession>(), It.IsAny<short?>(), It.IsAny<short?>(), It.IsAny<short?>()), Times.Never); private void NoNotEnoughGoldShouldBeSent() { var say = _session.LastPackets.OfType<SayiPacket>() .FirstOrDefault(p => p.Message == Game18NConstString.NotEnoughGold); Assert.IsNull(say); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/Nrun/UpgradeItemHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Messaging.Handlers.Nrun; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.Nrun { [TestClass] public class UpgradeItemHandlerTests { private ClientSession _session = null!; private UpgradeItemHandler _handler = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _handler = new UpgradeItemHandler(); } [TestMethod] public async Task NullTargetIsIgnored() { await new Spec("UpgradeItem handler ignores events with null target") .WhenAsync(NrunUpgradeItemWithNullTargetIsHandled) .Then(NoWopenShouldHaveBeenSent) .ExecuteAsync(); } [TestMethod] public async Task NonNpcTargetIsIgnored() { await new Spec("A target that is not an NpcComponentBundle short-circuits before sending wopen") .WhenAsync(NrunUpgradeItemWithGenericAliveTargetIsHandled) .Then(NoWopenShouldHaveBeenSent) .ExecuteAsync(); } [TestMethod] public async Task RunnerPropertyMatchesUpgradeItem() { await new Spec("UpgradeItemHandler declares NrunRunnerType.UpgradeItem") .Then(RunnerShouldBeUpgradeItem) .ExecuteAsync(); } private void RunnerShouldBeUpgradeItem() => Assert.AreEqual(NrunRunnerType.UpgradeItem, _handler.Runner); private Task NrunUpgradeItemWithGenericAliveTargetIsHandled() => _handler.HandleAsync(_session, new Mock<IAliveEntity>().Object, new NrunPacket { Runner = NrunRunnerType.UpgradeItem }); private Task NrunUpgradeItemWithNullTargetIsHandled() => _handler.HandleAsync(_session, null, new NrunPacket { Runner = NrunRunnerType.UpgradeItem }); private void NoWopenShouldHaveBeenSent() => Assert.IsFalse(_session.LastPackets.OfType<WopenPacket>().Any()); } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/UseItem/BackPackHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Buff; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.UseItem; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Chats; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.UseItem { [TestClass] public class BackPackHandlerTests { private const short BackpackVNum = 1272; private ClientSession _session = null!; private BackPackHandler _handler = null!; private InventoryItemInstance _item = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _handler = new BackPackHandler(TestHelpers.Instance.WorldConfiguration, TestHelpers.Instance.Clock); } [TestMethod] public async Task WrongEffectIsIgnored() { await new Spec("Item with an unrelated Effect is ignored (no StaticBonus grant, no item consumption)") .Given(ItemInInventoryWithEffect_, ItemEffectType.Teleport) .WhenAsync(UsingTheItem) .Then(StaticBonusCountShouldBe_, 0) .And(ItemStackCountShouldBe_, (short)1) .ExecuteAsync(); } [TestMethod] public async Task DuplicateBackPackGrantIsRejected() { await new Spec("Using a second BackPack item when one is already granted emits NotInPair and does not consume the item") .Given(ItemInInventoryWithEffect_, ItemEffectType.InventoryUpgrade) .And(CharacterAlreadyHasStaticBonus_, StaticBonusType.BackPack) .WhenAsync(UsingTheItem) .Then(NotInPairMessageShouldBeSent) .And(ItemStackCountShouldBe_, (short)1) .ExecuteAsync(); } [TestMethod] public async Task DuplicateInventoryTicketGrantIsRejected() { await new Spec("Using a second InventoryTicketUpgrade item when one is already granted emits NotInPair") .Given(ItemInInventoryWithEffect_, ItemEffectType.InventoryTicketUpgrade) .And(CharacterAlreadyHasStaticBonus_, StaticBonusType.InventoryTicketUpgrade) .WhenAsync(UsingTheItem) .Then(NotInPairMessageShouldBeSent) .And(ItemStackCountShouldBe_, (short)1) .ExecuteAsync(); } [TestMethod] public async Task FirstBackPackGrantConsumesItemAndAddsBonus() { await new Spec("First BackPack grant adds the StaticBonus and consumes one item") .Given(ItemInInventoryWithEffect_, ItemEffectType.InventoryUpgrade) .WhenAsync(UsingTheItem) .Then(StaticBonusListShouldContain_, StaticBonusType.BackPack) .And(ItemStackCountShouldBe_, (short)0) .ExecuteAsync(); } [TestMethod] public async Task PermanentBackPackStoresNullDateEnd() { await new Spec("EffectValue=0 means permanent: StaticBonus.DateEnd stays null") .Given(ItemInInventoryWithEffect_, ItemEffectType.InventoryUpgrade) .And(ItemHasEffectValueDays_, 0) .WhenAsync(UsingTheItem) .Then(StaticBonusDateEndShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task TimedBackPackStoresDateEnd() { await new Spec("EffectValue>0 days stamps DateEnd = now + that many days") .Given(ItemInInventoryWithEffect_, ItemEffectType.InventoryUpgrade) .And(ItemHasEffectValueDays_, 30) .WhenAsync(UsingTheItem) .Then(StaticBonusDateEndShouldNotBeNull) .ExecuteAsync(); } private void ItemInInventoryWithEffect_(ItemEffectType effect) { var item = new Item { VNum = BackpackVNum, Type = NoscorePocketType.Main, Effect = effect, EffectValue = 0, }; var inst = new ItemInstanceForTest(BackpackVNum) { Amount = 1, Item = item }; _item = InventoryItemInstance.Create(inst, _session.Character.CharacterId); _item.Slot = 0; _item.Type = NoscorePocketType.Main; _session.Character.InventoryService[_item.ItemInstanceId] = _item; } private void ItemHasEffectValueDays_(int days) => _item.ItemInstance.Item.EffectValue = days; private void CharacterAlreadyHasStaticBonus_(StaticBonusType type) => _session.Character.StaticBonusList.Add(new StaticBonusDto { CharacterId = _session.Character.CharacterId, StaticBonusType = type, }); private async Task UsingTheItem() { var packet = new UseItemPacket { VisualType = VisualType.Player, VisualId = _session.Character.CharacterId, Type = PocketType.Main, Slot = 0, Mode = 1, Parameter = 0, }; await _handler.Handle(new ItemUsedEvent(_session, _item, packet)); } private void StaticBonusCountShouldBe_(int expected) => Assert.AreEqual(expected, _session.Character.StaticBonusList.Count); private void StaticBonusListShouldContain_(StaticBonusType type) => Assert.IsTrue(_session.Character.StaticBonusList.Any(b => b.StaticBonusType == type)); private void StaticBonusDateEndShouldBeNull() => Assert.IsNull(_session.Character.StaticBonusList.Last().DateEnd); private void StaticBonusDateEndShouldNotBeNull() => Assert.IsNotNull(_session.Character.StaticBonusList.Last().DateEnd); private void ItemStackCountShouldBe_(short expected) => Assert.AreEqual(expected, _session.Character.InventoryService.CountItem(BackpackVNum)); private void NotInPairMessageShouldBeSent() { var say = _session.LastPackets.OfType<SayiPacket>() .FirstOrDefault(p => p.Message == Game18NConstString.NotInPair); Assert.IsNotNull(say); } private sealed class ItemInstanceForTest(short vnum) : NosCore.Data.Dto.ItemInstanceDto, IItemInstance { public new Guid Id { get; set; } = Guid.NewGuid(); public new short ItemVNum { get; set; } = vnum; public Item Item { get; set; } = new() { VNum = vnum, Type = NoscorePocketType.Main }; public object Clone() => MemberwiseClone(); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/UseItem/BazaarMedalsHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Buff; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.UseItem; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.UseItem { [TestClass] public class BazaarMedalsHandlerTests { private const short MedalVNum = 5108; private ClientSession _session = null!; private BazaarMedalsHandler _handler = null!; private InventoryItemInstance _item = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _handler = new BazaarMedalsHandler(TestHelpers.Instance.Clock); } [TestMethod] public async Task UnrelatedEffectIsIgnored() { await new Spec("A non-NosMerchant effect grants no bonus and is not consumed") .Given(ItemInInventoryWithEffectAndDays_, ItemEffectType.Teleport, 30) .WhenAsync(UsingTheItem) .Then(StaticBonusCountShouldBe_, 0) .And(ItemStackCountShouldBe_, (short)1) .ExecuteAsync(); } [TestMethod] public async Task SilverMerchantGrantsSilverBonusAndConsumesItem() { await new Spec("SilverNosMerchantUpgrade grants StaticBonusType.BazaarMedalSilver and consumes one item") .Given(ItemInInventoryWithEffectAndDays_, ItemEffectType.SilverNosMerchantUpgrade, 30) .WhenAsync(UsingTheItem) .Then(StaticBonusListShouldContain_, StaticBonusType.BazaarMedalSilver) .And(ItemStackCountShouldBe_, (short)0) .And(StaticBonusDateEndShouldNotBeNull) .ExecuteAsync(); } [TestMethod] public async Task GoldMerchantGrantsGoldBonusAndConsumesItem() { await new Spec("GoldNosMerchantUpgrade grants StaticBonusType.BazaarMedalGold") .Given(ItemInInventoryWithEffectAndDays_, ItemEffectType.GoldNosMerchantUpgrade, 30) .WhenAsync(UsingTheItem) .Then(StaticBonusListShouldContain_, StaticBonusType.BazaarMedalGold) .And(ItemStackCountShouldBe_, (short)0) .And(StaticBonusDateEndShouldNotBeNull) .ExecuteAsync(); } [TestMethod] public async Task DuplicateGoldBlocksSilverGrant() { await new Spec("Silver medal is rejected when character already holds a Gold medal (either variant blocks both)") .Given(ItemInInventoryWithEffectAndDays_, ItemEffectType.SilverNosMerchantUpgrade, 30) .And(CharacterAlreadyHasStaticBonus_, StaticBonusType.BazaarMedalGold) .WhenAsync(UsingTheItem) .Then(StaticBonusListShouldNotContain_, StaticBonusType.BazaarMedalSilver) .And(ItemStackCountShouldBe_, (short)1) .ExecuteAsync(); } [TestMethod] public async Task DuplicateSilverBlocksGoldGrant() { await new Spec("Gold medal is rejected when character already holds a Silver medal") .Given(ItemInInventoryWithEffectAndDays_, ItemEffectType.GoldNosMerchantUpgrade, 30) .And(CharacterAlreadyHasStaticBonus_, StaticBonusType.BazaarMedalSilver) .WhenAsync(UsingTheItem) .Then(StaticBonusListShouldNotContain_, StaticBonusType.BazaarMedalGold) .And(ItemStackCountShouldBe_, (short)1) .ExecuteAsync(); } private void ItemInInventoryWithEffectAndDays_(ItemEffectType effect, int days) { var item = new Item { VNum = MedalVNum, Type = NoscorePocketType.Main, Effect = effect, EffectValue = days, }; var inst = new ItemInstanceForTest(MedalVNum) { Amount = 1, Item = item }; _item = InventoryItemInstance.Create(inst, _session.Character.CharacterId); _item.Slot = 0; _item.Type = NoscorePocketType.Main; _session.Character.InventoryService[_item.ItemInstanceId] = _item; } private void CharacterAlreadyHasStaticBonus_(StaticBonusType type) => _session.Character.StaticBonusList.Add(new StaticBonusDto { CharacterId = _session.Character.CharacterId, StaticBonusType = type, }); private async Task UsingTheItem() { var packet = new UseItemPacket { VisualType = VisualType.Player, VisualId = _session.Character.CharacterId, Type = PocketType.Main, Slot = 0, Mode = 1, Parameter = 0, }; await _handler.Handle(new ItemUsedEvent(_session, _item, packet)); } private void StaticBonusCountShouldBe_(int expected) => Assert.AreEqual(expected, _session.Character.StaticBonusList.Count); private void StaticBonusListShouldContain_(StaticBonusType type) => Assert.IsTrue(_session.Character.StaticBonusList.Any(b => b.StaticBonusType == type)); private void StaticBonusListShouldNotContain_(StaticBonusType type) => Assert.IsFalse(_session.Character.StaticBonusList.Any(b => b.StaticBonusType == type)); private void StaticBonusDateEndShouldNotBeNull() => Assert.IsNotNull(_session.Character.StaticBonusList.Last().DateEnd); private void ItemStackCountShouldBe_(short expected) => Assert.AreEqual(expected, _session.Character.InventoryService.CountItem(MedalVNum)); private sealed class ItemInstanceForTest(short vnum) : NosCore.Data.Dto.ItemInstanceDto, IItemInstance { public new Guid Id { get; set; } = Guid.NewGuid(); public new short ItemVNum { get; set; } = vnum; public Item Item { get; set; } = new() { VNum = vnum, Type = NoscorePocketType.Main }; public object Clone() => MemberwiseClone(); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/UseItem/BoxEffectHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.UseItem; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.UseItem { [TestClass] public class BoxEffectHandlerTests { private const short BoxVNum = 1013; private const short RewardVNum = 1012; private ClientSession _session = null!; private Mock<IDao<RollGeneratedItemDto, short>> _rollDao = null!; private BoxEffectHandler _handler = null!; private InventoryItemInstance _item = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _rollDao = new Mock<IDao<RollGeneratedItemDto, short>>(); _handler = new BoxEffectHandler(TestHelpers.Instance.GenerateItemProvider(), _rollDao.Object); } [TestMethod] public async Task WrongEffectIsIgnored() { await new Spec("A non-BoxEffect item does not consult the roll table and is not consumed") .Given(BoxInInventoryWithEffect_, ItemEffectType.Teleport) .WhenAsync(UsingTheItem) .Then(BoxStackCountShouldBe_, (short)1) .And(RollTableShouldNotHaveBeenConsulted) .ExecuteAsync(); } [TestMethod] public async Task EmptyRollPoolIsNoOp() { await new Spec("A BoxEffect with no matching roll rows returns without rewarding or consuming") .Given(BoxInInventoryWithEffect_, ItemEffectType.BoxEffect) .And(RollPoolIs_, new List<RollGeneratedItemDto>()) .WhenAsync(UsingTheItem) .Then(BoxStackCountShouldBe_, (short)1) .And(NoRdiPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ZeroProbabilitySumIsNoOp() { await new Spec("A BoxEffect whose pool sums to zero probability cannot roll and is not consumed") .Given(BoxInInventoryWithEffect_, ItemEffectType.BoxEffect) .And(RollPoolIs_, new List<RollGeneratedItemDto> { new() { OriginalItemVNum = BoxVNum, ItemGeneratedVNum = RewardVNum, ItemGeneratedAmount = 1, Probability = 0, }, }) .WhenAsync(UsingTheItem) .Then(BoxStackCountShouldBe_, (short)1) .And(NoRdiPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ValidRollConsumesBoxAndRewardsPlayer() { await new Spec("A single-entry pool always wins: reward lands in inventory, box is consumed, Rdi + ItemReceived go out") .Given(BoxInInventoryWithEffect_, ItemEffectType.BoxEffect) .And(RollPoolIs_, new List<RollGeneratedItemDto> { new() { OriginalItemVNum = BoxVNum, ItemGeneratedVNum = RewardVNum, ItemGeneratedAmount = 1, Probability = 100, }, }) .WhenAsync(UsingTheItem) .Then(BoxStackCountShouldBe_, (short)0) .And(InventoryShouldContain_, RewardVNum) .And(RdiPacketShouldBeSentFor_, RewardVNum) .And(ItemReceivedShouldBeSent) .ExecuteAsync(); } private void BoxInInventoryWithEffect_(ItemEffectType effect) { var item = new Item { VNum = BoxVNum, Type = NoscorePocketType.Main, Effect = effect, }; var inst = new ItemInstanceForTest(BoxVNum) { Amount = 1, Item = item, Rare = 0, Design = 0 }; _item = InventoryItemInstance.Create(inst, _session.Character.CharacterId); _item.Slot = 0; _item.Type = NoscorePocketType.Main; _session.Character.InventoryService[_item.ItemInstanceId] = _item; } private void RollPoolIs_(List<RollGeneratedItemDto> pool) => _rollDao.Setup(x => x.Where(It.IsAny<Expression<Func<RollGeneratedItemDto, bool>>>())) .Returns(pool); private async Task UsingTheItem() { var packet = new UseItemPacket { VisualType = VisualType.Player, VisualId = _session.Character.CharacterId, Type = PocketType.Main, Slot = 0, Mode = 1, Parameter = 0, }; await _handler.Handle(new ItemUsedEvent(_session, _item, packet)); } private void BoxStackCountShouldBe_(short expected) => Assert.AreEqual(expected, _session.Character.InventoryService.CountItem(BoxVNum)); private void InventoryShouldContain_(short vnum) => Assert.IsTrue(_session.Character.InventoryService.CountItem(vnum) > 0); private void RollTableShouldNotHaveBeenConsulted() => _rollDao.Verify(x => x.Where(It.IsAny<Expression<Func<RollGeneratedItemDto, bool>>>()), Times.Never); private void NoRdiPacketShouldBeSent() => Assert.IsFalse(_session.LastPackets.OfType<RdiPacket>().Any()); private void RdiPacketShouldBeSentFor_(short vnum) { var rdi = _session.LastPackets.OfType<RdiPacket>().LastOrDefault(); Assert.IsNotNull(rdi); Assert.AreEqual(vnum, rdi.ItemVNum); } private void ItemReceivedShouldBeSent() { var say = _session.LastPackets.OfType<SayiPacket>() .FirstOrDefault(p => p.Message == Game18NConstString.ItemReceived); Assert.IsNotNull(say); } private sealed class ItemInstanceForTest(short vnum) : NosCore.Data.Dto.ItemInstanceDto, IItemInstance { public new Guid Id { get; set; } = Guid.NewGuid(); public new short ItemVNum { get; set; } = vnum; public Item Item { get; set; } = new() { VNum = vnum, Type = NoscorePocketType.Main }; public object Clone() => MemberwiseClone(); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/UseItem/ChangeGenderHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.UseItem; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.UseItem { [TestClass] public class ChangeGenderHandlerTests { private const short GenderScrollVNum = 5105; private ClientSession _session = null!; private ChangeGenderHandler _handler = null!; private InventoryItemInstance _item = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; _handler = new ChangeGenderHandler(); } [TestMethod] public async Task WrongEffectIsIgnored() { await new Spec("Item with a non-ChangeGender Effect is a no-op") .Given(ItemInInventoryWithEffect_, ItemEffectType.Teleport) .And(CharacterGenderIs_, GenderType.Male) .WhenAsync(UsingTheItem) .Then(GenderShouldBe_, GenderType.Male) .And(ItemStackCountShouldBe_, (short)1) .ExecuteAsync(); } [TestMethod] public async Task VehicledCharacterIsRejected() { await new Spec("Vehicled character is blocked from switching gender") .Given(ItemInInventoryWithEffect_, ItemEffectType.ChangeGender) .And(CharacterGenderIs_, GenderType.Male) .And(CharacterIsVehicled) .WhenAsync(UsingTheItem) .Then(GenderShouldBe_, GenderType.Male) .And(ItemStackCountShouldBe_, (short)1) .ExecuteAsync(); } [TestMethod] public async Task CharacterWithWornItemsIsRejected() { await new Spec("Character with any equipped (Wear-pocket) item is blocked from switching gender") .Given(ItemInInventoryWithEffect_, ItemEffectType.ChangeGender) .And(CharacterGenderIs_, GenderType.Male) .And(CharacterHasAnEquippedItem) .WhenAsync(UsingTheItem) .Then(GenderShouldBe_, GenderType.Male) .And(ItemStackCountShouldBe_, (short)1) .ExecuteAsync(); } [TestMethod] public async Task MaleCharacterFlipsToFemale() { await new Spec("Male character flips to Female and consumes the item") .Given(ItemInInventoryWithEffect_, ItemEffectType.ChangeGender) .And(CharacterGenderIs_, GenderType.Male) .WhenAsync(UsingTheItem) .Then(GenderShouldBe_, GenderType.Female) .And(ItemStackCountShouldBe_, (short)0) .ExecuteAsync(); } [TestMethod] public async Task FemaleCharacterFlipsToMale() { await new Spec("Female character flips to Male and consumes the item") .Given(ItemInInventoryWithEffect_, ItemEffectType.ChangeGender) .And(CharacterGenderIs_, GenderType.Female) .WhenAsync(UsingTheItem) .Then(GenderShouldBe_, GenderType.Male) .And(ItemStackCountShouldBe_, (short)0) .ExecuteAsync(); } private void ItemInInventoryWithEffect_(ItemEffectType effect) { var item = new Item { VNum = GenderScrollVNum, Type = NoscorePocketType.Main, Effect = effect, }; var inst = new ItemInstanceForTest(GenderScrollVNum) { Amount = 1, Item = item }; _item = InventoryItemInstance.Create(inst, _session.Character.CharacterId); _item.Slot = 0; _item.Type = NoscorePocketType.Main; _session.Character.InventoryService[_item.ItemInstanceId] = _item; } private void CharacterGenderIs_(GenderType gender) => _session.Character.Gender = gender; private void CharacterIsVehicled() => _session.Character.IsVehicled = true; private void CharacterHasAnEquippedItem() { var armorItem = new Item { VNum = 1, Type = NoscorePocketType.Equipment }; var armor = new ItemInstanceForTest(1) { Amount = 1, Item = armorItem }; var worn = InventoryItemInstance.Create(armor, _session.Character.CharacterId); worn.Slot = 0; worn.Type = NoscorePocketType.Wear; _session.Character.InventoryService[worn.ItemInstanceId] = worn; } private async Task UsingTheItem() { var packet = new UseItemPacket { VisualType = VisualType.Player, VisualId = _session.Character.CharacterId, Type = PocketType.Main, Slot = 0, Mode = 1, Parameter = 0, }; await _handler.Handle(new ItemUsedEvent(_session, _item, packet)); } private void GenderShouldBe_(GenderType expected) => Assert.AreEqual(expected, _session.Character.Gender); private void ItemStackCountShouldBe_(short expected) => Assert.AreEqual(expected, _session.Character.InventoryService.CountItem(GenderScrollVNum)); private sealed class ItemInstanceForTest(short vnum) : NosCore.Data.Dto.ItemInstanceDto, IItemInstance { public new Guid Id { get; set; } = Guid.NewGuid(); public new short ItemVNum { get; set; } = vnum; public Item Item { get; set; } = new() { VNum = vnum, Type = NoscorePocketType.Main }; public object Clone() => MemberwiseClone(); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/UseItem/HairDieHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.UseItem; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.UseItem { [TestClass] public class HairDieHandlerTests { private const short DieVNum = 2060; private ClientSession _session = null!; private HairDieHandler _handler = null!; private InventoryItemInstance _item = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; _handler = new HairDieHandler(); } [TestMethod] public async Task WrongEffectIsIgnored() { await new Spec("Item with an unrelated Effect is a no-op (no color change, item preserved)") .Given(ItemInInventoryWithEffect_Value_, ItemEffectType.Teleport, 0) .And(CharacterHairColorIs_, HairColorType.Black) .WhenAsync(UsingTheItem) .Then(HairColorShouldBe_, HairColorType.Black) .And(ItemStackCountShouldBe_, (short)1) .ExecuteAsync(); } [TestMethod] public async Task VehicledCharacterCannotApplyDye() { await new Spec("Vehicled character returns early without applying the dye") .Given(ItemInInventoryWithEffect_Value_, ItemEffectType.ApplyHairDie, 5) .And(CharacterHairColorIs_, HairColorType.Black) .And(CharacterIsVehicled) .WhenAsync(UsingTheItem) .Then(HairColorShouldBe_, HairColorType.Black) .And(ItemStackCountShouldBe_, (short)1) .ExecuteAsync(); } [TestMethod] public async Task ApplyHairDieSetsHairColorFromEffectValue() { await new Spec("Valid ApplyHairDie sets HairColor to EffectValue and consumes the item") .Given(ItemInInventoryWithEffect_Value_, ItemEffectType.ApplyHairDie, 3) .And(CharacterHairColorIs_, HairColorType.Black) .WhenAsync(UsingTheItem) .Then(HairColorShouldBe_, (HairColorType)3) .And(ItemStackCountShouldBe_, (short)0) .ExecuteAsync(); } [TestMethod] public async Task ApplyHairStyleSetsHairStyleFromEffectValue() { await new Spec("Valid ApplyHairStyle sets HairStyle to EffectValue and consumes the item") .Given(ItemInInventoryWithEffect_Value_, ItemEffectType.ApplyHairStyle, 2) .And(CharacterHairStyleIs_, HairStyleType.HairStyleA) .WhenAsync(UsingTheItem) .Then(HairStyleShouldBe_, (HairStyleType)2) .And(ItemStackCountShouldBe_, (short)0) .ExecuteAsync(); } [TestMethod] public async Task UndefinedColorFallsBackToDarkPurple() { await new Spec("EffectValue outside defined HairColorType falls back to DarkPurple") .Given(ItemInInventoryWithEffect_Value_, ItemEffectType.ApplyHairDie, 200) .And(CharacterHairColorIs_, HairColorType.Black) .WhenAsync(UsingTheItem) .Then(HairColorShouldBe_, HairColorType.DarkPurple) .And(ItemStackCountShouldBe_, (short)0) .ExecuteAsync(); } private void ItemInInventoryWithEffect_Value_(ItemEffectType effect, int value) { var item = new Item { VNum = DieVNum, Type = NoscorePocketType.Main, Effect = effect, EffectValue = value, }; var inst = new ItemInstanceForTest(DieVNum) { Amount = 1, Item = item }; _item = InventoryItemInstance.Create(inst, _session.Character.CharacterId); _item.Slot = 0; _item.Type = NoscorePocketType.Main; _session.Character.InventoryService[_item.ItemInstanceId] = _item; } private void CharacterHairColorIs_(HairColorType color) => _session.Character.HairColor = color; private void CharacterHairStyleIs_(HairStyleType style) => _session.Character.HairStyle = style; private void CharacterIsVehicled() => _session.Character.IsVehicled = true; private async Task UsingTheItem() { var packet = new UseItemPacket { VisualType = VisualType.Player, VisualId = _session.Character.CharacterId, Type = PocketType.Main, Slot = 0, Mode = 1, Parameter = 0, }; await _handler.Handle(new ItemUsedEvent(_session, _item, packet)); } private void HairColorShouldBe_(HairColorType expected) => Assert.AreEqual(expected, _session.Character.HairColor); private void HairStyleShouldBe_(HairStyleType expected) => Assert.AreEqual(expected, _session.Character.HairStyle); private void ItemStackCountShouldBe_(short expected) => Assert.AreEqual(expected, _session.Character.InventoryService.CountItem(DieVNum)); private sealed class ItemInstanceForTest(short vnum) : NosCore.Data.Dto.ItemInstanceDto, IItemInstance { public new Guid Id { get; set; } = Guid.NewGuid(); public new short ItemVNum { get; set; } = vnum; public Item Item { get; set; } = new() { VNum = vnum, Type = NoscorePocketType.Main }; public object Clone() => MemberwiseClone(); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/UseItem/MinilandBellHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.Data.Enumerations.Map; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.UseItem; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.MapChangeService; using NosCore.GameObject.Services.MinilandService; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.UseItem { [TestClass] public class MinilandBellHandlerTests { private const short BellVNum = 1244; private ClientSession _session = null!; private Mock<IMinilandService> _minilandService = null!; private Mock<IMapChangeService> _mapChangeService = null!; private MinilandBellHandler _handler = null!; private InventoryItemInstance _bell = null!; private readonly Guid _minilandInstanceId = Guid.NewGuid(); [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _minilandService = new Mock<IMinilandService>(); _mapChangeService = new Mock<IMapChangeService>(); _minilandService.Setup(x => x.GetMiniland(It.IsAny<long>())) .Returns(new Miniland { MapInstanceId = _minilandInstanceId, MinilandMessage = "Test" }); _handler = new MinilandBellHandler(_minilandService.Object, _mapChangeService.Object); } [TestMethod] public async Task NonTeleportItemIsIgnored() { await new Spec("Bell handler ignores items whose Effect is not Teleport(Value=2)") .Given(BellInInventoryWithEffect_AndValue_, ItemEffectType.NoEffect, (short)0) .And(CharacterIsOnBaseMap) .WhenAsync(UsingBellWithMode_, (byte)1) .Then(NoPacketShouldBeSent) .And(ChangeMapInstanceAsyncWasNotCalled) .ExecuteAsync(); } [TestMethod] public async Task UsingBellOutsideBaseMapIsRejectedWithCanNotBeUsedHere() { await new Spec("Bell handler rejects use from a non-base instance with CanNotBeUsedHere") .Given(BellInInventoryWithEffect_AndValue_, ItemEffectType.Teleport, (short)2) .And(CharacterIsInsideNonBaseInstance) .WhenAsync(UsingBellWithMode_, (byte)1) .Then(SayMessageShouldBe_, Game18NConstString.CanNotBeUsedHere) .And(ChangeMapInstanceAsyncWasNotCalled) .ExecuteAsync(); } [TestMethod] public async Task UsingBellWhileVehicledIsRejectedWithOnlyPotionInVehicle() { await new Spec("Bell handler rejects use while vehicled with OnlyPotionInVehicle") .Given(BellInInventoryWithEffect_AndValue_, ItemEffectType.Teleport, (short)2) .And(CharacterIsOnBaseMap) .And(CharacterIsVehicled) .WhenAsync(UsingBellWithMode_, (byte)1) .Then(SayMessageShouldBe_, Game18NConstString.OnlyPotionInVehicle) .And(ChangeMapInstanceAsyncWasNotCalled) .ExecuteAsync(); } [TestMethod] public async Task UsingBellWithModeZeroEmitsDelayPacketAndDoesNotTeleport() { await new Spec("Bell handler with Mode=0 emits a DelayPacket (first stage) and does not teleport") .Given(BellInInventoryWithEffect_AndValue_, ItemEffectType.Teleport, (short)2) .And(CharacterIsOnBaseMap) .WhenAsync(UsingBellWithMode_, (byte)0) .Then(DelayPacketShouldHaveBeenSent) .And(ChangeMapInstanceAsyncWasNotCalled) .ExecuteAsync(); } [TestMethod] public async Task UsingBellWithNonZeroModeConsumesItemAndTeleportsToMinilandAt5And8() { await new Spec("Bell handler with Mode=1 consumes one bell and teleports the player to miniland at 5/8") .Given(BellInInventoryWithEffect_AndValue_, ItemEffectType.Teleport, (short)2) .And(CharacterIsOnBaseMap) .WhenAsync(UsingBellWithMode_, (byte)1) .Then(BellStackCountShouldBe_, (short)0) .And(ChangeMapInstanceAsyncWasCalledForMinilandWith_, 5, 8) .ExecuteAsync(); } private void BellInInventoryWithEffect_AndValue_(ItemEffectType effect, short value) { var item = new Item { VNum = BellVNum, Type = NoscorePocketType.Main, Effect = effect, EffectValue = value, }; var instance = new ItemInstanceForTest(BellVNum) { Amount = 1, Item = item }; _bell = InventoryItemInstance.Create(instance, _session.Character.CharacterId); _bell.Slot = 0; _bell.Type = NoscorePocketType.Main; _session.Character.InventoryService[_bell.ItemInstanceId] = _bell; } private void CharacterIsOnBaseMap() { _session.Character.MapInstance.MapInstanceType = MapInstanceType.BaseMapInstance; } private void CharacterIsInsideNonBaseInstance() { _session.Character.MapInstance.MapInstanceType = MapInstanceType.NormalInstance; } private void CharacterIsVehicled() { _session.Character.IsVehicled = true; } private async Task UsingBellWithMode_(byte mode) { var packet = new UseItemPacket { VisualType = VisualType.Player, VisualId = _session.Character.CharacterId, Type = PocketType.Main, Slot = 0, Mode = mode, Parameter = 0, }; await _handler.Handle(new ItemUsedEvent(_session, _bell, packet)); } private void NoPacketShouldBeSent() => Assert.AreEqual(0, _session.LastPackets.Count); private void SayMessageShouldBe_(Game18NConstString expected) { var say = _session.LastPackets.OfType<SayiPacket>().FirstOrDefault(); Assert.IsNotNull(say); Assert.AreEqual(expected, say.Message); } private void DelayPacketShouldHaveBeenSent() { Assert.IsTrue(_session.LastPackets.OfType<DelayPacket>().Any()); } private void BellStackCountShouldBe_(short expected) => Assert.AreEqual(expected, _session.Character.InventoryService.CountItem(BellVNum)); private void ChangeMapInstanceAsyncWasCalledForMinilandWith_(int x, int y) { _mapChangeService.Verify(m => m.ChangeMapInstanceAsync( _session, _minilandInstanceId, It.Is<int?>(v => v == x), It.Is<int?>(v => v == y)), Times.Once); } private void ChangeMapInstanceAsyncWasNotCalled() { _mapChangeService.Verify(m => m.ChangeMapInstanceAsync( It.IsAny<ClientSession>(), It.IsAny<Guid>(), It.IsAny<int?>(), It.IsAny<int?>()), Times.Never); } private sealed class ItemInstanceForTest(short vnum) : NosCore.Data.Dto.ItemInstanceDto, IItemInstance { public new Guid Id { get; set; } = Guid.NewGuid(); public new short ItemVNum { get; set; } = vnum; public Item Item { get; set; } = new() { VNum = vnum, Type = NoscorePocketType.Main }; public object Clone() => MemberwiseClone(); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/UseItem/PetBasketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Buff; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.UseItem; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Chats; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.UseItem { [TestClass] public class PetBasketHandlerTests { private const short PetBasketVNum = 1907; private ClientSession _session = null!; private PetBasketHandler _handler = null!; private InventoryItemInstance _item = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _handler = new PetBasketHandler(TestHelpers.Instance.WorldConfiguration, TestHelpers.Instance.Clock); } [TestMethod] public async Task UnrelatedEffectIsIgnored() { await new Spec("Item with a non-pet effect is ignored — no bonus, no consumption") .Given(ItemInInventoryWithEffect_, ItemEffectType.Teleport) .WhenAsync(UsingTheItem) .Then(StaticBonusCountShouldBe_, 0) .And(ItemStackCountShouldBe_, (short)1) .ExecuteAsync(); } [TestMethod] public async Task PetSpaceUpgradeMapsToPetBasketBonus() { await new Spec("PetSpaceUpgrade effect grants StaticBonusType.PetBasket (shared with PetBasketUpgrade)") .Given(ItemInInventoryWithEffect_, ItemEffectType.PetSpaceUpgrade) .WhenAsync(UsingTheItem) .Then(StaticBonusListShouldContain_, StaticBonusType.PetBasket) .And(ItemStackCountShouldBe_, (short)0) .ExecuteAsync(); } [TestMethod] public async Task PetBasketUpgradeGrantsPetBasketAndConsumesItem() { await new Spec("PetBasketUpgrade grants PetBasket and consumes one item") .Given(ItemInInventoryWithEffect_, ItemEffectType.PetBasketUpgrade) .WhenAsync(UsingTheItem) .Then(StaticBonusListShouldContain_, StaticBonusType.PetBasket) .And(ItemStackCountShouldBe_, (short)0) .ExecuteAsync(); } [TestMethod] public async Task PetBackpackUpgradeGrantsPetBackPackBonus() { await new Spec("PetBackpackUpgrade maps to the separate PetBackPack bonus slot") .Given(ItemInInventoryWithEffect_, ItemEffectType.PetBackpackUpgrade) .WhenAsync(UsingTheItem) .Then(StaticBonusListShouldContain_, StaticBonusType.PetBackPack) .And(ItemStackCountShouldBe_, (short)0) .ExecuteAsync(); } [TestMethod] public async Task DuplicatePetBasketIsRejectedWithNotInPair() { await new Spec("Second PetBasket grant emits NotInPair and does not consume the item") .Given(ItemInInventoryWithEffect_, ItemEffectType.PetBasketUpgrade) .And(CharacterAlreadyHasStaticBonus_, StaticBonusType.PetBasket) .WhenAsync(UsingTheItem) .Then(NotInPairShouldBeSent) .And(ItemStackCountShouldBe_, (short)1) .ExecuteAsync(); } [TestMethod] public async Task DuplicatePetBackPackIsRejectedWithNotInPair() { await new Spec("Second PetBackPack grant emits NotInPair and does not consume the item") .Given(ItemInInventoryWithEffect_, ItemEffectType.PetBackpackUpgrade) .And(CharacterAlreadyHasStaticBonus_, StaticBonusType.PetBackPack) .WhenAsync(UsingTheItem) .Then(NotInPairShouldBeSent) .And(ItemStackCountShouldBe_, (short)1) .ExecuteAsync(); } [TestMethod] public async Task PermanentBasketLeavesDateEndNull() { await new Spec("EffectValue=0 means permanent: StaticBonus.DateEnd is null") .Given(ItemInInventoryWithEffect_, ItemEffectType.PetBasketUpgrade) .And(ItemHasEffectValueDays_, 0) .WhenAsync(UsingTheItem) .Then(StaticBonusDateEndShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task TimedBasketSetsDateEnd() { await new Spec("EffectValue>0 days stamps DateEnd = now + that many days") .Given(ItemInInventoryWithEffect_, ItemEffectType.PetBasketUpgrade) .And(ItemHasEffectValueDays_, 30) .WhenAsync(UsingTheItem) .Then(StaticBonusDateEndShouldNotBeNull) .ExecuteAsync(); } private void ItemInInventoryWithEffect_(ItemEffectType effect) { var item = new Item { VNum = PetBasketVNum, Type = NoscorePocketType.Main, Effect = effect, EffectValue = 0, }; var inst = new ItemInstanceForTest(PetBasketVNum) { Amount = 1, Item = item }; _item = InventoryItemInstance.Create(inst, _session.Character.CharacterId); _item.Slot = 0; _item.Type = NoscorePocketType.Main; _session.Character.InventoryService[_item.ItemInstanceId] = _item; } private void ItemHasEffectValueDays_(int days) => _item.ItemInstance.Item.EffectValue = days; private void CharacterAlreadyHasStaticBonus_(StaticBonusType type) => _session.Character.StaticBonusList.Add(new StaticBonusDto { CharacterId = _session.Character.CharacterId, StaticBonusType = type, }); private async Task UsingTheItem() { var packet = new UseItemPacket { VisualType = VisualType.Player, VisualId = _session.Character.CharacterId, Type = PocketType.Main, Slot = 0, Mode = 1, Parameter = 0, }; await _handler.Handle(new ItemUsedEvent(_session, _item, packet)); } private void StaticBonusCountShouldBe_(int expected) => Assert.AreEqual(expected, _session.Character.StaticBonusList.Count); private void StaticBonusListShouldContain_(StaticBonusType type) => Assert.IsTrue(_session.Character.StaticBonusList.Any(b => b.StaticBonusType == type)); private void StaticBonusDateEndShouldBeNull() => Assert.IsNull(_session.Character.StaticBonusList.Last().DateEnd); private void StaticBonusDateEndShouldNotBeNull() => Assert.IsNotNull(_session.Character.StaticBonusList.Last().DateEnd); private void ItemStackCountShouldBe_(short expected) => Assert.AreEqual(expected, _session.Character.InventoryService.CountItem(PetBasketVNum)); private void NotInPairShouldBeSent() { var say = _session.LastPackets.OfType<SayiPacket>() .FirstOrDefault(p => p.Message == Game18NConstString.NotInPair); Assert.IsNotNull(say); } private sealed class ItemInstanceForTest(short vnum) : NosCore.Data.Dto.ItemInstanceDto, IItemInstance { public new Guid Id { get; set; } = Guid.NewGuid(); public new short ItemVNum { get; set; } = vnum; public Item Item { get; set; } = new() { VNum = vnum, Type = NoscorePocketType.Main }; public object Clone() => MemberwiseClone(); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/UseItem/SealedTarotCardHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.UseItem; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Chats; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.UseItem { [TestClass] public class SealedTarotCardHandlerTests { private const short TarotVNum = 1810; private const short RewardVNum = 1013; private ClientSession _session = null!; private IItemGenerationService _itemProvider = null!; private SealedTarotCardHandler _handler = null!; private InventoryItemInstance _item = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _itemProvider = TestHelpers.Instance.GenerateItemProvider(); _handler = new SealedTarotCardHandler(_itemProvider); } [TestMethod] public async Task WrongEffectIsIgnored() { await new Spec("A non-SealedTarotCard effect does not add any reward nor consume the card") .Given(TarotInInventoryWithEffectAndValue_, ItemEffectType.Teleport, RewardVNum) .WhenAsync(UsingTheItem) .Then(TarotStackShouldStillBe_, (short)1) .And(InventoryShouldNotContain_, RewardVNum) .ExecuteAsync(); } [TestMethod] public async Task ZeroEffectValueIsIgnored() { await new Spec("EffectValue<=0 is a malformed tarot row: no reward, no consumption") .Given(TarotInInventoryWithEffectAndValue_, ItemEffectType.SealedTarotCard, (short)0) .WhenAsync(UsingTheItem) .Then(TarotStackShouldStillBe_, (short)1) .ExecuteAsync(); } [TestMethod] public async Task ValidTarotGrantsRewardAndConsumesCard() { await new Spec("A valid SealedTarotCard grants EffectValue's item once and consumes one card") .Given(TarotInInventoryWithEffectAndValue_, ItemEffectType.SealedTarotCard, RewardVNum) .WhenAsync(UsingTheItem) .Then(InventoryShouldContain_, RewardVNum) .And(TarotStackShouldStillBe_, (short)0) .And(ItemReceivedShouldBeSent) .ExecuteAsync(); } private void TarotInInventoryWithEffectAndValue_(ItemEffectType effect, short value) { var item = new Item { VNum = TarotVNum, Type = NoscorePocketType.Main, Effect = effect, EffectValue = value, }; var inst = new ItemInstanceForTest(TarotVNum) { Amount = 1, Item = item }; _item = InventoryItemInstance.Create(inst, _session.Character.CharacterId); _item.Slot = 0; _item.Type = NoscorePocketType.Main; _session.Character.InventoryService[_item.ItemInstanceId] = _item; } private async Task UsingTheItem() { var packet = new UseItemPacket { VisualType = VisualType.Player, VisualId = _session.Character.CharacterId, Type = PocketType.Main, Slot = 0, Mode = 1, Parameter = 0, }; await _handler.Handle(new ItemUsedEvent(_session, _item, packet)); } private void TarotStackShouldStillBe_(short expected) => Assert.AreEqual(expected, _session.Character.InventoryService.CountItem(TarotVNum)); private void InventoryShouldContain_(short vnum) => Assert.IsTrue(_session.Character.InventoryService.CountItem(vnum) > 0); private void InventoryShouldNotContain_(short vnum) => Assert.AreEqual(0, _session.Character.InventoryService.CountItem(vnum)); private void ItemReceivedShouldBeSent() { var say = _session.LastPackets.OfType<SayiPacket>() .FirstOrDefault(p => p.Message == Game18NConstString.ItemReceived); Assert.IsNotNull(say); } private sealed class ItemInstanceForTest(short vnum) : NosCore.Data.Dto.ItemInstanceDto, IItemInstance { public new Guid Id { get; set; } = Guid.NewGuid(); public new short ItemVNum { get; set; } = vnum; public Item Item { get; set; } = new() { VNum = vnum, Type = NoscorePocketType.Main }; public object Clone() => MemberwiseClone(); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/UseItem/SpRechargerHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.Options; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core.Configuration; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.UseItem; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.UseItem { [TestClass] public class SpRechargerHandlerTests { private const short RechargerVNum = 5500; private const int MaxAdditionalSp = 100_000; private ClientSession _session = null!; private SpRechargerHandler _handler = null!; private InventoryItemInstance _recharger = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); TestHelpers.Instance.WorldConfiguration.Value.MaxAdditionalSpPoints = MaxAdditionalSp; _handler = new SpRechargerHandler(TestHelpers.Instance.WorldConfiguration); } [TestMethod] public async Task RechargerBelowCapIsConsumedAndAddsSpPoints() { await new Spec("A recharger consumed below the SP-addition cap debits one item and increases SpAdditionPoint by EffectValue") .Given(RechargerInInventoryWith_EffectAndValue_, ItemEffectType.CraftedSpRecharger, 30_000) .And(CharacterHasSpAdditionPoint_, 10_000) .WhenAsync(UsingTheRecharger) .Then(RechargerStackCountShouldBe_, (short)0) .And(SpAdditionPointShouldBe_, 40_000) .ExecuteAsync(); } [TestMethod] public async Task RechargerAtCapIsRejectedWithMessageAndNotConsumed() { await new Spec("At SP-addition cap the recharger emits CannotBeUsedExceedsCapacity and is not consumed") .Given(RechargerInInventoryWith_EffectAndValue_, ItemEffectType.CraftedSpRecharger, 30_000) .And(CharacterHasSpAdditionPoint_, MaxAdditionalSp) .WhenAsync(UsingTheRecharger) .Then(RechargerStackCountShouldBe_, (short)1) .And(SpAdditionPointShouldBe_, MaxAdditionalSp) .And(CannotBeUsedExceedsCapacityMessageShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task NonRechargerItemIsIgnored() { await new Spec("An item that is not a SpRecharger is ignored by the handler (no item consumption, no SP change)") .Given(RechargerInInventoryWith_EffectAndValue_, ItemEffectType.Teleport, 999) .And(CharacterHasSpAdditionPoint_, 10_000) .WhenAsync(UsingTheRecharger) .Then(RechargerStackCountShouldBe_, (short)1) .And(SpAdditionPointShouldBe_, 10_000) .ExecuteAsync(); } [TestMethod] public async Task RechargerAddsCappedAtMaxEvenIfEffectValueWouldOverflow() { await new Spec("AddAdditionalSpPoints clamps the result so the cap is never exceeded") .Given(RechargerInInventoryWith_EffectAndValue_, ItemEffectType.CraftedSpRecharger, 50_000) .And(CharacterHasSpAdditionPoint_, MaxAdditionalSp - 10) .WhenAsync(UsingTheRecharger) .Then(RechargerStackCountShouldBe_, (short)0) .And(SpAdditionPointShouldBe_, MaxAdditionalSp) .ExecuteAsync(); } private void RechargerInInventoryWith_EffectAndValue_(ItemEffectType effect, int effectValue) { var item = new Item { VNum = RechargerVNum, Type = NoscorePocketType.Main, ItemType = ItemType.Special, Effect = effect, EffectValue = effectValue, }; var inst = new ItemInstanceForTest(RechargerVNum) { Amount = 1, Item = item }; _recharger = InventoryItemInstance.Create(inst, _session.Character.CharacterId); _recharger.Slot = 0; _recharger.Type = NoscorePocketType.Main; _session.Character.InventoryService[_recharger.ItemInstanceId] = _recharger; } private void CharacterHasSpAdditionPoint_(int points) { _session.Character.SpAdditionPoint = points; } private async Task UsingTheRecharger() { var packet = new UseItemPacket { VisualType = VisualType.Player, VisualId = _session.Character.CharacterId, Type = PocketType.Main, Slot = 0, Mode = 1, Parameter = 0, }; await _handler.Handle(new ItemUsedEvent(_session, _recharger, packet)); } private void RechargerStackCountShouldBe_(short expected) => Assert.AreEqual(expected, _session.Character.InventoryService.CountItem(RechargerVNum)); private void SpAdditionPointShouldBe_(int expected) => Assert.AreEqual(expected, _session.Character.SpAdditionPoint); private void CannotBeUsedExceedsCapacityMessageShouldBeSent() { var msg = _session.LastPackets.OfType<MsgiPacket>() .FirstOrDefault(m => m.Message == Game18NConstString.CannotBeUsedExceedsCapacity); Assert.IsNotNull(msg); } private sealed class ItemInstanceForTest(short vnum) : NosCore.Data.Dto.ItemInstanceDto, IItemInstance { public new Guid Id { get; set; } = Guid.NewGuid(); public new short ItemVNum { get; set; } = vnum; public Item Item { get; set; } = new() { VNum = vnum, Type = NoscorePocketType.Main }; public object Clone() => MemberwiseClone(); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/UseItem/SpeakerHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.UseItem; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.UseItem { [TestClass] public class SpeakerHandlerTests { private const short SpeakerVNum = 5792; private ClientSession _session = null!; private SpeakerHandler _handler = null!; private InventoryItemInstance _item = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _handler = new SpeakerHandler(); } [TestMethod] public async Task NonMagicalItemIsIgnored() { await new Spec("Non-Magical ItemType is a no-op: no TextInput prompt emitted") .Given(ItemWith_, ItemType.Main, ItemEffectType.Speaker) .WhenAsync(UsingTheItem) .Then(NoGuriTextInputShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task WrongEffectIsIgnored() { await new Spec("Magical item with a non-Speaker Effect does not prompt TextInput") .Given(ItemWith_, ItemType.Magical, ItemEffectType.Teleport) .WhenAsync(UsingTheItem) .Then(NoGuriTextInputShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task MagicalSpeakerItemOpensTextInputDialog() { await new Spec("A Magical + Speaker item opens the TextInput guri dialog bound to the item's inventory slot") .Given(ItemWith_, ItemType.Magical, ItemEffectType.Speaker) .WhenAsync(UsingTheItem) .Then(GuriTextInputShouldBeSentForCurrentSlot) .ExecuteAsync(); } private void ItemWith_(ItemType itemType, ItemEffectType effect) { var item = new Item { VNum = SpeakerVNum, Type = NoscorePocketType.Main, ItemType = itemType, Effect = effect, }; var inst = new ItemInstanceForTest(SpeakerVNum) { Amount = 1, Item = item }; _item = InventoryItemInstance.Create(inst, _session.Character.CharacterId); _item.Slot = 7; _item.Type = NoscorePocketType.Main; _session.Character.InventoryService[_item.ItemInstanceId] = _item; } private async Task UsingTheItem() { var packet = new UseItemPacket { VisualType = VisualType.Player, VisualId = _session.Character.CharacterId, Type = PocketType.Main, Slot = 7, Mode = 1, Parameter = 0, }; await _handler.Handle(new ItemUsedEvent(_session, _item, packet)); } private void NoGuriTextInputShouldBeSent() => Assert.IsFalse(_session.LastPackets.OfType<GuriPacket>() .Any(p => p.Type == GuriPacketType.TextInput)); private void GuriTextInputShouldBeSentForCurrentSlot() { var textInputs = _session.LastPackets.OfType<GuriPacket>() .Where(p => p.Type == GuriPacketType.TextInput) .ToList(); Assert.AreEqual(1, textInputs.Count); var guri = textInputs[0]; Assert.AreEqual(3u, guri.Argument); Assert.AreEqual(1u, guri.SecondArgument); Assert.AreEqual(7L, guri.EntityId); } private sealed class ItemInstanceForTest(short vnum) : NosCore.Data.Dto.ItemInstanceDto, IItemInstance { public new Guid Id { get; set; } = Guid.NewGuid(); public new short ItemVNum { get; set; } = vnum; public Item Item { get; set; } = new() { VNum = vnum, Type = NoscorePocketType.Main }; public object Clone() => MemberwiseClone(); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/UseItem/TitleHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.UseItem; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.UseItem { [TestClass] public class TitleHandlerTests { private const short TitleVNum = 9054; private ClientSession _session = null!; private TitleHandler _handler = null!; private InventoryItemInstance _item = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _handler = new TitleHandler(); } [TestMethod] public async Task NonTitleItemIsIgnored() { await new Spec("Non-Title ItemType does not prompt the Qnai confirmation") .Given(ItemOfType_, ItemType.Main) .WhenAsync(UsingTheItem) .Then(NoQnaiPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task TitleItemEmitsAskAddTitleConfirmation() { await new Spec("A Title-typed item prompts a Qnai with Question=AskAddTitle and a Guri/Title YesPacket") .Given(ItemOfType_, ItemType.Title) .WhenAsync(UsingTheItem) .Then(QnaiWithAskAddTitleAndGuriYesPacketShouldBeSent) .ExecuteAsync(); } private void ItemOfType_(ItemType itemType) { var item = new Item { VNum = TitleVNum, Type = NoscorePocketType.Main, ItemType = itemType, }; var inst = new ItemInstanceForTest(TitleVNum) { Amount = 1, Item = item }; _item = InventoryItemInstance.Create(inst, _session.Character.CharacterId); _item.Slot = 4; _item.Type = NoscorePocketType.Main; _session.Character.InventoryService[_item.ItemInstanceId] = _item; } private async Task UsingTheItem() { var packet = new UseItemPacket { VisualType = VisualType.Player, VisualId = _session.Character.CharacterId, Type = PocketType.Main, Slot = 4, Mode = 1, Parameter = 0, }; await _handler.Handle(new ItemUsedEvent(_session, _item, packet)); } private void NoQnaiPacketShouldBeSent() => Assert.IsFalse(_session.LastPackets.OfType<QnaiPacket>().Any()); private void QnaiWithAskAddTitleAndGuriYesPacketShouldBeSent() { var qnai = _session.LastPackets.OfType<QnaiPacket>().LastOrDefault(); Assert.IsNotNull(qnai); Assert.AreEqual(Game18NConstString.AskAddTitle, qnai.Question); var guri = qnai.YesPacket as GuriPacket; Assert.IsNotNull(guri); Assert.AreEqual(GuriPacketType.Title, guri.Type); Assert.AreEqual((uint)TitleVNum, guri.Argument); Assert.AreEqual(4L, guri.EntityId); } private sealed class ItemInstanceForTest(short vnum) : NosCore.Data.Dto.ItemInstanceDto, IItemInstance { public new Guid Id { get; set; } = Guid.NewGuid(); public new short ItemVNum { get; set; } = vnum; public Item Item { get; set; } = new() { VNum = vnum, Type = NoscorePocketType.Main }; public object Clone() => MemberwiseClone(); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/Handlers/UseItem/WearHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Character; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Messaging.Handlers.UseItem; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; namespace NosCore.GameObject.Tests.Messaging.Handlers.UseItem { [TestClass] public class WearHandlerTests { private const short ArmorVNum = 1; private ClientSession _session = null!; private WearHandler _handler = null!; private InventoryItemInstance _item = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; _handler = new WearHandler( new Mock<ILogger<WearHandler>>().Object, TestHelpers.Instance.Clock, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.WorldConfiguration); } [TestMethod] public async Task NonWearableItemTypeIsIgnored() { await new Spec("Wear handler returns early for item types that are not Weapon/Jewelery/Armor/Fashion/Specialist") .Given(ItemInInventoryOfType_, ItemType.Main) .WhenAsync(UsingTheItem) .Then(NoCanNotWearPacketSent) .ExecuteAsync(); } [TestMethod] public async Task LevelTooLowIsRejectedWithCanNotWearThat() { await new Spec("An item whose LevelMinimum exceeds character.Level is rejected with CanNotWearThat") .Given(ItemInInventoryOfType_, ItemType.Armor) .And(ItemRequiresLevel_, (byte)80) .And(CharacterIsLevel_, (byte)20) .WhenAsync(UsingTheItem) .Then(CanNotWearThatShouldHaveBeenSent) .ExecuteAsync(); } [TestMethod] public async Task MismatchingClassIsRejectedWithCanNotWearThat() { await new Spec("An item whose Class bitmask doesn't include the character's Class is rejected") .Given(ItemInInventoryOfType_, ItemType.Armor) .And(ItemIsRestrictedToClassBit_, (byte)4) .And(CharacterIsClass_, CharacterClassType.Adventurer) .WhenAsync(UsingTheItem) .Then(CanNotWearThatShouldHaveBeenSent) .ExecuteAsync(); } [TestMethod] public async Task MismatchingGenderIsRejectedWithCanNotWearThat() { await new Spec("An item whose Sex bitmask doesn't include the character's Gender is rejected (male-only item on a Female character)") .Given(ItemInInventoryOfType_, ItemType.Fashion) .And(ItemIsRestrictedToSexBit_, (byte)1) .And(CharacterGenderIs_, GenderType.Female) .WhenAsync(UsingTheItem) .Then(CanNotWearThatShouldHaveBeenSent) .ExecuteAsync(); } [TestMethod] public async Task RequireBindingModeZeroUnboundEmitsConfirmationDialog() { await new Spec("RequireBinding + Mode=0 + not yet bound prompts a Qna dialog asking for consent instead of equipping") .Given(ItemInInventoryOfType_, ItemType.Armor) .And(ItemRequiresBinding) .WhenAsync(UsingTheItemWithMode_, (byte)0) .Then(QnaPacketShouldHaveBeenSent) .And(NoCanNotWearPacketSent) .ExecuteAsync(); } [TestMethod] public async Task SuccessfulEquipBindsTheItemToTheCharacter() { await new Spec("Successful equip sets BoundCharacterId to the character's id (needed for resale / rebind gates)") .Given(ItemInInventoryOfType_, ItemType.Armor) .And(CharacterIsLevel_, (byte)50) .WhenAsync(UsingTheItemWithMode_, (byte)1) .Then(ItemShouldBeBoundToCharacter) .And(NoCanNotWearPacketSent) .ExecuteAsync(); } [TestMethod] public async Task SuccessfulEquipWithValidTimeStampsItemDeleteTime() { await new Spec("Item with ItemValidTime > 0 gets an ItemDeleteTime stamped on successful equip (countdown starts on bind)") .Given(ItemInInventoryOfType_, ItemType.Armor) .And(ItemHasValidTime_, 3600) .And(CharacterIsLevel_, (byte)50) .WhenAsync(UsingTheItemWithMode_, (byte)1) .Then(ItemDeleteTimeShouldBeSet) .ExecuteAsync(); } private void ItemHasValidTime_(int seconds) { _item.ItemInstance.Item.ItemValidTime = seconds; } private void ItemShouldBeBoundToCharacter() => Assert.AreEqual(_session.Character.CharacterId, _item.ItemInstance.BoundCharacterId); private void ItemDeleteTimeShouldBeSet() => Assert.IsNotNull(_item.ItemInstance.ItemDeleteTime); private void ItemInInventoryOfType_(ItemType itemType) { var item = new Item { VNum = ArmorVNum, Type = NoscorePocketType.Equipment, ItemType = itemType, EquipmentSlot = EquipmentType.Armor, }; var inst = new ItemInstanceForTest(ArmorVNum) { Item = item }; _item = InventoryItemInstance.Create(inst, _session.Character.CharacterId); _item.Slot = 0; _item.Type = NoscorePocketType.Equipment; _session.Character.InventoryService[_item.ItemInstanceId] = _item; } private void ItemRequiresLevel_(byte level) { _item.ItemInstance.Item.LevelMinimum = level; } private void ItemIsRestrictedToClassBit_(byte classBit) { _item.ItemInstance.Item.Class = classBit; } private void ItemIsRestrictedToSexBit_(byte sexBit) { _item.ItemInstance.Item.Sex = sexBit; } private void ItemRequiresBinding() { _item.ItemInstance.Item.RequireBinding = true; _item.ItemInstance.BoundCharacterId = null; } private void CharacterIsLevel_(byte level) { _session.Character.Level = level; } private void CharacterIsClass_(CharacterClassType cls) { _session.Character.Class = cls; } private void CharacterGenderIs_(GenderType gender) { _session.Character.Gender = gender; } private async Task UsingTheItem() => await UsingTheItemWithMode_(1); private async Task UsingTheItemWithMode_(byte mode) { var packet = new UseItemPacket { VisualType = VisualType.Player, VisualId = _session.Character.CharacterId, Type = PocketType.Equipment, Slot = 0, Mode = mode, Parameter = 0, }; await _handler.Handle(new ItemUsedEvent(_session, _item, packet)); } private void CanNotWearThatShouldHaveBeenSent() { var say = _session.LastPackets.OfType<SayiPacket>() .FirstOrDefault(p => p.Message == Game18NConstString.CanNotWearThat); Assert.IsNotNull(say); } private void NoCanNotWearPacketSent() { var say = _session.LastPackets.OfType<SayiPacket>() .FirstOrDefault(p => p.Message == Game18NConstString.CanNotWearThat); Assert.IsNull(say); } private void QnaPacketShouldHaveBeenSent() { Assert.IsTrue(_session.LastPackets.OfType<QnaPacket>().Any()); } private sealed class ItemInstanceForTest(short vnum) : NosCore.Data.Dto.ItemInstanceDto, IItemInstance { public new Guid Id { get; set; } = Guid.NewGuid(); public new short ItemVNum { get; set; } = vnum; public Item Item { get; set; } = new() { VNum = vnum, Type = NoscorePocketType.Equipment }; public object Clone() => MemberwiseClone(); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Messaging/WolverineHandlerResolutionTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using System.Linq; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.VisualStudio.TestTools.UnitTesting; using NodaTime; using NosCore.Algorithm.ExperienceService; using NosCore.Database.Hosting; using NosCore.GameObject.Messaging; using NosCore.GameObject.Services.InventoryService; namespace NosCore.GameObject.Tests.Messaging { // Regression test for the class of bug where a Wolverine handler is registered but a // transitive dependency (registered only with Autofac) is invisible to Wolverine's // IServiceCollection-based code-gen planner. When that happens production crashes at // host build time with "does not have a suitable, public constructor for Wolverine or // is missing registered dependencies". // // We mirror the production wiring (PersistenceModule.MirrorTo + // WolverineDependencyRegistrar.RegisterDependencies + the *Service scan), then for // every handler under Messaging/Handlers we walk its public constructor and assert // each parameter type is registered. We do NOT actually instantiate handlers — that // would require a live DB — but the registration check catches the same failure mode // as Wolverine's planner. [TestClass] public class WolverineHandlerResolutionTests { [TestMethod] public void EveryWolverineHandlerHasItsConstructorDepsRegistered() { var services = BuildProductionLikeServiceCollection(); var registered = new HashSet<Type>(services.Select(d => d.ServiceType)); // Add the framework-supplied types Wolverine + ASP.NET inject into handlers. // These come from the host platform, not our wiring. registered.Add(typeof(Wolverine.IMessageBus)); registered.Add(typeof(Wolverine.IMessageContext)); foreach (var openGeneric in new[] { typeof(Microsoft.Extensions.Logging.ILogger<>), typeof(Microsoft.Extensions.Options.IOptions<>), typeof(NosCore.Shared.I18N.ILogLanguageLocalizer<>), }) { registered.Add(openGeneric); } var handlerTypes = typeof(WolverineDependencyRegistrar).Assembly.GetTypes() .Where(t => t.Namespace?.Contains(".Messaging.Handlers.") == true && t.IsClass && !t.IsAbstract && t.IsSealed) .ToList(); Assert.IsTrue(handlerTypes.Count > 0, "Did not discover any Wolverine handler types"); var missing = new List<string>(); foreach (var handler in handlerTypes) { var ctor = handler.GetConstructors().OrderByDescending(c => c.GetParameters().Length).First(); foreach (var param in ctor.GetParameters()) { if (!IsKnown(registered, param.ParameterType)) { missing.Add($"{handler.FullName}.ctor({param.Name}: {param.ParameterType.FullName})"); } } } Assert.AreEqual(0, missing.Count, "Handlers reference deps not registered in IServiceCollection — Wolverine code-gen will fail at host build time:\n " + string.Join("\n ", missing)); } private static bool IsKnown(HashSet<Type> registered, Type t) { if (registered.Contains(t)) { return true; } if (t.IsGenericType) { if (registered.Contains(t.GetGenericTypeDefinition())) { return true; } if (t.GetGenericTypeDefinition() == typeof(IEnumerable<>) && registered.Contains(t.GetGenericArguments()[0])) { return true; } } return false; } private static IServiceCollection BuildProductionLikeServiceCollection() { var services = new ServiceCollection(); // Mirrors WorldServerBootstrap.ConfigureServices ordering. services.AddSingleton<IClock>(_ => SystemClock.Instance); services.AddTransient<NosCore.Core.I18N.IGameLanguageLocalizer, NosCore.Core.I18N.GameLanguageLocalizer>(); foreach (var implType in new[] { typeof(IInventoryService).Assembly, typeof(IExperienceService).Assembly } .SelectMany(a => a.GetTypes()) .Where(t => t.Name.EndsWith("Service") && t.IsClass && !t.IsAbstract)) { foreach (var iface in implType.GetInterfaces()) { services.AddTransient(iface, implType); } services.AddTransient(implType); } PersistenceModule.MirrorTo(services); WolverineDependencyRegistrar.RegisterDependencies(services); return services; } } } ================================================ FILE: test/NosCore.GameObject.Tests/NosCore.GameObject.Tests.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net10.0</TargetFramework> <IsPackable>false</IsPackable> <NoWarn>MSTEST0001;MSTEST0037;MSTEST0044;MSTEST0017;NU1701</NoWarn> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <ItemGroup> <PackageReference Include="coverlet.msbuild"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Microsoft.NET.Test.Sdk" /> <PackageReference Include="MSTest.TestFramework" /> <PackageReference Include="MSTest.TestAdapter" /> <PackageReference Include="SpecLight" /> <PackageReference Include="AutoFixture" /> <PackageReference Include="AutoFixture.AutoMoq" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\..\src\NosCore.GameObject\NosCore.GameObject.csproj" /> <ProjectReference Include="..\..\test\NosCore.Tests.Shared\NosCore.Tests.Shared.csproj" /> </ItemGroup> <ItemGroup> <PackageReference Include="NosCore.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> </Project> ================================================ FILE: test/NosCore.GameObject.Tests/Services/AuthService/AuthCodeServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Services.AuthService; using SpecLight; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.AuthService { [TestClass] public class AuthCodeServiceTests { private IAuthCodeService Service = null!; [TestInitialize] public void Setup() { Service = new AuthCodeService(); } [TestMethod] public async Task StoreAuthCodeShouldAllowRetrieval() { await new Spec("Store auth code should allow retrieval") .When(StoringAuthCode) .Then(AuthCodeShouldBeRetrievable) .ExecuteAsync(); } [TestMethod] public async Task GetAccountByAuthCodeShouldReturnNullForUnknownCode() { await new Spec("Get account by auth code should return null for unknown code") .When(GettingUnknownAuthCode) .Then(ResultShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task TryRemoveAuthCodeShouldRemoveCode() { await new Spec("Try remove auth code should remove code") .Given(AuthCodeIsStored) .When(RemovingAuthCode) .Then(RemoveShouldSucceed) .And(AuthCodeShouldNoLongerExist) .ExecuteAsync(); } [TestMethod] public async Task TryRemoveAuthCodeShouldFailForUnknownCode() { await new Spec("Try remove auth code should fail for unknown code") .When(RemovingUnknownAuthCode) .Then(RemoveShouldFail) .ExecuteAsync(); } [TestMethod] public async Task MarkReadyForAuthShouldAllowVerification() { await new Spec("Mark ready for auth should allow verification") .When(MarkingReadyForAuth) .Then(IsReadyForAuthShouldReturnTrue) .ExecuteAsync(); } [TestMethod] public async Task IsReadyForAuthShouldReturnFalseForWrongSession() { await new Spec("Is ready for auth should return false for wrong session") .Given(AccountIsMarkedReady) .When(CheckingReadyWithWrongSession) .Then(WrongSessionCheckShouldReturnFalse) .ExecuteAsync(); } [TestMethod] public async Task ClearReadyForAuthShouldRemoveReadyState() { await new Spec("Clear ready for auth should remove ready state") .Given(AccountIsMarkedReady) .When(ClearingReadyForAuth) .Then(IsReadyShouldReturnFalse) .ExecuteAsync(); } private const string TestAuthCode = "test-auth-code"; private const string TestAccountName = "TestAccount"; private const long TestSessionId = 12345; private string? RetrievedAccountName; private bool RemoveResult; private bool IsReadyResult; private void StoringAuthCode() { Service.StoreAuthCode(TestAuthCode, TestAccountName); } private void AuthCodeIsStored() { Service.StoreAuthCode(TestAuthCode, TestAccountName); } private void AccountIsMarkedReady() { Service.MarkReadyForAuth(TestAccountName, TestSessionId); } private void GettingUnknownAuthCode() { RetrievedAccountName = Service.GetAccountByAuthCode("unknown-code"); } private void RemovingAuthCode() { RemoveResult = Service.TryRemoveAuthCode(TestAuthCode, out RetrievedAccountName); } private void RemovingUnknownAuthCode() { RemoveResult = Service.TryRemoveAuthCode("unknown-code", out RetrievedAccountName); } private void MarkingReadyForAuth() { Service.MarkReadyForAuth(TestAccountName, TestSessionId); } private void CheckingReadyWithWrongSession() { IsReadyResult = Service.IsReadyForAuth(TestAccountName, 99999); } private void ClearingReadyForAuth() { Service.ClearReadyForAuth(TestAccountName); } private void AuthCodeShouldBeRetrievable() { var result = Service.GetAccountByAuthCode(TestAuthCode); Assert.AreEqual(TestAccountName, result); } private void ResultShouldBeNull() { Assert.IsNull(RetrievedAccountName); } private void RemoveShouldSucceed() { Assert.IsTrue(RemoveResult); Assert.AreEqual(TestAccountName, RetrievedAccountName); } private void RemoveShouldFail() { Assert.IsFalse(RemoveResult); } private void AuthCodeShouldNoLongerExist() { var result = Service.GetAccountByAuthCode(TestAuthCode); Assert.IsNull(result); } private void IsReadyForAuthShouldReturnTrue() { var result = Service.IsReadyForAuth(TestAccountName, TestSessionId); Assert.IsTrue(result); } private void WrongSessionCheckShouldReturnFalse() { Assert.IsFalse(IsReadyResult); } private void IsReadyShouldReturnFalse() { var result = Service.IsReadyForAuth(TestAccountName, TestSessionId); Assert.IsFalse(result); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/BattleService/AggroServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Concurrent; using System.Threading; using Arch.Core; using Microsoft.VisualStudio.TestTools.UnitTesting; using NodaTime; using NodaTime.Testing; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.ShopService; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Tests.Services.BattleService { // The aggro service touches AggroComponent on the underlying bundle world. Our test // doubles are not full bundles, so these tests exercise the observable behavior: // calling AddThreat on a non-bundle entity is a no-op (no component to read), and // Current returns "no target" for such entities. [TestClass] public class AggroServiceTests { [TestMethod] public void NonBundleEntityHasNoAggro() { var service = new AggroService(new FakeClock(Instant.FromUtc(2026, 1, 1, 0, 0))); var mob = new FakeEntity(); var player = new FakeEntity(); service.AddThreat(mob, player, 50); var snap = service.Current(mob); Assert.IsFalse(snap.HasTarget); Assert.AreEqual(0, snap.TargetVisualId); } private class FakeEntity : IAliveEntity { public Entity Handle { get; set; } public bool IsSitting { get; set; } public byte Speed { get; set; } public byte Size { get; set; } public int Mp { get; set; } = 100; public int Hp { get; set; } = 100; public short Morph => 0; public byte MorphUpgrade => 0; public short MorphDesign => 0; public byte MorphBonus => 0; public bool NoAttack => false; public bool NoMove => false; public bool IsAlive => Hp > 0; public short MapX => 0; public short MapY => 0; public int MaxHp => 100; public int MaxMp => 100; public byte Level { get; set; } = 1; public byte HeroLevel => 0; public short Race => 0; public Shop? Shop { get; set; } public SemaphoreSlim HitSemaphore { get; } = new(1, 1); public ConcurrentDictionary<Entity, int> HitList { get; } = new(); public VisualType VisualType => VisualType.Monster; public short VNum => 0; public long VisualId => 1; public byte Direction { get; set; } public Guid MapInstanceId { get; } public NosCore.GameObject.Services.MapInstanceGenerationService.MapInstance MapInstance { get; set; } = null!; public short PositionX { get; set; } public short PositionY { get; set; } } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/BattleService/BattleServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Arch.Core; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations.Battle; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.BattleService.Model; using NosCore.GameObject.Services.ShopService; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Wolverine; namespace NosCore.GameObject.Tests.Services.BattleService { [TestClass] public class BattleServiceTests { private Mock<ISkillResolver> _skillResolver = null!; private Mock<ITargetResolver> _targetResolver = null!; private Mock<IHitQueue> _hitQueue = null!; private Mock<IMessageBus> _bus = null!; private GameObject.Services.BattleService.BattleService _service = null!; [TestInitialize] public void Setup() { _skillResolver = new Mock<ISkillResolver>(); _targetResolver = new Mock<ITargetResolver>(); _hitQueue = new Mock<IHitQueue>(); _bus = new Mock<IMessageBus>(); _service = new GameObject.Services.BattleService.BattleService( _skillResolver.Object, _targetResolver.Object, _hitQueue.Object, _bus.Object, new Mock<GameObject.Services.BroadcastService.ISessionRegistry>().Object, NodaTime.SystemClock.Instance, new Mock<NosCore.GameObject.Services.BattleService.ICaptureService>().Object, NullLogger<NosCore.GameObject.Services.BattleService.BattleService>.Instance); } [TestMethod] public async Task CannotAttackWhenAttackerIsDead() { var origin = new FakeEntity { Hp = 0 }; var target = new FakeEntity { Hp = 100 }; await _service.Hit(origin, target, new HitArguments { SkillId = 1 }); _hitQueue.Verify(q => q.EnqueueAsync(It.IsAny<HitRequest>()), Times.Never); } [TestMethod] public async Task CannotAttackNoAttackTarget() { // NPCs expose NoAttack=true — attempting to damage them must cancel the // cast without dispatching anything to the hit queue. var origin = new FakeEntity { Hp = 100 }; var target = new FakeEntity { Hp = 100, NoAttackOverride = true }; await _service.Hit(origin, target, new HitArguments { SkillId = 1 }); _hitQueue.Verify(q => q.EnqueueAsync(It.IsAny<HitRequest>()), Times.Never); } [TestMethod] public async Task SingleTargetSkillEnqueuesOneHit() { var origin = new FakeEntity { Hp = 100 }; var target = new FakeEntity { Hp = 100, VisualType = VisualType.Monster }; var skill = MakeSkill(TargetHitType.SingleTargetHit); _skillResolver.Setup(r => r.Resolve(origin, 1L)).Returns(skill); _targetResolver.Setup(r => r.Resolve(origin, target, skill)).Returns(new[] { (IAliveEntity)target }); _hitQueue.Setup(q => q.EnqueueAsync(It.IsAny<HitRequest>())) .ReturnsAsync(new HitOutcome(HitStatus.Landed, 50, SuPacketHitMode.SuccessAttack, false)); await _service.Hit(origin, target, new HitArguments { SkillId = 1 }); _hitQueue.Verify(q => q.EnqueueAsync(It.IsAny<HitRequest>()), Times.Once); } [TestMethod] public async Task AoeSkillEnqueuesPerTarget() { var origin = new FakeEntity { Hp = 100 }; var t1 = new FakeEntity { Hp = 100, VisualType = VisualType.Monster }; var t2 = new FakeEntity { Hp = 100, VisualType = VisualType.Monster }; var t3 = new FakeEntity { Hp = 100, VisualType = VisualType.Monster }; var skill = MakeSkill(TargetHitType.AoeTargetHit); _skillResolver.Setup(r => r.Resolve(origin, 1L)).Returns(skill); _targetResolver.Setup(r => r.Resolve(origin, t1, skill)) .Returns(new[] { (IAliveEntity)t1, t2, t3 }); _hitQueue.Setup(q => q.EnqueueAsync(It.IsAny<HitRequest>())) .ReturnsAsync(new HitOutcome(HitStatus.Landed, 20, SuPacketHitMode.SuccessAttack, false)); await _service.Hit(origin, t1, new HitArguments { SkillId = 1 }); _hitQueue.Verify(q => q.EnqueueAsync(It.IsAny<HitRequest>()), Times.Exactly(3)); } [TestMethod] public async Task KillPublishesEntityDiedEvent() { var origin = new FakeEntity { Hp = 100 }; var target = new FakeEntity { Hp = 1, VisualType = VisualType.Monster }; var skill = MakeSkill(TargetHitType.SingleTargetHit); _skillResolver.Setup(r => r.Resolve(origin, 1L)).Returns(skill); _targetResolver.Setup(r => r.Resolve(origin, target, skill)).Returns(new[] { (IAliveEntity)target }); _hitQueue.Setup(q => q.EnqueueAsync(It.IsAny<HitRequest>())) .ReturnsAsync(new HitOutcome(HitStatus.Landed, 100, SuPacketHitMode.SuccessAttack, true)); await _service.Hit(origin, target, new HitArguments { SkillId = 1 }); _bus.Verify(b => b.PublishAsync(It.Is<EntityDiedEvent>(e => e.Victim == target && e.Killer == origin), null!), Times.Once); } [TestMethod] public async Task UnresolvedSkillSkipsQueue() { var origin = new FakeEntity { Hp = 100 }; var target = new FakeEntity { Hp = 100 }; _skillResolver.Setup(r => r.Resolve(It.IsAny<IAliveEntity>(), It.IsAny<long>())).Returns((SkillInfo?)null); await _service.Hit(origin, target, new HitArguments { SkillId = 42 }); _hitQueue.Verify(q => q.EnqueueAsync(It.IsAny<HitRequest>()), Times.Never); } private static SkillInfo MakeSkill(TargetHitType hitType) => new( SkillVnum: 1, CastId: 1, Cooldown: 0, AttackAnimation: 0, CastEffect: 0, Effect: 0, Type: 0, HitType: hitType, Range: 0, TargetRange: 2, TargetType: 0, Element: 0, Duration: 0, MpCost: 0, BCards: Array.Empty<BCardDto>()); private class FakeEntity : IAliveEntity { public Entity Handle { get; set; } public bool IsSitting { get; set; } public byte Speed { get; set; } public byte Size { get; set; } public int Mp { get; set; } = 100; public int Hp { get; set; } public short Morph => 0; public byte MorphUpgrade => 0; public short MorphDesign => 0; public byte MorphBonus => 0; public bool NoAttackOverride { get; set; } public bool NoAttack => NoAttackOverride; public bool NoMove => false; public bool IsAlive => Hp > 0; public short MapX => 0; public short MapY => 0; public int MaxHp => 100; public int MaxMp => 100; public byte Level { get; set; } = 1; public byte HeroLevel => 0; public short Race => 0; public Shop? Shop { get; set; } public SemaphoreSlim HitSemaphore { get; } = new(1, 1); public ConcurrentDictionary<Entity, int> HitList { get; } = new(); public VisualType VisualType { get; set; } = VisualType.Player; public short VNum => 0; public long VisualId { get; set; } public byte Direction { get; set; } public Guid MapInstanceId { get; } public NosCore.GameObject.Services.MapInstanceGenerationService.MapInstance MapInstance { get; set; } = null!; public short PositionX { get; set; } public short PositionY { get; set; } } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/BattleService/BuffServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; using Arch.Core; using Microsoft.VisualStudio.TestTools.UnitTesting; using NodaTime; using NodaTime.Testing; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs; using NosCore.GameObject.Ecs.Components; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.BattleService.Model; using NosCore.GameObject.Services.ShopService; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Tests.Services.BattleService { // BuffService persists buffs on the ECS BuffStateComponent. The PlayerComponentBundle // pattern-match would require constructing a real Player bundle which is heavyweight // for a unit test, so we use a lightweight test double that exposes the same // component access pattern via IAliveEntity + inlined dictionary state. For accuracy // we also add a concrete test against the real bundle below. [TestClass] public class BuffServiceTests { private FakeClock _clock = null!; private BuffService _service = null!; [TestInitialize] public void Setup() { _clock = new FakeClock(Instant.FromUtc(2026, 1, 1, 0, 0)); _service = new BuffService(_clock); } [TestMethod] public async Task ApplyNullTargetReturnsEmpty() { // A non-bundle IAliveEntity (our fake) has no BuffStateComponent, so ResolveState // returns null → Apply no-ops and GetActiveBuffs returns empty. var target = new FakeEntity(); await _service.ApplyAsync(target, new CardDto { CardId = 1, Duration = 10 }, Array.Empty<BCardDto>(), null); Assert.AreEqual(0, _service.GetActiveBuffs(target).Count); } // For a real PlayerComponentBundle test we'd spin up a MapWorld + create a player // entity + read the BuffStateComponent that MapWorld.CreatePlayer initializes. // That requires more fixture than a unit-scoped test should take on; the bulk of // BuffService is exercised via the PlayerBundleTests we already have. The // following test asserts the pure time-based expiration logic on a synthetic // state dictionary to keep coverage focused. [TestMethod] public void BuffExpirationOrderMatchesStartAndDuration() { var start = _clock.GetCurrentInstant(); var a = new BuffInstance(1, NosCore.Data.Enumerations.Buff.BuffType.Good, null, start, start.Plus(Duration.FromSeconds(1)), Array.Empty<BCardDto>()); var b = new BuffInstance(2, NosCore.Data.Enumerations.Buff.BuffType.Good, null, start, start.Plus(Duration.FromSeconds(5)), Array.Empty<BCardDto>()); Assert.IsTrue(a.ExpiresAt < b.ExpiresAt); } private class FakeEntity : IAliveEntity { public Entity Handle { get; set; } public bool IsSitting { get; set; } public byte Speed { get; set; } public byte Size { get; set; } public int Mp { get; set; } public int Hp { get; set; } = 100; public short Morph => 0; public byte MorphUpgrade => 0; public short MorphDesign => 0; public byte MorphBonus => 0; public bool NoAttack => false; public bool NoMove => false; public bool IsAlive => Hp > 0; public short MapX => 0; public short MapY => 0; public int MaxHp => 100; public int MaxMp => 100; public byte Level { get; set; } = 1; public byte HeroLevel => 0; public short Race => 0; public Shop? Shop { get; set; } public SemaphoreSlim HitSemaphore { get; } = new(1, 1); public ConcurrentDictionary<Entity, int> HitList { get; } = new(); public VisualType VisualType => VisualType.Player; public short VNum => 0; public long VisualId => 0; public byte Direction { get; set; } public Guid MapInstanceId { get; } public NosCore.GameObject.Services.MapInstanceGenerationService.MapInstance MapInstance { get; set; } = null!; public short PositionX { get; set; } public short PositionY { get; set; } } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/BattleService/DamageCalculatorTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations.Battle; using NosCore.Data.StaticEntities; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.BattleService.Model; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Tests.Services.BattleService { [TestClass] public class DamageCalculatorTests { private static readonly SkillInfo MeleeSkill = new( SkillVnum: 1, CastId: 1, Cooldown: 0, AttackAnimation: 0, CastEffect: 0, Effect: 0, Type: 0, HitType: TargetHitType.SingleTargetHit, Range: 0, TargetRange: 0, TargetType: 0, Element: 0, Duration: 0, MpCost: 0, BCards: Array.Empty<BCardDto>()); private static readonly SkillInfo MagicSkill = MeleeSkill with { Type = 2 }; private static Mock<IRandomProvider> Rng(double[] doubles, int[]? ints = null) { var dq = new Queue<double>(doubles); var iq = ints == null ? new Queue<int>() : new Queue<int>(ints); var mock = new Mock<IRandomProvider>(); mock.Setup(r => r.NextDouble()).Returns(() => dq.Count > 0 ? dq.Dequeue() : 0.5); mock.Setup(r => r.Next(It.IsAny<int>(), It.IsAny<int>())) .Returns<int, int>((lo, _) => iq.Count > 0 ? iq.Dequeue() : lo); return mock; } // OpenNos dodge formula peaks around multiplier=5 with ~80% dodge chance. With // attacker HitRate 0 and defender Dodge 100 → multiplier = 100 / 1 = 100 → clamp 5 // → chance ≈ 79.6%. Forcing RNG to 0 (roll below chance) produces a miss. [TestMethod] public void MissWhenDodgeRollLanding() { var calc = new DamageCalculator(Rng(doubles: new[] { 0.0 }).Object); // 0 * 100 = 0, <= 79 = dodge var attacker = StatsBuilder.Default() with { HitRate = 0, Class = CharacterClassType.Swordsman }; var defender = StatsBuilder.Default() with { DefenceDodge = 100 }; var result = calc.Calculate(attacker, defender, MeleeSkill); Assert.AreEqual(SuPacketHitMode.Miss, result.HitMode); Assert.AreEqual(0, result.Damage); } [TestMethod] public void MageSkillsIgnoreDodge() { // Type 2 (magic) skill skips dodge entirely per OpenNos. Even with insane // defender dodge the hit lands. var calc = new DamageCalculator(Rng(doubles: new[] { 0.0, 1.0 }, ints: new[] { 100 }).Object); var attacker = StatsBuilder.Default() with { Class = CharacterClassType.Mage, MinHit = 100, MaxHit = 100 }; var defender = StatsBuilder.Default() with { DefenceDodge = 999 }; var result = calc.Calculate(attacker, defender, MagicSkill); Assert.AreNotEqual(SuPacketHitMode.Miss, result.HitMode); Assert.IsTrue(result.Damage > 0); } [TestMethod] public void DamageFlooredWhenDefenceExceedsAttack() { // Big armor, small hit — damage should floor (OpenNos randomises 1..5 when // total < 5 so we can't assert exact, but it must be positive). var calc = new DamageCalculator(Rng(doubles: new[] { 1.0, 1.0 }, ints: new[] { 50, 3 }).Object); var attacker = StatsBuilder.Default() with { HitRate = 100, MinHit = 50, MaxHit = 50 }; var defender = StatsBuilder.Default() with { Defence = 9999, DefenceDodge = 0 }; var result = calc.Calculate(attacker, defender, MeleeSkill); Assert.IsTrue(result.Damage >= 1, "damage should floor to at least 1"); } [TestMethod] public void CriticalBoostsDamage() { // Hit roll 1.0 (no dodge), crit roll 0.0 (crit lands, critChance=100). var calc = new DamageCalculator(Rng(doubles: new[] { 1.0, 0.0 }, ints: new[] { 100 }).Object); var attacker = StatsBuilder.Default() with { HitRate = 100, MinHit = 100, MaxHit = 100, CriticalChance = 100, CriticalRate = 200, }; var defender = StatsBuilder.Default(); var result = calc.Calculate(attacker, defender, MeleeSkill); Assert.AreEqual(SuPacketHitMode.CriticalAttack, result.HitMode); Assert.IsTrue(result.Damage >= 150, $"expected ≥150, got {result.Damage}"); } [TestMethod] public void MoraleAddsFlatDamage() { var calc = new DamageCalculator(Rng(doubles: new[] { 1.0, 1.0 }, ints: new[] { 10 }).Object); var without = calc.Calculate( StatsBuilder.Default() with { HitRate = 100, MinHit = 10, MaxHit = 10, Morale = 10 }, StatsBuilder.Default() with { Level = 0 }, MeleeSkill); var calc2 = new DamageCalculator(Rng(doubles: new[] { 1.0, 1.0 }, ints: new[] { 10 }).Object); var with = calc2.Calculate( StatsBuilder.Default() with { HitRate = 100, MinHit = 10, MaxHit = 10, Morale = 50 }, StatsBuilder.Default() with { Level = 0 }, MeleeSkill); Assert.IsTrue(with.Damage > without.Damage, $"higher morale should deal more damage: {with.Damage} vs {without.Damage}"); } [TestMethod] public void ElementBonusAddsDamage() { var baseCalc = new DamageCalculator(Rng(doubles: new[] { 1.0, 1.0 }, ints: new[] { 100 }).Object); var elementCalc = new DamageCalculator(Rng(doubles: new[] { 1.0, 1.0 }, ints: new[] { 100 }).Object); var skill = MeleeSkill with { Element = 1 }; var baseline = baseCalc.Calculate( StatsBuilder.Default() with { HitRate = 100, MinHit = 100, MaxHit = 100, Element = 0, ElementRate = 0 }, StatsBuilder.Default(), skill with { Element = 0 }); var fire = elementCalc.Calculate( StatsBuilder.Default() with { HitRate = 100, MinHit = 100, MaxHit = 100, Element = 1, ElementRate = 100 }, StatsBuilder.Default() with { Element = 2 /*water: weak to fire*/ }, skill); Assert.IsTrue(fire.Damage > baseline.Damage, $"fire vs water should exceed neutral: {fire.Damage} vs {baseline.Damage}"); } [TestMethod] public void AdventurerGetsFlatDamageBonus() { var advCalc = new DamageCalculator(Rng(doubles: new[] { 1.0, 1.0 }, ints: new[] { 10 }).Object); var otherCalc = new DamageCalculator(Rng(doubles: new[] { 1.0, 1.0 }, ints: new[] { 10 }).Object); var adv = advCalc.Calculate( StatsBuilder.Default() with { HitRate = 100, MinHit = 10, MaxHit = 10, Class = CharacterClassType.Adventurer }, StatsBuilder.Default(), MeleeSkill); var sword = otherCalc.Calculate( StatsBuilder.Default() with { HitRate = 100, MinHit = 10, MaxHit = 10, Class = CharacterClassType.Swordsman }, StatsBuilder.Default(), MeleeSkill); Assert.IsTrue(adv.Damage > sword.Damage, $"Adventurer bonus should beat Swordsman baseline: {adv.Damage} vs {sword.Damage}"); } private static class StatsBuilder { // Sane defaults that produce a hit at parity under the cubic dodge curve // (multiplier ≈ 1 → 23% dodge). Per test overrides with `with { ... }`. public static CombatStats Default() => new( Level: 10, HeroLevel: 0, Class: CharacterClassType.Adventurer, Morale: 10, MinHit: 10, MaxHit: 10, HitRate: 50, CriticalChance: 0, CriticalRate: 0, MeleeUpgrade: 0, MinDistance: 10, MaxDistance: 10, DistanceRate: 50, DistanceCriticalChance: 0, DistanceCriticalRate: 0, RangedUpgrade: 0, Element: 0, ElementRate: 0, ElementRateSp: 0, Defence: 10, DefenceRate: 10, DistanceDefence: 10, DistanceDefenceRate: 10, MagicDefence: 10, DefenceDodge: 50, DistanceDefenceDodge: 50, DefenceUpgrade: 0, FireResistance: 0, WaterResistance: 0, LightResistance: 0, DarkResistance: 0); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/BattleService/HitQueueTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; using Arch.Core; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations.Battle; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.BattleService.Model; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Tests.Services.BattleService { [TestClass] public class HitQueueTests { private static SkillInfo MakeSkill() => new( SkillVnum: 1, CastId: 1, Cooldown: 0, AttackAnimation: 0, CastEffect: 0, Effect: 0, Type: 0, HitType: TargetHitType.SingleTargetHit, Range: 0, TargetRange: 0, TargetType: 0, Element: 0, Duration: 0, MpCost: 0, BCards: Array.Empty<BCardDto>()); [TestMethod] public async Task EnqueueLandedHitSubtractsDamage() { var target = new FakeBattleEntity { Hp = 100, MaxHp = 100 }; var attacker = new FakeBattleEntity(); var queue = BuildQueue(d => d.Damage = 40); var outcome = await queue.EnqueueAsync(Request(attacker, target)); Assert.AreEqual(HitStatus.Landed, outcome.Status); Assert.AreEqual(40, outcome.Damage); Assert.AreEqual(60, target.Hp); Assert.IsFalse(outcome.Killed); } [TestMethod] public async Task ConcurrentAttackersStillConserveHp() { // Two attackers fire twenty 10-damage hits in parallel. Since the queue // serializes per-target, final HP must be 200 - 400 = -200 (clamped to 0), // with total credited damage in HitList == 200 (not more, overkill clipped). var target = new FakeBattleEntity { Hp = 200, MaxHp = 200 }; var a = new FakeBattleEntity { VisualId = 1, Handle = Entity.Null }; var b = new FakeBattleEntity { VisualId = 2, Handle = Entity.Null }; var queue = BuildQueue(d => d.Damage = 10); var tasks = Enumerable.Range(0, 20).Select(async i => { var attacker = i % 2 == 0 ? a : b; return await queue.EnqueueAsync(Request(attacker, target)); }).ToArray(); await Task.WhenAll(tasks); Assert.AreEqual(0, target.Hp); Assert.AreEqual(200, target.HitList.Values.Sum(), "sum of credited damage must equal max HP (overkill clipped)"); Assert.IsTrue(tasks.Any(t => t.Result.Killed), "at least one hit should have dealt the killing blow"); } [TestMethod] public async Task HitsToDeadTargetAreCancelled() { var target = new FakeBattleEntity { Hp = 0, MaxHp = 100 }; var attacker = new FakeBattleEntity(); var queue = BuildQueue(d => d.Damage = 50); var outcome = await queue.EnqueueAsync(Request(attacker, target)); Assert.AreEqual(HitStatus.Cancelled, outcome.Status); Assert.AreEqual(0, outcome.Damage); } [TestMethod] public async Task LandedHitAppliesSkillBuffsWhenSkillHasDuration() { var target = new FakeBattleEntity { Hp = 100, MaxHp = 100 }; var attacker = new FakeBattleEntity(); var buffs = new Mock<IBuffService>(); var calc = new Mock<IDamageCalculator>(); calc.Setup(c => c.Calculate(It.IsAny<CombatStats>(), It.IsAny<CombatStats>(), It.IsAny<SkillInfo>())) .Returns(new DamageResult(10, SuPacketHitMode.SuccessAttack)); var stats = new Mock<IBattleStatsProvider>(); stats.Setup(s => s.GetStats(It.IsAny<IAliveEntity>())).Returns(new CombatStats()); var queue = new HitQueue(calc.Object, stats.Object, buffs.Object, new Mock<IRegenerationService>().Object, new Mock<ILogger<HitQueue>>().Object); var skill = MakeSkill() with { SkillVnum = 7, Duration = 100, BCards = new[] { new BCardDto { Type = 3 /*AttackPower*/, FirstData = 10 } }, }; var request = Request(attacker, target) with { Skill = skill }; await queue.EnqueueAsync(request); buffs.Verify(b => b.ApplySkillBuffAsync(target, (short)7, (short)100, skill.BCards, attacker), Times.Once); } [TestMethod] public async Task KillingHitSkipsBuffApplication() { var target = new FakeBattleEntity { Hp = 5, MaxHp = 100 }; var attacker = new FakeBattleEntity(); var buffs = new Mock<IBuffService>(); var calc = new Mock<IDamageCalculator>(); calc.Setup(c => c.Calculate(It.IsAny<CombatStats>(), It.IsAny<CombatStats>(), It.IsAny<SkillInfo>())) .Returns(new DamageResult(50, SuPacketHitMode.SuccessAttack)); var stats = new Mock<IBattleStatsProvider>(); stats.Setup(s => s.GetStats(It.IsAny<IAliveEntity>())).Returns(new CombatStats()); var queue = new HitQueue(calc.Object, stats.Object, buffs.Object, new Mock<IRegenerationService>().Object, new Mock<ILogger<HitQueue>>().Object); var skill = MakeSkill() with { Duration = 100, BCards = new[] { new BCardDto { Type = 3 } } }; await queue.EnqueueAsync(Request(attacker, target) with { Skill = skill }); buffs.Verify(b => b.ApplySkillBuffAsync(It.IsAny<IAliveEntity>(), It.IsAny<short>(), It.IsAny<short>(), It.IsAny<System.Collections.Generic.IReadOnlyList<BCardDto>>(), It.IsAny<IAliveEntity>()), Times.Never); } [TestMethod] public async Task MissHitsDoNotAffectHpOrHitList() { var target = new FakeBattleEntity { Hp = 100, MaxHp = 100 }; var attacker = new FakeBattleEntity(); var queue = BuildQueue(d => { d.Damage = 0; d.HitMode = SuPacketHitMode.Miss; }); var outcome = await queue.EnqueueAsync(Request(attacker, target)); Assert.AreEqual(HitStatus.Missed, outcome.Status); Assert.AreEqual(100, target.Hp); Assert.AreEqual(0, target.HitList.Count); } private static HitRequest Request(IAliveEntity attacker, IAliveEntity target) => new( Origin: attacker, Target: target, Skill: MakeSkill(), IsPrimaryTarget: true, Completion: new TaskCompletionSource<HitOutcome>(TaskCreationOptions.RunContinuationsAsynchronously), Cancellation: CancellationToken.None); private static HitQueue BuildQueue(Action<MutableDamage> configure) { var damageTemplate = new MutableDamage { Damage = 0, HitMode = SuPacketHitMode.SuccessAttack }; configure(damageTemplate); var calc = new Mock<IDamageCalculator>(); calc.Setup(c => c.Calculate(It.IsAny<CombatStats>(), It.IsAny<CombatStats>(), It.IsAny<SkillInfo>())) .Returns(() => new DamageResult(damageTemplate.Damage, damageTemplate.HitMode)); var stats = new Mock<IBattleStatsProvider>(); stats.Setup(s => s.GetStats(It.IsAny<IAliveEntity>())).Returns(new CombatStats()); return new HitQueue(calc.Object, stats.Object, new Mock<IBuffService>().Object, new Mock<IRegenerationService>().Object, new Mock<ILogger<HitQueue>>().Object); } private class MutableDamage { public int Damage; public SuPacketHitMode HitMode; } // Minimal in-memory IAliveEntity double: tracks only what HitQueue actually reads // (Hp / IsAlive / HitList / Handle) plus a VisualId for disambiguation. private class FakeBattleEntity : IAliveEntity { public Entity Handle { get; set; } public bool IsSitting { get; set; } public byte Speed { get; set; } public byte Size { get; set; } public int Mp { get; set; } = 100; public int Hp { get; set; } public short Morph => 0; public byte MorphUpgrade => 0; public short MorphDesign => 0; public byte MorphBonus => 0; public bool NoAttack => false; public bool NoMove => false; public bool IsAlive => Hp > 0; public short MapX => 0; public short MapY => 0; public int MaxHp { get; set; } public int MaxMp { get; set; } = 100; public byte Level { get; set; } = 1; public byte HeroLevel => 0; public short Race => 0; public NosCore.GameObject.Services.ShopService.Shop? Shop { get; set; } public SemaphoreSlim HitSemaphore { get; } = new(1, 1); public ConcurrentDictionary<Entity, int> HitList { get; } = new(); public VisualType VisualType => VisualType.Player; public short VNum => 0; public long VisualId { get; set; } public byte Direction { get; set; } public Guid MapInstanceId { get; } public NosCore.GameObject.Services.MapInstanceGenerationService.MapInstance MapInstance { get; set; } = null!; public short PositionX { get; set; } public short PositionY { get; set; } } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/BattleService/MonsterAiTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NodaTime; using NodaTime.Testing; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.PathfindingService; using NosCore.PathFinder.Interfaces; using Microsoft.Extensions.Logging; namespace NosCore.GameObject.Tests.Services.BattleService { // The AI pulls in a MonsterComponentBundle which is a generated ECS struct tied to // a live MapWorld. Constructing one end-to-end for a unit test is expensive; these // tests focus on the outer wiring. End-to-end AI behaviour is covered by the // in-process map fixture tests that exercise StartLifeAsync. [TestClass] public class MonsterAiTests { [TestMethod] public void ConstructsWithAllDependencies() { var ai = new MonsterAi( new Mock<IBattleService>().Object, new Mock<IAggroService>().Object, new Mock<IPathfindingService>().Object, new Mock<ISessionRegistry>().Object, new Mock<IHeuristic>().Object, new Mock<INpcCombatCatalog>().Object, new Mock<IRandomProvider>().Object, new FakeClock(Instant.FromUtc(2026, 1, 1, 0, 0)), new Dictionary<short, SkillDto>(), new Mock<ILogger<MonsterAi>>().Object); Assert.IsNotNull(ai); Assert.IsInstanceOfType(ai, typeof(IMonsterAi)); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/BattleService/NpcCombatCatalogTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.StaticEntities; using NosCore.GameObject.Services.BattleService; namespace NosCore.GameObject.Tests.Services.BattleService { [TestClass] public class NpcCombatCatalogTests { [TestMethod] public void SkillsBucketByMonsterVnum() { var catalog = new NpcCombatCatalog( new List<NpcMonsterSkillDto> { new() { NpcMonsterSkillId = 1, NpcMonsterVNum = 10, SkillVNum = 100 }, new() { NpcMonsterSkillId = 2, NpcMonsterVNum = 10, SkillVNum = 200 }, new() { NpcMonsterSkillId = 3, NpcMonsterVNum = 20, SkillVNum = 300 }, }, new List<DropDto>(), new List<BCardDto>()); var skills = catalog.GetSkills(10); Assert.AreEqual(2, skills.Count); } [TestMethod] public void DropsFilterOutNonMobEntries() { var catalog = new NpcCombatCatalog( new List<NpcMonsterSkillDto>(), new List<DropDto> { new() { DropId = 1, VNum = 1, Amount = 1, DropChance = 500, MonsterVNum = 10 }, new() { DropId = 2, VNum = 2, Amount = 1, DropChance = 500, MonsterVNum = null }, // map-wide drop }, new List<BCardDto>()); Assert.AreEqual(1, catalog.GetDrops(10).Count, "only mob-specific drops should be indexed"); } [TestMethod] public void UnknownVnumsReturnEmptyLists() { var catalog = new NpcCombatCatalog(new(), new(), new()); Assert.AreEqual(0, catalog.GetSkills(999).Count); Assert.AreEqual(0, catalog.GetDrops(999).Count); Assert.AreEqual(0, catalog.GetNpcBCards(999).Count); Assert.AreEqual(0, catalog.GetSkillBCards(999).Count); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/BattleService/SkillResolverTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.Immutable; using System.Threading; using Arch.Core; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations.Battle; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.GroupService; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.QuestService; using NosCore.GameObject.Services.ShopService; using NosCore.Networking; using NosCore.Packets.Interfaces; using NosCore.Shared.Enumerations; namespace NosCore.GameObject.Tests.Services.BattleService { [TestClass] public class SkillResolverTests { private INpcCombatCatalog _catalog = null!; private IReadOnlyDictionary<short, SkillDto> _skills = null!; [TestInitialize] public void Setup() { _skills = new Dictionary<short, SkillDto> { [100] = new SkillDto { SkillVNum = 100, CastId = 1, UpgradeSkill = 0, Cooldown = 50, HitType = (byte)TargetHitType.SingleTargetHit }, [200] = new SkillDto { SkillVNum = 200, CastId = 2, UpgradeSkill = 0, Cooldown = 50, HitType = (byte)TargetHitType.AoeTargetHit }, }; _catalog = new NpcCombatCatalog(new(), new(), new()); } [TestMethod] public void UnknownCasterReturnsNull() { var resolver = new SkillResolver(_skills, _catalog); Assert.IsNull(resolver.Resolve(new Mock<IAliveEntity>().Object, 1)); } [TestMethod] public void CharacterResolvesByCastId() { var character = new Mock<ICharacterEntity>(); var skills = new ConcurrentDictionary<short, CharacterSkill>(); skills.TryAdd(100, new CharacterSkill { SkillVNum = 100, Skill = _skills[100] }); skills.TryAdd(200, new CharacterSkill { SkillVNum = 200, Skill = _skills[200] }); character.SetupGet(c => c.Skills).Returns(skills); var resolver = new SkillResolver(_skills, _catalog); var resolved = resolver.Resolve(character.Object, 2); Assert.IsNotNull(resolved); Assert.AreEqual((short)200, resolved!.SkillVnum); Assert.AreEqual(TargetHitType.AoeTargetHit, resolved.HitType); } [TestMethod] public void CharacterWithoutMatchingCastIdReturnsNull() { var character = new Mock<ICharacterEntity>(); var skills = new ConcurrentDictionary<short, CharacterSkill>(); skills.TryAdd(100, new CharacterSkill { SkillVNum = 100, Skill = _skills[100] }); character.SetupGet(c => c.Skills).Returns(skills); var resolver = new SkillResolver(_skills, _catalog); Assert.IsNull(resolver.Resolve(character.Object, 999)); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/BazaarService/BazaarRegistryTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.WebApi; using NosCore.GameObject.Services.BazaarService; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.BazaarService { [TestClass] public class BazaarRegistryTests { private IBazaarRegistry Registry = null!; private Mock<IDao<BazaarItemDto, long>> MockBazaarItemDao = null!; private Mock<IDao<IItemInstanceDto?, Guid>> MockItemInstanceDao = null!; private Mock<IDao<CharacterDto, long>> MockCharacterDao = null!; private BazaarLink? ResultLink; private IEnumerable<BazaarLink>? ResultLinks; private bool UnregisterResult; private int CountResult; private const long TestBazaarItemId = 1; private const long TestBazaarItemId2 = 2; private const long TestSellerId = 100; private const long TestSellerId2 = 200; private const string TestSellerName = "TestSeller"; private const string TestSellerName2 = "TestSeller2"; [TestInitialize] public void Setup() { MockBazaarItemDao = new Mock<IDao<BazaarItemDto, long>>(); MockItemInstanceDao = new Mock<IDao<IItemInstanceDto?, Guid>>(); MockCharacterDao = new Mock<IDao<CharacterDto, long>>(); MockBazaarItemDao.Setup(d => d.LoadAll()).Returns(new List<BazaarItemDto>()); MockItemInstanceDao.Setup(d => d.Where(It.IsAny<System.Linq.Expressions.Expression<Func<IItemInstanceDto?, bool>>>())) .Returns(new List<IItemInstanceDto?>()); MockCharacterDao.Setup(d => d.Where(It.IsAny<System.Linq.Expressions.Expression<Func<CharacterDto, bool>>>())) .Returns(new List<CharacterDto>()); Registry = new BazaarRegistry(MockBazaarItemDao.Object, MockItemInstanceDao.Object, MockCharacterDao.Object); } [TestMethod] public async Task RegisterShouldAddBazaarLink() { await new Spec("Register should add bazaar link") .Given(ABazaarLinkIsCreated) .When(RegisteringTheBazaarLink) .Then(BazaarLinkShouldBeRetrievable) .ExecuteAsync(); } [TestMethod] public async Task GetByIdShouldReturnNullForUnknownId() { await new Spec("GetById should return null for unknown id") .When(GettingBazaarLinkByUnknownId) .Then(ResultShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task UnregisterShouldRemoveBazaarLink() { await new Spec("Unregister should remove bazaar link") .Given(ABazaarLinkIsRegistered) .When(UnregisteringTheBazaarLink) .Then(UnregisterShouldSucceed) .And(BazaarLinkShouldNotExist) .ExecuteAsync(); } [TestMethod] public async Task GetBySellerIdShouldFilterCorrectly() { await new Spec("GetBySellerId should filter correctly") .Given(MultipleBazaarLinksAreRegistered) .When(GettingBazaarLinksBySellerId) .Then(OnlyLinksForSellerShouldBeReturned) .ExecuteAsync(); } [TestMethod] public async Task CountBySellerIdShouldReturnCorrectCount() { await new Spec("CountBySellerId should return correct count") .Given(MultipleBazaarLinksAreRegistered) .When(CountingBazaarLinksBySellerId) .Then(CountShouldBeCorrect) .ExecuteAsync(); } [TestMethod] public async Task UpdateShouldReplaceExistingLink() { await new Spec("Update should replace existing link") .Given(ABazaarLinkIsRegistered) .When(UpdatingTheBazaarLink) .Then(BazaarLinkShouldBeUpdated) .ExecuteAsync(); } private BazaarLink? TestBazaarLink; private BazaarLink? UpdatedBazaarLink; private void ABazaarLinkIsCreated() { TestBazaarLink = CreateBazaarLink(TestBazaarItemId, TestSellerId, TestSellerName); } private void ABazaarLinkIsRegistered() { ABazaarLinkIsCreated(); Registry.Register(TestBazaarItemId, TestBazaarLink!); } private void MultipleBazaarLinksAreRegistered() { var link1 = CreateBazaarLink(TestBazaarItemId, TestSellerId, TestSellerName); var link2 = CreateBazaarLink(TestBazaarItemId2, TestSellerId, TestSellerName); var link3 = CreateBazaarLink(3, TestSellerId2, TestSellerName2); Registry.Register(TestBazaarItemId, link1); Registry.Register(TestBazaarItemId2, link2); Registry.Register(3, link3); } private void RegisteringTheBazaarLink() { Registry.Register(TestBazaarItemId, TestBazaarLink!); } private void GettingBazaarLinkByUnknownId() { ResultLink = Registry.GetById(9999); } private void UnregisteringTheBazaarLink() { UnregisterResult = Registry.Unregister(TestBazaarItemId); } private void GettingBazaarLinksBySellerId() { ResultLinks = Registry.GetBySellerId(TestSellerId); } private void CountingBazaarLinksBySellerId() { CountResult = Registry.CountBySellerId(TestSellerId); } private void UpdatingTheBazaarLink() { UpdatedBazaarLink = CreateBazaarLink(TestBazaarItemId, TestSellerId, "UpdatedSellerName"); Registry.Update(TestBazaarItemId, UpdatedBazaarLink); } private void BazaarLinkShouldBeRetrievable() { var result = Registry.GetById(TestBazaarItemId); Assert.IsNotNull(result); Assert.AreEqual(TestSellerName, result.SellerName); } private void ResultShouldBeNull() { Assert.IsNull(ResultLink); } private void UnregisterShouldSucceed() { Assert.IsTrue(UnregisterResult); } private void BazaarLinkShouldNotExist() { var result = Registry.GetById(TestBazaarItemId); Assert.IsNull(result); } private void OnlyLinksForSellerShouldBeReturned() { Assert.IsNotNull(ResultLinks); var linksList = ResultLinks.ToList(); Assert.AreEqual(2, linksList.Count); Assert.IsTrue(linksList.All(l => l.BazaarItem?.SellerId == TestSellerId)); } private void CountShouldBeCorrect() { Assert.AreEqual(2, CountResult); } private void BazaarLinkShouldBeUpdated() { var result = Registry.GetById(TestBazaarItemId); Assert.IsNotNull(result); Assert.AreEqual("UpdatedSellerName", result.SellerName); } private static BazaarLink CreateBazaarLink(long bazaarItemId, long sellerId, string sellerName) { return new BazaarLink { BazaarItem = new BazaarItemDto { BazaarItemId = bazaarItemId, SellerId = sellerId, ItemInstanceId = Guid.NewGuid(), Amount = 1, Price = 100 }, ItemInstance = new ItemInstanceDto { Id = Guid.NewGuid(), Amount = 1 }, SellerName = sellerName }; } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/BlacklistService/BlacklistServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Services.BlackListService; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.BlacklistService { [TestClass] public class BlacklistServiceTests { private IBlacklistService Service = null!; private Mock<IPubSubHub> PubSubHub = null!; private Mock<IChannelHub> ChannelHub = null!; private long CharacterId; private long TargetCharacterId; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); PubSubHub = new Mock<IPubSubHub>(); ChannelHub = new Mock<IChannelHub>(); ChannelHub.Setup(s => s.GetCommunicationChannels()) .ReturnsAsync(new List<ChannelInfo> { new ChannelInfo { Type = ServerType.WorldServer, Id = 1 } }); CharacterId = 1; TargetCharacterId = 2; Service = new GameObject.Services.BlackListService.BlacklistService( PubSubHub.Object, ChannelHub.Object, TestHelpers.Instance.CharacterRelationDao, TestHelpers.Instance.CharacterDao); } [TestMethod] public async Task BlacklistingPlayerShouldSucceed() { await new Spec("Blacklisting player should succeed") .GivenAsync(BothPlayersAreOnline) .WhenAsync(BlacklistingTarget) .ThenAsync(BlacklistRelationShouldExist) .ExecuteAsync(); } [TestMethod] public async Task BlacklistingDisconnectedPlayerShouldThrow() { await new Spec("Blacklisting disconnected player should throw") .Given(TargetIsOffline) .WhenAsync(BlacklistingTarget).Catch(out var exception) .Then(ShouldThrowArgumentException_, exception) .ExecuteAsync(); } [TestMethod] public async Task BlacklistingSamePlayerTwiceShouldReturnAlreadyBlacklisted() { await new Spec("Blacklisting same player twice should return already blacklisted") .GivenAsync(BothPlayersAreOnline) .AndAsync(TargetIsAlreadyBlacklisted) .WhenAsync(BlacklistingTarget) .Then(ResultShouldBeAlreadyBlacklisted) .ExecuteAsync(); } [TestMethod] public async Task BlacklistingFriendShouldReturnCantBlockFriend() { await new Spec("Blacklisting friend should return can't block friend") .GivenAsync(BothPlayersAreOnline) .AndAsync(TargetIsFriend) .WhenAsync(BlacklistingTarget) .Then(ResultShouldBeCantBlockFriend) .ExecuteAsync(); } [TestMethod] public async Task GetBlacklistedListShouldReturnBlockedRelations() { await new Spec("Get blacklisted list should return blocked relations") .GivenAsync(BothPlayersAreOnline) .AndAsync(TargetIsAlreadyBlacklisted) .WhenAsync(GettingBlacklistedList) .Then(ListShouldContainTarget) .ExecuteAsync(); } [TestMethod] public async Task UnblacklistingShouldRemoveRelation() { await new Spec("Unblacklisting should remove relation") .GivenAsync(BothPlayersAreOnline) .AndAsync(TargetIsAlreadyBlacklisted) .WhenAsync(UnblacklistingTarget) .Then(UnblacklistShouldSucceed) .ExecuteAsync(); } [TestMethod] public async Task UnblacklistingNonExistentShouldReturnFalse() { await new Spec("Unblacklisting non-existent should return false") .WhenAsync(UnblacklistingNonExistent) .Then(UnblacklistShouldFail) .ExecuteAsync(); } private LanguageKey? BlacklistResult; private List<CharacterRelationStatus>? BlacklistedList; private bool UnblacklistResult; private Guid? BlockRelationId; private async Task BothPlayersAreOnline() { var session1 = await TestHelpers.Instance.GenerateSessionAsync(); var session2 = await TestHelpers.Instance.GenerateSessionAsync(); CharacterId = session1.Character.CharacterId; TargetCharacterId = session2.Character.CharacterId; PubSubHub.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber> { new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = CharacterId } }, new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = TargetCharacterId } } }); } private void TargetIsOffline() { PubSubHub.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber> { new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = CharacterId } } }); } private async Task TargetIsAlreadyBlacklisted() { var relation = new CharacterRelationDto { CharacterId = CharacterId, RelatedCharacterId = TargetCharacterId, RelationType = CharacterRelationType.Blocked }; var inserted = await TestHelpers.Instance.CharacterRelationDao.TryInsertOrUpdateAsync(relation); BlockRelationId = inserted.CharacterRelationId; } private async Task TargetIsFriend() { var relation = new CharacterRelationDto { CharacterId = CharacterId, RelatedCharacterId = TargetCharacterId, RelationType = CharacterRelationType.Friend }; await TestHelpers.Instance.CharacterRelationDao.TryInsertOrUpdateAsync(relation); } private async Task BlacklistingTarget() { BlacklistResult = await Service.BlacklistPlayerAsync(CharacterId, TargetCharacterId); } private void ShouldThrowArgumentException_(Lazy<Exception> exception) { Assert.IsInstanceOfType(exception.Value, typeof(ArgumentException)); } private async Task GettingBlacklistedList() { BlacklistedList = await Service.GetBlacklistedListAsync(CharacterId); } private async Task UnblacklistingTarget() { UnblacklistResult = await Service.UnblacklistAsync(BlockRelationId!.Value); } private async Task UnblacklistingNonExistent() { UnblacklistResult = await Service.UnblacklistAsync(Guid.NewGuid()); } private async Task BlacklistRelationShouldExist() { var relation = await TestHelpers.Instance.CharacterRelationDao.FirstOrDefaultAsync(s => s.CharacterId == CharacterId && s.RelatedCharacterId == TargetCharacterId && s.RelationType == CharacterRelationType.Blocked); Assert.IsNotNull(relation); Assert.AreEqual(LanguageKey.BLACKLIST_ADDED, BlacklistResult); } private void ResultShouldBeAlreadyBlacklisted() { Assert.AreEqual(LanguageKey.ALREADY_BLACKLISTED, BlacklistResult); } private void ResultShouldBeCantBlockFriend() { Assert.AreEqual(LanguageKey.CANT_BLOCK_FRIEND, BlacklistResult); } private void ListShouldContainTarget() { Assert.IsNotNull(BlacklistedList); Assert.IsTrue(BlacklistedList.Any(s => s.CharacterId == TargetCharacterId)); } private void UnblacklistShouldSucceed() { Assert.IsTrue(UnblacklistResult); } private void UnblacklistShouldFail() { Assert.IsFalse(UnblacklistResult); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/BroadcastService/SessionRegistryTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Services.BroadcastService; using Microsoft.Extensions.Logging; using SpecLight; using System; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.BroadcastService { [TestClass] public class SessionRegistryTests { private ISessionRegistry Registry = null!; private Mock<ILogger<SessionRegistry>> MockLogger = null!; [TestInitialize] public void Setup() { MockLogger = new Mock<ILogger<SessionRegistry>>(); Registry = new SessionRegistry(MockLogger.Object); } [TestMethod] public async Task RegisterShouldAddSession() { await new Spec("Register should add session") .When(RegisteringSession) .Then(SessionShouldBeRetrievable) .ExecuteAsync(); } [TestMethod] public async Task UnregisterShouldRemoveSession() { await new Spec("Unregister should remove session") .Given(SessionIsRegistered) .When(UnregisteringSession) .Then(SessionShouldNotExist) .ExecuteAsync(); } [TestMethod] public async Task UpdateCharacterShouldAssociateCharacterWithSession() { await new Spec("Update character should associate character with session") .Given(SessionIsRegistered) .When(UpdatingCharacter) .Then(CharacterShouldBeAssociated) .ExecuteAsync(); } [TestMethod] public async Task GetSenderByCharacterIdShouldReturnNullForUnknownCharacter() { await new Spec("Get sender by character ID should return null for unknown character") .When(GettingUnknownCharacterSender) .Then(SenderShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task GetAllSessionsShouldReturnAllSessions() { await new Spec("Get all sessions should return all sessions") .Given(MultipleSessionsAreRegistered) .When(GettingAllSessions) .Then(AllSessionsShouldBeReturned) .ExecuteAsync(); } [TestMethod] public async Task GetSessionsByMapInstanceShouldFilterByMapInstance() { await new Spec("Get sessions by map instance should filter by map instance") .Given(SessionsWithDifferentMapsAreRegistered) .When(GettingSessionsByMapInstance) .Then(OnlyMatchingSessionsShouldBeReturned) .ExecuteAsync(); } [TestMethod] public async Task GetConnectedAccountsShouldReturnSubscriberList() { await new Spec("Get connected accounts should return subscriber list") .Given(SessionIsRegistered) .When(GettingConnectedAccounts) .Then(SubscriberListShouldBeReturned) .ExecuteAsync(); } private const string TestChannelId = "channel-1"; private const string TestChannelId2 = "channel-2"; private const long TestCharacterId = 100; private readonly Guid TestMapInstanceId = Guid.NewGuid(); private readonly Guid TestMapInstanceId2 = Guid.NewGuid(); private Mock<IPacketSender> MockSender = null!; private IPacketSender? ResultSender; private int SessionCount; private int FilteredSessionCount; private int SubscriberCount; private void RegisteringSession() { MockSender = new Mock<IPacketSender>(); Registry.Register(new SessionInfo { ChannelId = TestChannelId, SessionId = 1, Sender = MockSender.Object, AccountName = "TestAccount", Disconnect = () => Task.CompletedTask }); } private void SessionIsRegistered() { RegisteringSession(); } private void MultipleSessionsAreRegistered() { MockSender = new Mock<IPacketSender>(); Registry.Register(new SessionInfo { ChannelId = TestChannelId, SessionId = 1, Sender = MockSender.Object, AccountName = "Account1", Disconnect = () => Task.CompletedTask }); Registry.Register(new SessionInfo { ChannelId = TestChannelId2, SessionId = 2, Sender = MockSender.Object, AccountName = "Account2", Disconnect = () => Task.CompletedTask }); } private void SessionsWithDifferentMapsAreRegistered() { MockSender = new Mock<IPacketSender>(); Registry.Register(new SessionInfo { ChannelId = TestChannelId, SessionId = 1, Sender = MockSender.Object, AccountName = "Account1", Disconnect = () => Task.CompletedTask }); Registry.Register(new SessionInfo { ChannelId = TestChannelId2, SessionId = 2, Sender = MockSender.Object, AccountName = "Account2", Disconnect = () => Task.CompletedTask }); Registry.UpdateCharacter(TestChannelId, TestCharacterId, TestMapInstanceId); Registry.UpdateCharacter(TestChannelId2, TestCharacterId + 1, TestMapInstanceId2); } private void UnregisteringSession() { Registry.Unregister(TestChannelId); } private void UpdatingCharacter() { Registry.UpdateCharacter(TestChannelId, TestCharacterId, TestMapInstanceId); } private void GettingUnknownCharacterSender() { ResultSender = Registry.GetSenderByCharacterId(9999); } private void GettingAllSessions() { SessionCount = Registry.GetAllSessions().Count(); } private void GettingSessionsByMapInstance() { FilteredSessionCount = Registry.GetSessionsByMapInstance(TestMapInstanceId).Count(); } private void GettingConnectedAccounts() { SubscriberCount = Registry.GetConnectedAccounts().Count; } private void SessionShouldBeRetrievable() { var sender = Registry.GetSenderByChannelId(TestChannelId); Assert.IsNotNull(sender); } private void SessionShouldNotExist() { var sender = Registry.GetSenderByChannelId(TestChannelId); Assert.IsNull(sender); } private void CharacterShouldBeAssociated() { var sender = Registry.GetSenderByCharacterId(TestCharacterId); Assert.IsNotNull(sender); } private void SenderShouldBeNull() { Assert.IsNull(ResultSender); } private void AllSessionsShouldBeReturned() { Assert.AreEqual(2, SessionCount); } private void OnlyMatchingSessionsShouldBeReturned() { Assert.AreEqual(1, FilteredSessionCount); } private void SubscriberListShouldBeReturned() { Assert.AreEqual(1, SubscriberCount); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/ChannelCommunicationService/Handlers/DeleteMailDataMessageHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.ChannelCommunicationService.Handlers; using NosCore.Packets.ServerPackets.Parcel; using NosCore.Tests.Shared; using SpecLight; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.ChannelCommunicationService.Handlers { [TestClass] public class DeleteMailDataMessageHandlerTests { private DeleteMailDataMessageChannelCommunicationMessageHandler Handler = null!; private ClientSession Session = null!; private Mock<ISessionRegistry> SessionRegistry = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); SessionRegistry = new Mock<ISessionRegistry>(); Handler = new DeleteMailDataMessageChannelCommunicationMessageHandler(SessionRegistry.Object); } [TestMethod] public async Task HandleShouldSendPostPacketWhenCharacterFound() { await new Spec("Handle should send post packet when character found") .Given(CharacterIsRegistered) .WhenAsync(HandlingDeleteMailData) .Then(ShouldSendPostPacket) .ExecuteAsync(); } [TestMethod] public async Task HandleShouldDoNothingWhenCharacterNotFound() { await new Spec("Handle should do nothing when character not found") .Given(CharacterIsNotRegistered) .WhenAsync(HandlingDeleteMailData) .Then(ShouldNotSendAnyPacket) .ExecuteAsync(); } private DeleteMailData MailData = null!; private void CharacterIsRegistered() { SessionRegistry.Setup(x => x.GetSession(It.IsAny<System.Func<ClientSession, bool>>())) .Returns(Session); Session.LastPackets.Clear(); } private void CharacterIsNotRegistered() { SessionRegistry.Setup(x => x.GetSession(It.IsAny<System.Func<ClientSession, bool>>())) .Returns((ClientSession?)null); Session.LastPackets.Clear(); } private async Task HandlingDeleteMailData() { MailData = new DeleteMailData { CharacterId = Session.Character.CharacterId, MailId = 123, PostType = 1 }; await Handler.Handle(MailData); } private void ShouldSendPostPacket() { var postPacket = Session.LastPackets.OfType<PostPacket>().FirstOrDefault(); Assert.IsNotNull(postPacket); Assert.AreEqual(2, postPacket.Type); Assert.AreEqual(MailData.PostType, postPacket.PostType); Assert.AreEqual(MailData.MailId, postPacket.Id); } private void ShouldNotSendAnyPacket() { Assert.AreEqual(0, Session.LastPackets.Count); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/ChannelCommunicationService/Handlers/DisconnectDataMessageHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.ChannelCommunicationService.Handlers; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.ChannelCommunicationService.Handlers { [TestClass] public class DisconnectDataMessageHandlerTests { private DisconnectDataMessageChannelCommunicationMessageHandler Handler = null!; private ClientSession Session = null!; private Mock<ISessionRegistry> SessionRegistry = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); SessionRegistry = new Mock<ISessionRegistry>(); Handler = new DisconnectDataMessageChannelCommunicationMessageHandler(SessionRegistry.Object); } [TestMethod] public async Task HandleShouldDisconnectWhenCharacterFound() { await new Spec("Handle should disconnect when character found") .Given(CharacterIsRegistered) .WhenAsync(HandlingDisconnectData) .Then(ShouldDisconnectCharacter) .ExecuteAsync(); } [TestMethod] public async Task HandleShouldDoNothingWhenCharacterNotFound() { await new Spec("Handle should do nothing when character not found") .Given(CharacterIsNotRegistered) .WhenAsync(HandlingDisconnectData) .Then(ShouldNotAttemptDisconnect) .ExecuteAsync(); } private void CharacterIsRegistered() { SessionRegistry.Setup(x => x.GetSessionByCharacterId(It.IsAny<long>())) .Returns(Session); } private void CharacterIsNotRegistered() { SessionRegistry.Setup(x => x.GetSessionByCharacterId(It.IsAny<long>())) .Returns((ClientSession?)null); } private async Task HandlingDisconnectData() { await Handler.Handle(new DisconnectData { CharacterId = Session.Character.CharacterId }); } private void ShouldDisconnectCharacter() { var characterId = Session.Character.CharacterId; SessionRegistry.Verify(x => x.DisconnectByCharacterIdAsync(characterId), Times.Once); } private void ShouldNotAttemptDisconnect() { SessionRegistry.Verify(x => x.DisconnectByCharacterIdAsync(It.IsAny<long>()), Times.Never); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/ChannelCommunicationService/Handlers/MailDataMessageHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Localization; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core.I18N; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.ChannelCommunicationService.Handlers; using NosCore.Packets.ServerPackets.Chats; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.ChannelCommunicationService.Handlers { [TestClass] public class MailDataMessageHandlerTests { private MailDataMessageChannelCommunicationMessageHandler Handler = null!; private ClientSession Session = null!; private Mock<ISessionRegistry> SessionRegistry = null!; private Mock<IGameLanguageLocalizer> GameLanguageLocalizer = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); SessionRegistry = new Mock<ISessionRegistry>(); GameLanguageLocalizer = new Mock<IGameLanguageLocalizer>(); GameLanguageLocalizer.Setup(x => x[It.IsAny<LanguageKey>(), It.IsAny<RegionType>()]) .Returns(new LocalizedString("key", "Item gifted: {0}")); Handler = new MailDataMessageChannelCommunicationMessageHandler(GameLanguageLocalizer.Object, SessionRegistry.Object); } [TestMethod] public async Task HandleShouldSendMailWhenCharacterFound() { await new Spec("Handle should send mail when character found") .Given(CharacterIsRegistered) .WhenAsync(HandlingMailData) .Then(ShouldSendMailPacket) .ExecuteAsync(); } [TestMethod] public async Task HandleShouldDoNothingWhenCharacterNotFound() { await new Spec("Handle should do nothing when character not found") .Given(CharacterIsNotRegistered) .WhenAsync(HandlingMailData) .Then(ShouldNotSendAnyPacket) .ExecuteAsync(); } [TestMethod] public async Task HandleWithItemShouldSendSayMessage() { await new Spec("Handle with item should send say message") .Given(CharacterIsRegistered) .WhenAsync(HandlingMailDataWithItem) .Then(ShouldSendSayPacket) .ExecuteAsync(); } private void CharacterIsRegistered() { SessionRegistry.Setup(x => x.GetSession(It.IsAny<System.Func<ClientSession, bool>>())) .Returns(Session); Session.LastPackets.Clear(); } private void CharacterIsNotRegistered() { SessionRegistry.Setup(x => x.GetSession(It.IsAny<System.Func<ClientSession, bool>>())) .Returns((ClientSession?)null); Session.LastPackets.Clear(); } private async Task HandlingMailData() { await Handler.Handle(new MailData { ReceiverName = Session.Character.Name, MailId = 1, MailDto = new MailDto { Title = "Test Mail" }, SenderName = "Sender" }); } private async Task HandlingMailDataWithItem() { await Handler.Handle(new MailData { ReceiverName = Session.Character.Name, MailId = 1, MailDto = new MailDto { Title = "Test Mail with Item" }, SenderName = "Sender", ItemInstance = new ItemInstanceDto { Amount = 5, ItemVNum = 1012 } }); } private void ShouldSendMailPacket() { Assert.IsTrue(Session.LastPackets.Count > 0); } private void ShouldNotSendAnyPacket() { Assert.AreEqual(0, Session.LastPackets.Count); } private void ShouldSendSayPacket() { var sayPacket = Session.LastPackets.OfType<SayPacket>().FirstOrDefault(); Assert.IsNotNull(sayPacket); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/ChannelCommunicationService/Handlers/PostedPacketMessageHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Interaction; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.ChannelCommunicationService.Handlers; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Chats; using NosCore.Shared.I18N; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.ChannelCommunicationService.Handlers { [TestClass] public class PostedPacketMessageHandlerTests { private PostedPacketMessageChannelCommunicationMessageHandler Handler = null!; private ClientSession Session = null!; private Mock<ISessionRegistry> SessionRegistry = null!; private Mock<IDeserializer> Deserializer = null!; private Mock<ILogger<PostedPacketMessageChannelCommunicationMessageHandler>> Logger = null!; private Mock<ILogLanguageLocalizer<LogLanguageKey>> LogLanguage = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); SessionRegistry = new Mock<ISessionRegistry>(); Deserializer = new Mock<IDeserializer>(); Logger = new Mock<ILogger<PostedPacketMessageChannelCommunicationMessageHandler>>(); LogLanguage = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); Handler = new PostedPacketMessageChannelCommunicationMessageHandler(Logger.Object, Deserializer.Object, LogLanguage.Object, SessionRegistry.Object); } [TestMethod] public async Task HandleShouldBroadcastToAllWhenReceiverTypeIsAll() { await new Spec("Handle should broadcast to all when receiver type is all") .Given(DeserializerReturnsPacket) .WhenAsync(HandlingBroadcastToAll) .Then(ShouldBroadcastToAll) .ExecuteAsync(); } [TestMethod] public async Task HandleShouldSendToSpecificCharacterByName() { await new Spec("Handle should send to specific character by name") .Given(DeserializerReturnsPacket) .And(CharacterIsRegisteredByName) .WhenAsync(HandlingPostToCharacterByName) .Then(ShouldSendToCharacter) .ExecuteAsync(); } [TestMethod] public async Task HandleShouldSendToSpecificCharacterById() { await new Spec("Handle should send to specific character by id") .Given(DeserializerReturnsPacket) .And(CharacterIsRegisteredById) .WhenAsync(HandlingPostToCharacterById) .Then(ShouldSendToCharacter) .ExecuteAsync(); } [TestMethod] public async Task HandleShouldDoNothingWhenReceiverNotFound() { await new Spec("Handle should do nothing when receiver not found") .Given(DeserializerReturnsPacket) .And(CharacterIsNotRegistered) .WhenAsync(HandlingPostToCharacterByName) .Then(ShouldNotSendAnyPacket) .ExecuteAsync(); } [TestMethod] public async Task HandleShouldLogErrorWhenUnknownReceiverType() { await new Spec("Handle should log error when unknown receiver type") .Given(DeserializerReturnsPacket) .WhenAsync(HandlingPostWithUnknownReceiverType) .Then(ShouldLogError) .ExecuteAsync(); } private IPacket DeserializedPacket = null!; private void DeserializerReturnsPacket() { DeserializedPacket = new SayPacket { Message = "Test message" }; Deserializer.Setup(x => x.Deserialize(It.IsAny<string>())) .Returns(DeserializedPacket); } private void CharacterIsRegisteredByName() { SessionRegistry.Setup(x => x.GetSession(It.IsAny<System.Func<ClientSession, bool>>())) .Returns(Session); Session.LastPackets.Clear(); } private void CharacterIsRegisteredById() { SessionRegistry.Setup(x => x.GetSession(It.IsAny<System.Func<ClientSession, bool>>())) .Returns(Session); Session.LastPackets.Clear(); } private void CharacterIsNotRegistered() { SessionRegistry.Setup(x => x.GetSession(It.IsAny<System.Func<ClientSession, bool>>())) .Returns((ClientSession?)null); Session.LastPackets.Clear(); } private async Task HandlingBroadcastToAll() { await Handler.Handle(new PostedPacket { Packet = "say Test message", ReceiverType = ReceiverType.All }); } private async Task HandlingPostToCharacterByName() { await Handler.Handle(new PostedPacket { Packet = "say Test message", ReceiverType = ReceiverType.OnlySomeone, ReceiverCharacter = new Data.WebApi.Character { Name = Session.Character.Name } }); } private async Task HandlingPostToCharacterById() { await Handler.Handle(new PostedPacket { Packet = "say Test message", ReceiverType = ReceiverType.OnlySomeone, ReceiverCharacter = new Data.WebApi.Character { Id = Session.Character.CharacterId } }); } private async Task HandlingPostWithUnknownReceiverType() { await Handler.Handle(new PostedPacket { Packet = "say Test message", ReceiverType = unchecked((ReceiverType)999) }); } private void ShouldBroadcastToAll() { SessionRegistry.Verify(x => x.BroadcastPacketAsync(It.IsAny<IPacket>()), Times.Once); } private void ShouldSendToCharacter() { Assert.IsTrue(Session.LastPackets.Count > 0); } private void ShouldNotSendAnyPacket() { Assert.AreEqual(0, Session.LastPackets.Count); } private void ShouldLogError() { Logger.Verify(x => x.Log( LogLevel.Error, It.IsAny<EventId>(), It.Is<It.IsAnyType>((v, _) => true), It.IsAny<System.Exception?>(), It.IsAny<System.Func<It.IsAnyType, System.Exception?, string>>()), Times.Once); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/ChannelCommunicationService/Handlers/StatDataMessageHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Core.Configuration; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.GameObject.Services.ChannelCommunicationService.Handlers; using NosCore.Shared.I18N; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.ChannelCommunicationService.Handlers { [TestClass] public class StatDataMessageHandlerTests { private StatDataMessageChannelCommunicationMessageHandler Handler = null!; private ClientSession Session = null!; private Mock<ISessionRegistry> SessionRegistry = null!; private Mock<ILogger<StatDataMessageChannelCommunicationMessageHandler>> Logger = null!; private Mock<ILogLanguageLocalizer<LogLanguageKey>> LogLanguage = null!; private IOptions<WorldConfiguration> WorldConfig = null!; private Mock<IExperienceService> ExperienceService = null!; private Mock<IJobExperienceService> JobExperienceService = null!; private Mock<IHeroExperienceService> HeroExperienceService = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); SessionRegistry = new Mock<ISessionRegistry>(); Logger = new Mock<ILogger<StatDataMessageChannelCommunicationMessageHandler>>(); LogLanguage = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); WorldConfig = Options.Create(new WorldConfiguration { MaxGoldAmount = 999999999 }); ExperienceService = new Mock<IExperienceService>(); JobExperienceService = new Mock<IJobExperienceService>(); HeroExperienceService = new Mock<IHeroExperienceService>(); Handler = new StatDataMessageChannelCommunicationMessageHandler(Logger.Object, LogLanguage.Object, WorldConfig, SessionRegistry.Object, ExperienceService.Object, JobExperienceService.Object, HeroExperienceService.Object); } [TestMethod] public async Task HandleShouldUpdateLevelWhenActionTypeIsUpdateLevel() { await new Spec("Handle should update level when action type is update level") .Given(CharacterIsRegistered) .And(OriginalLevelIs_, 1) .WhenAsync(HandlingStatDataWithLevel_, 50) .Then(CharacterLevelShouldBe_, 50) .ExecuteAsync(); } [TestMethod] public async Task HandleShouldDoNothingWhenCharacterNotFound() { await new Spec("Handle should do nothing when character not found") .Given(CharacterIsNotRegistered) .And(OriginalLevelIs_, 1) .WhenAsync(HandlingStatDataWithLevel_, 50) .Then(CharacterLevelShouldBe_, 1) .ExecuteAsync(); } [TestMethod] public async Task HandleShouldLogErrorForUnknownActionType() { await new Spec("Handle should log error for unknown action type") .Given(CharacterIsRegistered) .WhenAsync(HandlingStatDataWithUnknownActionType) .Then(ShouldLogError) .ExecuteAsync(); } private byte OriginalLevel; private void CharacterIsRegistered() { SessionRegistry.Setup(x => x.GetSession(It.IsAny<System.Func<ClientSession, bool>>())) .Returns(Session); } private void CharacterIsNotRegistered() { SessionRegistry.Setup(x => x.GetSession(It.IsAny<System.Func<ClientSession, bool>>())) .Returns((ClientSession?)null); } private void OriginalLevelIs_(int level) { OriginalLevel = (byte)level; Session.Character.Level = OriginalLevel; } private async Task HandlingStatDataWithLevel_(int newLevel) { await Handler.Handle(new StatData { Character = new Data.WebApi.Character { Name = Session.Character.Name }, ActionType = UpdateStatActionType.UpdateLevel, Data = newLevel }); } private async Task HandlingStatDataWithUnknownActionType() { await Handler.Handle(new StatData { Character = new Data.WebApi.Character { Name = Session.Character.Name }, ActionType = unchecked((UpdateStatActionType)999), Data = 1 }); } private void CharacterLevelShouldBe_(int expectedLevel) { Assert.AreEqual((byte)expectedLevel, Session.Character.Level); } private void ShouldLogError() { Logger.Verify(x => x.Log( LogLevel.Error, It.IsAny<EventId>(), It.Is<It.IsAnyType>((v, _) => true), It.IsAny<System.Exception?>(), It.IsAny<System.Func<It.IsAnyType, System.Exception?, string>>()), Times.Once); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/ChannelService/ChannelServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core; using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ChannelService; using NosCore.GameObject.Services.SaveService; using NosCore.Packets.ServerPackets.Login; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.ChannelService { [TestClass] public class ChannelServiceTests { private IChannelService Service = null!; private Mock<IAuthHub> AuthHub = null!; private Mock<IChannelHub> ChannelHub = null!; private Mock<ISaveService> SaveService = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; AuthHub = new Mock<IAuthHub>(); ChannelHub = new Mock<IChannelHub>(); SaveService = new Mock<ISaveService>(); SaveService.Setup(s => s.SaveAsync(It.IsAny<ClientSession>())) .Returns(Task.CompletedTask); Service = new GameObject.Services.ChannelService.ChannelService( AuthHub.Object, ChannelHub.Object, SaveService.Object); } [TestMethod] public async Task MovingToExistingChannelShouldSendPackets() { await new Spec("Moving to existing channel should send packets") .Given(TargetChannelExists) .WhenAsync(MovingToChannel) .Then(MzPacketShouldBeSent) .And(CharacterShouldBeSaved) .ExecuteAsync(); } [TestMethod] public async Task MovingToNonExistentChannelShouldDoNothing() { await new Spec("Moving to non-existent channel should do nothing") .Given(NoChannelsExist) .WhenAsync(MovingToChannel) .Then(NoPacketsShouldBeSent) .And(CharacterShouldNotBeSaved) .ExecuteAsync(); } [TestMethod] public async Task MovingToNonWorldServerShouldDoNothing() { await new Spec("Moving to non-world server should do nothing") .Given(OnlyLoginServerExists) .WhenAsync(MovingToChannel) .Then(NoPacketsShouldBeSent) .ExecuteAsync(); } private void TargetChannelExists() { ChannelHub.Setup(s => s.GetCommunicationChannels()) .ReturnsAsync(new List<ChannelInfo> { new ChannelInfo { Id = 2, Type = ServerType.WorldServer, Host = "127.0.0.1", Port = 1234 } }); } private void NoChannelsExist() { ChannelHub.Setup(s => s.GetCommunicationChannels()) .ReturnsAsync(new List<ChannelInfo>()); } private void OnlyLoginServerExists() { ChannelHub.Setup(s => s.GetCommunicationChannels()) .ReturnsAsync(new List<ChannelInfo> { new ChannelInfo { Id = 2, Type = ServerType.LoginServer, Host = "127.0.0.1", Port = 1234 } }); } private async Task MovingToChannel() { await Service.MoveChannelAsync(Session, 2); } private void MzPacketShouldBeSent() { var mzPacket = Session.LastPackets.OfType<MzPacket>().FirstOrDefault(); Assert.IsNotNull(mzPacket); Assert.AreEqual("127.0.0.1", mzPacket.Ip); Assert.AreEqual(1234, mzPacket.Port); } private void CharacterShouldBeSaved() { SaveService.Verify(s => s.SaveAsync(Session), Times.Once); } private void NoPacketsShouldBeSent() { var mzPacket = Session.LastPackets.OfType<MzPacket>().FirstOrDefault(); Assert.IsNull(mzPacket); } private void CharacterShouldNotBeSaved() { SaveService.Verify(s => s.SaveAsync(It.IsAny<ClientSession>()), Times.Never); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/CharacterService/CharacterInitializationServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Dto; using NosCore.Data.StaticEntities; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.CharacterService; using NosCore.GameObject.Services.MinilandService; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.CharacterService { [TestClass] public class CharacterInitializationServiceTests { private static readonly ILogger<CharacterInitializationServiceTests> Logger = new Mock<ILogger<CharacterInitializationServiceTests>>().Object; private ICharacterInitializationService Service = null!; private IMinilandService MinilandService = null!; private ClientSession Session = null!; private Mock<IFriendHub> FriendHttpClient = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); FriendHttpClient = new Mock<IFriendHub>(); FriendHttpClient.Setup(s => s.GetFriendsAsync(It.IsAny<long>())) .ReturnsAsync(new List<CharacterRelationStatus>()); await TestHelpers.Instance.MinilandDao.TryInsertOrUpdateAsync(new MinilandDto { OwnerId = Session.Character.CharacterId }); MinilandService = new GameObject.Services.MinilandService.MinilandService( TestHelpers.Instance.MapInstanceAccessorService, FriendHttpClient.Object, new List<MapDto> { new NosCore.GameObject.Map.Map { MapId = 20001, NameI18NKey = "miniland", Data = new byte[] { } } }, TestHelpers.Instance.MinilandDao, TestHelpers.Instance.MinilandObjectDao, new MinilandRegistry()); Service = new CharacterInitializationService(MinilandService, TestHelpers.Instance.MapInstanceGeneratorService); } [TestMethod] public async Task InitializingCharacterShouldInitializeMiniland() { await new Spec("Initializing character should initialize miniland") .WhenAsync(InitializingCharacter) .Then(MinilandShouldBeInitialized) .ExecuteAsync(); } [TestMethod] public async Task InitializingCharacterWithNullServicesShouldDoNothing() { await new Spec("Initializing character with null services should do nothing") .Given(ServiceWithNullDependencies) .WhenAsync(InitializingCharacterWithNullServices) .Then(NoExceptionShouldBeThrown) .ExecuteAsync(); } [TestMethod] public async Task InitializingCharacterWithOnlyMinilandServiceShouldDoNothing() { await new Spec("Initializing character with only miniland service should do nothing") .Given(ServiceWithOnlyMinilandService) .WhenAsync(InitializingCharacterWithPartialServices) .Then(NoExceptionShouldBeThrown) .ExecuteAsync(); } [TestMethod] public async Task InitializingCharacterWithOnlyMapInstanceServiceShouldDoNothing() { await new Spec("Initializing character with only map instance service should do nothing") .Given(ServiceWithOnlyMapInstanceService) .WhenAsync(InitializingCharacterWithPartialServices) .Then(NoExceptionShouldBeThrown) .ExecuteAsync(); } [TestMethod] public async Task InitializingMultipleCharactersShouldWork() { await new Spec("Initializing multiple characters should work") .WhenAsync(InitializingMultipleCharacters) .Then(BothMinilandsShouldBeInitialized) .ExecuteAsync(); } private ICharacterInitializationService? NullService; private ICharacterInitializationService? PartialService; private ClientSession? SecondSession; private bool InitializationCompleted; private bool SecondInitializationCompleted; private async Task InitializingCharacter() { await Service.InitializeAsync(Session.Character); InitializationCompleted = true; } private void ServiceWithNullDependencies() { NullService = new CharacterInitializationService(); } private async Task InitializingCharacterWithNullServices() { await NullService!.InitializeAsync(Session.Character); InitializationCompleted = true; } private void ServiceWithOnlyMinilandService() { PartialService = new CharacterInitializationService(MinilandService); } private void ServiceWithOnlyMapInstanceService() { PartialService = new CharacterInitializationService(mapInstanceGeneratorService: TestHelpers.Instance.MapInstanceGeneratorService); } private async Task InitializingCharacterWithPartialServices() { await PartialService!.InitializeAsync(Session.Character); InitializationCompleted = true; } private async Task InitializingMultipleCharacters() { SecondSession = await TestHelpers.Instance.GenerateSessionAsync(); await TestHelpers.Instance.MinilandDao.TryInsertOrUpdateAsync(new MinilandDto { OwnerId = SecondSession.Character.CharacterId }); await Service.InitializeAsync(Session.Character); InitializationCompleted = true; await Service.InitializeAsync(SecondSession.Character); SecondInitializationCompleted = true; } private void MinilandShouldBeInitialized() { Assert.IsTrue(InitializationCompleted); var miniland = MinilandService.GetMiniland(Session.Character.CharacterId); Assert.IsNotNull(miniland); } private void NoExceptionShouldBeThrown() { Assert.IsTrue(InitializationCompleted); } private void BothMinilandsShouldBeInitialized() { Assert.IsTrue(InitializationCompleted); Assert.IsTrue(SecondInitializationCompleted); var miniland1 = MinilandService.GetMiniland(Session.Character.CharacterId); var miniland2 = MinilandService.GetMiniland(SecondSession!.Character.CharacterId); Assert.IsNotNull(miniland1); Assert.IsNotNull(miniland2); Assert.AreNotEqual(miniland1.MapInstanceId, miniland2.MapInstanceId); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/ExchangeService/ExchangeRequestRegistryTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Services.ExchangeService; using SpecLight; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.ExchangeService { [TestClass] public class ExchangeRequestRegistryTests { private IExchangeRequestRegistry Registry = null!; [TestInitialize] public void Setup() { Registry = new ExchangeRequestRegistry(); } [TestMethod] public async Task SetExchangeDataShouldAllowRetrieval() { await new Spec("Set exchange data should allow retrieval") .When(SettingExchangeData) .Then(ExchangeDataShouldBeRetrievable) .ExecuteAsync(); } [TestMethod] public async Task GetExchangeDataShouldReturnNullForUnknownCharacter() { await new Spec("Get exchange data should return null for unknown character") .When(GettingUnknownExchangeData) .Then(ResultShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task RemoveExchangeDataShouldDeleteData() { await new Spec("Remove exchange data should delete data") .Given(ExchangeDataExists) .When(RemovingExchangeData) .Then(RemoveShouldSucceed) .And(ExchangeDataShouldNotExist) .ExecuteAsync(); } [TestMethod] public async Task SetExchangeRequestShouldTrackBothParties() { await new Spec("Set exchange request should track both parties") .When(SettingExchangeRequest) .Then(InitiatorShouldBeTracked) .And(TargetShouldBeTracked) .ExecuteAsync(); } [TestMethod] public async Task GetExchangeRequestPairShouldReturnFromInitiator() { await new Spec("Get exchange request pair should return from initiator") .Given(ExchangeRequestExists) .When(GettingPairFromInitiator) .Then(PairShouldBeCorrect) .ExecuteAsync(); } [TestMethod] public async Task GetExchangeRequestPairShouldReturnFromTarget() { await new Spec("Get exchange request pair should return from target") .Given(ExchangeRequestExists) .When(GettingPairFromTarget) .Then(PairShouldBeCorrectFromTarget) .ExecuteAsync(); } [TestMethod] public async Task RemoveExchangeRequestFromInitiatorShouldRemoveBoth() { await new Spec("Remove exchange request from initiator should remove both") .Given(ExchangeRequestExists) .When(RemovingRequestFromInitiator) .Then(RequestShouldBeRemoved) .And(NeitherPartyShouldHaveExchange) .ExecuteAsync(); } [TestMethod] public async Task RemoveExchangeRequestFromTargetShouldRemoveBoth() { await new Spec("Remove exchange request from target should remove both") .Given(ExchangeRequestExists) .When(RemovingRequestFromTarget) .Then(RequestShouldBeRemoved) .And(NeitherPartyShouldHaveExchange) .ExecuteAsync(); } [TestMethod] public async Task HasExchangeShouldReturnTrueForActiveExchange() { await new Spec("Has exchange should return true for active exchange") .Given(ExchangeRequestExists) .When(CheckingHasExchange) .Then(HasExchangeShouldBeTrue) .ExecuteAsync(); } [TestMethod] public async Task HasExchangeShouldReturnFalseForNoExchange() { await new Spec("Has exchange should return false for no exchange") .When(CheckingHasExchangeForUnknown) .Then(HasExchangeShouldBeFalse) .ExecuteAsync(); } private const long TestInitiatorId = 1; private const long TestTargetId = 2; private ExchangeData? ResultData; private KeyValuePair<long, long>? ResultPair; private bool RemoveResult; private bool HasExchangeResult; private void SettingExchangeData() { Registry.SetExchangeData(TestInitiatorId, new ExchangeData()); } private void ExchangeDataExists() { Registry.SetExchangeData(TestInitiatorId, new ExchangeData()); } private void ExchangeRequestExists() { Registry.SetExchangeRequest(TestInitiatorId, TestTargetId); } private void GettingUnknownExchangeData() { ResultData = Registry.GetExchangeData(9999); } private void RemovingExchangeData() { RemoveResult = Registry.RemoveExchangeData(TestInitiatorId); } private void SettingExchangeRequest() { Registry.SetExchangeRequest(TestInitiatorId, TestTargetId); } private void GettingPairFromInitiator() { ResultPair = Registry.GetExchangeRequestPair(TestInitiatorId); } private void GettingPairFromTarget() { ResultPair = Registry.GetExchangeRequestPair(TestTargetId); } private void RemovingRequestFromInitiator() { RemoveResult = Registry.RemoveExchangeRequest(TestInitiatorId); } private void RemovingRequestFromTarget() { RemoveResult = Registry.RemoveExchangeRequest(TestTargetId); } private void CheckingHasExchange() { HasExchangeResult = Registry.HasExchange(TestInitiatorId); } private void CheckingHasExchangeForUnknown() { HasExchangeResult = Registry.HasExchange(9999); } private void ExchangeDataShouldBeRetrievable() { var result = Registry.GetExchangeData(TestInitiatorId); Assert.IsNotNull(result); } private void ResultShouldBeNull() { Assert.IsNull(ResultData); } private void RemoveShouldSucceed() { Assert.IsTrue(RemoveResult); } private void ExchangeDataShouldNotExist() { var result = Registry.GetExchangeData(TestInitiatorId); Assert.IsNull(result); } private void InitiatorShouldBeTracked() { var result = Registry.GetExchangeRequest(TestInitiatorId); Assert.AreEqual(TestTargetId, result); } private void TargetShouldBeTracked() { Assert.IsTrue(Registry.HasExchange(TestTargetId)); } private void PairShouldBeCorrect() { Assert.IsNotNull(ResultPair); Assert.AreEqual(TestInitiatorId, ResultPair.Value.Key); Assert.AreEqual(TestTargetId, ResultPair.Value.Value); } private void PairShouldBeCorrectFromTarget() { Assert.IsNotNull(ResultPair); Assert.AreEqual(TestInitiatorId, ResultPair.Value.Key); Assert.AreEqual(TestTargetId, ResultPair.Value.Value); } private void RequestShouldBeRemoved() { Assert.IsTrue(RemoveResult); } private void NeitherPartyShouldHaveExchange() { Assert.IsFalse(Registry.HasExchange(TestInitiatorId)); Assert.IsFalse(Registry.HasExchange(TestTargetId)); } private void HasExchangeShouldBeTrue() { Assert.IsTrue(HasExchangeResult); } private void HasExchangeShouldBeFalse() { Assert.IsFalse(HasExchangeResult); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/ExchangeService/ExchangeServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core.Configuration; using NosCore.Data.Enumerations; using NosCore.Data.StaticEntities; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using ExchangeRequestRegistry = NosCore.GameObject.Services.ExchangeService.ExchangeRequestRegistry; namespace NosCore.GameObject.Tests.Services.ExchangeService { [TestClass] public class ExchangeServiceTests { private GameObject.Services.ExchangeService.ExchangeService? ExchangeProvider; private GameObject.Services.ItemGenerationService.ItemGenerationService? ItemProvider; private IOptions<WorldConfiguration>? WorldConfiguration; [TestInitialize] public void Setup() { WorldConfiguration = Options.Create(new WorldConfiguration { MaxItemAmount = 999, BackpackSize = 48, MaxGoldAmount = 1000000000, MaxBankGoldAmount = 100000000000 }); var items = new List<ItemDto> { new Item {Type = NoscorePocketType.Main, VNum = 1012}, new Item {Type = NoscorePocketType.Main, VNum = 1013} }; ItemProvider = new GameObject.Services.ItemGenerationService.ItemGenerationService(items, NullLoggerFactory.Instance, TestHelpers.Instance.LogLanguageLocalizer); ExchangeProvider = new GameObject.Services.ExchangeService.ExchangeService(ItemProvider, WorldConfiguration, NullLogger<NosCore.GameObject.Services.ExchangeService.ExchangeService>.Instance, new ExchangeRequestRegistry(), TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.GameLanguageLocalizer); } [TestMethod] public void SettingGoldShouldUpdateExchangeData() { new Spec("Setting gold should update exchange data") .Given(ExchangeIsOpen) .When(SettingGoldForBothParties) .Then(BothPartiesShouldHaveCorrectGold) .Execute(); } [TestMethod] public void ConfirmingExchangeShouldSetConfirmedFlag() { new Spec("Confirming exchange should set confirmed flag") .Given(ExchangeIsOpen) .When(BothPartiesConfirm) .Then(BothShouldBeConfirmed) .Execute(); } [TestMethod] public void AddingItemsShouldAddToExchange() { new Spec("Adding items should add to exchange") .Given(ExchangeIsOpen) .When(AddingItemToExchange) .Then(ExchangeShouldContainItem) .Execute(); } [TestMethod] public void CheckingExchangeShouldReturnCorrectStatus() { new Spec("Checking exchange should return correct status") .Then(CheckBeforeOpenShouldBeFalse) .And(CheckAfterOpenShouldBeTrue) .Execute(); } [TestMethod] public void ClosingExchangeShouldWorkCorrectly() { new Spec("Closing exchange should work correctly") .Then(CloseWithoutExchangeShouldReturnNull) .And(CloseWithExchangeShouldReturnResult) .Execute(); } [TestMethod] public void OpeningExchangeShouldSucceed() { new Spec("Opening exchange should succeed") .Then(FirstExchangeShouldSucceed) .Execute(); } [TestMethod] public void OpeningSecondExchangeShouldFail() { new Spec("Opening second exchange should fail") .Given(ExchangeIsOpen) .Then(SecondExchangeShouldFail) .Execute(); } [TestMethod] public void ProcessingExchangeShouldSwapItems() { new Spec("Processing exchange should swap items") .Then(ProcessExchangeShouldReturnItemsForBoth) .Execute(); } [TestMethod] public async Task ValidateExchangeFailsWhenTargetsGoldWouldExceedCap() { await new Spec("Validate returns Failure + MaxGoldReached when target's gold + session's gold exceed MaxGoldAmount") .GivenAsync(SessionAndTargetAreSetUp) .And(SessionCharacterGoldIs_, 900_000_000L) .And(TargetCharacterGoldIs_, 500_000_000L) .And(ExchangeOfferTargetsGoldIs_, 500_000_000L) .WhenAsync(ValidatingExchange) .Then(ResultTypeShouldBe_, ExchangeResultType.Failure) .And(DictionaryShouldContainPacketFor_WithMessage_, true, Game18NConstString.MaxGoldReached) .ExecuteAsync(); } [TestMethod] public async Task ValidateExchangeFailsWhenNonTradableItemIsOffered() { await new Spec("Validate returns Failure + ItemCanNotBeSold when the exchange offer contains a non-tradable item") .GivenAsync(SessionAndTargetAreSetUp) .And(SessionOffersANonTradableItem) .WhenAsync(ValidatingExchange) .Then(ResultTypeShouldBe_, ExchangeResultType.Failure) .And(DictionaryShouldContainPacketFor_WithMessage_, false, Game18NConstString.ItemCanNotBeSold) .ExecuteAsync(); } [TestMethod] public async Task ValidateExchangeSucceedsWhenBothSidesAreWithinCaps() { await new Spec("Validate returns Success with a null packet dict when both sides stay within all caps and fit inventory") .GivenAsync(SessionAndTargetAreSetUp) .And(SessionCharacterGoldIs_, 1_000L) .And(TargetCharacterGoldIs_, 1_000L) .WhenAsync(ValidatingExchange) .Then(ResultTypeShouldBe_, ExchangeResultType.Success) .And(DictionaryShouldBeNull) .ExecuteAsync(); } private ClientSession? _sessionA; private ClientSession? _sessionB; private Tuple<ExchangeResultType, Dictionary<long, IPacket>?>? _validationResult; private GameObject.Services.ExchangeService.ExchangeService? _realExchange; private async Task SessionAndTargetAreSetUp() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); _sessionA = await TestHelpers.Instance.GenerateSessionAsync(); _sessionB = await TestHelpers.Instance.GenerateSessionAsync(); _realExchange = new GameObject.Services.ExchangeService.ExchangeService( ItemProvider!, WorldConfiguration!, NullLogger<NosCore.GameObject.Services.ExchangeService.ExchangeService>.Instance, new ExchangeRequestRegistry(), TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.GameLanguageLocalizer); _realExchange.OpenExchange(_sessionA.Character.CharacterId, _sessionB.Character.VisualId); } private void SessionCharacterGoldIs_(long gold) => _sessionA!.Character.Gold = gold; private void TargetCharacterGoldIs_(long gold) => _sessionB!.Character.Gold = gold; private void ExchangeOfferTargetsGoldIs_(long gold) => _realExchange!.SetGold(_sessionB!.Character.VisualId, gold, 0); private void SessionOffersANonTradableItem() { _sessionA!.Character.Gold = 0; _sessionB!.Character.Gold = 0; var item = new InventoryItemInstance(new GameObject.Services.ItemGenerationService.Item.ItemInstance( new Item { VNum = 999, Type = NoscorePocketType.Main, IsTradable = false }) { Amount = 1 }); _realExchange!.AddItems(_sessionA.Character.CharacterId, item, 1); } private Task ValidatingExchange() { _validationResult = _realExchange!.ValidateExchange(_sessionA!, _sessionB!.Character); return Task.CompletedTask; } private void ResultTypeShouldBe_(ExchangeResultType expected) => Assert.AreEqual(expected, _validationResult!.Item1); private void DictionaryShouldBeNull() => Assert.IsNull(_validationResult!.Item2); private void DictionaryShouldContainPacketFor_WithMessage_(bool forTarget, Game18NConstString expected) { var id = forTarget ? _sessionB!.Character.VisualId : _sessionA!.Character.CharacterId; var dict = _validationResult!.Item2; Assert.IsNotNull(dict); Assert.IsTrue(dict.ContainsKey(id), $"Expected packet for id={id}"); var packet = dict[id]; var infoi = packet as InfoiPacket; Assert.IsNotNull(infoi); Assert.AreEqual(expected, infoi.Message); } private void ExchangeIsOpen() { ExchangeProvider!.OpenExchange(1, 2); } private void SettingGoldForBothParties() { ExchangeProvider!.SetGold(1, 1000, 1000); ExchangeProvider.SetGold(2, 2000, 2000); } private void BothPartiesShouldHaveCorrectGold() { var data1 = ExchangeProvider!.GetData(1); var data2 = ExchangeProvider.GetData(2); Assert.IsTrue((data1.Gold == 1000) && (data1.BankGold == 1000) && (data2.Gold == 2000) && (data2.BankGold == 2000)); } private void BothPartiesConfirm() { ExchangeProvider!.ConfirmExchange(1); ExchangeProvider.ConfirmExchange(2); } private void BothShouldBeConfirmed() { var data1 = ExchangeProvider!.GetData(1); var data2 = ExchangeProvider.GetData(2); Assert.IsTrue(data1.ExchangeConfirmed && data2.ExchangeConfirmed); } private void AddingItemToExchange() { var item = new InventoryItemInstance(new ItemInstance(new Item { VNum = 1012 }) { Amount = 1 }); ExchangeProvider!.AddItems(1, item, item.ItemInstance.Amount); } private void ExchangeShouldContainItem() { var data1 = ExchangeProvider!.GetData(1); Assert.IsTrue(data1.ExchangeItems.Any(s => (s.Key.ItemInstance?.ItemVNum == 1012) && (s.Key.ItemInstance.Amount == 1))); } private void CheckBeforeOpenShouldBeFalse() { var wrongExchange = ExchangeProvider!.CheckExchange(1); Assert.IsFalse(wrongExchange); } private void CheckAfterOpenShouldBeTrue() { ExchangeProvider!.OpenExchange(1, 2); var goodExchange = ExchangeProvider.CheckExchange(1); Assert.IsTrue(goodExchange); } private void CloseWithoutExchangeShouldReturnNull() { var wrongClose = ExchangeProvider!.CloseExchange(1, ExchangeResultType.Failure); Assert.IsNull(wrongClose); } private void CloseWithExchangeShouldReturnResult() { ExchangeProvider!.OpenExchange(1, 2); var goodClose = ExchangeProvider.CloseExchange(1, ExchangeResultType.Failure); Assert.IsTrue((goodClose != null) && (goodClose.Type == ExchangeResultType.Failure)); } private void FirstExchangeShouldSucceed() { var exchange = ExchangeProvider!.OpenExchange(1, 2); Assert.IsTrue(exchange); } private void SecondExchangeShouldFail() { var wrongExchange = ExchangeProvider!.OpenExchange(1, 3); Assert.IsFalse(wrongExchange); } private void ProcessExchangeShouldReturnItemsForBoth() { IInventoryService inventory1 = new GameObject.Services.InventoryService.InventoryService(new List<ItemDto> { new Item { VNum = 1012, Type = NoscorePocketType.Main } }, WorldConfiguration!, NullLogger<NosCore.GameObject.Services.InventoryService.InventoryService>.Instance); IInventoryService inventory2 = new GameObject.Services.InventoryService.InventoryService(new List<ItemDto> { new Item { VNum = 1013, Type = NoscorePocketType.Main } }, WorldConfiguration!, NullLogger<NosCore.GameObject.Services.InventoryService.InventoryService>.Instance); var item1 = inventory1.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012, 1), 0))! .First(); var item2 = inventory2.AddItemToPocket(InventoryItemInstance.Create(ItemProvider.Create(1013, 1), 0))! .First(); ExchangeProvider!.OpenExchange(1, 2); ExchangeProvider.AddItems(1, item1, 1); ExchangeProvider.AddItems(2, item2, 1); var itemList = ExchangeProvider.ProcessExchange(1, 2, inventory1, inventory2); Assert.IsTrue((itemList.Count(s => s.Key == 1) == 2) && (itemList.Count(s => s.Key == 2) == 2)); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/FriendService/FriendRequestRegistryTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Services.FriendService; using SpecLight; using System; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.FriendService { [TestClass] public class FriendRequestRegistryTests { private IFriendRequestRegistry Registry = null!; [TestInitialize] public void Setup() { Registry = new FriendRequestRegistry(); } [TestMethod] public async Task RegisterRequestShouldAddRequest() { await new Spec("Register request should add request") .When(RegisteringRequest) .Then(RequestShouldBeRetrievable) .ExecuteAsync(); } [TestMethod] public async Task GetRequestsForCharacterShouldReturnRequestsAsSender() { await new Spec("Get requests for character should return requests as sender") .Given(RequestsExist) .When(GettingRequestsForSender) .Then(SenderRequestsShouldBeReturned) .ExecuteAsync(); } [TestMethod] public async Task GetRequestsForCharacterShouldReturnRequestsAsReceiver() { await new Spec("Get requests for character should return requests as receiver") .Given(RequestsExist) .When(GettingRequestsForReceiver) .Then(ReceiverRequestsShouldBeReturned) .ExecuteAsync(); } [TestMethod] public async Task UnregisterRequestShouldRemoveRequest() { await new Spec("Unregister request should remove request") .Given(RequestIsRegistered) .When(UnregisteringRequest) .Then(UnregisterShouldSucceed) .And(RequestShouldNotExist) .ExecuteAsync(); } [TestMethod] public async Task UnregisterRequestShouldFailForUnknownRequest() { await new Spec("Unregister request should fail for unknown request") .When(UnregisteringUnknownRequest) .Then(UnregisterShouldFail) .ExecuteAsync(); } [TestMethod] public async Task GetRequestsForCharacterShouldReturnEmptyForNoRequests() { await new Spec("Get requests for character should return empty for no requests") .When(GettingRequestsForUnknownCharacter) .Then(NoRequestsShouldBeReturned) .ExecuteAsync(); } private readonly Guid TestRequestId = Guid.NewGuid(); private const long TestSenderId = 1; private const long TestReceiverId = 2; private int RequestCount; private bool UnregisterResult; private void RequestsExist() { Registry.RegisterRequest(TestRequestId, TestSenderId, TestReceiverId); Registry.RegisterRequest(Guid.NewGuid(), TestSenderId, 99); Registry.RegisterRequest(Guid.NewGuid(), 99, TestReceiverId); } private void RequestIsRegistered() { Registry.RegisterRequest(TestRequestId, TestSenderId, TestReceiverId); } private void RegisteringRequest() { Registry.RegisterRequest(TestRequestId, TestSenderId, TestReceiverId); } private void GettingRequestsForSender() { RequestCount = Registry.GetRequestsForCharacter(TestSenderId).Count(); } private void GettingRequestsForReceiver() { RequestCount = Registry.GetRequestsForCharacter(TestReceiverId).Count(); } private void GettingRequestsForUnknownCharacter() { RequestCount = Registry.GetRequestsForCharacter(9999).Count(); } private void UnregisteringRequest() { UnregisterResult = Registry.UnregisterRequest(TestRequestId); } private void UnregisteringUnknownRequest() { UnregisterResult = Registry.UnregisterRequest(Guid.NewGuid()); } private void RequestShouldBeRetrievable() { var requests = Registry.GetRequestsForCharacter(TestSenderId); Assert.AreEqual(1, requests.Count()); var request = requests.First(); Assert.AreEqual(TestRequestId, request.Key); Assert.AreEqual(TestSenderId, request.Value.SenderId); Assert.AreEqual(TestReceiverId, request.Value.ReceiverId); } private void SenderRequestsShouldBeReturned() { Assert.AreEqual(2, RequestCount); } private void ReceiverRequestsShouldBeReturned() { Assert.AreEqual(2, RequestCount); } private void NoRequestsShouldBeReturned() { Assert.AreEqual(0, RequestCount); } private void UnregisterShouldSucceed() { Assert.IsTrue(UnregisterResult); } private void UnregisterShouldFail() { Assert.IsFalse(UnregisterResult); } private void RequestShouldNotExist() { var requests = Registry.GetRequestsForCharacter(TestSenderId); Assert.AreEqual(0, requests.Count()); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/FriendService/FriendServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Services.FriendService; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.FriendService { [TestClass] public class FriendServiceTests { private static readonly ILogger<NosCore.GameObject.Services.FriendService.FriendService> Logger = new Mock<ILogger<NosCore.GameObject.Services.FriendService.FriendService>>().Object; private IFriendService Service = null!; private IFriendRequestRegistry FriendRequestHolder = null!; private Mock<IPubSubHub> PubSubHub = null!; private Mock<IChannelHub> ChannelHub = null!; private long CharacterId; private long TargetCharacterId; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); PubSubHub = new Mock<IPubSubHub>(); ChannelHub = new Mock<IChannelHub>(); FriendRequestHolder = new FriendRequestRegistry(); ChannelHub.Setup(s => s.GetCommunicationChannels()) .ReturnsAsync(new List<ChannelInfo> { new ChannelInfo { Type = ServerType.WorldServer, Id = 1 } }); CharacterId = 1; TargetCharacterId = 2; Service = new GameObject.Services.FriendService.FriendService( Logger, TestHelpers.Instance.CharacterRelationDao, TestHelpers.Instance.CharacterDao, FriendRequestHolder, PubSubHub.Object, ChannelHub.Object, TestHelpers.Instance.LogLanguageLocalizer); } [TestMethod] public async Task AddingFriendWithoutRequestShouldSendRequest() { await new Spec("Adding friend without request should send request") .GivenAsync(BothPlayersAreOnlineSameChannel) .WhenAsync(AddingFriendWithoutExistingRequest) .Then(ResultShouldBeFriendRequestSent) .ExecuteAsync(); } [TestMethod] public async Task AcceptingFriendRequestShouldCreateMutualRelation() { await new Spec("Accepting friend request should create mutual relation") .GivenAsync(BothPlayersAreOnlineSameChannel) .And(FriendRequestExists) .WhenAsync(AcceptingFriendRequest) .ThenAsync(TwoFriendRelationsShouldExist) .ExecuteAsync(); } [TestMethod] public async Task RejectingFriendRequestShouldNotCreateRelation() { await new Spec("Rejecting friend request should not create relation") .GivenAsync(BothPlayersAreOnlineSameChannel) .And(FriendRequestExists) .WhenAsync(RejectingFriendRequest) .ThenAsync(NoFriendRelationShouldExist) .ExecuteAsync(); } [TestMethod] public async Task AddingFriendWhenAlreadyFriendsShouldReturnAlreadyFriend() { await new Spec("Adding friend when already friends should return already friend") .GivenAsync(BothPlayersAreOnlineSameChannel) .AndAsync(PlayersAreAlreadyFriends) .And(FriendRequestExists) .WhenAsync(AcceptingFriendRequest) .Then(ResultShouldBeAlreadyFriend) .ExecuteAsync(); } [TestMethod] public async Task AddingBlockedPlayerAsFriendShouldReturnBlacklistBlocked() { await new Spec("Adding blocked player as friend should return blacklist blocked") .GivenAsync(BothPlayersAreOnlineSameChannel) .AndAsync(TargetIsBlocked) .And(FriendRequestExists) .WhenAsync(AcceptingFriendRequest) .Then(ResultShouldBeBlacklistBlocked) .ExecuteAsync(); } [TestMethod] public async Task GetFriendsListShouldReturnFriends() { await new Spec("Get friends list should return friends") .GivenAsync(BothPlayersAreOnlineSameChannel) .AndAsync(PlayersAreAlreadyFriends) .WhenAsync(GettingFriendsList) .Then(ListShouldContainTarget) .ExecuteAsync(); } [TestMethod] public async Task DeletingFriendShouldRemoveBothRelations() { await new Spec("Deleting friend should remove both relations") .GivenAsync(BothPlayersAreOnlineSameChannel) .AndAsync(PlayersAreAlreadyFriends) .WhenAsync(DeletingFriend) .Then(DeleteShouldSucceed) .ThenAsync(NoFriendRelationShouldExist) .ExecuteAsync(); } [TestMethod] public async Task DeletingNonExistentFriendShouldReturnFalse() { await new Spec("Deleting non-existent friend should return false") .WhenAsync(DeletingNonExistentFriend) .Then(DeleteShouldFail) .ExecuteAsync(); } private LanguageKey? AddFriendResult; private List<CharacterRelationStatus>? FriendsList; private bool DeleteResult; private Guid? FriendRelationId; private async Task BothPlayersAreOnlineSameChannel() { var session1 = await TestHelpers.Instance.GenerateSessionAsync(); var session2 = await TestHelpers.Instance.GenerateSessionAsync(); CharacterId = session1.Character.CharacterId; TargetCharacterId = session2.Character.CharacterId; PubSubHub.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber> { new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = CharacterId, FriendRequestBlocked = false } }, new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = TargetCharacterId, FriendRequestBlocked = false } } }); } private void FriendRequestExists() { FriendRequestHolder.RegisterRequest(Guid.NewGuid(), TargetCharacterId, CharacterId); } private async Task PlayersAreAlreadyFriends() { var relation1 = new CharacterRelationDto { CharacterId = CharacterId, RelatedCharacterId = TargetCharacterId, RelationType = CharacterRelationType.Friend }; var inserted = await TestHelpers.Instance.CharacterRelationDao.TryInsertOrUpdateAsync(relation1); FriendRelationId = inserted.CharacterRelationId; var relation2 = new CharacterRelationDto { CharacterId = TargetCharacterId, RelatedCharacterId = CharacterId, RelationType = CharacterRelationType.Friend }; await TestHelpers.Instance.CharacterRelationDao.TryInsertOrUpdateAsync(relation2); } private async Task TargetIsBlocked() { var relation = new CharacterRelationDto { CharacterId = CharacterId, RelatedCharacterId = TargetCharacterId, RelationType = CharacterRelationType.Blocked }; await TestHelpers.Instance.CharacterRelationDao.TryInsertOrUpdateAsync(relation); } private async Task AddingFriendWithoutExistingRequest() { AddFriendResult = await Service.AddFriendAsync(CharacterId, TargetCharacterId, FinsPacketType.Accepted); } private async Task AcceptingFriendRequest() { AddFriendResult = await Service.AddFriendAsync(CharacterId, TargetCharacterId, FinsPacketType.Accepted); } private async Task RejectingFriendRequest() { AddFriendResult = await Service.AddFriendAsync(CharacterId, TargetCharacterId, FinsPacketType.Rejected); } private async Task GettingFriendsList() { FriendsList = await Service.GetFriendsAsync(CharacterId); } private async Task DeletingFriend() { DeleteResult = await Service.DeleteAsync(FriendRelationId!.Value); } private async Task DeletingNonExistentFriend() { DeleteResult = await Service.DeleteAsync(Guid.NewGuid()); } private void ResultShouldBeFriendRequestSent() { Assert.AreEqual(LanguageKey.FRIEND_REQUEST_SENT, AddFriendResult); } private async Task TwoFriendRelationsShouldExist() { var relations = TestHelpers.Instance.CharacterRelationDao .Where(s => s.RelationType == CharacterRelationType.Friend)?.ToList(); Assert.IsNotNull(relations); Assert.AreEqual(2, relations.Count); } private async Task NoFriendRelationShouldExist() { var relations = TestHelpers.Instance.CharacterRelationDao .Where(s => s.RelationType == CharacterRelationType.Friend)?.ToList(); Assert.IsTrue(relations == null || relations.Count == 0); } private void ResultShouldBeAlreadyFriend() { Assert.AreEqual(LanguageKey.ALREADY_FRIEND, AddFriendResult); } private void ResultShouldBeBlacklistBlocked() { Assert.AreEqual(LanguageKey.BLACKLIST_BLOCKED, AddFriendResult); } private void ListShouldContainTarget() { Assert.IsNotNull(FriendsList); Assert.IsTrue(FriendsList.Any(s => s.CharacterId == TargetCharacterId)); } private void DeleteShouldSucceed() { Assert.IsTrue(DeleteResult); } private void DeleteShouldFail() { Assert.IsFalse(DeleteResult); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/GroupService/GroupRegistryTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations.Group; using NosCore.GameObject.Services.GroupService; using NosCore.Networking.SessionGroup; using SpecLight; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.GroupService { [TestClass] public class GroupRegistryTests { private IGroupRegistry Registry = null!; private Mock<ISessionGroupFactory> MockSessionGroupFactory = null!; [TestInitialize] public void Setup() { MockSessionGroupFactory = new Mock<ISessionGroupFactory>(); MockSessionGroupFactory.Setup(f => f.Create()).Returns(new Mock<ISessionGroup>().Object); Registry = new GroupRegistry(); } [TestMethod] public async Task RegisterShouldAddGroup() { await new Spec("Register should add group") .Given(GroupIsCreated) .When(RegisteringGroup) .Then(GroupShouldBeRetrievable) .ExecuteAsync(); } [TestMethod] public async Task GetByIdShouldReturnNullForUnknownId() { await new Spec("Get by ID should return null for unknown ID") .When(GettingUnknownGroup) .Then(ResultShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task UnregisterShouldRemoveGroup() { await new Spec("Unregister should remove group") .Given(GroupIsRegistered) .When(UnregisteringGroup) .Then(GroupShouldNotExist) .ExecuteAsync(); } [TestMethod] public async Task RegisterMemberShouldTrackMembership() { await new Spec("Register member should track membership") .Given(GroupIsRegistered) .When(RegisteringMember) .Then(MemberShouldBeRegistered) .ExecuteAsync(); } [TestMethod] public async Task UnregisterMemberShouldRemoveMembership() { await new Spec("Unregister member should remove membership") .Given(MemberIsRegistered) .When(UnregisteringMember) .Then(MemberShouldNotBeRegistered) .ExecuteAsync(); } [TestMethod] public async Task GetNextGroupIdShouldIncrementEachCall() { await new Spec("Get next group ID should increment each call") .When(GettingNextGroupIds) .Then(IdsShouldBeSequential) .ExecuteAsync(); } private Group? TestGroup; private Group? ResultGroup; private const long TestGroupId = 1; private const long TestCharacterId = 100; private long FirstId; private long SecondId; private void GroupIsCreated() { TestGroup = new Group(GroupType.Group, MockSessionGroupFactory.Object) { GroupId = TestGroupId }; } private void GroupIsRegistered() { GroupIsCreated(); Registry.Register(TestGroup!); } private void MemberIsRegistered() { GroupIsRegistered(); Registry.RegisterMember(TestCharacterId, TestGroupId); } private void RegisteringGroup() { Registry.Register(TestGroup!); } private void GettingUnknownGroup() { ResultGroup = Registry.GetById(9999); } private void UnregisteringGroup() { Registry.Unregister(TestGroupId); } private void RegisteringMember() { Registry.RegisterMember(TestCharacterId, TestGroupId); } private void UnregisteringMember() { Registry.UnregisterMember(TestCharacterId); } private void GettingNextGroupIds() { FirstId = Registry.GetNextGroupId(); SecondId = Registry.GetNextGroupId(); } private void GroupShouldBeRetrievable() { var result = Registry.GetById(TestGroupId); Assert.IsNotNull(result); Assert.AreEqual(TestGroupId, result.GroupId); } private void ResultShouldBeNull() { Assert.IsNull(ResultGroup); } private void GroupShouldNotExist() { var result = Registry.GetById(TestGroupId); Assert.IsNull(result); } private void MemberShouldBeRegistered() { // Member registration is internal, we verify through group being registered Assert.IsNotNull(Registry.GetById(TestGroupId)); } private void MemberShouldNotBeRegistered() { // Member unregistration happened, group should still exist Assert.IsNotNull(Registry.GetById(TestGroupId)); } private void IdsShouldBeSequential() { Assert.AreEqual(1, FirstId); Assert.AreEqual(2, SecondId); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/InventoryService/InventoryServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Core.Configuration; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.Data.StaticEntities; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; using System; using System.Collections.Generic; using System.Linq; namespace NosCore.GameObject.Tests.Services.InventoryService { [TestClass] public class InventoryServiceTests { private GameObject.Services.ItemGenerationService.ItemGenerationService? ItemProvider; private IInventoryService? Inventory { get; set; } [TestInitialize] public void Setup() { var items = new List<ItemDto> { new Item {Type = NoscorePocketType.Main, VNum = 1012}, new Item {Type = NoscorePocketType.Main, VNum = 1013}, new Item {Type = NoscorePocketType.Equipment, VNum = 1, ItemType = ItemType.Weapon}, new Item {Type = NoscorePocketType.Equipment, VNum = 2, ItemType = ItemType.Weapon}, new Item {Type = NoscorePocketType.Equipment, VNum = 912, ItemType = ItemType.Specialist}, new Item {Type = NoscorePocketType.Equipment, VNum = 924, ItemType = ItemType.Fashion} }; ItemProvider = new GameObject.Services.ItemGenerationService.ItemGenerationService(items, NullLoggerFactory.Instance, TestHelpers.Instance.LogLanguageLocalizer); Inventory = new GameObject.Services.InventoryService.InventoryService(items, Options.Create(new WorldConfiguration { BackpackSize = 3, MaxItemAmount = 999 }), NullLogger<NosCore.GameObject.Services.InventoryService.InventoryService>.Instance); } [TestMethod] public void CreatingItemShouldAddToInventory() { new Spec("Creating item should add to inventory") .When(AddingItemToPocket) .Then(ItemShouldBeInInventory) .Execute(); } [TestMethod] public void CreatingItemAndStackingShouldIncreaseAmount() { new Spec("Creating item and stacking should increase amount") .Given(ItemAlreadyInPocket) .When(AddingSameItemAgain) .Then(AmountShouldBeTwo) .Execute(); } [TestMethod] public void CreatingItemWhenSlotIsMaxShouldCreateNewStack() { new Spec("Creating item when slot is max should create new stack") .Given(FullStackInPocket) .When(AddingOneMoreItem) .Then(NewStackShouldHaveOneItem) .Execute(); } [TestMethod] public void CreatingItemWhenSlotFilledShouldSplit() { new Spec("Creating item when slot filled should split") .Given(AlmostFullStackInPocket) .When(AddingItemsThatOverflow) .Then(ShouldSplitIntoTwoStacks) .Execute(); } [TestMethod] public void CreatingItemShouldFillMultipleSlots() { new Spec("Creating item should fill multiple slots") .Given(ThreeAlmostFullStacks) .When(AddingItemsToFillAll) .Then(AllStacksShouldBeFull) .Execute(); } [TestMethod] public void CreatingMoreItemsThanInventoryPlaceShouldFail() { new Spec("Creating more items than inventory place should fail") .Given(ThreeAlmostFullStacks) .When(AddingTooManyItems) .Then(StacksShouldRemainUnchanged) .Execute(); } [TestMethod] public void CreatingStackOnSpecificItemShouldStackCorrectly() { new Spec("Creating stack on specific item should stack correctly") .Given(MixedItemsInInventory) .When(AddingItemThatStacksOnSecond) .Then(SecondStackShouldIncrease) .Execute(); } [TestMethod] public void CreatingDoesntStackOnWrongItem() { new Spec("Creating doesnt stack on wrong item") .Given(MixedItemsInInventory) .When(AddingDifferentItem) .Then(FirstStackShouldRemainUnchanged) .Execute(); } [TestMethod] public void LoadingItemOnNonEmptySlotShouldReturnItem() { new Spec("Loading item on non empty slot should return item") .Given(ItemInSlotZero) .Then(LoadShouldReturnItem) .Execute(); } [TestMethod] public void LoadingNonExistingItemShouldReturnNull() { new Spec("Loading non existing item should return null") .Given(ItemInSlotZero) .Then(LoadSlotOneShouldReturnNull) .Execute(); } [TestMethod] public void DeletingFromTypeAndSlotShouldRemoveItem() { new Spec("Deleting from type and slot should remove item") .Given(TwoStacksInInventory) .When(DeletingFromSlotZero) .Then(OnlyOneItemShouldRemain) .Execute(); } [TestMethod] public void DeletingByIdShouldRemoveItem() { new Spec("Deleting by id should remove item") .Given(TwoStacksInInventoryForDelete) .When(DeletingByInstanceId) .Then(OnlyOneItemShouldRemain) .Execute(); } [TestMethod] public void MovingFullSlotShouldMoveAll() { new Spec("Moving full slot should move all") .Given(FullStackForMove) .When(MovingFullStack) .Then(OriginShouldBeNullDestinationShouldHaveAll) .Execute(); } [TestMethod] public void MovingHalfSlotShouldSplit() { new Spec("Moving half slot should split") .Given(FullStackForMove) .When(MovingHalfStack) .Then(BothShouldHaveItems) .Execute(); } [TestMethod] public void MovingHalfAndMergingShouldCombine() { new Spec("Moving half and merging should combine") .Given(FullStackForMove) .When(MovingHalfThenRemaining) .Then(AllShouldBeInDestination) .Execute(); } [TestMethod] public void MovingWithOverflowShouldCapAtMax() { new Spec("Moving with overflow should cap at max") .Given(TwoStacksForOverflowTest) .When(MovingWithOverflow) .Then(OriginShouldHaveOverflow) .Execute(); } [TestMethod] public void MovingFashionToFashionPocketShouldSucceed() { new Spec("Moving fashion to fashion pocket should succeed") .Given(FashionItemInEquipment) .When(MovingToCostumePocket) .Then(ItemShouldBeInCostume) .Execute(); } [TestMethod] public void MovingFashionToSpecialistPocketShouldFail() { new Spec("Moving fashion to specialist pocket should fail") .Given(FashionItemInEquipment) .When(MovingFashionToSpecialist) .Then(MoveShouldReturnNull) .Execute(); } [TestMethod] public void MovingSpecialistToFashionPocketShouldFail() { new Spec("Moving specialist to fashion pocket should fail") .Given(SpecialistItemInEquipment) .When(MovingSpecialistToCostume) .Then(MoveShouldReturnNull) .Execute(); } [TestMethod] public void MovingSpecialistToSpecialistPocketShouldSucceed() { new Spec("Moving specialist to specialist pocket should succeed") .Given(SpecialistItemInEquipment) .When(MovingToSpecialistPocket) .Then(ItemShouldBeInSpecialist) .Execute(); } [TestMethod] public void MovingWeaponToWearPocketShouldSucceed() { new Spec("Moving weapon to wear pocket should succeed") .Given(WeaponInEquipment) .When(MovingToWear) .Then(ItemShouldBeInWear) .Execute(); } [TestMethod] public void SwappingWithEmptyShouldMove() { new Spec("Swapping with empty should move") .Given(WeaponInEquipment) .When(SwappingToEmptyWearSlot) .Then(WeaponShouldBeInWearSlotOriginEmpty) .Execute(); } [TestMethod] public void SwappingWithNotEmptyShouldExchange() { new Spec("Swapping with not empty should exchange") .Given(TwoWeaponsInEquipment) .When(SwappingWeapons) .Then(WeaponsShouldBeExchanged) .Execute(); } private InventoryItemInstance? ItemForDelete; private InventoryItemInstance? ItemToMove; private InventoryItemInstance? FashionItem; private InventoryItemInstance? SpecialistItem; private InventoryItemInstance? WeaponItem; private InventoryItemInstance? WeaponItem2; private InventoryItemInstance? OriginItem; private InventoryItemInstance? DestItem; private InventoryItemInstance? MovedItem; private void AddingItemToPocket() { Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012), 0)); } private void ItemShouldBeInInventory() { var item = Inventory!.Values.First(); Assert.IsTrue((item.ItemInstance?.Amount == 1) && (item.ItemInstance.ItemVNum == 1012) && (item.Type == NoscorePocketType.Main)); } private void ItemAlreadyInPocket() { Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012), 0)); } private void AddingSameItemAgain() { Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012), 0)); } private void AmountShouldBeTwo() { var item = Inventory!.Values.First(); Assert.IsTrue((item.ItemInstance?.Amount == 2) && (item.ItemInstance.ItemVNum == 1012)); } private void FullStackInPocket() { Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012, 999), 0)); } private void AddingOneMoreItem() { AddedItems = Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012), 0)); } private void NewStackShouldHaveOneItem() { Assert.IsTrue(AddedItems![0].ItemInstance?.Amount == 1); } private void AlmostFullStackInPocket() { Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012, 990), 0)); } private IList<InventoryItemInstance>? AddedItems; private void AddingItemsThatOverflow() { AddedItems = Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012, 29), 0)); } private void ShouldSplitIntoTwoStacks() { Assert.IsTrue((AddedItems![0].ItemInstance?.Amount == 999) && (AddedItems.Last().ItemInstance?.Amount == 20)); } private void ThreeAlmostFullStacks() { Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012, 990), 0), NoscorePocketType.Main, 0); Inventory.AddItemToPocket(InventoryItemInstance.Create(ItemProvider.Create(1012, 990), 0), NoscorePocketType.Main, 1); Inventory.AddItemToPocket(InventoryItemInstance.Create(ItemProvider.Create(1012, 990), 0), NoscorePocketType.Main, 2); } private void AddingItemsToFillAll() { Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012, 27), 0)); } private void AllStacksShouldBeFull() { var items = Inventory!.Values.ToList(); Assert.IsTrue(items.All(item => item.ItemInstance.Amount == 999) && (items.Count == 3)); } private void AddingTooManyItems() { Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012, 99), 0)); } private void StacksShouldRemainUnchanged() { Assert.IsTrue(Inventory!.Values.All(item => item.ItemInstance?.Amount == 990)); } private void MixedItemsInInventory() { Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012, 990), 0)); Inventory.AddItemToPocket(InventoryItemInstance.Create(ItemProvider.Create(1013, 990), 0)); } private void AddingItemThatStacksOnSecond() { Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1013), 0)); } private void SecondStackShouldIncrease() { Assert.IsTrue(Inventory!.Values.First(item => item.Slot == 1).ItemInstance.Amount == 991); } private void AddingDifferentItem() { Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1013, 19), 0)); } private void FirstStackShouldRemainUnchanged() { Assert.IsTrue(Inventory!.Values.First(item => item.Slot == 0).ItemInstance?.Amount == 990); } private void ItemInSlotZero() { Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012, 990), 0)); } private void LoadShouldReturnItem() { var item = Inventory!.LoadBySlotAndType(0, NoscorePocketType.Main); Assert.IsTrue((item!.ItemInstance?.ItemVNum == 1012) && (item.ItemInstance?.Amount == 990)); } private void LoadSlotOneShouldReturnNull() { var item = Inventory!.LoadBySlotAndType(1, NoscorePocketType.Main); Assert.IsNull(item); } private void TwoStacksInInventory() { Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012, 990), 0)); Inventory.AddItemToPocket(InventoryItemInstance.Create(ItemProvider.Create(1012, 990), 0)); } private void DeletingFromSlotZero() { Inventory!.DeleteFromTypeAndSlot(NoscorePocketType.Main, 0); } private void OnlyOneItemShouldRemain() { Assert.IsTrue(Inventory!.Count == 1); } private void TwoStacksInInventoryForDelete() { Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012, 990), 0)); var items = Inventory.AddItemToPocket(InventoryItemInstance.Create(ItemProvider.Create(1012, 990), 0)); ItemForDelete = items![0]; } private void DeletingByInstanceId() { Inventory!.DeleteById(ItemForDelete!.ItemInstanceId); } private void FullStackForMove() { var items = Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012, 999), 0)); ItemToMove = items![0]; } private void MovingFullStack() { Inventory!.TryMoveItem(ItemToMove!.Type, ItemToMove.Slot, 999, 1, out OriginItem, out DestItem); } private void OriginShouldBeNullDestinationShouldHaveAll() { Assert.IsTrue(OriginItem == null); Assert.IsTrue((DestItem?.ItemInstance?.Amount == 999) && (DestItem.Slot == 1)); } private void MovingHalfStack() { Inventory!.TryMoveItem(ItemToMove!.Type, ItemToMove.Slot, 499, 1, out OriginItem, out DestItem); } private void BothShouldHaveItems() { Assert.IsTrue((OriginItem?.ItemInstance?.Amount == 500) && (OriginItem.Slot == 0)); Assert.IsTrue((DestItem?.ItemInstance?.Amount == 499) && (DestItem.Slot == 1)); } private void MovingHalfThenRemaining() { Inventory!.TryMoveItem(ItemToMove!.Type, ItemToMove.Slot, 499, 1, out _, out _); Inventory.TryMoveItem(ItemToMove.Type, 0, 500, 1, out OriginItem, out DestItem); } private void AllShouldBeInDestination() { Assert.IsTrue(OriginItem == null); Assert.IsTrue((DestItem?.ItemInstance?.Amount == 999) && (DestItem.Slot == 1)); } private void TwoStacksForOverflowTest() { var items = Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1012, 999), 0)); ItemToMove = items![0]; Inventory.AddItemToPocket(InventoryItemInstance.Create(ItemProvider.Create(1012, 500), 0)); } private void MovingWithOverflow() { Inventory!.TryMoveItem(ItemToMove!.Type, ItemToMove.Slot, 600, 1, out OriginItem, out DestItem); } private void OriginShouldHaveOverflow() { Assert.IsTrue((OriginItem?.ItemInstance?.Amount == 500) && (OriginItem.Slot == 0)); Assert.IsTrue((DestItem?.ItemInstance?.Amount == 999) && (DestItem.Slot == 1)); } private void FashionItemInEquipment() { var items = Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(924), 0)); FashionItem = items![0]; } private void MovingToCostumePocket() { MovedItem = Inventory!.MoveInPocket(FashionItem!.Slot, FashionItem.Type, NoscorePocketType.Costume); } private void ItemShouldBeInCostume() { Assert.IsTrue(MovedItem?.Type == NoscorePocketType.Costume); } private void MovingFashionToSpecialist() { MovedItem = Inventory!.MoveInPocket(FashionItem!.Slot, FashionItem.Type, NoscorePocketType.Specialist); } private void MoveShouldReturnNull() { Assert.IsNull(MovedItem); } private void SpecialistItemInEquipment() { var items = Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(912), 0)); SpecialistItem = items![0]; } private void MovingSpecialistToCostume() { MovedItem = Inventory!.MoveInPocket(SpecialistItem!.Slot, SpecialistItem.Type, NoscorePocketType.Costume); } private void MovingToSpecialistPocket() { MovedItem = Inventory!.MoveInPocket(SpecialistItem!.Slot, SpecialistItem.Type, NoscorePocketType.Specialist); } private void ItemShouldBeInSpecialist() { Assert.IsTrue(MovedItem?.Type == NoscorePocketType.Specialist); } private void WeaponInEquipment() { var items = Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(1), 0)); WeaponItem = items![0]; } private void MovingToWear() { MovedItem = Inventory!.MoveInPocket(WeaponItem!.Slot, WeaponItem.Type, NoscorePocketType.Wear); } private void ItemShouldBeInWear() { Assert.IsTrue(MovedItem?.Type == NoscorePocketType.Wear); } private void SwappingToEmptyWearSlot() { MovedItem = Inventory!.MoveInPocket(WeaponItem!.Slot, WeaponItem.Type, NoscorePocketType.Wear, (short)EquipmentType.MainWeapon, true); } private void WeaponShouldBeInWearSlotOriginEmpty() { Assert.IsTrue((MovedItem?.Type == NoscorePocketType.Wear) && (Inventory!.LoadBySlotAndType(0, NoscorePocketType.Equipment) == null)); } private void TwoWeaponsInEquipment() { var items = Inventory!.AddItemToPocket(InventoryItemInstance.Create(ItemProvider!.Create(2), 0)); WeaponItem = items![0]; var items2 = Inventory.AddItemToPocket(InventoryItemInstance.Create(ItemProvider.Create(1), 0)); WeaponItem2 = items2![0]; } private void SwappingWeapons() { MovedItem = Inventory!.MoveInPocket(WeaponItem!.Slot, WeaponItem.Type, NoscorePocketType.Wear, (short)EquipmentType.MainWeapon, true); MovedItem = Inventory.MoveInPocket(WeaponItem2!.Slot, WeaponItem2.Type, NoscorePocketType.Wear, (short)EquipmentType.MainWeapon, true); } private void WeaponsShouldBeExchanged() { Assert.IsTrue((WeaponItem?.Type == NoscorePocketType.Equipment) && (WeaponItem.Slot == 1) && (MovedItem?.Type == NoscorePocketType.Wear) && (MovedItem.Slot == (short)EquipmentType.MainWeapon)); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/LoginService/LoginServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core.Configuration; using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Services.LoginService; using NosCore.Networking.SessionRef; using NosCore.Packets.ClientPackets.Login; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.LoginService { [TestClass] public class LoginServiceTests { private ILoginService Service = null!; private Mock<IAuthHub> AuthHub = null!; private Mock<IPubSubHub> PubSubHub = null!; private Mock<IChannelHub> ChannelHub = null!; private SessionRefHolder SessionRefHolder = null!; private IOptions<LoginConfiguration> LoginConfig = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); SessionRefHolder = new SessionRefHolder(); AuthHub = new Mock<IAuthHub>(); PubSubHub = new Mock<IPubSubHub>(); ChannelHub = new Mock<IChannelHub>(); LoginConfig = Options.Create(new LoginConfiguration()); Service = new GameObject.Services.LoginService.LoginService( LoginConfig, TestHelpers.Instance.AccountDao, AuthHub.Object, PubSubHub.Object, ChannelHub.Object, TestHelpers.Instance.CharacterDao, SessionRefHolder); } [TestMethod] public async Task ServiceCanBeConstructed() { await new Spec("Service can be constructed") .Then(ServiceShouldNotBeNull) .ExecuteAsync(); } [TestMethod] public async Task ServiceImplementsInterface() { await new Spec("Service implements interface") .Then(ServiceShouldImplementILoginService) .ExecuteAsync(); } [TestMethod] public async Task LoginConfigCanBeSet() { await new Spec("Login config can be set") .Given(LoginConfigWithClientVersion) .Then(ConfigShouldHaveClientVersion) .ExecuteAsync(); } private void ServiceShouldNotBeNull() { Assert.IsNotNull(Service); } private void ServiceShouldImplementILoginService() { Assert.IsInstanceOfType(Service, typeof(ILoginService)); } private void LoginConfigWithClientVersion() { LoginConfig = Options.Create(new LoginConfiguration { ClientVersion = new ClientVersionSubPacket { Major = 1 }, Md5String = "testmd5" }); } private void ConfigShouldHaveClientVersion() { Assert.IsNotNull(LoginConfig.Value.ClientVersion); Assert.AreEqual(1, LoginConfig.Value.ClientVersion.Major); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/MailService/MailServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.StaticEntities; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.MailService; using NosCore.Tests.Shared; using SpecLight; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Threading.Tasks; using MailData = NosCore.GameObject.InterChannelCommunication.Messages.MailData; namespace NosCore.GameObject.Tests.Services.MailService { [TestClass] public class MailServiceTests { private IMailService Service = null!; private Mock<IDao<MailDto, long>> MailDao = null!; private Mock<IDao<IItemInstanceDto?, Guid>> ItemInstanceDao = null!; private Mock<IPubSubHub> PubSubHub = null!; private Mock<IChannelHub> ChannelHub = null!; private Mock<IItemGenerationService> ItemProvider = null!; private Mock<IParcelRegistry> ParcelRegistry = null!; private Mock<IDao<CharacterDto, long>> CharacterDao = null!; private List<ItemDto> Items = null!; private long CharacterId = 1; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); MailDao = new Mock<IDao<MailDto, long>>(); ItemInstanceDao = new Mock<IDao<IItemInstanceDto?, Guid>>(); PubSubHub = new Mock<IPubSubHub>(); ChannelHub = new Mock<IChannelHub>(); ItemProvider = new Mock<IItemGenerationService>(); ParcelRegistry = new Mock<IParcelRegistry>(); CharacterDao = new Mock<IDao<CharacterDto, long>>(); Items = new List<ItemDto>(); Service = new GameObject.Services.MailService.MailService( MailDao.Object, ItemInstanceDao.Object, PubSubHub.Object, ChannelHub.Object, Items, ItemProvider.Object, ParcelRegistry.Object, CharacterDao.Object); } [TestMethod] public async Task GetMailsShouldReturnEmptyListWhenNoMails() { await new Spec("Get mails should return empty list when no mails") .Given(NoMailsExist) .When(GettingAllMails) .Then(ResultShouldBeEmptyList) .ExecuteAsync(); } [TestMethod] public async Task GetMailsShouldReturnMailsWhenMailsExist() { await new Spec("Get mails should return mails when mails exist") .Given(MailsExist) .When(GettingAllMails) .Then(ResultShouldContainMails) .ExecuteAsync(); } [TestMethod] public async Task GetMailsShouldReturnSpecificMailWhenIdProvided() { await new Spec("Get mails should return specific mail when ID provided") .Given(MailsExist) .And(SpecificMailExists) .When(GettingSpecificMail) .Then(ResultShouldContainOneMail) .ExecuteAsync(); } [TestMethod] public async Task ServiceCanBeConstructed() { await new Spec("Service can be constructed") .Then(ServiceShouldNotBeNull) .ExecuteAsync(); } private List<MailData>? MailResult; private void NoMailsExist() { ParcelRegistry.Setup(s => s.GetMails(CharacterId, false)) .Returns(new ConcurrentDictionary<long, MailData>()); ParcelRegistry.Setup(s => s.GetMails(CharacterId, true)) .Returns(new ConcurrentDictionary<long, MailData>()); } private void MailsExist() { var mails = new ConcurrentDictionary<long, MailData>(); mails.TryAdd(1, new MailData { MailDto = new MailDto { MailId = 1 } }); mails.TryAdd(2, new MailData { MailDto = new MailDto { MailId = 2 } }); ParcelRegistry.Setup(s => s.GetMails(CharacterId, false)) .Returns(mails); ParcelRegistry.Setup(s => s.GetMails(CharacterId, true)) .Returns(new ConcurrentDictionary<long, MailData>()); } private void SpecificMailExists() { ParcelRegistry.Setup(s => s.GetMail(CharacterId, false, 1)) .Returns(new MailData { MailDto = new MailDto { MailId = 1 } }); } private void GettingAllMails() { MailResult = Service.GetMails(-1, CharacterId, false); } private void GettingSpecificMail() { MailResult = Service.GetMails(1, CharacterId, false); } private void ResultShouldBeEmptyList() { Assert.IsNotNull(MailResult); Assert.AreEqual(0, MailResult.Count); } private void ResultShouldContainMails() { Assert.IsNotNull(MailResult); Assert.AreEqual(2, MailResult.Count); } private void ResultShouldContainOneMail() { Assert.IsNotNull(MailResult); Assert.AreEqual(1, MailResult.Count); } private void ServiceShouldNotBeNull() { Assert.IsNotNull(Service); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/MapChangeService/MapChangeServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MapChangeService; using NosCore.GameObject.Services.MinilandService; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.MapChangeService { [TestClass] public class MapChangeServiceTests { private static readonly ILogger<NosCore.GameObject.Services.MapChangeService.MapChangeService> Logger = new Mock<ILogger<NosCore.GameObject.Services.MapChangeService.MapChangeService>>().Object; private IMapChangeService Service = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(0)!; var minilandService = new Mock<IMinilandService>(); minilandService.Setup(s => s.GetMinilandPortals(It.IsAny<long>())) .Returns(new System.Collections.Generic.List<Map.Portal>()); Service = new GameObject.Services.MapChangeService.MapChangeService( new Mock<IExperienceService>().Object, new Mock<IJobExperienceService>().Object, new Mock<IHeroExperienceService>().Object, TestHelpers.Instance.MapInstanceAccessorService, TestHelpers.Instance.Clock, TestHelpers.Instance.LogLanguageLocalizer, minilandService.Object, Logger, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.GameLanguageLocalizer, TestHelpers.Instance.SessionRegistry, new Mock<Wolverine.IMessageBus>().Object); } [TestMethod] public async Task ChangingToNonExistentMapShouldNotChangeMapInstance() { await new Spec("Changing to non-existent map should not change map instance") .Given(CharacterIsOnMap) .WhenAsync(ChangingToNonExistentMap) .Then(MapInstanceShouldNotChange) .ExecuteAsync(); } [TestMethod] public async Task ChangingMapWithNullCoordinatesShouldNotCrash() { await new Spec("Changing map with null coordinates should not crash") .WhenAsync(ChangingMapWithNullCoordinates) .Then(NoExceptionShouldBeThrown) .ExecuteAsync(); } [TestMethod] public async Task ServiceCanBeConstructed() { await new Spec("Service can be constructed") .Then(ServiceShouldNotBeNull) .ExecuteAsync(); } [TestMethod] public async Task MapAccessorReturnsValidMaps() { await new Spec("Map accessor returns valid maps") .Then(Map0ShouldExist) .And(Map1ShouldExist) .ExecuteAsync(); } [TestMethod] public async Task ChangingToBaseMapInstanceUpdatesMapId() { await new Spec("Changing to a BaseMap instance overwrites character.MapId with the new map id") .Given(CharacterIsOnMap) .And(CharacterMapIdIsPinnedTo_, (short)42) .WhenAsync(ChangingToBaseMap1) .Then(CharacterMapIdShouldBe_, (short)1) .ExecuteAsync(); } [TestMethod] public async Task ChangingToNonBaseInstanceKeepsMapIdUnchanged() { await new Spec("Changing to a non-base instance leaves character.MapId at its previous base-map value") .Given(CharacterIsOnMap) .And(CharacterMapIdIsPinnedTo_, (short)42) .WhenAsync(ChangingToMinilandInstance) .Then(CharacterMapIdShouldBe_, (short)42) .ExecuteAsync(); } private void CharacterMapIdIsPinnedTo_(short mapId) { Session.Character.MapId = mapId; } private async Task ChangingToBaseMap1() { var map1 = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; await Service.ChangeMapInstanceAsync(Session, map1.MapInstanceId, 10, 10); } private async Task ChangingToMinilandInstance() { await Service.ChangeMapInstanceAsync(Session, TestHelpers.Instance.MinilandId, 5, 8); } private void CharacterMapIdShouldBe_(short expected) { Assert.AreEqual(expected, Session.Character.MapId); } private short OriginalMapId; private bool OperationCompleted; private void CharacterIsOnMap() { OriginalMapId = Session.Character.MapInstance.Map.MapId; } private async Task ChangingToNonExistentMap() { await Service.ChangeMapAsync(Session, 9999, 10, 20); OperationCompleted = true; } private async Task ChangingMapWithNullCoordinates() { await Service.ChangeMapAsync(Session, null, null, null); OperationCompleted = true; } private void MapInstanceShouldNotChange() { Assert.AreEqual(OriginalMapId, Session.Character.MapInstance.Map.MapId); } private void NoExceptionShouldBeThrown() { Assert.IsTrue(OperationCompleted); } private void ServiceShouldNotBeNull() { Assert.IsNotNull(Service); } private void Map0ShouldExist() { var map0 = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(0); Assert.IsNotNull(map0); } private void Map1ShouldExist() { var map1 = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1); Assert.IsNotNull(map1); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/MapInstanceAccessService/MapInstanceAccessServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Services.MapInstanceAccessService; using NosCore.Tests.Shared; using SpecLight; using System; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.MapInstanceAccessService { [TestClass] public class MapInstanceAccessServiceTests { private IMapInstanceAccessorService Service = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Service = TestHelpers.Instance.MapInstanceAccessorService; } [TestMethod] public async Task GetBaseMapByIdShouldReturnMapForValidId() { await new Spec("Get base map by ID should return map for valid ID") .When(GettingMapById0) .Then(MapShouldNotBeNull) .And(MapIdShouldBe0) .ExecuteAsync(); } [TestMethod] public async Task GetBaseMapByIdShouldReturnNullForInvalidId() { await new Spec("Get base map by ID should return null for invalid ID") .When(GettingMapByInvalidId) .Then(MapShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task GetMapInstanceShouldReturnNullForInvalidGuid() { await new Spec("Get map instance should return null for invalid GUID") .When(GettingMapInstanceByInvalidGuid) .Then(MapInstanceShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task GetMapInstanceShouldReturnMapForValidGuid() { await new Spec("Get map instance should return map for valid GUID") .Given(MapInstanceIdIsKnown) .When(GettingMapInstanceByValidGuid) .Then(MapInstanceShouldNotBeNull) .ExecuteAsync(); } private GameObject.Services.MapInstanceGenerationService.MapInstance? ResultMap; private Guid KnownMapInstanceId; private void GettingMapById0() { ResultMap = Service.GetBaseMapById(0); } private void GettingMapByInvalidId() { ResultMap = Service.GetBaseMapById(9999); } private void GettingMapInstanceByInvalidGuid() { ResultMap = Service.GetMapInstance(Guid.NewGuid()); } private void MapInstanceIdIsKnown() { var map = Service.GetBaseMapById(0); if (map != null) { KnownMapInstanceId = map.MapInstanceId; } } private void GettingMapInstanceByValidGuid() { ResultMap = Service.GetMapInstance(KnownMapInstanceId); } private void MapShouldNotBeNull() { Assert.IsNotNull(ResultMap); } private void MapShouldBeNull() { Assert.IsNull(ResultMap); } private void MapIdShouldBe0() { Assert.AreEqual((short)0, ResultMap?.Map.MapId); } private void MapInstanceShouldBeNull() { Assert.IsNull(ResultMap); } private void MapInstanceShouldNotBeNull() { Assert.IsNotNull(ResultMap); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/MapInstanceGenerationService/MapInstanceRegistryTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Services.MapInstanceGenerationService; using SpecLight; using System; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.MapInstanceGenerationService { [TestClass] public class MapInstanceRegistryTests { private IMapInstanceRegistry Registry = null!; [TestInitialize] public void Setup() { Registry = new MapInstanceRegistry(); } [TestMethod] public async Task GetByIdShouldReturnNullForUnknownId() { await new Spec("Get by ID should return null for unknown ID") .When(GettingUnknownMapInstance) .Then(ResultShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task GetBaseMapByIdShouldReturnNullForUnknownMapId() { await new Spec("Get base map by ID should return null for unknown map ID") .When(GettingUnknownBaseMap) .Then(ResultShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task GetAllShouldReturnEmptyForEmptyRegistry() { await new Spec("Get all should return empty for empty registry") .When(GettingAllMapInstances) .Then(CountShouldBeZero) .ExecuteAsync(); } private MapInstance? ResultMapInstance; private int MapInstanceCount; private void GettingUnknownMapInstance() { ResultMapInstance = Registry.GetById(Guid.NewGuid()); } private void GettingUnknownBaseMap() { ResultMapInstance = Registry.GetBaseMapById(9999); } private void GettingAllMapInstances() { MapInstanceCount = Registry.GetAll().Count(); } private void ResultShouldBeNull() { Assert.IsNull(ResultMapInstance); } private void CountShouldBeZero() { Assert.AreEqual(0, MapInstanceCount); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/MinilandService/MinilandRegistryTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Services.MinilandService; using SpecLight; using System; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.MinilandService { [TestClass] public class MinilandRegistryTests { private IMinilandRegistry Registry = null!; [TestInitialize] public void Setup() { Registry = new MinilandRegistry(); } [TestMethod] public async Task RegisterShouldAddMiniland() { await new Spec("Register should add miniland") .Given(MinilandIsCreated) .When(RegisteringMiniland) .Then(MinilandShouldBeRetrievable) .ExecuteAsync(); } [TestMethod] public async Task GetByCharacterIdShouldReturnNullForUnknownCharacter() { await new Spec("Get by character ID should return null for unknown character") .When(GettingUnknownMiniland) .Then(ResultShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task GetByMapInstanceIdShouldReturnMiniland() { await new Spec("Get by map instance ID should return miniland") .Given(MinilandIsRegistered) .When(GettingByMapInstanceId) .Then(MinilandShouldBeFound) .ExecuteAsync(); } [TestMethod] public async Task GetByMapInstanceIdShouldReturnNullForUnknownId() { await new Spec("Get by map instance ID should return null for unknown ID") .When(GettingByUnknownMapInstanceId) .Then(ResultShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task UnregisterShouldRemoveMiniland() { await new Spec("Unregister should remove miniland") .Given(MinilandIsRegistered) .When(UnregisteringMiniland) .Then(UnregisterShouldSucceed) .And(MinilandShouldNotExist) .ExecuteAsync(); } [TestMethod] public async Task ContainsCharacterShouldReturnTrueWhenExists() { await new Spec("Contains character should return true when exists") .Given(MinilandIsRegistered) .When(CheckingContainsCharacter) .Then(ContainsShouldBeTrue) .ExecuteAsync(); } [TestMethod] public async Task ContainsCharacterShouldReturnFalseWhenNotExists() { await new Spec("Contains character should return false when not exists") .When(CheckingContainsUnknownCharacter) .Then(ContainsShouldBeFalse) .ExecuteAsync(); } [TestMethod] public async Task GetAllShouldReturnAllMinilands() { await new Spec("Get all should return all minilands") .Given(MultipleMinilandsAreRegistered) .When(GettingAllMinilands) .Then(AllMinilandsShouldBeReturned) .ExecuteAsync(); } private Miniland? TestMiniland; private Miniland? ResultMiniland; private Miniland? UnregisteredMiniland; private bool UnregisterResult; private bool ContainsResult; private int MinilandCount; private readonly Guid TestMapInstanceId = Guid.NewGuid(); private const long TestCharacterId = 1; private const long TestCharacterId2 = 2; private void MinilandIsCreated() { TestMiniland = new Miniland { MapInstanceId = TestMapInstanceId, OwnerId = TestCharacterId }; } private void MinilandIsRegistered() { MinilandIsCreated(); Registry.Register(TestCharacterId, TestMiniland!); } private void MultipleMinilandsAreRegistered() { TestMiniland = new Miniland { MapInstanceId = TestMapInstanceId, OwnerId = TestCharacterId }; var miniland2 = new Miniland { MapInstanceId = Guid.NewGuid(), OwnerId = TestCharacterId2 }; Registry.Register(TestCharacterId, TestMiniland); Registry.Register(TestCharacterId2, miniland2); } private void RegisteringMiniland() { Registry.Register(TestCharacterId, TestMiniland!); } private void GettingUnknownMiniland() { ResultMiniland = Registry.GetByCharacterId(9999); } private void GettingByMapInstanceId() { ResultMiniland = Registry.GetByMapInstanceId(TestMapInstanceId); } private void GettingByUnknownMapInstanceId() { ResultMiniland = Registry.GetByMapInstanceId(Guid.NewGuid()); } private void UnregisteringMiniland() { UnregisterResult = Registry.Unregister(TestCharacterId, out UnregisteredMiniland); } private void CheckingContainsCharacter() { ContainsResult = Registry.ContainsCharacter(TestCharacterId); } private void CheckingContainsUnknownCharacter() { ContainsResult = Registry.ContainsCharacter(9999); } private void GettingAllMinilands() { MinilandCount = Registry.GetAll().Count(); } private void MinilandShouldBeRetrievable() { var result = Registry.GetByCharacterId(TestCharacterId); Assert.IsNotNull(result); Assert.AreEqual(TestMapInstanceId, result.MapInstanceId); } private void ResultShouldBeNull() { Assert.IsNull(ResultMiniland); } private void MinilandShouldBeFound() { Assert.IsNotNull(ResultMiniland); Assert.AreEqual(TestCharacterId, ResultMiniland.OwnerId); } private void UnregisterShouldSucceed() { Assert.IsTrue(UnregisterResult); Assert.IsNotNull(UnregisteredMiniland); } private void MinilandShouldNotExist() { var result = Registry.GetByCharacterId(TestCharacterId); Assert.IsNull(result); } private void ContainsShouldBeTrue() { Assert.IsTrue(ContainsResult); } private void ContainsShouldBeFalse() { Assert.IsFalse(ContainsResult); } private void AllMinilandsShouldBeReturned() { Assert.AreEqual(2, MinilandCount); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/MinilandService/MinilandServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Map; using NosCore.Data.StaticEntities; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MapInstanceAccessService; using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.GameObject.Services.MinilandService; using NosCore.Packets.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.MinilandService { [TestClass] public class MinilandServiceTests { private IMinilandService Service = null!; private Mock<IFriendHub> FriendHttpClient = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); FriendHttpClient = new Mock<IFriendHub>(); FriendHttpClient.Setup(s => s.GetFriendsAsync(It.IsAny<long>())) .ReturnsAsync(new List<CharacterRelationStatus>()); await TestHelpers.Instance.MinilandDao.TryInsertOrUpdateAsync(new MinilandDto { OwnerId = Session.Character.CharacterId }); Service = new GameObject.Services.MinilandService.MinilandService( TestHelpers.Instance.MapInstanceAccessorService, FriendHttpClient.Object, new List<MapDto> { new NosCore.GameObject.Map.Map { MapId = 20001, NameI18NKey = "miniland", Data = new byte[] { } } }, TestHelpers.Instance.MinilandDao, TestHelpers.Instance.MinilandObjectDao, new MinilandRegistry()); } [TestMethod] public async Task InitializingMinilandShouldSucceed() { await new Spec("Initializing miniland should succeed") .WhenAsync(InitializingMiniland) .Then(MinilandShouldBeInitialized) .ExecuteAsync(); } [TestMethod] public async Task GettingMinilandShouldReturnMiniland() { await new Spec("Getting miniland should return miniland") .GivenAsync(MinilandIsInitialized) .When(GettingMiniland) .Then(MinilandShouldBeReturned) .ExecuteAsync(); } [TestMethod] public async Task GettingNonExistentMinilandShouldThrow() { await new Spec("Getting non-existent miniland should throw") .When(GettingNonExistentMiniland).Catch(out var exception) .Then(ShouldThrowInvalidOperationException_, exception) .ExecuteAsync(); } [TestMethod] public async Task SettingMinilandStateToOpenShouldSucceed() { await new Spec("Setting miniland state to open should succeed") .GivenAsync(MinilandIsInitialized) .WhenAsync(SettingStateToOpen) .Then(StateShouldBeOpen) .ExecuteAsync(); } [TestMethod] public async Task SettingMinilandStateToPrivateShouldSucceed() { await new Spec("Setting miniland state to private should succeed") .GivenAsync(MinilandIsInitialized) .WhenAsync(SettingStateToPrivate) .Then(StateShouldBePrivate) .ExecuteAsync(); } [TestMethod] public async Task SettingMinilandStateToLockShouldSucceed() { await new Spec("Setting miniland state to lock should succeed") .GivenAsync(MinilandIsInitialized) .WhenAsync(SettingStateToLock) .Then(StateShouldBeLock) .ExecuteAsync(); } [TestMethod] public async Task DeletingMinilandShouldSucceed() { await new Spec("Deleting miniland should succeed") .GivenAsync(MinilandIsInitialized) .WhenAsync(DeletingMiniland) .Then(DeleteShouldSucceed) .ExecuteAsync(); } [TestMethod] public async Task DeletingNonExistentMinilandShouldReturnNull() { await new Spec("Deleting non-existent miniland should return null") .WhenAsync(DeletingNonExistentMiniland) .Then(DeleteShouldReturnNull) .ExecuteAsync(); } [TestMethod] public async Task GetMinilandPortalsReturnsNosvilleAndOldNosvilleEntries() { await new Spec("GetMinilandPortals returns two entries: Nosville(1)->miniland and OldNosville(145)->miniland") .GivenAsync(MinilandAndBothBaseMapsAreRegisteredOnIsolatedService) .When(RequestingMinilandPortals) .Then(PortalListShouldHaveCount_, 2) .And(NosvillePortalIsWiredCorrectly) .And(OldNosvillePortalIsWiredCorrectly) .ExecuteAsync(); } private Mock<IMapInstanceAccessorService>? _isolatedAccessor; private IMinilandService? _isolatedService; private MapInstance? _nosvilleInstance; private MapInstance? _oldNosvilleInstance; private MapInstance? _minilandInstance; private List<NosCore.GameObject.Map.Portal>? _returnedPortals; private async Task MinilandAndBothBaseMapsAreRegisteredOnIsolatedService() { var mapNosville = new NosCore.GameObject.Map.Map { MapId = 1, NameI18NKey = "nosville", Data = new byte[] { } }; var mapOldNosville = new NosCore.GameObject.Map.Map { MapId = 145, NameI18NKey = "oldnosville", Data = new byte[] { } }; var mapMiniland = new NosCore.GameObject.Map.Map { MapId = 20001, NameI18NKey = "miniland", Data = new byte[] { } }; var clock = TestHelpers.Instance.Clock; var logger = new Mock<ILogger<MapInstance>>().Object; var sessionGroupFactory = TestHelpers.Instance.SessionGroupFactory; var mapItemProvider = TestHelpers.Instance.MapItemProvider!; var mapChangeService = new Mock<GameObject.Services.MapChangeService.IMapChangeService>().Object; _nosvilleInstance = new MapInstance(mapNosville, Guid.NewGuid(), false, MapInstanceType.BaseMapInstance, mapItemProvider, logger, clock, mapChangeService, sessionGroupFactory, TestHelpers.Instance.SessionRegistry, TestHelpers.Instance.DistanceCalculator); _oldNosvilleInstance = new MapInstance(mapOldNosville, Guid.NewGuid(), false, MapInstanceType.BaseMapInstance, mapItemProvider, logger, clock, mapChangeService, sessionGroupFactory, TestHelpers.Instance.SessionRegistry, TestHelpers.Instance.DistanceCalculator); _minilandInstance = new MapInstance(mapMiniland, Guid.NewGuid(), false, MapInstanceType.NormalInstance, mapItemProvider, logger, clock, mapChangeService, sessionGroupFactory, TestHelpers.Instance.SessionRegistry, TestHelpers.Instance.DistanceCalculator); _isolatedAccessor = new Mock<IMapInstanceAccessorService>(); _isolatedAccessor.Setup(a => a.GetBaseMapById(1)).Returns(_nosvilleInstance); _isolatedAccessor.Setup(a => a.GetBaseMapById(145)).Returns(_oldNosvilleInstance); _isolatedAccessor.Setup(a => a.GetMapInstance(_minilandInstance.MapInstanceId)).Returns(_minilandInstance); var registry = new MinilandRegistry(); registry.Register(Session.Character.CharacterId, new Miniland { MinilandId = Guid.NewGuid(), OwnerId = Session.Character.CharacterId, MapInstanceId = _minilandInstance.MapInstanceId, }); _isolatedService = new GameObject.Services.MinilandService.MinilandService( _isolatedAccessor.Object, FriendHttpClient.Object, new List<MapDto> { mapMiniland }, TestHelpers.Instance.MinilandDao, TestHelpers.Instance.MinilandObjectDao, registry); await Task.CompletedTask; } private void RequestingMinilandPortals() { _returnedPortals = _isolatedService!.GetMinilandPortals(Session.Character.CharacterId); } private void PortalListShouldHaveCount_(int expected) => Assert.AreEqual(expected, _returnedPortals!.Count); private void NosvillePortalIsWiredCorrectly() { var p = _returnedPortals!.FirstOrDefault(x => x.SourceMapId == 1); Assert.IsNotNull(p); Assert.AreEqual(48, p.SourceX); Assert.AreEqual(132, p.SourceY); Assert.AreEqual(_nosvilleInstance!.MapInstanceId, p.SourceMapInstanceId); Assert.AreEqual(_minilandInstance!.MapInstanceId, p.DestinationMapInstanceId); Assert.AreEqual(20001, p.DestinationMapId); } private void OldNosvillePortalIsWiredCorrectly() { var p = _returnedPortals!.FirstOrDefault(x => x.SourceMapId == 145); Assert.IsNotNull(p); Assert.AreEqual(9, p.SourceX); Assert.AreEqual(171, p.SourceY); Assert.AreEqual(_oldNosvilleInstance!.MapInstanceId, p.SourceMapInstanceId); Assert.AreEqual(_minilandInstance!.MapInstanceId, p.DestinationMapInstanceId); Assert.AreEqual(20001, p.DestinationMapId); } private Miniland? InitializedMiniland; private Miniland? RetrievedMiniland; private Guid? DeleteResult; private async Task InitializingMiniland() { InitializedMiniland = await Service.InitializeAsync(Session.Character, TestHelpers.Instance.MapInstanceGeneratorService); } private async Task MinilandIsInitialized() { InitializedMiniland = await Service.InitializeAsync(Session.Character, TestHelpers.Instance.MapInstanceGeneratorService); } private void GettingMiniland() { RetrievedMiniland = Service.GetMiniland(Session.Character.CharacterId); } private void GettingNonExistentMiniland() { Service.GetMiniland(99999); } private async Task SettingStateToOpen() { await Service.SetStateAsync(Session.Character.CharacterId, MinilandState.Open); } private async Task SettingStateToPrivate() { await Service.SetStateAsync(Session.Character.CharacterId, MinilandState.Private); } private async Task SettingStateToLock() { await Service.SetStateAsync(Session.Character.CharacterId, MinilandState.Lock); } private async Task DeletingMiniland() { DeleteResult = await Service.DeleteMinilandAsync(Session.Character.CharacterId); } private async Task DeletingNonExistentMiniland() { DeleteResult = await Service.DeleteMinilandAsync(99999); } private void MinilandShouldBeInitialized() { Assert.IsNotNull(InitializedMiniland); Assert.AreNotEqual(Guid.Empty, InitializedMiniland.MapInstanceId); } private void MinilandShouldBeReturned() { Assert.IsNotNull(RetrievedMiniland); Assert.AreEqual(InitializedMiniland!.MapInstanceId, RetrievedMiniland.MapInstanceId); } private void ShouldThrowInvalidOperationException_(Lazy<Exception> exception) { Assert.IsInstanceOfType(exception.Value, typeof(InvalidOperationException)); } private void StateShouldBeOpen() { var miniland = Service.GetMiniland(Session.Character.CharacterId); Assert.AreEqual(MinilandState.Open, miniland.State); } private void StateShouldBePrivate() { var miniland = Service.GetMiniland(Session.Character.CharacterId); Assert.AreEqual(MinilandState.Private, miniland.State); } private void StateShouldBeLock() { var miniland = Service.GetMiniland(Session.Character.CharacterId); Assert.AreEqual(MinilandState.Lock, miniland.State); } private void DeleteShouldSucceed() { Assert.IsNotNull(DeleteResult); } private void DeleteShouldReturnNull() { Assert.IsNull(DeleteResult); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/PacketHandlerService/PacketHandlerRegistryTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.PacketHandlerService; using NosCore.Packets.Attributes; using NosCore.Packets.ClientPackets.Chat; using SpecLight; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.PacketHandlerService { [TestClass] public class PacketHandlerRegistryTests { private IPacketHandlerRegistry Registry = null!; [TestInitialize] public void Setup() { Registry = new PacketHandlerRegistry(new List<IPacketHandler>()); } [TestMethod] public async Task GetHandlerShouldReturnNullForUnregisteredPacket() { await new Spec("Get handler should return null for unregistered packet") .When(GettingUnregisteredHandler) .Then(HandlerShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task GetPacketAttributeShouldReturnNullForUnregisteredPacket() { await new Spec("Get packet attribute should return null for unregistered packet") .When(GettingUnregisteredAttribute) .Then(AttributeShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task RegistryWithHandlersShouldRegisterHandlers() { await new Spec("Registry with handlers should register handlers") .Given(RegistryWithHandlersIsCreated) .When(GettingRegisteredHandler) .Then(HandlerShouldNotBeNull) .ExecuteAsync(); } [TestMethod] public async Task RegistryWithHandlersShouldRegisterAttributes() { await new Spec("Registry with handlers should register attributes") .Given(RegistryWithHandlersIsCreated) .When(GettingRegisteredAttribute) .Then(AttributeShouldNotBeNull) .ExecuteAsync(); } private IPacketHandler? ResultHandler; private PacketHeaderAttribute? ResultAttribute; private class TestPacketHandler : PacketHandler<WhisperPacket> { public override Task ExecuteAsync(WhisperPacket packet, ClientSession clientSession) { return Task.CompletedTask; } } private void RegistryWithHandlersIsCreated() { Registry = new PacketHandlerRegistry(new List<IPacketHandler> { new TestPacketHandler() }); } private void GettingUnregisteredHandler() { ResultHandler = Registry.GetHandler(typeof(string)); } private void GettingUnregisteredAttribute() { ResultAttribute = Registry.GetPacketAttribute(typeof(string)); } private void GettingRegisteredHandler() { ResultHandler = Registry.GetHandler(typeof(WhisperPacket)); } private void GettingRegisteredAttribute() { ResultAttribute = Registry.GetPacketAttribute(typeof(WhisperPacket)); } private void HandlerShouldBeNull() { Assert.IsNull(ResultHandler); } private void AttributeShouldBeNull() { Assert.IsNull(ResultAttribute); } private void HandlerShouldNotBeNull() { Assert.IsNotNull(ResultHandler); } private void AttributeShouldNotBeNull() { Assert.IsNotNull(ResultAttribute); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/PathfindingService/PathfindingServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Services.PathfindingService; using NosCore.PathFinder.Heuristic; namespace NosCore.GameObject.Tests.Services.PathfindingService { [TestClass] public class PathfindingServiceTests { [TestMethod] public void ForMapReturnsSameInstanceForSameMap() { var svc = new GameObject.Services.PathfindingService.PathfindingService(new OctileDistanceHeuristic()); var map = TestMap(id: 1); var first = svc.ForMap(map); var second = svc.ForMap(map); Assert.AreSame(first, second, "pathfinder should be cached per map id"); } [TestMethod] public void DifferentMapIdsGetDifferentPathfinders() { var svc = new GameObject.Services.PathfindingService.PathfindingService(new OctileDistanceHeuristic()); var a = svc.ForMap(TestMap(id: 1)); var b = svc.ForMap(TestMap(id: 2)); Assert.AreNotSame(a, b); } // Tiny 4x4 walkable map. Map reads width/height from the first 4 bytes of Data, // then treats each subsequent byte as a cell; 0 is walkable by Map.IsWalkable. private static global::NosCore.GameObject.Map.Map TestMap(short id) { var data = new byte[4 + 4 * 4]; data[0] = 4; // width low byte data[2] = 4; // height low byte return new global::NosCore.GameObject.Map.Map { MapId = id, Data = data, Name = new NosCore.Data.Dto.I18NString(), }; } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/QuestService/QuestServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.StaticEntities; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.QuestService; using NosCore.GameObject.Services.QuestService.Handlers; using NosCore.Packets.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.QuestService { [TestClass] public class QuestServiceTests { private GameObject.Services.QuestService.QuestService Service = null!; private ClientSession Session = null!; private List<ScriptDto> Scripts = null!; private List<QuestDto> Quests = null!; private List<QuestObjectiveDto> QuestObjectives = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(0)!; Session.Character.Quests = new ConcurrentDictionary<Guid, CharacterQuest>(); Session.Character.Level = 50; Scripts = new List<ScriptDto>(); Quests = new List<QuestDto> { new QuestDto { QuestId = 1, QuestType = QuestType.GoTo, LevelMin = 1, LevelMax = 99, IsDaily = false, IsSecondary = true, TargetMap = 0, TargetX = 5, TargetY = 5 }, new QuestDto { QuestId = 2, QuestType = QuestType.Hunt, LevelMin = 1, LevelMax = 99, IsDaily = true, IsSecondary = true }, new QuestDto { QuestId = 3, QuestType = QuestType.Hunt, LevelMin = 60, LevelMax = 99, IsDaily = false, IsSecondary = true }, new QuestDto { QuestId = 4, QuestType = QuestType.Hunt, LevelMin = 1, LevelMax = 30, IsDaily = false, IsSecondary = true }, new QuestDto { QuestId = 5, QuestType = QuestType.Hunt, LevelMin = 1, LevelMax = 99, IsDaily = false, IsSecondary = false } }; QuestObjectives = new List<QuestObjectiveDto> { new QuestObjectiveDto { QuestId = 1, FirstData = 1 }, new QuestObjectiveDto { QuestId = 2, FirstData = 1 }, new QuestObjectiveDto { QuestId = 3, FirstData = 1 }, new QuestObjectiveDto { QuestId = 4, FirstData = 1 }, new QuestObjectiveDto { QuestId = 5, FirstData = 1 } }; Service = new GameObject.Services.QuestService.QuestService( Scripts, TestHelpers.Instance.WorldConfiguration, Quests, QuestObjectives, NullLogger<NosCore.GameObject.Services.QuestService.QuestService>.Instance, TestHelpers.Instance.Clock, TestHelpers.Instance.LogLanguageLocalizer, new IQuestTypeHandler[] { new HuntQuestHandler(NullLogger<HuntQuestHandler>.Instance), new NumberOfKillQuestHandler(NullLogger<NumberOfKillQuestHandler>.Instance), new GoToQuestHandler(), }, new Mock<Wolverine.IMessageBus>().Object, new List<QuestRewardDto>(), new List<QuestQuestRewardDto>(), new Mock<GameObject.Services.ItemGenerationService.IItemGenerationService>().Object, new Mock<GameObject.Services.ExperienceService.IExperienceProgressionService>().Object); } [TestMethod] public async Task AddingQuestShouldAddToCharacterQuests() { await new Spec("Adding quest should add to character quests") .WhenAsync(AddingValidQuest) .Then(QuestShouldBeAdded) .ExecuteAsync(); } [TestMethod] public async Task AddingQuestWhenLevelTooLowShouldFail() { await new Spec("Adding quest when level too low should fail") .Given(CharacterLevelIsTooLow) .WhenAsync(AddingHighLevelQuest) .Then(QuestShouldNotBeAdded) .And(AddResultShouldBeFalse) .ExecuteAsync(); } [TestMethod] public async Task AddingQuestWhenLevelTooHighShouldFail() { await new Spec("Adding quest when level too high should fail") .WhenAsync(AddingLowLevelQuest) .Then(QuestShouldNotBeAdded) .And(AddResultShouldBeFalse) .ExecuteAsync(); } [TestMethod] public async Task AddingAlreadyCompletedQuestShouldFail() { await new Spec("Adding already completed quest should fail") .Given(QuestAlreadyCompleted) .WhenAsync(AddingSameQuest) .Then(QuestShouldStillBeOne) .And(AddResultShouldBeFalse) .ExecuteAsync(); } [TestMethod] public async Task AddingDailyQuestAfterCompletionShouldSucceed() { await new Spec("Adding daily quest after completion should succeed") .Given(DailyQuestCompletedYesterday) .WhenAsync(AddingSameDailyQuest) .Then(DailyQuestShouldBeAddedAgain) .ExecuteAsync(); } [TestMethod] public async Task AddingNonSecondaryQuestWhenOneExistsShouldFail() { await new Spec("Adding non-secondary quest when one exists should fail") .Given(NonSecondaryQuestAlreadyActive) .WhenAsync(AddingAnotherNonSecondaryQuest) .Then(QuestShouldStillBeOne) .And(AddResultShouldBeFalse) .ExecuteAsync(); } [TestMethod] public async Task ValidateGoToQuestShouldSucceedWhenAtLocation() { await new Spec("Validate GoTo quest should succeed when at location") .Given(CharacterHasGoToQuest) .And(CharacterIsAtTargetLocation) .WhenAsync(ValidatingQuest) .Then(ValidationShouldSucceed) .ExecuteAsync(); } [TestMethod] public async Task ValidateGoToQuestShouldFailWhenNotAtLocation() { await new Spec("Validate GoTo quest should fail when not at location") .Given(CharacterHasGoToQuest) .And(CharacterIsNotAtTargetLocation) .WhenAsync(ValidatingQuest) .Then(ValidationShouldFail) .ExecuteAsync(); } [TestMethod] public async Task ValidateNonExistentQuestShouldFail() { await new Spec("Validate non-existent quest should fail") .WhenAsync(ValidatingNonExistentQuest) .Then(ValidationShouldFail) .ExecuteAsync(); } [TestMethod] public async Task KillingRequiredMobsShouldCompleteHuntObjectives() { await new Spec("Killing the last required mob should complete hunt objectives") .Given(CharacterHasHuntQuestWithOneKillRemaining) .WhenAsync(KillingTheRequiredMob) .Then(ObjectivesShouldBeComplete) .ExecuteAsync(); } [TestMethod] public async Task KillingEarlyMobsShouldNotCompleteHuntObjectives() { await new Spec("Killing a mob before target count should not complete hunt objectives") .Given(CharacterHasHuntQuestNeedingFiveKills) .WhenAsync(KillingOneMob) .Then(ObjectivesShouldBeIncomplete) .ExecuteAsync(); } [TestMethod] public async Task KillingMoreThanRequiredClampsObjectiveProgress() { await new Spec("Progress clamps at required count, never exceeds it on extra kills") .Given(CharacterHasHuntQuestNeedingTwoKills) .WhenAsync(KillingTheRequiredMobThreeTimes) .Then(ObjectiveProgressShouldBe_, 2) .And(ObjectivesShouldBeComplete) .ExecuteAsync(); } [TestMethod] public async Task KillingUnrelatedMobDoesNotAdvanceObjective() { await new Spec("Killing a mob that does not match any objective FirstData leaves progress at zero") .Given(CharacterHasHuntQuestNeedingFiveKills) .WhenAsync(KillingADifferentMob) .Then(ObjectiveProgressShouldBe_, 0) .ExecuteAsync(); } private void CharacterHasHuntQuestNeedingTwoKills() { var objective = new QuestObjectiveDto { QuestObjectiveId = Guid.NewGuid(), FirstData = TargetMobVNum, SecondData = 2, }; var quest = new Quest { QuestId = 12, QuestType = QuestType.Hunt, QuestObjectives = new List<QuestObjectiveDto> { objective }, }; _trackedQuest = new CharacterQuest { QuestId = 12, Quest = quest, CompletedOn = null, }; Session.Character.Quests.TryAdd(Guid.NewGuid(), _trackedQuest); } private async Task KillingTheRequiredMobThreeTimes() { for (var i = 0; i < 3; i++) { await Service.OnMonsterKilledAsync(Session.Character, new NpcMonsterDto { NpcMonsterVNum = TargetMobVNum }); } } private async Task KillingADifferentMob() { await Service.OnMonsterKilledAsync(Session.Character, new NpcMonsterDto { NpcMonsterVNum = 999 }); } private void ObjectiveProgressShouldBe_(int expected) { var objectiveId = _trackedQuest.Quest.QuestObjectives.First().QuestObjectiveId; _trackedQuest.ObjectiveProgress.TryGetValue(objectiveId, out var progress); Assert.AreEqual(expected, progress); } private bool AddQuestResult; private bool ValidateResult; private async Task AddingValidQuest() { AddQuestResult = await Service.AddQuestAsync(Session.Character, QuestActionType.Validate, 1); } private void CharacterLevelIsTooLow() { Session.Character.Level = 10; } private async Task AddingHighLevelQuest() { AddQuestResult = await Service.AddQuestAsync(Session.Character, QuestActionType.Validate, 3); } private async Task AddingLowLevelQuest() { AddQuestResult = await Service.AddQuestAsync(Session.Character, QuestActionType.Validate, 4); } private void QuestAlreadyCompleted() { var quest = new Quest { QuestId = 1, QuestType = QuestType.Hunt, IsDaily = false, QuestObjectives = new List<QuestObjectiveDto>() }; Session.Character.Quests.TryAdd(Guid.NewGuid(), new CharacterQuest { QuestId = 1, Quest = quest, CompletedOn = TestHelpers.Instance.Clock.GetCurrentInstant() }); } private async Task AddingSameQuest() { AddQuestResult = await Service.AddQuestAsync(Session.Character, QuestActionType.Validate, 1); } private void DailyQuestCompletedYesterday() { var quest = new Quest { QuestId = 2, QuestType = QuestType.Hunt, IsDaily = true, QuestObjectives = new List<QuestObjectiveDto>() }; Session.Character.Quests.TryAdd(Guid.NewGuid(), new CharacterQuest { QuestId = 2, Quest = quest, CompletedOn = TestHelpers.Instance.Clock.GetCurrentInstant().Minus(NodaTime.Duration.FromDays(2)) }); } private async Task AddingSameDailyQuest() { AddQuestResult = await Service.AddQuestAsync(Session.Character, QuestActionType.Validate, 2); } private void NonSecondaryQuestAlreadyActive() { var quest = new Quest { QuestId = 5, QuestType = QuestType.Hunt, IsSecondary = false, QuestObjectives = new List<QuestObjectiveDto>() }; Session.Character.Quests.TryAdd(Guid.NewGuid(), new CharacterQuest { QuestId = 5, Quest = quest, CompletedOn = null }); } private async Task AddingAnotherNonSecondaryQuest() { AddQuestResult = await Service.AddQuestAsync(Session.Character, QuestActionType.Validate, 5); } private void CharacterHasGoToQuest() { var quest = new Quest { QuestId = 1, QuestType = QuestType.GoTo, TargetMap = 0, TargetX = 5, TargetY = 5, QuestObjectives = new List<QuestObjectiveDto>() }; Session.Character.Quests.TryAdd(Guid.NewGuid(), new CharacterQuest { QuestId = 1, Quest = quest, CompletedOn = null }); } private void CharacterIsAtTargetLocation() { Session.Character.MapId = 0; Session.Character.MapX = 5; Session.Character.MapY = 5; } private void CharacterIsNotAtTargetLocation() { Session.Character.MapId = 0; Session.Character.MapX = 50; Session.Character.MapY = 50; } private async Task ValidatingQuest() { ValidateResult = await Service.ValidateQuestAsync(Session.Character, 1); } private async Task ValidatingNonExistentQuest() { ValidateResult = await Service.ValidateQuestAsync(Session.Character, 999); } private void QuestShouldBeAdded() { Assert.IsTrue(Session.Character.Quests.Values.Any(q => q.QuestId == 1)); Assert.IsTrue(AddQuestResult); } private void QuestShouldNotBeAdded() { Assert.IsFalse(Session.Character.Quests.Values.Any(q => q.QuestId == 3 || q.QuestId == 4)); } private void QuestShouldStillBeOne() { Assert.AreEqual(1, Session.Character.Quests.Count); } private void DailyQuestShouldBeAddedAgain() { Assert.AreEqual(2, Session.Character.Quests.Values.Count(q => q.QuestId == 2)); } private void AddResultShouldBeFalse() { Assert.IsFalse(AddQuestResult); } private void ValidationShouldSucceed() { Assert.IsTrue(ValidateResult); } private void ValidationShouldFail() { Assert.IsFalse(ValidateResult); } private CharacterQuest _trackedQuest = null!; private const short TargetMobVNum = 42; private void CharacterHasHuntQuestWithOneKillRemaining() { var objective = new QuestObjectiveDto { QuestObjectiveId = Guid.NewGuid(), FirstData = TargetMobVNum, SecondData = 5 }; var quest = new Quest { QuestId = 10, QuestType = QuestType.Hunt, QuestObjectives = new List<QuestObjectiveDto> { objective } }; _trackedQuest = new CharacterQuest { QuestId = 10, Quest = quest, CompletedOn = null }; _trackedQuest.ObjectiveProgress[objective.QuestObjectiveId] = 4; Session.Character.Quests.TryAdd(Guid.NewGuid(), _trackedQuest); } private void CharacterHasHuntQuestNeedingFiveKills() { var objective = new QuestObjectiveDto { QuestObjectiveId = Guid.NewGuid(), FirstData = TargetMobVNum, SecondData = 5 }; var quest = new Quest { QuestId = 11, QuestType = QuestType.Hunt, QuestObjectives = new List<QuestObjectiveDto> { objective } }; _trackedQuest = new CharacterQuest { QuestId = 11, Quest = quest, CompletedOn = null }; Session.Character.Quests.TryAdd(Guid.NewGuid(), _trackedQuest); } private async Task KillingTheRequiredMob() { await Service.OnMonsterKilledAsync(Session.Character, new NpcMonsterDto { NpcMonsterVNum = TargetMobVNum }); } private async Task KillingOneMob() { await Service.OnMonsterKilledAsync(Session.Character, new NpcMonsterDto { NpcMonsterVNum = TargetMobVNum }); } private void ObjectivesShouldBeComplete() { Assert.IsTrue(_trackedQuest.AreObjectivesComplete()); } private void ObjectivesShouldBeIncomplete() { Assert.IsFalse(_trackedQuest.AreObjectivesComplete()); Assert.IsNull(_trackedQuest.CompletedOn); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/SaveService/SaveServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.EntityFrameworkCore; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Map; using NosCore.Data.StaticEntities; using NosCore.Database; using NosCore.Database.Entities; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.Services.SaveService; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.SaveService { [TestClass] public class SaveServiceTests { private ClientSession Session = null!; private ISaveService Service = null!; private IItemGenerationService ItemProvider = null!; private IDao<CharacterQuestObjectiveDto, Guid> CharacterQuestObjectiveDao = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); ItemProvider = TestHelpers.Instance.GenerateItemProvider(); var optionsBuilder = new DbContextOptionsBuilder<NosCoreContext>().UseInMemoryDatabase( Guid.NewGuid().ToString()); NosCoreContext ContextBuilder() => new NosCoreContext(optionsBuilder.Options); var itemInstanceDao = new Dao<ItemInstance, IItemInstanceDto?, Guid>(NullLogger<Dao<ItemInstance, IItemInstanceDto?, Guid>>.Instance, ContextBuilder); var inventoryItemInstanceDao = new Dao<Database.Entities.InventoryItemInstance, InventoryItemInstanceDto, Guid>(NullLogger<Dao<Database.Entities.InventoryItemInstance, InventoryItemInstanceDto, Guid>>.Instance, ContextBuilder); var staticBonusDao = new Dao<StaticBonus, StaticBonusDto, long>(NullLogger<Dao<StaticBonus, StaticBonusDto, long>>.Instance, ContextBuilder); var quicklistEntriesDao = new Dao<QuicklistEntry, QuicklistEntryDto, Guid>(NullLogger<Dao<QuicklistEntry, QuicklistEntryDto, Guid>>.Instance, ContextBuilder); var titleDao = new Dao<Title, TitleDto, Guid>(NullLogger<Dao<Title, TitleDto, Guid>>.Instance, ContextBuilder); var characterQuestDao = new Dao<Database.Entities.CharacterQuest, CharacterQuestDto, Guid>(NullLogger<Dao<Database.Entities.CharacterQuest, CharacterQuestDto, Guid>>.Instance, ContextBuilder); var characterQuestObjectiveDao = new Dao<Database.Entities.CharacterQuestObjective, CharacterQuestObjectiveDto, Guid>(NullLogger<Dao<Database.Entities.CharacterQuestObjective, CharacterQuestObjectiveDto, Guid>>.Instance, ContextBuilder); CharacterQuestObjectiveDao = characterQuestObjectiveDao; var respawnDao = new Dao<Database.Entities.Respawn, RespawnDto, long>(NullLogger<Dao<Database.Entities.Respawn, RespawnDto, long>>.Instance, ContextBuilder); var minilandService = new Mock<IMinilandService>(); minilandService.Setup(s => s.GetMiniland(It.IsAny<long>())) .Returns(new NosCore.GameObject.Services.MinilandService.Miniland { MinilandMessage = "Test" }); Service = new GameObject.Services.SaveService.SaveService( TestHelpers.Instance.CharacterDao, itemInstanceDao, inventoryItemInstanceDao, TestHelpers.Instance.AccountDao, staticBonusDao, quicklistEntriesDao, TestHelpers.Instance.MinilandDao, minilandService.Object, titleDao, characterQuestDao, characterQuestObjectiveDao, respawnDao, NullLogger<NosCore.GameObject.Services.SaveService.SaveService>.Instance, TestHelpers.Instance.LogLanguageLocalizer); } [TestMethod] public async Task SavingCharacterShouldPersistData() { await new Spec("Saving character should persist data") .GivenAsync(CharacterHasModifiedGold) .WhenAsync(SavingCharacter) .ThenAsync(GoldShouldBePersisted) .ExecuteAsync(); } [TestMethod] public async Task SavingCharacterShouldPersistInventory() { await new Spec("Saving character should persist inventory") .GivenAsync(CharacterHasItemsInInventory) .WhenAsync(SavingCharacter) .ThenAsync(InventoryShouldBePersisted) .ExecuteAsync(); } [TestMethod] public async Task SavingQuestObjectiveProgressShouldRoundTrip() { await new Spec("Quest objective progress should persist across reloads") .GivenAsync(CharacterHasQuestWithProgress) .WhenAsync(SavingCharacter) .ThenAsync(ObjectiveProgressShouldBePersisted) .ExecuteAsync(); } [TestMethod] public async Task UpdatingObjectiveProgressShouldOverwrite() { await new Spec("Updating quest objective should overwrite the earlier count") .GivenAsync(CharacterHasQuestWithProgress) .WhenAsync(SavingCharacter) .GivenAsync(ProgressAdvances) .WhenAsync(SavingCharacter) .ThenAsync(ObjectiveProgressShouldReflectLatestCount) .ExecuteAsync(); } private Guid _trackedCharacterQuestId; private Guid _trackedObjectiveId; private async Task CharacterHasQuestWithProgress() { _trackedCharacterQuestId = Guid.NewGuid(); _trackedObjectiveId = Guid.NewGuid(); var cq = new GameObject.Services.QuestService.CharacterQuest { Id = _trackedCharacterQuestId, CharacterId = Session.Character.VisualId, QuestId = 1500, Quest = new GameObject.Services.QuestService.Quest { QuestId = 1500, QuestObjectives = new List<QuestObjectiveDto>() } }; cq.ObjectiveProgress[_trackedObjectiveId] = 2; Session.Character.Quests = new ConcurrentDictionary<Guid, GameObject.Services.QuestService.CharacterQuest>( new[] { new KeyValuePair<Guid, GameObject.Services.QuestService.CharacterQuest>(_trackedCharacterQuestId, cq) }); } private async Task ProgressAdvances() { Session.Character.Quests[_trackedCharacterQuestId].ObjectiveProgress[_trackedObjectiveId] = 5; } private async Task ObjectiveProgressShouldBePersisted() { var rows = CharacterQuestObjectiveDao .Where(o => o.CharacterQuestId == _trackedCharacterQuestId)! .ToList(); Assert.AreEqual(1, rows.Count); Assert.AreEqual(2, rows[0].Count); } private async Task ObjectiveProgressShouldReflectLatestCount() { var rows = CharacterQuestObjectiveDao .Where(o => o.CharacterQuestId == _trackedCharacterQuestId)! .ToList(); Assert.AreEqual(1, rows.Count); Assert.AreEqual(5, rows[0].Count); } [TestMethod] public async Task SavingNonCharacterEntityShouldNotThrow() { await new Spec("Saving non-character entity should not throw") .WhenAsync(SavingNonCharacterEntity) .Then(NoExceptionShouldBeThrown) .ExecuteAsync(); } [TestMethod] public async Task SavingOnBaseMapPersistsPositionAsMapXY() { await new Spec("Saving while on a BaseMap writes PositionX/Y to MapX/Y") .GivenAsync(CharacterIsOnBaseMap) .And(CharacterPositionIs_, (short)50, (short)60) .WhenAsync(SavingCharacter) .ThenAsync(PersistedMapXYShouldBe_, (short)50, (short)60) .ExecuteAsync(); } [TestMethod] public async Task SavingInsideMinilandKeepsPreviousMapXYValue() { await new Spec("Saving while on a non-base instance preserves the previously persisted MapX/Y") .GivenAsync(CharacterIsOnBaseMapAtPosition_, (short)48, (short)132) .WhenAsync(SavingCharacter) .Given(CharacterIsNowInsideAMinilandAtPosition_, (short)5, (short)8) .WhenAsync(SavingCharacter) .ThenAsync(PersistedMapXYShouldBe_, (short)48, (short)132) .ExecuteAsync(); } private async Task CharacterIsOnBaseMap() { Session.Character.MapInstance.MapInstanceType = MapInstanceType.BaseMapInstance; } private async Task CharacterIsOnBaseMapAtPosition_(short x, short y) { Session.Character.MapInstance.MapInstanceType = MapInstanceType.BaseMapInstance; Session.Character.PositionX = x; Session.Character.PositionY = y; } private void CharacterPositionIs_(short x, short y) { Session.Character.PositionX = x; Session.Character.PositionY = y; } private void CharacterIsNowInsideAMinilandAtPosition_(short x, short y) { Session.Character.MapInstance.MapInstanceType = MapInstanceType.NormalInstance; Session.Character.PositionX = x; Session.Character.PositionY = y; } private async Task PersistedMapXYShouldBe_(short expectedX, short expectedY) { var characterId = Session.Character.CharacterId; var persisted = await TestHelpers.Instance.CharacterDao.FirstOrDefaultAsync(c => c.CharacterId == characterId); Assert.IsNotNull(persisted); Assert.AreEqual(expectedX, persisted.MapX); Assert.AreEqual(expectedY, persisted.MapY); } private bool SaveCompleted; private async Task CharacterHasModifiedGold() { Session.Character.Gold = 999999; } private async Task CharacterHasItemsInInventory() { var item = ItemProvider.Create(1012, 50); Session.Character.InventoryService.AddItemToPocket( GameObject.Services.InventoryService.InventoryItemInstance.Create(item, Session.Character.CharacterId)); } private async Task SavingCharacter() { await Service.SaveAsync(Session); SaveCompleted = true; } private async Task SavingNonCharacterEntity() { await Service.SaveAsync(Session); SaveCompleted = true; } private async Task GoldShouldBePersisted() { var characterId = Session.Character.CharacterId; var character = await TestHelpers.Instance.CharacterDao.FirstOrDefaultAsync(c => c.CharacterId == characterId); Assert.IsNotNull(character); Assert.AreEqual(999999, character.Gold); } private async Task InventoryShouldBePersisted() { var characterId = Session.Character.CharacterId; var character = await TestHelpers.Instance.CharacterDao.FirstOrDefaultAsync(c => c.CharacterId == characterId); Assert.IsNotNull(character); } private void NoExceptionShouldBeThrown() { Assert.IsTrue(SaveCompleted); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/ShopService/ShopRegistryTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Services.ShopService; using SpecLight; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.ShopService { [TestClass] public class ShopRegistryTests { private IShopRegistry Registry = null!; [TestInitialize] public void Setup() { Registry = new ShopRegistry(); } [TestMethod] public async Task RegisterPlayerShopShouldAddShop() { await new Spec("Register player shop should add shop") .Given(ShopIsCreated) .When(RegisteringPlayerShop) .Then(ShopShouldBeRetrievable) .ExecuteAsync(); } [TestMethod] public async Task GetPlayerShopShouldReturnNullForUnknownCharacter() { await new Spec("Get player shop should return null for unknown character") .When(GettingUnknownShop) .Then(ResultShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task UnregisterPlayerShopShouldRemoveShop() { await new Spec("Unregister player shop should remove shop") .Given(ShopIsRegistered) .When(UnregisteringPlayerShop) .Then(ShopShouldNotExist) .ExecuteAsync(); } [TestMethod] public async Task GetAllPlayerShopsShouldReturnAllShops() { await new Spec("Get all player shops should return all shops") .Given(MultipleShopsAreRegistered) .When(GettingAllShops) .Then(AllShopsShouldBeReturned) .ExecuteAsync(); } [TestMethod] public async Task RegisterPlayerShopShouldOverwriteExisting() { await new Spec("Register player shop should overwrite existing") .Given(ShopIsRegistered) .When(RegisteringNewShopForSameCharacter) .Then(NewShopShouldReplace) .ExecuteAsync(); } private Shop? TestShop; private Shop? NewShop; private Shop? ResultShop; private int ShopCount; private const long TestCharacterId = 1; private const long TestCharacterId2 = 2; private void ShopIsCreated() { TestShop = new Shop { ShopId = 1 }; } private void ShopIsRegistered() { ShopIsCreated(); Registry.RegisterPlayerShop(TestCharacterId, TestShop!); } private void MultipleShopsAreRegistered() { TestShop = new Shop { ShopId = 1 }; NewShop = new Shop { ShopId = 2 }; Registry.RegisterPlayerShop(TestCharacterId, TestShop); Registry.RegisterPlayerShop(TestCharacterId2, NewShop); } private void RegisteringPlayerShop() { Registry.RegisterPlayerShop(TestCharacterId, TestShop!); } private void GettingUnknownShop() { ResultShop = Registry.GetPlayerShop(9999); } private void UnregisteringPlayerShop() { Registry.UnregisterPlayerShop(TestCharacterId); } private void GettingAllShops() { ShopCount = Registry.GetAllPlayerShops().Count(); } private void RegisteringNewShopForSameCharacter() { NewShop = new Shop { ShopId = 99 }; Registry.RegisterPlayerShop(TestCharacterId, NewShop); } private void ShopShouldBeRetrievable() { var result = Registry.GetPlayerShop(TestCharacterId); Assert.IsNotNull(result); Assert.AreEqual(1, result.ShopId); } private void ResultShouldBeNull() { Assert.IsNull(ResultShop); } private void ShopShouldNotExist() { var result = Registry.GetPlayerShop(TestCharacterId); Assert.IsNull(result); } private void AllShopsShouldBeReturned() { Assert.AreEqual(2, ShopCount); } private void NewShopShouldReplace() { var result = Registry.GetPlayerShop(TestCharacterId); Assert.IsNotNull(result); Assert.AreEqual(99, result.ShopId); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/SkillService/SkillServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.StaticEntities; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.SkillService; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.SkillService { [TestClass] public class SkillServiceTests { private static readonly ILogger<SkillServiceTests> Logger = new Mock<ILogger<SkillServiceTests>>().Object; private ISkillService Service = null!; private Mock<IDao<CharacterSkillDto, Guid>> CharacterSkillDao = null!; private List<SkillDto> Skills = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); CharacterSkillDao = new Mock<IDao<CharacterSkillDto, Guid>>(); Skills = new List<SkillDto> { new SkillDto { SkillVNum = 1 }, new SkillDto { SkillVNum = 2 }, new SkillDto { SkillVNum = 3 } }; Service = new GameObject.Services.SkillService.SkillService( CharacterSkillDao.Object, Skills); } [TestMethod] public async Task LoadSkillShouldLoadCharacterSkills() { await new Spec("Load skill should load character skills") .Given(CharacterHasSkillsInDatabase) .WhenAsync(LoadingSkills) .Then(CharacterShouldHaveSkills) .ExecuteAsync(); } [TestMethod] public async Task LoadSkillWithNoSkillsShouldClearSkills() { await new Spec("Load skill with no skills should clear skills") .Given(CharacterHasNoSkillsInDatabase) .WhenAsync(LoadingSkills) .Then(CharacterShouldHaveNoSkills) .ExecuteAsync(); } [TestMethod] public async Task ServiceCanBeConstructed() { await new Spec("Service can be constructed") .Then(ServiceShouldNotBeNull) .ExecuteAsync(); } private void CharacterHasSkillsInDatabase() { var characterSkills = new List<CharacterSkillDto> { new CharacterSkillDto { Id = Guid.NewGuid(), CharacterId = Session.Character.VisualId, SkillVNum = 1 }, new CharacterSkillDto { Id = Guid.NewGuid(), CharacterId = Session.Character.VisualId, SkillVNum = 2 } }; CharacterSkillDao.Setup(s => s.Where(It.IsAny<System.Linq.Expressions.Expression<Func<CharacterSkillDto, bool>>>())) .Returns(characterSkills); } private void CharacterHasNoSkillsInDatabase() { CharacterSkillDao.Setup(s => s.Where(It.IsAny<System.Linq.Expressions.Expression<Func<CharacterSkillDto, bool>>>())) .Returns(new List<CharacterSkillDto>()); } private async Task LoadingSkills() { await Service.LoadSkill(Session.Character); } private void CharacterShouldHaveSkills() { Assert.IsTrue(Session.Character.Skills.Count > 0); } private void CharacterShouldHaveNoSkills() { Assert.AreEqual(0, Session.Character.Skills.Count); } private void ServiceShouldNotBeNull() { Assert.IsNotNull(Service); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/SpeedCalculationService/SpeedCalculationServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Algorithm.SpeedService; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Interfaces; using NosCore.Shared.Enumerations; using SpecLight; namespace NosCore.GameObject.Tests.Services.SpeedCalculationService { [TestClass] public class SpeedCalculationServiceTests { private readonly GameObject.Services.SpeedCalculationService.SpeedCalculationService SpeedCalculationService; private readonly Mock<ISpeedService> SpeedService; public SpeedCalculationServiceTests() { SpeedService = new Mock<ISpeedService>(); SpeedCalculationService = new GameObject.Services.SpeedCalculationService.SpeedCalculationService(SpeedService.Object); } [DataTestMethod] [DataRow((int)CharacterClassType.Archer)] [DataRow((int)CharacterClassType.Mage)] [DataRow((int)CharacterClassType.Swordsman)] [DataRow((int)CharacterClassType.MartialArtist)] [DataRow((int)CharacterClassType.Adventurer)] public void DefaultSpeedIsClassSpeed(int characterClassInt) { var characterClass = (CharacterClassType)characterClassInt; SpeedService.Setup(x => x.GetSpeed(characterClass)).Returns((byte)characterClassInt); var charMock = new Mock<ICharacterEntity>(); charMock.SetupGet(x => x.Class).Returns(characterClass); var speed = SpeedCalculationService.CalculateSpeed(charMock.Object); Assert.AreEqual((byte)characterClassInt, speed); } [DataTestMethod] [DataRow((int)CharacterClassType.Archer)] [DataRow((int)CharacterClassType.Mage)] [DataRow((int)CharacterClassType.Swordsman)] [DataRow((int)CharacterClassType.MartialArtist)] [DataRow((int)CharacterClassType.Adventurer)] public void VehicleSpeedOverridesDefaultSpeed(int characterClassInt) { var characterClass = (CharacterClassType)characterClassInt; SpeedService.Setup(x => x.GetSpeed(characterClass)).Returns((byte)characterClassInt); var charMock = new Mock<ICharacterEntity>(); charMock.SetupGet(x => x.Class).Returns(characterClass); charMock.SetupGet(x => x.VehicleSpeed).Returns(50); var speed = SpeedCalculationService.CalculateSpeed(charMock.Object); Assert.AreEqual(50, speed); } [TestMethod] public void DefaultMonsterSpeedIsNpcMonsterSpeed() { new Spec("Default monster speed is npc monster speed") .Then(MonsterSpeedShouldMatchNpcMonsterDto) .Execute(); } private void MonsterSpeedShouldMatchNpcMonsterDto() { var charMock = new Mock<INonPlayableEntity>(); charMock.SetupGet(x => x.NpcMonster).Returns(new NpcMonsterDto { Speed = 50 }); var speed = SpeedCalculationService.CalculateSpeed(charMock.Object); Assert.AreEqual(50, speed); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/TransformationService/TransformationServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.TransformationService; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.TransformationService { [TestClass] public class TransformationServiceTests { private static readonly ILogger<NosCore.GameObject.Services.TransformationService.TransformationService> Logger = new Mock<ILogger<NosCore.GameObject.Services.TransformationService.TransformationService>>().Object; private ITransformationService Service = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; Service = new GameObject.Services.TransformationService.TransformationService( TestHelpers.Instance.Clock, new Mock<IExperienceService>().Object, new Mock<IJobExperienceService>().Object, new Mock<IHeroExperienceService>().Object, Logger, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.WorldConfiguration); } [TestMethod] public async Task RemovingSpShouldResetMorphValues() { await new Spec("Removing SP should reset morph values") .Given(CharacterHasSpEquipped) .WhenAsync(RemovingSp) .Then(MorphShouldBeReset) .And(SpCooldownShouldBeSet) .ExecuteAsync(); } [TestMethod] public async Task ChangingVehicleShouldSetVehicledState() { await new Spec("Changing vehicle should set vehicled state") .WhenAsync(ChangingToVehicle) .Then(CharacterShouldBeVehicled) .And(VehicleSpeedShouldBeSet) .ExecuteAsync(); } [TestMethod] public async Task RemovingVehicleShouldResetState() { await new Spec("Removing vehicle should reset state") .GivenAsync(CharacterIsVehicled) .WhenAsync(RemovingVehicle) .Then(CharacterShouldNotBeVehicled) .And(VehicleSpeedShouldBeZero) .ExecuteAsync(); } private void CharacterHasSpEquipped() { Session.Character.UseSp = true; Session.Character.Morph = 100; Session.Character.MorphUpgrade = 10; Session.Character.MorphDesign = 5; } private async Task RemovingSp() { await Service.RemoveSpAsync(Session); } private async Task ChangingToVehicle() { var vehicleItem = new GameObject.Services.ItemGenerationService.Item.Item { VNum = 5196, Speed = 20, Morph = 2432, SecondMorph = 0 }; await Service.ChangeVehicleAsync(Session, vehicleItem); } private async Task CharacterIsVehicled() { var vehicleItem = new GameObject.Services.ItemGenerationService.Item.Item { VNum = 5196, Speed = 20, Morph = 2432, SecondMorph = 0 }; await Service.ChangeVehicleAsync(Session, vehicleItem); } private async Task RemovingVehicle() { await Service.RemoveVehicleAsync(Session); } private void MorphShouldBeReset() { Assert.AreEqual(0, Session.Character.Morph); Assert.AreEqual(0, Session.Character.MorphUpgrade); Assert.AreEqual(0, Session.Character.MorphDesign); } private void SpCooldownShouldBeSet() { Assert.AreEqual(30, Session.Character.SpCooldown); Assert.IsFalse(Session.Character.UseSp); } private void CharacterShouldBeVehicled() { Assert.IsTrue(Session.Character.IsVehicled); } private void VehicleSpeedShouldBeSet() { Assert.AreEqual((byte)20, Session.Character.VehicleSpeed); } private void CharacterShouldNotBeVehicled() { Assert.IsFalse(Session.Character.IsVehicled); } private void VehicleSpeedShouldBeZero() { Assert.AreEqual((byte)0, Session.Character.VehicleSpeed); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/UpgradeService/EquipmentUpgradeOperationTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.UpgradeService; using NosCore.Packets.ClientPackets.Player; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Services.UpgradeService { // Locks in the OpenNos-faithful equipment-upgrade behavior: // - 3-way roll: rnd < upfix → Fixed, rnd < upfix+upfail → Failure, else → Success // - For Rare<8 at Upgrade 0: upfix=0, upfail=0 → 100% success path (rnd < 0 is false twice) // - For Rare<8 at Upgrade 5: upfix=20, upfail=40 → 20% Fixed, 40% Fail, 40% Success // - Materials: Cellon (1014) + Gem (1015 if Upgrade<5 else 1016) + Scroll (1218) for Protected [TestClass] public class EquipmentUpgradeOperationTests { private const short ArmorVNum = 1; private const short CellonVNum = 1014; private const short SmallGemVNum = 1015; private const short FullGemVNum = 1016; private const short ScrollVNum = 1218; private ClientSession _session = null!; private Mock<IRandomNumberSource> _random = null!; private UpgradeItemOperation _unprotected = null!; private UpgradeItemProtectedOperation _protected = null!; private InventoryItemInstance _wearable = null!; private IReadOnlyList<IPacket>? _result; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _random = new Mock<IRandomNumberSource>(); _unprotected = new UpgradeItemOperation(_random.Object, TestHelpers.Instance.GameLanguageLocalizer); _protected = new UpgradeItemProtectedOperation(_random.Object, TestHelpers.Instance.GameLanguageLocalizer); } [TestMethod] public async Task SuccessAtUpgradeZeroIncrementsAndChargesCellonAndGem() { // Upgrade 0, low-rare: upfix=0, upfail=0, gold=500, cellon=20, gem=1. await new Spec("Successful upgrade at +0 increments to +1, consumes cellon+gem, charges 500 gold") .Given(WearableAtUpgrade_, (byte)0) .And(MaterialsInInventory) .And(CharacterHasGold_, 100_000L) .And(NextRollWillSucceed) .WhenAsync(UnprotectedUpgradeIsExecuted) .Then(WearableUpgradeShouldBe_, (byte)1) .And(WearableShouldNotBeFixed) .And(CellonRemainingShouldBe_, (short)980) .And(SmallGemRemainingShouldBe_, (short)9) .And(GoldShouldBe_, 99_500L) .ExecuteAsync(); } [TestMethod] public async Task FixedRollLocksTheItem() { // Upgrade 5, low-rare: upfix=20 → roll 0.10 falls in the Fixed band. await new Spec("A roll inside the Fixed band sets IsFixed=true and consumes materials") .Given(WearableAtUpgrade_, (byte)5) .And(MaterialsInInventory) .And(CharacterHasGold_, 1_000_000L) .And(NextRollWillBe_, 0.10) .WhenAsync(UnprotectedUpgradeIsExecuted) .Then(WearableUpgradeShouldBe_, (byte)5) .And(WearableShouldBeFixed) .ExecuteAsync(); } [TestMethod] public async Task UnprotectedFailureDestroysTheWearable() { // Upgrade 5, low-rare: upfix=20, upfail=40 → roll 0.50 falls in Failure band (0.20..0.60). await new Spec("Unprotected failure destroys the wearable and charges materials") .Given(WearableAtUpgrade_, (byte)5) .And(MaterialsInInventory) .And(CharacterHasGold_, 1_000_000L) .And(NextRollWillBe_, 0.50) .WhenAsync(UnprotectedUpgradeIsExecuted) .Then(SourceSlotShouldBeEmpty) .ExecuteAsync(); } [TestMethod] public async Task ProtectedFailureRollConsumesScrollButDoesNotLockTheItem() { await new Spec("Protected failure consumes the scroll and leaves the wearable unlocked") .Given(WearableAtUpgrade_, (byte)5) .And(MaterialsInInventory) .And(CharacterHasGold_, 1_000_000L) .And(NextRollWillBe_, 0.50) .WhenAsync(ProtectedUpgradeIsExecuted) .Then(WearableUpgradeShouldBe_, (byte)5) .And(WearableShouldNotBeFixed) .And(ScrollShouldHaveBeenConsumed) .ExecuteAsync(); } [TestMethod] public async Task HighRareFailureBandFiresBeforeFixedBand() { await new Spec("Rare>=8 at +2 with roll 0.55 destroys the item (Failure, not Fixed)") .Given(HighRareWearableAtUpgrade_, (byte)2) .And(MaterialsInInventory) .And(CharacterHasGold_, 10_000_000L) .And(NextRollWillBe_, 0.55) .WhenAsync(UnprotectedUpgradeIsExecuted) .Then(SourceSlotShouldBeEmpty) .ExecuteAsync(); } [TestMethod] public async Task HighRareFixedBandFiresBetweenFailureAndSuccess() { await new Spec("Rare>=8 at +2 with roll 0.65 locks the item (Fixed band)") .Given(HighRareWearableAtUpgrade_, (byte)2) .And(MaterialsInInventory) .And(CharacterHasGold_, 10_000_000L) .And(NextRollWillBe_, 0.65) .WhenAsync(UnprotectedUpgradeIsExecuted) .Then(WearableUpgradeShouldBe_, (byte)2) .And(WearableShouldBeFixed) .ExecuteAsync(); } [TestMethod] public async Task HighRareSuccessBandFiresAboveFixed() { await new Spec("Rare>=8 at +2 with roll 0.75 succeeds (above the upfix band)") .Given(HighRareWearableAtUpgrade_, (byte)2) .And(MaterialsInInventory) .And(CharacterHasGold_, 10_000_000L) .And(NextRollWillBe_, 0.75) .WhenAsync(UnprotectedUpgradeIsExecuted) .Then(WearableUpgradeShouldBe_, (byte)3) .And(WearableShouldNotBeFixed) .ExecuteAsync(); } [TestMethod] public async Task HighRareProtectedFailureConsumesScrollButDoesNotLockTheItem() { await new Spec("Rare>=8 protected failure roll consumes scroll without locking the item") .Given(HighRareWearableAtUpgrade_, (byte)2) .And(MaterialsInInventory) .And(CharacterHasGold_, 10_000_000L) .And(NextRollWillBe_, 0.55) .WhenAsync(ProtectedUpgradeIsExecuted) .Then(WearableUpgradeShouldBe_, (byte)2) .And(WearableShouldNotBeFixed) .And(ScrollShouldHaveBeenConsumed) .ExecuteAsync(); } [TestMethod] public async Task UpgradeAboveFiveUsesFullGemInsteadOfSmallGem() { // Upgrade 5+ uses FullGem (vnum 1016) per OpenNos. await new Spec("Upgrade at +5+ consumes the full-gem (1016), not the small-gem (1015)") .Given(WearableAtUpgrade_, (byte)5) .And(MaterialsInInventory) .And(CharacterHasGold_, 1_000_000L) .And(NextRollWillBe_, 0.99) // success band for upgrade 5 starts at 0.60 .WhenAsync(UnprotectedUpgradeIsExecuted) .Then(WearableUpgradeShouldBe_, (byte)6) .And(SmallGemRemainingShouldBe_, (short)10) // unchanged .And(FullGemRemainingShouldBe_, (short)9) // -1 .ExecuteAsync(); } [TestMethod] public async Task UpgradeAtMaxLevelIsRejectedSilently() { await new Spec("Upgrade at +10 cap is rejected with no inventory or gold change") .Given(WearableAtUpgrade_, (byte)10) .And(MaterialsInInventory) .And(CharacterHasGold_, 1_000_000L) .WhenAsync(UnprotectedUpgradeIsExecuted) .Then(NoPacketsShouldHaveBeenReturned) .And(GoldShouldBe_, 1_000_000L) .ExecuteAsync(); } [TestMethod] public async Task FixedItemsCannotBeUpgraded() { await new Spec("A wearable with IsFixed=true is rejected upfront with a sayi + shop_end") .Given(WearableAtUpgrade_, (byte)2) .And(WearableIsLocked) .And(MaterialsInInventory) .And(CharacterHasGold_, 100_000L) .WhenAsync(UnprotectedUpgradeIsExecuted) .Then(GoldShouldBe_, 100_000L) .And(TwoRejectionPacketsShouldBeReturned) .ExecuteAsync(); } [TestMethod] public async Task ProtectedUpgradeWithoutScrollIsRejected() { await new Spec("Protected upgrade with no scroll in inventory rejects with InfoiPacket") .Given(WearableAtUpgrade_, (byte)0) .And(CellonAndGemInInventoryNoScroll) .And(CharacterHasGold_, 100_000L) .WhenAsync(ProtectedUpgradeIsExecuted) .Then(SingleRejectionPacketShouldBeReturned) .ExecuteAsync(); } // --- Givens --- private void WearableAtUpgrade_(byte upgrade) => PlaceWearable(upgrade, 0); private void HighRareWearableAtUpgrade_(byte upgrade) => PlaceWearable(upgrade, 8); private void PlaceWearable(byte upgrade, sbyte rare) { var item = new Item { VNum = ArmorVNum, Type = NoscorePocketType.Equipment, ItemType = ItemType.Armor }; var wearable = new WearableInstance(item, new Mock<ILogger<WearableInstance>>().Object, TestHelpers.Instance.LogLanguageLocalizer) { Upgrade = upgrade, Rare = rare, }; _wearable = InventoryItemInstance.Create(wearable, _session.Character.CharacterId); _wearable.Slot = 0; _wearable.Type = NoscorePocketType.Equipment; _session.Character.InventoryService[_wearable.ItemInstanceId] = _wearable; } private void WearableIsLocked() => ((WearableInstance)_wearable.ItemInstance).IsFixed = true; private void MaterialsInInventory() { AddStack(CellonVNum, 1000, slot: 0); AddStack(SmallGemVNum, 10, slot: 1); AddStack(FullGemVNum, 10, slot: 2); AddStack(ScrollVNum, 5, slot: 3); } private void CellonAndGemInInventoryNoScroll() { AddStack(CellonVNum, 1000, slot: 0); AddStack(SmallGemVNum, 10, slot: 1); } private void AddStack(short vnum, short amount, short slot) { var inst = InventoryItemInstance.Create( new ItemInstanceForTest(vnum) { Amount = amount }, _session.Character.CharacterId); inst.Slot = slot; inst.Type = NoscorePocketType.Main; _session.Character.InventoryService[inst.ItemInstanceId] = inst; } private void CharacterHasGold_(long gold) => _session.Character.Gold = gold; private void NextRollWillSucceed() => _random.Setup(r => r.NextDouble()).Returns(0.99); private void NextRollWillBe_(double roll) => _random.Setup(r => r.NextDouble()).Returns(roll); // --- Whens --- private async Task UnprotectedUpgradeIsExecuted() => _result = await _unprotected.ExecuteAsync( _session, BuildPacket(UpgradePacketType.UpgradeItem)); private async Task ProtectedUpgradeIsExecuted() => _result = await _protected.ExecuteAsync( _session, BuildPacket(UpgradePacketType.UpgradeItemProtected)); private static UpgradePacket BuildPacket(UpgradePacketType type) => new() { UpgradeType = type, InventoryType = PocketType.Equipment, Slot = 0, }; // --- Thens --- private void WearableUpgradeShouldBe_(byte expected) => Assert.AreEqual(expected, ((WearableInstance)_session.Character.InventoryService .LoadBySlotAndType(0, NoscorePocketType.Equipment)!.ItemInstance!).Upgrade); private void WearableShouldBeFixed() => Assert.AreEqual(true, ((WearableInstance)_session.Character.InventoryService .LoadBySlotAndType(0, NoscorePocketType.Equipment)!.ItemInstance!).IsFixed); private void WearableShouldNotBeFixed() => Assert.AreNotEqual(true, ((WearableInstance)_session.Character.InventoryService .LoadBySlotAndType(0, NoscorePocketType.Equipment)!.ItemInstance!).IsFixed); private void SourceSlotShouldBeEmpty() => Assert.IsNull(_session.Character.InventoryService.LoadBySlotAndType(0, NoscorePocketType.Equipment)); private void CellonRemainingShouldBe_(short expected) => Assert.AreEqual(expected, _session.Character.InventoryService.CountItem(CellonVNum)); private void SmallGemRemainingShouldBe_(short expected) => Assert.AreEqual(expected, _session.Character.InventoryService.CountItem(SmallGemVNum)); private void FullGemRemainingShouldBe_(short expected) => Assert.AreEqual(expected, _session.Character.InventoryService.CountItem(FullGemVNum)); private void ScrollShouldHaveBeenConsumed() => Assert.AreEqual(4, _session.Character.InventoryService.CountItem(ScrollVNum)); private void GoldShouldBe_(long expected) => Assert.AreEqual(expected, _session.Character.Gold); private void NoPacketsShouldHaveBeenReturned() => Assert.AreEqual(0, _result?.Count ?? 0); private void SingleRejectionPacketShouldBeReturned() => Assert.AreEqual(1, _result?.Count ?? 0); private void TwoRejectionPacketsShouldBeReturned() => Assert.AreEqual(2, _result?.Count ?? 0); private sealed class ItemInstanceForTest(short vnum) : NosCore.Data.Dto.ItemInstanceDto, IItemInstance { public new Guid Id { get; set; } = Guid.NewGuid(); public new short ItemVNum { get; set; } = vnum; public Item Item { get; set; } = new() { VNum = vnum, Type = NoscorePocketType.Main }; public object Clone() => MemberwiseClone(); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/UpgradeService/RarifyOperationTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.UpgradeService; using NosCore.Packets.ClientPackets.Player; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Tests.Shared; using SpecLight; namespace NosCore.GameObject.Tests.Services.UpgradeService { [TestClass] public class RarifyOperationTests { private const short ArmorVNum = 1; private const short CellonVNum = 1014; private const short ScrollVNum = 1218; private ClientSession _session = null!; private Mock<IRandomNumberSource> _random = null!; private RarifyOperation _unprotected = null!; private RarifyProtectedOperation _protected = null!; private InventoryItemInstance _wearable = null!; private IReadOnlyList<IPacket>? _result; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _random = new Mock<IRandomNumberSource>(); _unprotected = new RarifyOperation(_random.Object, TestHelpers.Instance.GameLanguageLocalizer); _protected = new RarifyProtectedOperation(_random.Object, TestHelpers.Instance.GameLanguageLocalizer); } [TestMethod] public async Task LowRollLandsOnHighestRareAndIsCountedAsSuccess() { await new Spec("Roll inside the rare7 band rarifies up to 7") .Given(WearableAtRarity_, (sbyte)0) .And(MaterialsInInventory) .And(CharacterHasGold_, 100_000L) .And(NextRollWillBe_, 0.02) .WhenAsync(UnprotectedRarifyIsExecuted) .Then(WearableRarityShouldBe_, (sbyte)7) .And(CellonRemainingShouldBe_, (short)95) .And(GoldShouldBe_, 99_500L) .ExecuteAsync(); } [TestMethod] public async Task RollOutsideAllBandsDestroysTheItem() { await new Spec("Roll that matches no rare band destroys the wearable (unprotected)") .Given(WearableAtRarity_, (sbyte)5) .And(MaterialsInInventory) .And(CharacterHasGold_, 100_000L) .And(NextRollWillBe_, 0.50) .WhenAsync(UnprotectedRarifyIsExecuted) .Then(SourceSlotShouldBeEmpty) .ExecuteAsync(); } [TestMethod] public async Task ProtectedScrollAbsorbsNoBandMatchAndKeepsOriginalRare() { await new Spec("Protected scroll absorbs a no-band-match roll; item kept at original rare") .Given(WearableAtRarity_, (sbyte)5) .And(MaterialsInInventory) .And(CharacterHasGold_, 100_000L) .And(NextRollWillBe_, 0.50) .WhenAsync(ProtectedRarifyIsExecuted) .Then(WearableRarityShouldBe_, (sbyte)5) .And(WearableShouldNotBeFixed) .And(ScrollShouldHaveBeenConsumed) .ExecuteAsync(); } [TestMethod] public async Task ProtectedScrollSkipsBandsThatWouldDowngrade() { await new Spec("Protected scroll allows improvement bands (rare7 with originalRare=5)") .Given(WearableAtRarity_, (sbyte)5) .And(MaterialsInInventory) .And(CharacterHasGold_, 100_000L) .And(NextRollWillBe_, 0.02) .WhenAsync(ProtectedRarifyIsExecuted) .Then(WearableRarityShouldBe_, (sbyte)7) .ExecuteAsync(); } [TestMethod] public async Task SuccessResetsRarityDrivenStatsViaSetRarityPoint() { await new Spec("Successful rarify re-rolls the rarity-driven stats via SetRarityPoint") .Given(WearableAtRarity_, (sbyte)0) .And(SourceWearableHasPreExistingDefenseStats) .And(MaterialsInInventory) .And(CharacterHasGold_, 100_000L) .And(NextRollWillBe_, 0.02) .WhenAsync(UnprotectedRarifyIsExecuted) .Then(WearableRarityShouldBe_, (sbyte)7) .And(CloseDefenceShouldBe_, (short)0) .And(DistanceDefenceShouldBe_, (short)0) .And(MagicDefenceShouldBe_, (short)0) .ExecuteAsync(); } [TestMethod] public async Task RarityAtMaxIsRejectedSilently() { await new Spec("Rarify at +8 cap is rejected with no charges") .Given(WearableAtRarity_, (sbyte)8) .And(MaterialsInInventory) .And(CharacterHasGold_, 100_000L) .WhenAsync(UnprotectedRarifyIsExecuted) .Then(NoPacketsShouldHaveBeenReturned) .And(GoldShouldBe_, 100_000L) .ExecuteAsync(); } [TestMethod] public async Task NegativeRarityIsRejectedSilently() { await new Spec("Cursed (negative-rarity) item cannot be rarified") .Given(WearableAtRarity_, (sbyte)-1) .And(MaterialsInInventory) .And(CharacterHasGold_, 100_000L) .WhenAsync(UnprotectedRarifyIsExecuted) .Then(NoPacketsShouldHaveBeenReturned) .ExecuteAsync(); } [TestMethod] public async Task ProtectedWithoutScrollIsRejected() { await new Spec("Protected rarify with no scroll in inventory rejects with InfoiPacket") .Given(WearableAtRarity_, (sbyte)0) .And(CellonInInventoryNoScroll) .And(CharacterHasGold_, 100_000L) .WhenAsync(ProtectedRarifyIsExecuted) .Then(SingleRejectionPacketShouldBeReturned) .ExecuteAsync(); } // --- Givens --- private void WearableAtRarity_(sbyte rare) { var item = new Item { VNum = ArmorVNum, Type = NoscorePocketType.Equipment, ItemType = ItemType.Armor, EquipmentSlot = EquipmentType.Armor, }; var wearable = new WearableInstance(item, new Mock<ILogger<WearableInstance>>().Object, TestHelpers.Instance.LogLanguageLocalizer) { Rare = rare, }; _wearable = InventoryItemInstance.Create(wearable, _session.Character.CharacterId); _wearable.Slot = 0; _wearable.Type = NoscorePocketType.Equipment; _session.Character.InventoryService[_wearable.ItemInstanceId] = _wearable; } private void SourceWearableHasPreExistingDefenseStats() { var wearable = (WearableInstance)_wearable.ItemInstance; wearable.CloseDefence = 50; wearable.DistanceDefence = 50; wearable.MagicDefence = 50; } private void MaterialsInInventory() { AddStack(CellonVNum, 100, slot: 0); AddStack(ScrollVNum, 5, slot: 1); } private void CellonInInventoryNoScroll() => AddStack(CellonVNum, 100, slot: 0); private void AddStack(short vnum, short amount, short slot) { var inst = InventoryItemInstance.Create( new ItemInstanceForTest(vnum) { Amount = amount }, _session.Character.CharacterId); inst.Slot = slot; inst.Type = NoscorePocketType.Main; _session.Character.InventoryService[inst.ItemInstanceId] = inst; } private void CharacterHasGold_(long gold) => _session.Character.Gold = gold; private void NextRollWillBe_(double roll) => _random.Setup(r => r.NextDouble()).Returns(roll); // --- Whens --- private async Task UnprotectedRarifyIsExecuted() => _result = await _unprotected.ExecuteAsync( _session, BuildPacket(UpgradePacketType.RarifyItem)); private async Task ProtectedRarifyIsExecuted() => _result = await _protected.ExecuteAsync( _session, BuildPacket(UpgradePacketType.RarifyItemProtected)); private static UpgradePacket BuildPacket(UpgradePacketType type) => new() { UpgradeType = type, InventoryType = PocketType.Equipment, Slot = 0, }; // --- Thens --- private void WearableRarityShouldBe_(sbyte expected) => Assert.AreEqual(expected, ((WearableInstance)_session.Character.InventoryService .LoadBySlotAndType(0, NoscorePocketType.Equipment)!.ItemInstance!).Rare); private void WearableShouldNotBeFixed() => Assert.AreNotEqual(true, ((WearableInstance)_session.Character.InventoryService .LoadBySlotAndType(0, NoscorePocketType.Equipment)!.ItemInstance!).IsFixed); private void SourceSlotShouldBeEmpty() => Assert.IsNull(_session.Character.InventoryService.LoadBySlotAndType(0, NoscorePocketType.Equipment)); private void CloseDefenceShouldBe_(short expected) => Assert.AreEqual(expected, ((WearableInstance)_session.Character.InventoryService .LoadBySlotAndType(0, NoscorePocketType.Equipment)!.ItemInstance!).CloseDefence); private void DistanceDefenceShouldBe_(short expected) => Assert.AreEqual(expected, ((WearableInstance)_session.Character.InventoryService .LoadBySlotAndType(0, NoscorePocketType.Equipment)!.ItemInstance!).DistanceDefence); private void MagicDefenceShouldBe_(short expected) => Assert.AreEqual(expected, ((WearableInstance)_session.Character.InventoryService .LoadBySlotAndType(0, NoscorePocketType.Equipment)!.ItemInstance!).MagicDefence); private void CellonRemainingShouldBe_(short expected) => Assert.AreEqual(expected, _session.Character.InventoryService.CountItem(CellonVNum)); private void ScrollShouldHaveBeenConsumed() => Assert.AreEqual(4, _session.Character.InventoryService.CountItem(ScrollVNum)); private void GoldShouldBe_(long expected) => Assert.AreEqual(expected, _session.Character.Gold); private void NoPacketsShouldHaveBeenReturned() => Assert.AreEqual(0, _result?.Count ?? 0); private void SingleRejectionPacketShouldBeReturned() => Assert.AreEqual(1, _result?.Count ?? 0); private sealed class ItemInstanceForTest(short vnum) : NosCore.Data.Dto.ItemInstanceDto, IItemInstance { public new Guid Id { get; set; } = Guid.NewGuid(); public new short ItemVNum { get; set; } = vnum; public Item Item { get; set; } = new() { VNum = vnum, Type = NoscorePocketType.Main }; public object Clone() => MemberwiseClone(); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/UpgradeService/SumUpgradeOperationTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.UpgradeService; using NosCore.Packets.ClientPackets.Player; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Tests.Shared; using SpecLight; using DbItemInstance = NosCore.Database.Entities.ItemInstance; namespace NosCore.GameObject.Tests.Services.UpgradeService { [TestClass] public class SumUpgradeOperationTests { private const short ArmorVNum = 1; private const short SandVNum = 1027; private ClientSession _session = null!; private Mock<IRandomNumberSource> _random = null!; private SumUpgradeOperation _operation = null!; private InventoryItemInstance _source = null!; private InventoryItemInstance _target = null!; private IReadOnlyList<IPacket>? _result; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _random = new Mock<IRandomNumberSource>(); _operation = new SumUpgradeOperation(_random.Object, TestHelpers.Instance.GameLanguageLocalizer); } [TestMethod] public async Task SuccessUpgradesSourceAndConsumesTargetAndSandAndGold() { // Source upgrade 0 → goldprice[0]=1500, sand[0]=5, success rate at sum=0 is 1.00. await new Spec("Successful sum upgrades source, consumes target, sand and gold") .Given(SourceAndTargetWearablesArePlaced) .And(EnoughSandIsInInventory) .And(CharacterHasGold_, 100_000L) .And(NextRollWillSucceed) .WhenAsync(SumIsExecuted) .Then(SourceUpgradeShouldBe_, (byte)1) .And(TargetSlotShouldBeEmpty) .And(SandShouldHaveBeenConsumed_, (short)5) .And(GoldShouldBe_, 98_500L) .ExecuteAsync(); } [TestMethod] public async Task FailureDestroysSourceAndConsumesTargetAndChargesCosts() { // Source upgrade 1 → goldprice[1]=3000, sand[1]=10. Combined 1+1=2 → success rate 0.85. // Roll 0.95 lands on failure. await new Spec("Failed sum destroys source, consumes target, still charges costs") .Given(SourceAtUpgrade_AndTargetAtUpgrade_, (byte)1, (byte)1) .And(EnoughSandIsInInventory) .And(CharacterHasGold_, 100_000L) .And(NextRollWillFail) .WhenAsync(SumIsExecuted) .Then(SourceSlotShouldBeEmpty) .And(TargetSlotShouldBeEmpty) .And(SandShouldHaveBeenConsumed_, (short)10) .And(GoldShouldBe_, 97_000L) .ExecuteAsync(); } [TestMethod] public async Task ArmorPairIsRejectedSilentlyBecauseSumIsRestrictedToBootsAndGloves() { await new Spec("Armor + Armor sum is rejected (slot must be Boots or Gloves)") .Given(SourceAndTargetArmorWearablesArePlaced) .And(EnoughSandIsInInventory) .And(CharacterHasGold_, 100_000L) .WhenAsync(SumIsExecuted) .Then(NoPacketsShouldHaveBeenReturned) .And(GoldShouldBe_, 100_000L) .ExecuteAsync(); } [TestMethod] public async Task BootsPlusGlovesIsRejectedSilentlyBecauseSlotsMustMatch() { await new Spec("Boots + Gloves sum is rejected (slot must match)") .Given(SourceBootsAndTargetGlovesArePlaced) .And(EnoughSandIsInInventory) .And(CharacterHasGold_, 100_000L) .WhenAsync(SumIsExecuted) .Then(NoPacketsShouldHaveBeenReturned) .And(GoldShouldBe_, 100_000L) .ExecuteAsync(); } [TestMethod] public async Task SumOfLevelSixIsRejectedWithoutCharging() { await new Spec("Combined upgrade level 6+ is rejected with no inventory or gold change") .Given(SourceAtUpgrade_AndTargetAtUpgrade_, (byte)3, (byte)3) .And(EnoughSandIsInInventory) .And(CharacterHasGold_, 100_000L) .WhenAsync(SumIsExecuted) .Then(NoPacketsShouldHaveBeenReturned) .And(GoldShouldBe_, 100_000L) .ExecuteAsync(); } [TestMethod] public async Task InsufficientGoldEmitsRejectionAndKeepsInventoryIntact() { await new Spec("Insufficient gold emits InfoiPacket and leaves items intact") .Given(SourceAndTargetWearablesArePlaced) .And(EnoughSandIsInInventory) .And(CharacterHasGold_, 100L) .WhenAsync(SumIsExecuted) .Then(SingleRejectionPacketShouldBeReturned) .And(SourceSlotShouldStillHoldOriginalSourceItem) .ExecuteAsync(); } [TestMethod] public async Task InsufficientSandEmitsRejection() { await new Spec("Insufficient sand emits InfoiPacket and leaves items intact") .Given(SourceAndTargetWearablesArePlaced) .And(CharacterHasGold_, 100_000L) .WhenAsync(SumIsExecuted) .Then(SingleRejectionPacketShouldBeReturned) .And(SourceSlotShouldStillHoldOriginalSourceItem) .ExecuteAsync(); } [TestMethod] public async Task SuccessAddsBothTargetInstanceAndTargetBaseItemResistance() { await new Spec("Sum success adds target.FireResistance + target.Item.FireResistance onto source") .Given(TargetWithInstanceResistance_AndBaseItemResistance_, (short)3, (short)5) .And(EnoughSandIsInInventory) .And(CharacterHasGold_, 100_000L) .And(NextRollWillSucceed) .WhenAsync(SumIsExecuted) .Then(SourceUpgradeShouldBe_, (byte)1) .And(SourceFireResistanceShouldBe_, (short)8) .ExecuteAsync(); } // --- Givens --- private void SourceAndTargetWearablesArePlaced() { SourceAtUpgrade_AndTargetAtUpgrade_(0, 0); } private void SourceAtUpgrade_AndTargetAtUpgrade_(byte sourceUpgrade, byte targetUpgrade) { var inv = _session.Character.InventoryService; _source = MakeWearableInstance(slot: 0, ArmorVNum, upgrade: sourceUpgrade, EquipmentType.Boots); _target = MakeWearableInstance(slot: 1, ArmorVNum, upgrade: targetUpgrade, EquipmentType.Boots); inv[_source.ItemInstanceId] = _source; inv[_target.ItemInstanceId] = _target; } private void SourceAndTargetArmorWearablesArePlaced() { var inv = _session.Character.InventoryService; _source = MakeWearableInstance(slot: 0, ArmorVNum, upgrade: 0, EquipmentType.Armor); _target = MakeWearableInstance(slot: 1, ArmorVNum, upgrade: 0, EquipmentType.Armor); inv[_source.ItemInstanceId] = _source; inv[_target.ItemInstanceId] = _target; } private void SourceBootsAndTargetGlovesArePlaced() { var inv = _session.Character.InventoryService; _source = MakeWearableInstance(slot: 0, ArmorVNum, upgrade: 0, EquipmentType.Boots); _target = MakeWearableInstance(slot: 1, ArmorVNum, upgrade: 0, EquipmentType.Gloves); inv[_source.ItemInstanceId] = _source; inv[_target.ItemInstanceId] = _target; } private void TargetWithInstanceResistance_AndBaseItemResistance_(short instance, short baseItem) { var inv = _session.Character.InventoryService; _source = MakeWearableInstance(slot: 0, ArmorVNum, upgrade: 0, EquipmentType.Boots); _target = MakeWearableInstance(slot: 1, ArmorVNum, upgrade: 0, EquipmentType.Boots); ((WearableInstance)_target.ItemInstance).FireResistance = instance; ((WearableInstance)_target.ItemInstance).Item.FireResistance = baseItem; inv[_source.ItemInstanceId] = _source; inv[_target.ItemInstanceId] = _target; } private void EnoughSandIsInInventory() { var sand = InventoryItemInstance.Create( new ItemInstanceForTest(SandVNum) { Amount = 99 }, _session.Character.CharacterId); sand.Slot = 0; sand.Type = NoscorePocketType.Main; _session.Character.InventoryService[sand.ItemInstanceId] = sand; } private void CharacterHasGold_(long gold) => _session.Character.Gold = gold; private void NextRollWillSucceed() => _random.Setup(r => r.NextDouble()).Returns(0.0); private void NextRollWillFail() => _random.Setup(r => r.NextDouble()).Returns(0.99); // --- Whens --- private async Task SumIsExecuted() { _result = await _operation.ExecuteAsync(_session, new UpgradePacket { UpgradeType = UpgradePacketType.SumResistance, InventoryType = PocketType.Equipment, Slot = 0, InventoryType2 = PocketType.Equipment, Slot2 = 1, }); } // --- Thens --- private void SourceUpgradeShouldBe_(byte expected) => Assert.AreEqual(expected, ((WearableInstance)_session.Character.InventoryService .LoadBySlotAndType(0, NoscorePocketType.Equipment)!.ItemInstance!).Upgrade); private void SourceFireResistanceShouldBe_(short expected) => Assert.AreEqual(expected, ((WearableInstance)_session.Character.InventoryService .LoadBySlotAndType(0, NoscorePocketType.Equipment)!.ItemInstance!).FireResistance); private void TargetSlotShouldBeEmpty() => Assert.IsNull(_session.Character.InventoryService.LoadBySlotAndType(1, NoscorePocketType.Equipment)); private void SourceSlotShouldBeEmpty() => Assert.IsNull(_session.Character.InventoryService.LoadBySlotAndType(0, NoscorePocketType.Equipment)); private void SourceSlotShouldStillHoldOriginalSourceItem() => Assert.AreEqual(_source.ItemInstanceId, _session.Character.InventoryService .LoadBySlotAndType(0, NoscorePocketType.Equipment)?.ItemInstanceId); private void SandShouldHaveBeenConsumed() => SandShouldHaveBeenConsumed_(1); private void SandShouldHaveBeenConsumed_(short amount) => Assert.AreEqual(99 - amount, _session.Character.InventoryService.CountItem(SandVNum)); private void GoldShouldBe_(long expected) => Assert.AreEqual(expected, _session.Character.Gold); private void NoPacketsShouldHaveBeenReturned() => Assert.AreEqual(0, _result?.Count ?? 0); private void SingleRejectionPacketShouldBeReturned() => Assert.AreEqual(1, _result?.Count ?? 0); // --- Helpers --- private InventoryItemInstance MakeWearableInstance(short slot, short vnum, byte upgrade, EquipmentType equipmentSlot) { var item = new Item { VNum = vnum, Type = NoscorePocketType.Equipment, ItemType = ItemType.Armor, EquipmentSlot = equipmentSlot, }; var wearable = new WearableInstance(item, new Mock<ILogger<WearableInstance>>().Object, TestHelpers.Instance.LogLanguageLocalizer) { Upgrade = upgrade, }; var inv = InventoryItemInstance.Create(wearable, _session.Character.CharacterId); inv.Slot = slot; inv.Type = NoscorePocketType.Equipment; return inv; } // Tiny stand-in so we don't need the full ItemGenerationService just to put a stack of sand in inventory. private sealed class ItemInstanceForTest(short vnum) : NosCore.Data.Dto.ItemInstanceDto, IItemInstance { public new Guid Id { get; set; } = Guid.NewGuid(); public new short ItemVNum { get; set; } = vnum; public Item Item { get; set; } = new() { VNum = vnum, Type = NoscorePocketType.Main }; public object Clone() => MemberwiseClone(); } } } ================================================ FILE: test/NosCore.GameObject.Tests/Services/WarehouseService/WarehouseServiceTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.EntityFrameworkCore; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Dao; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Miniland; using NosCore.Database; using NosCore.GameObject.Services.WarehouseService; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; using System; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests.Services.WarehouseService { [TestClass] public class WarehouseServiceTests { private IWarehouseService Service = null!; private IDao<WarehouseItemDto, Guid> WarehouseItemDao = null!; private IDao<WarehouseDto, Guid> WarehouseDao = null!; private IDao<IItemInstanceDto?, Guid> ItemInstanceDao = null!; private long OwnerId; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); var optionsBuilder = new DbContextOptionsBuilder<NosCoreContext>().UseInMemoryDatabase( Guid.NewGuid().ToString()); NosCoreContext ContextBuilder() => new NosCoreContext(optionsBuilder.Options); WarehouseItemDao = new Dao<Database.Entities.WarehouseItem, WarehouseItemDto, Guid>(NullLogger<Dao<Database.Entities.WarehouseItem, WarehouseItemDto, Guid>>.Instance, ContextBuilder); WarehouseDao = new Dao<Database.Entities.Warehouse, WarehouseDto, Guid>(NullLogger<Dao<Database.Entities.Warehouse, WarehouseDto, Guid>>.Instance, ContextBuilder); ItemInstanceDao = new Dao<Database.Entities.ItemInstance, IItemInstanceDto?, Guid>(NullLogger<Dao<Database.Entities.ItemInstance, IItemInstanceDto?, Guid>>.Instance, ContextBuilder); Service = new GameObject.Services.WarehouseService.WarehouseService( WarehouseItemDao, WarehouseDao, ItemInstanceDao); var session = await TestHelpers.Instance.GenerateSessionAsync(); OwnerId = session.Character.CharacterId; } [TestMethod] public void GetMaxSlotsShouldReturnCorrectValue() { new Spec("Get max slots should return correct value") .Then(PersonalWarehouseShouldHave68Slots) .And(FamilyWarehouseShouldHave49Slots) .Execute(); } [TestMethod] public async Task DepositingItemShouldSucceed() { await new Spec("Depositing item should succeed") .WhenAsync(DepositingItem) .ThenAsync(ItemShouldBeInWarehouse) .ExecuteAsync(); } [TestMethod] public async Task DepositingToOccupiedSlotShouldFail() { await new Spec("Depositing to occupied slot should fail") .GivenAsync(SlotIsOccupied) .WhenAsync(DepositingToSameSlot) .Then(DepositShouldFail) .ExecuteAsync(); } [TestMethod] public async Task WithdrawingItemShouldSucceed() { await new Spec("Withdrawing item should succeed") .GivenAsync(ItemIsInWarehouse) .WhenAsync(WithdrawingItem) .Then(WithdrawShouldSucceed) .ExecuteAsync(); } [TestMethod] public async Task WithdrawingNonExistentItemShouldFail() { await new Spec("Withdrawing non-existent item should fail") .WhenAsync(WithdrawingNonExistentItem) .Then(WithdrawShouldFail) .ExecuteAsync(); } [TestMethod] public async Task MovingItemShouldSucceed() { await new Spec("Moving item should succeed") .GivenAsync(ItemIsInWarehouse) .WhenAsync(MovingItemToNewSlot) .Then(MoveShouldSucceed) .ExecuteAsync(); } [TestMethod] public async Task MovingItemToSameSlotShouldFail() { await new Spec("Moving item to same slot should fail") .GivenAsync(ItemIsInWarehouse) .WhenAsync(MovingItemToSameSlot) .Then(MoveShouldFail) .ExecuteAsync(); } [TestMethod] public async Task GetFreeSlotShouldReturnAvailableSlot() { await new Spec("Get free slot should return available slot") .ThenAsync(FreeSlotShouldBeAvailable) .ExecuteAsync(); } private bool DepositResult; private bool WithdrawResult; private bool MoveResult; private Guid WarehouseItemId; private void PersonalWarehouseShouldHave68Slots() { Assert.AreEqual(68, Service.GetMaxSlots(WarehouseType.Warehouse)); } private void FamilyWarehouseShouldHave49Slots() { Assert.AreEqual(49, Service.GetMaxSlots(WarehouseType.FamilyWareHouse)); } private async Task DepositingItem() { var itemInstance = new ItemInstanceDto { Id = Guid.NewGuid(), ItemVNum = 1012, Amount = 1 }; DepositResult = await Service.DepositItemAsync(OwnerId, WarehouseType.Warehouse, itemInstance, 0); } private async Task SlotIsOccupied() { var itemInstance = new ItemInstanceDto { Id = Guid.NewGuid(), ItemVNum = 1012, Amount = 1 }; await Service.DepositItemAsync(OwnerId, WarehouseType.Warehouse, itemInstance, 0); } private async Task DepositingToSameSlot() { var itemInstance = new ItemInstanceDto { Id = Guid.NewGuid(), ItemVNum = 1013, Amount = 1 }; DepositResult = await Service.DepositItemAsync(OwnerId, WarehouseType.Warehouse, itemInstance, 0); } private async Task ItemIsInWarehouse() { var itemInstance = new ItemInstanceDto { Id = Guid.NewGuid(), ItemVNum = 1012, Amount = 1 }; await Service.DepositItemAsync(OwnerId, WarehouseType.Warehouse, itemInstance, 5); var items = await Service.GetWarehouseItemsAsync(OwnerId, WarehouseType.Warehouse); WarehouseItemId = items.First().Id; } private async Task WithdrawingItem() { WithdrawResult = await Service.WithdrawItemAsync(WarehouseItemId); } private async Task WithdrawingNonExistentItem() { WithdrawResult = await Service.WithdrawItemAsync(Guid.NewGuid()); } private async Task MovingItemToNewSlot() { MoveResult = await Service.MoveItemAsync(OwnerId, WarehouseType.Warehouse, 5, 10); } private async Task MovingItemToSameSlot() { MoveResult = await Service.MoveItemAsync(OwnerId, WarehouseType.Warehouse, 5, 5); } private async Task ItemShouldBeInWarehouse() { Assert.IsTrue(DepositResult); var items = await Service.GetWarehouseItemsAsync(OwnerId, WarehouseType.Warehouse); Assert.AreEqual(1, items.Count); } private void DepositShouldFail() { Assert.IsFalse(DepositResult); } private void WithdrawShouldSucceed() { Assert.IsTrue(WithdrawResult); } private void WithdrawShouldFail() { Assert.IsFalse(WithdrawResult); } private void MoveShouldSucceed() { Assert.IsTrue(MoveResult); } private void MoveShouldFail() { Assert.IsFalse(MoveResult); } private async Task FreeSlotShouldBeAvailable() { var freeSlot = await Service.GetFreeSlotAsync(OwnerId, WarehouseType.Warehouse); Assert.IsNotNull(freeSlot); Assert.AreEqual((short)0, freeSlot.Value); } } } ================================================ FILE: test/NosCore.GameObject.Tests/SetupAssemblyInitializer.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Dto; using NosCore.Tests.Shared; namespace NosCore.GameObject.Tests { [TestClass] public class SetupAssemblyInitializer { [AssemblyInitialize] public static void AssemblyInit(TestContext _) { TestHelpers.Instance.InitDatabase(); TypeAdapterConfig.GlobalSettings.ForDestinationType<IStaticDto>() .IgnoreMember((member, side) => typeof(I18NString).IsAssignableFrom(member.Type)); } } } ================================================ FILE: test/NosCore.GameObject.Tests/ShopTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Logging.Abstractions; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Enumerations; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.MapInstanceAccessService; using NosCore.GameObject.Services.ShopService; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Shop; using NosCore.Tests.Shared; using NosCore.Tests.Shared.BDD; using SpecLight; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.GameObject.Tests { [TestClass] public class ShopTests : SpecBase { private IMapInstanceAccessorService InstanceProvider = null!; private ItemGenerationService ItemBuilder = null!; [TestInitialize] public override async Task SetupAsync() { await base.SetupAsync(); TestHelpers.Instance.WorldConfiguration.Value.BackpackSize = 3; InstanceProvider = TestHelpers.Instance.MapInstanceAccessorService; } [TestMethod] public async Task BuyingFromNonExistentSlotShouldFail() { await new Spec("Buying from non existent slot should fail") .Given(CharacterHasGold_, 9999999999L) .WhenAsync(AttemptingToBuyFromWrongSlotAsync) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task BuyingMoreThanShopQuantityShouldFail() { await new Spec("Buying more than shop quantity should fail") .Given(CharacterHasGold_, 9999999999L) .WhenAsync(AttemptingToBuyMoreThanAvailableAsync) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task BuyingWithoutEnoughGoldShouldFail() { await new Spec("Buying without enough gold should fail") .Given(CharacterHasGold_, 500000L) .WhenAsync(AttemptingToBuy_ItemsAsync, 99) .Then(ShouldReceiveNotEnoughGoldMessage) .ExecuteAsync(); } [TestMethod] public async Task BuyingWithoutEnoughReputationShouldFail() { await new Spec("Buying without enough reputation should fail") .Given(CharacterHasReputation_, 500000L) .WhenAsync(AttemptingToBuyReputationItemAsync) .Then(ShouldReceiveReputationError) .ExecuteAsync(); } [TestMethod] public async Task BuyingWithoutInventorySpaceShouldFail() { await new Spec("Buying without inventory space should fail") .Given(CharacterHasGoldButFullInventory) .WhenAsync(AttemptingToBuyWithFullInventoryAsync) .Then(ShouldReceiveNotEnoughSpaceMessage) .ExecuteAsync(); } [TestMethod] public async Task SuccessfulPurchaseShouldUpdateGoldAndInventory() { await new Spec("Successful purchase should update gold and inventory") .Given(CharacterHasGoldAndPartialInventory) .WhenAsync(Buying998ItemsAt1GoldEachAsync) .Then(AllInventorySlotsShouldHave_Items, 999) .And(GoldShouldBeDeducted) .ExecuteAsync(); } [TestMethod] public async Task SuccessfulReputationPurchaseShouldUpdateReputation() { await new Spec("Successful reputation purchase should update reputation") .Given(CharacterHasReputationAndPartialInventory) .WhenAsync(Buying998ItemsAt1ReputationEachAsync) .Then(AllInventorySlotsShouldHave_Items, 999) .And(ReputationShouldBeDeducted) .ExecuteAsync(); } [TestMethod] public async Task BuyingRejectsWhenPriceTimesAmountWouldOverflowLong() { await new Spec("Buying at extreme unit price * amount rejects silently instead of wrapping to a negative total") .Given(CharacterHasGold_, 9_999_999_999L) .WhenAsync(AttemptingToBuyTwoOfExtremePricedItemAsync) .Then(NoPacketShouldBeSent) .And(GoldShouldBeUnchangedAt_, 9_999_999_999L) .ExecuteAsync(); } [TestMethod] public async Task BuyingRejectsWhenReputPriceTimesAmountWouldOverflowLong() { await new Spec("Buying at extreme unit reput price * amount rejects silently") .Given(CharacterHasReputation_, 9_999_999_999L) .WhenAsync(AttemptingToBuyTwoOfExtremeReputPricedItemAsync) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } private async Task AttemptingToBuyTwoOfExtremePricedItemAsync() { var itemBuilder = CreateItemBuilder(price: long.MaxValue); var shop = CreateShop(itemBuilder, amount: 5); await Session.Character.BuyAsync(shop, 0, 2, TestHelpers.Instance.WorldConfiguration, itemBuilder, TestHelpers.Instance.GameLanguageLocalizer); } private async Task AttemptingToBuyTwoOfExtremeReputPricedItemAsync() { var itemBuilder = CreateItemBuilder(price: 0, reputPrice: long.MaxValue); var shop = CreateShop(itemBuilder, amount: 5); await Session.Character.BuyAsync(shop, 0, 2, TestHelpers.Instance.WorldConfiguration, itemBuilder, TestHelpers.Instance.GameLanguageLocalizer); } private void GoldShouldBeUnchangedAt_(long expected) { Assert.AreEqual(expected, Session.Character.Gold); } private Shop CreateShop(ItemGenerationService itemBuilder, short amount = -1, long? price = null, byte slot = 0) { var list = new ConcurrentDictionary<int, ShopItem>(); var shopItem = new ShopItem { Slot = slot, ItemInstance = itemBuilder.Create(1, amount), Type = 0 }; if (amount > 0) { shopItem.Amount = amount; } if (price.HasValue) { shopItem.Price = price.Value; } list.TryAdd(slot, shopItem); return new Shop { ShopItems = list }; } private ItemGenerationService CreateItemBuilder(long price = 500000, long reputPrice = 0) { var items = new List<ItemDto> { new Item { Type = NoscorePocketType.Etc, VNum = 1, IsSoldable = true, Price = price, ReputPrice = reputPrice } }; return new ItemGenerationService(items, NullLoggerFactory.Instance, TestHelpers.Instance.LogLanguageLocalizer); } private void CharacterHasGold_(long gold) { CharacterHasGold(gold); } private void CharacterHasReputation_(long reput) { Session.Character.Reput = reput; } private async Task AttemptingToBuyFromWrongSlotAsync() { var itemBuilder = CreateItemBuilder(); var shop = CreateShop(itemBuilder); await Session.Character.BuyAsync(shop, 1, 99, TestHelpers.Instance.WorldConfiguration, itemBuilder, TestHelpers.Instance.GameLanguageLocalizer); } private async Task AttemptingToBuyMoreThanAvailableAsync() { var itemBuilder = CreateItemBuilder(); var list = new ConcurrentDictionary<int, ShopItem>(); list.TryAdd(0, new ShopItem { Slot = 0, ItemInstance = itemBuilder.Create(1, -1), Type = 0, Amount = 98 }); var shop = new Shop { ShopItems = list }; await Session.Character.BuyAsync(shop, 0, 99, TestHelpers.Instance.WorldConfiguration, itemBuilder, TestHelpers.Instance.GameLanguageLocalizer); } private async Task AttemptingToBuy_ItemsAsync(int value) { var itemBuilder = CreateItemBuilder(); var shop = CreateShop(itemBuilder); await Session.Character.BuyAsync(shop, 0, 99, TestHelpers.Instance.WorldConfiguration, itemBuilder, TestHelpers.Instance.GameLanguageLocalizer); } private void ShouldReceiveNotEnoughGoldMessage() { var packet = GetLastPacket<SMemoiPacket>(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.NotEnoughGold5, packet.Message); } private async Task AttemptingToBuyReputationItemAsync() { var itemBuilder = CreateItemBuilder(0, 500000); var shop = CreateShop(itemBuilder); await Session.Character.BuyAsync(shop, 0, 99, TestHelpers.Instance.WorldConfiguration, itemBuilder, TestHelpers.Instance.GameLanguageLocalizer); } private void ShouldReceiveReputationError() { var packet = GetLastPacket<SMemoiPacket>(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.ReputationNotHighEnough, packet.Message); } private void CharacterHasGoldButFullInventory() { CharacterHasGold(500000); ItemBuilder = CreateItemBuilder(1); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemBuilder.Create(1, 999), Session.Character.CharacterId), NoscorePocketType.Etc, 0); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemBuilder.Create(1, 999), Session.Character.CharacterId), NoscorePocketType.Etc, 1); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemBuilder.Create(1, 999), Session.Character.CharacterId), NoscorePocketType.Etc, 2); } private async Task AttemptingToBuyWithFullInventoryAsync() { var shop = CreateShop(ItemBuilder, -1, 1); await Session.Character.BuyAsync(shop, 0, 999, TestHelpers.Instance.WorldConfiguration, ItemBuilder, TestHelpers.Instance.GameLanguageLocalizer); } private void ShouldReceiveNotEnoughSpaceMessage() { ShouldReceiveMessage(Game18NConstString.NotEnoughSpace); } private void CharacterHasGoldAndPartialInventory() { CharacterHasGold(500000); ItemBuilder = CreateItemBuilder(1); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemBuilder.Create(1, 999), Session.Character.CharacterId), NoscorePocketType.Etc, 0); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemBuilder.Create(1, 999), Session.Character.CharacterId), NoscorePocketType.Etc, 1); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemBuilder.Create(1, 1), Session.Character.CharacterId), NoscorePocketType.Etc, 2); } private async Task Buying998ItemsAt1GoldEachAsync() { var shop = CreateShop(ItemBuilder); await Session.Character.BuyAsync(shop, 0, 998, TestHelpers.Instance.WorldConfiguration, ItemBuilder, TestHelpers.Instance.GameLanguageLocalizer); } private void AllInventorySlotsShouldHave_Items(int value) { Assert.IsTrue(Session.Character.InventoryService.All(s => s.Value.ItemInstance?.Amount == 999)); } private void GoldShouldBeDeducted() { Assert.AreEqual(499002, Session.Character.Gold); } private void CharacterHasReputationAndPartialInventory() { Session.Character.Reput = 500000; ItemBuilder = CreateItemBuilder(0, 1); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemBuilder.Create(1, 999), Session.Character.CharacterId), NoscorePocketType.Etc, 0); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemBuilder.Create(1, 999), Session.Character.CharacterId), NoscorePocketType.Etc, 1); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemBuilder.Create(1, 1), Session.Character.CharacterId), NoscorePocketType.Etc, 2); } private async Task Buying998ItemsAt1ReputationEachAsync() { var list = new ConcurrentDictionary<int, ShopItem>(); list.TryAdd(0, new ShopItem { Slot = 0, ItemInstance = ItemBuilder.Create(1), Type = 0 }); var shop = new Shop { ShopItems = list }; await Session.Character.BuyAsync(shop, 0, 998, TestHelpers.Instance.WorldConfiguration, ItemBuilder, TestHelpers.Instance.GameLanguageLocalizer); } private void ReputationShouldBeDeducted() { Assert.AreEqual(499002, Session.Character.Reput); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Battle/RevivalPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.MapChangeService; using NosCore.PacketHandlers.Battle; using NosCore.Packets.ClientPackets.Event; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; namespace NosCore.PacketHandlers.Tests.Battle { [TestClass] public class RevivalPacketHandlerTests { private const short SeedOfPowerVNum = 1012; private RevivalPacketHandler _handler = null!; private ClientSession _session = null!; private Mock<IMapChangeService> _mapChangeService = null!; private Mock<IRespawnService> _respawnService = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; _mapChangeService = new Mock<IMapChangeService>(); _respawnService = new Mock<IRespawnService>(); _respawnService.Setup(r => r.ResolveRespawnMapTypeId(It.IsAny<short>())).Returns((long?)1); _respawnService.Setup(r => r.GetRespawnLocation(It.IsAny<ICharacterEntity>(), It.IsAny<long?>())) .Returns(((short)1, (short)50, (short)60)); _handler = new RevivalPacketHandler( new Mock<ILogger<RevivalPacketHandler>>().Object, _mapChangeService.Object, _respawnService.Object); } [TestMethod] public async Task RevivalWhileAliveIsIgnored() { await new Spec("Revival packet arriving when character is already alive is a no-op") .Given(CharacterIsAlive) .WhenAsync(SendingRevivalOfType_, (byte)0) .Then(HpShouldRemainAt_, 500) .And(MapChangeShouldNotBeCalled) .ExecuteAsync(); } [TestMethod] public async Task FreeReviveInPlaceAtLevelTwentyRestoresFullHp() { await new Spec("Level<=20 revive-in-place (Type 0) restores HP/MP to 100% without consuming seeds") .Given(CharacterIsDeadAtLevel_, (byte)20) .And(CharacterHasSeedsInInventory_, (short)5) .WhenAsync(SendingRevivalOfType_, (byte)0) .Then(HpShouldBeFullyRestored) .And(SeedStackShouldStillBe_, (short)5) .And(MapChangeShouldNotBeCalled) .ExecuteAsync(); } [TestMethod] public async Task RevivePastTwentyWithEnoughSeedsConsumesThemAndRestoresHalfHp() { await new Spec("Level>20 revive-in-place consumes 5 seeds and restores HP/MP to 50%") .Given(CharacterIsDeadAtLevel_, (byte)30) .And(CharacterHasSeedsInInventory_, (short)10) .WhenAsync(SendingRevivalOfType_, (byte)0) .Then(HpShouldBeRestoredToPercent_, 50) .And(SeedStackShouldStillBe_, (short)5) .And(FivePowerSeedUsedMessageShouldBeSent) .And(MapChangeShouldNotBeCalled) .ExecuteAsync(); } [TestMethod] public async Task RevivePastTwentyWithoutSeedsFallsBackToSavePoint() { await new Spec("Level>20 without enough seeds emits NotEnoughPowerSeed and warps to the save point") .Given(CharacterIsDeadAtLevel_, (byte)30) .And(CharacterHasSeedsInInventory_, (short)2) .WhenAsync(SendingRevivalOfType_, (byte)0) .Then(NotEnoughPowerSeedMessageShouldBeSent) .And(MapChangeShouldHaveBeenCalledWith_, (short)1, (short)50, (short)60) .ExecuteAsync(); } [TestMethod] public async Task ReviveAtSavePointWarpsToRespawnServiceLocation() { await new Spec("Type 1 warps the character to the respawn service's resolved location at full HP/MP") .Given(CharacterIsDeadAtLevel_, (byte)30) .WhenAsync(SendingRevivalOfType_, (byte)1) .Then(MapChangeShouldHaveBeenCalledWith_, (short)1, (short)50, (short)60) .And(HpShouldBeFullyRestored) .ExecuteAsync(); } [TestMethod] public async Task ArenaReviveWithEnoughGoldDeductsOneHundredGoldAndStaysOnMap() { await new Spec("Arena revive (Type 2) charges 100 gold and restores full HP/MP without changing map") .Given(CharacterIsDeadAtLevel_, (byte)30) .And(CharacterHasGold_, 5000L) .WhenAsync(SendingRevivalOfType_, (byte)2) .Then(GoldShouldBe_, 4900L) .And(HpShouldBeFullyRestored) .And(MapChangeShouldNotBeCalled) .ExecuteAsync(); } [TestMethod] public async Task ArenaReviveWithoutEnoughGoldFallsBackToSavePoint() { await new Spec("Arena revive without 100 gold falls back to the save-point revive at full HP") .Given(CharacterIsDeadAtLevel_, (byte)30) .And(CharacterHasGold_, 50L) .WhenAsync(SendingRevivalOfType_, (byte)2) .Then(GoldShouldBe_, 50L) .And(MapChangeShouldHaveBeenCalledWith_, (short)1, (short)50, (short)60) .ExecuteAsync(); } [TestMethod] public async Task UnknownRevivalTypeLeavesCharacterDead() { await new Spec("Unknown revival Type leaves IsAlive=false (matches OpenNos default-case behaviour)") .Given(CharacterIsDeadAtLevel_, (byte)10) .WhenAsync(SendingRevivalOfType_, (byte)99) .Then(CharacterShouldStillBeDead) .And(MapChangeShouldNotBeCalled) .ExecuteAsync(); } private void CharacterIsAlive() { _session.Character.IsAlive = true; _session.Character.Hp = 500; _session.Character.Mp = 500; } private void CharacterIsDeadAtLevel_(byte level) { _session.Character.Level = level; _session.Character.Hp = 0; _session.Character.Mp = 0; _session.Character.IsAlive = false; } private void CharacterHasSeedsInInventory_(short amount) { var item = new Item { VNum = SeedOfPowerVNum, Type = NoscorePocketType.Main, ItemType = ItemType.Main, }; var inst = new ItemInstanceForTest(SeedOfPowerVNum) { Amount = amount, Item = item }; var inv = InventoryItemInstance.Create(inst, _session.Character.CharacterId); inv.Slot = 0; inv.Type = NoscorePocketType.Main; _session.Character.InventoryService[inv.ItemInstanceId] = inv; } private void CharacterHasGold_(long gold) { _session.Character.Gold = gold; } private async Task SendingRevivalOfType_(byte type) { await _handler.ExecuteAsync(new RevivalPacket { Type = type }, _session); } private void HpShouldRemainAt_(int expected) => Assert.AreEqual(expected, _session.Character.Hp); private void HpShouldBeFullyRestored() => Assert.AreEqual(_session.Character.MaxHp, _session.Character.Hp); private void HpShouldBeRestoredToPercent_(int percent) => Assert.AreEqual(Math.Max(1, _session.Character.MaxHp * percent / 100), _session.Character.Hp); private void SeedStackShouldStillBe_(short expected) => Assert.AreEqual(expected, _session.Character.InventoryService.CountItem(SeedOfPowerVNum)); private void GoldShouldBe_(long expected) => Assert.AreEqual(expected, _session.Character.Gold); private void CharacterShouldStillBeDead() => Assert.IsFalse(_session.Character.IsAlive); private void FivePowerSeedUsedMessageShouldBeSent() => Assert.IsTrue(_session.LastPackets.OfType<MsgiPacket>() .Any(p => p.Message == Game18NConstString.FivePowerSeedUsed)); private void NotEnoughPowerSeedMessageShouldBeSent() => Assert.IsTrue(_session.LastPackets.OfType<MsgiPacket>() .Any(p => p.Message == Game18NConstString.NotEnoughPowerSeed)); private void MapChangeShouldNotBeCalled() => _mapChangeService.Verify(m => m.ChangeMapAsync( It.IsAny<ClientSession>(), It.IsAny<short?>(), It.IsAny<short?>(), It.IsAny<short?>()), Times.Never); private void MapChangeShouldHaveBeenCalledWith_(short expectedMapId, short expectedX, short expectedY) => _mapChangeService.Verify(m => m.ChangeMapAsync( _session, It.Is<short?>(v => v == expectedMapId), It.Is<short?>(v => v == expectedX), It.Is<short?>(v => v == expectedY)), Times.Once); private sealed class ItemInstanceForTest(short vnum) : NosCore.Data.Dto.ItemInstanceDto, IItemInstance { public new Guid Id { get; set; } = Guid.NewGuid(); public new short ItemVNum { get; set; } = vnum; public Item Item { get; set; } = new() { VNum = vnum, Type = NoscorePocketType.Main }; public object Clone() => MemberwiseClone(); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Battle/UseSkillPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.StaticEntities; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BattleService; using NosCore.PacketHandlers.Battle; using NosCore.Packets.ClientPackets.Battle; using NosCore.Packets.ServerPackets.Battle; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System; using System.Collections.Concurrent; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Battle { [TestClass] public class UseSkillPacketHandlerTests { private UseSkillPacketHandler Handler = null!; private ClientSession Session = null!; private ClientSession TargetSession = null!; private Mock<IBattleService> BattleService = null!; private readonly ILogger<UseSkillPacketHandler> Logger = new Mock<ILogger<UseSkillPacketHandler>>().Object; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); TargetSession = await TestHelpers.Instance.GenerateSessionAsync(); BattleService = new Mock<IBattleService>(); Handler = new UseSkillPacketHandler( Logger, TestHelpers.Instance.LogLanguageLocalizer, BattleService.Object, TestHelpers.Instance.SessionRegistry); } [TestMethod] public async Task UsingSkillWhenVehicledShouldSendCancelPacket() { await new Spec("Using skill when vehicled should send cancel packet") .Given(CharacterIsOnMap) .And(CharacterIsVehicled) .WhenAsync(UsingSkill) .Then(ShouldReceiveCancelPacket) .ExecuteAsync(); } [TestMethod] public async Task UsingSkillOnUnknownVisualTypeShouldBeIgnored() { await new Spec("Using skill on unknown visual type should be ignored") .Given(CharacterIsOnMap) .WhenAsync(UsingSkillOnUnknownVisualType) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task UsingSkillOnNonExistentPlayerShouldBeIgnored() { await new Spec("Using skill on nonexistent player should be ignored") .Given(CharacterIsOnMap) .WhenAsync(UsingSkillOnNonExistentPlayer) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task UsingSkillOnExistingPlayerShouldCallBattleService() { await new Spec("Using skill on existing player should call battle service") .Given(CharacterIsOnMap) .And(TargetIsOnSameMap) .WhenAsync(UsingSkillOnExistingPlayer) .Then(BattleServiceShouldBeCalled) .ExecuteAsync(); } [TestMethod] public async Task UsingSkillWhenCannotFightShouldSendCancelAndSkipBattleService() { await new Spec("CanFight=false short-circuits to a cancel packet and never calls Hit") .Given(CharacterIsOnMap) .And(TargetIsOnSameMap) .And(CharacterCannotFight) .WhenAsync(UsingSkillOnExistingPlayer) .Then(ShouldReceiveCancelPacket) .And(BattleServiceShouldNotBeCalled) .ExecuteAsync(); } [TestMethod] public async Task UsingSkillWhileSittingStandsTheCharacterUpFirst() { await new Spec("A skill cast while sitting triggers RestAsync (IsSitting flips to false) before the Hit call") .Given(CharacterIsOnMap) .And(TargetIsOnSameMap) .And(CharacterIsSitting) .WhenAsync(UsingSkillOnExistingPlayer) .Then(CharacterShouldNoLongerBeSitting) .And(BattleServiceShouldBeCalled) .ExecuteAsync(); } [TestMethod] public async Task UsingKnownSkillConsumesMpAndStampsLastUse() { await new Spec("A learned skill with MpCost>0 debits Mp and updates LastUse only after a successful Hit") .Given(CharacterIsOnMap) .And(TargetIsOnSameMap) .And(CharacterHasLearnedSkillWithCastId_MpCost_Cooldown_, (short)1, (short)15, (short)1) .And(CharacterHasMp_, 50) .WhenAsync(UsingSkillOnExistingPlayer) .Then(BattleServiceShouldBeCalled) .And(CharacterMpShouldBe_, 35) .And(LastUseShouldHaveBeenStampedRecent) .ExecuteAsync(); } [TestMethod] public async Task UsingKnownSkillOnCooldownSendsCancelAndSkipsBattleService() { await new Spec("A skill whose cooldown has not elapsed since LastUse sends a cancel and does not call Hit") .Given(CharacterIsOnMap) .And(TargetIsOnSameMap) .And(CharacterHasLearnedSkillWithCastId_MpCost_Cooldown_, (short)1, (short)0, (short)300) .And(CharacterHasMp_, 50) .And(SkillWasUsedJustNow) .WhenAsync(UsingSkillOnExistingPlayer) .Then(ShouldReceiveCancelPacket) .And(BattleServiceShouldNotBeCalled) .ExecuteAsync(); } [TestMethod] public async Task UsingKnownSkillWithInsufficientMpSendsCancelAndSkipsBattleService() { await new Spec("A skill whose MpCost exceeds the character's Mp sends a cancel and does not call Hit") .Given(CharacterIsOnMap) .And(TargetIsOnSameMap) .And(CharacterHasLearnedSkillWithCastId_MpCost_Cooldown_, (short)1, (short)100, (short)1) .And(CharacterHasMp_, 20) .WhenAsync(UsingSkillOnExistingPlayer) .Then(ShouldReceiveCancelPacket) .And(BattleServiceShouldNotBeCalled) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void TargetIsOnSameMap() { TargetSession.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void CharacterIsVehicled() { Session.Character.IsVehicled = true; } private void CharacterCannotFight() { Session.Character.CanFight = false; } private void CharacterIsSitting() { Session.Character.IsSitting = true; } private CharacterSkill _learnedSkill = null!; private void CharacterHasLearnedSkillWithCastId_MpCost_Cooldown_(short castId, short mpCost, short cooldown) { _learnedSkill = new CharacterSkill { Skill = new SkillDto { SkillVNum = 1, CastId = castId, UpgradeSkill = 0, MpCost = mpCost, Cooldown = cooldown, }, }; Session.Character.Skills = new ConcurrentDictionary<short, CharacterSkill>(); Session.Character.Skills[1] = _learnedSkill; } private void CharacterHasMp_(int mp) { Session.Character.Mp = mp; } private void SkillWasUsedJustNow() { _learnedSkill.LastUse = DateTime.Now; } private async Task UsingSkill() { await Handler.ExecuteAsync(new UseSkillPacket { CastId = 1, TargetVisualType = VisualType.Player, TargetId = Session.Character.VisualId }, Session); } private async Task UsingSkillOnUnknownVisualType() { await Handler.ExecuteAsync(new UseSkillPacket { CastId = 1, TargetVisualType = (VisualType)99, TargetId = 1 }, Session); } private async Task UsingSkillOnNonExistentPlayer() { await Handler.ExecuteAsync(new UseSkillPacket { CastId = 1, TargetVisualType = VisualType.Player, TargetId = 99999 }, Session); } private async Task UsingSkillOnExistingPlayer() { await Handler.ExecuteAsync(new UseSkillPacket { CastId = 1, TargetVisualType = VisualType.Player, TargetId = TargetSession.Character.VisualId }, Session); } private void ShouldReceiveCancelPacket() { var packet = Session.LastPackets.OfType<CancelPacket>().FirstOrDefault(); Assert.IsNotNull(packet); } private void NoPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } private void BattleServiceShouldBeCalled() { BattleService.Verify(x => x.Hit(It.IsAny<NosCore.GameObject.Ecs.Interfaces.ICharacterEntity>(), It.IsAny<NosCore.GameObject.Ecs.Interfaces.IAliveEntity>(), It.IsAny<HitArguments>()), Times.Once); } private void BattleServiceShouldNotBeCalled() { BattleService.Verify(x => x.Hit(It.IsAny<NosCore.GameObject.Ecs.Interfaces.ICharacterEntity>(), It.IsAny<NosCore.GameObject.Ecs.Interfaces.IAliveEntity>(), It.IsAny<HitArguments>()), Times.Never); } private void CharacterShouldNoLongerBeSitting() { Assert.IsFalse(Session.Character.IsSitting); } private void CharacterMpShouldBe_(int expected) { Assert.AreEqual(expected, Session.Character.Mp); } private void LastUseShouldHaveBeenStampedRecent() { Assert.IsTrue(DateTime.Now - _learnedSkill.LastUse < TimeSpan.FromSeconds(5)); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Bazaar/CBListPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.StaticEntities; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.PacketHandlers.Bazaar; using NosCore.Packets.ClientPackets.Bazaar; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Auction; using NosCore.Tests.Shared; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Bazaar { [TestClass] public class CBListPacketHandlerTests { private Mock<IBazaarHub> BazaarHttpClient = null!; private CBListPacketHandler CblistPacketHandler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); BazaarHttpClient = new Mock<IBazaarHub>(); var items = new List<ItemDto> { new Item {Type = NoscorePocketType.Main, VNum = 1012, IsSoldable = true} }; CblistPacketHandler = new CBListPacketHandler(BazaarHttpClient.Object, items, TestHelpers.Instance.Clock); } [TestMethod] public async Task ListingShouldReturnEmptyWhenNoItems() { await new Spec("Listing should return empty when no items") .Given(BazaarHasNoItems) .WhenAsync(ListingBazaarItems) .Then(ShouldReceiveEmptyList) .ExecuteAsync(); } [TestMethod] public async Task ListingShouldReturnValidItems() { await new Spec("Listing should return valid items") .Given(BazaarHasValidItems) .WhenAsync(ListingBazaarItems) .Then(ShouldReceiveOneItem) .ExecuteAsync(); } [TestMethod] public async Task ListingShouldFilterInvalidItems() { await new Spec("Listing should filter invalid items") .Given(BazaarHasInvalidItems) .WhenAsync(ListingBazaarItems) .Then(ShouldReceiveEmptyList) .ExecuteAsync(); } private void BazaarHasNoItems() { BazaarHttpClient.Setup(b => b.GetBazaar( It.IsAny<long>(), It.IsAny<byte?>(), It.IsAny<byte?>(), It.IsAny<BazaarListType?>(), It.IsAny<byte?>(), It.IsAny<byte?>(), It.IsAny<byte?>(), It.IsAny<byte?>(), It.IsAny<long?>()) ).ReturnsAsync(new List<BazaarLink>()); } private async Task ListingBazaarItems() { await CblistPacketHandler.ExecuteAsync(new CBListPacket { ItemVNumFilter = new List<short>() }, Session); } private void ShouldReceiveEmptyList() { var packet = (RcbListPacket?)Session.LastPackets.FirstOrDefault(s => s is RcbListPacket); Assert.IsTrue(packet?.Items?.Count == 0); } private void BazaarHasValidItems() { BazaarHttpClient.Setup(b => b.GetBazaar( It.IsAny<long>(), It.IsAny<byte?>(), It.IsAny<byte?>(), It.IsAny<BazaarListType?>(), It.IsAny<byte?>(), It.IsAny<byte?>(), It.IsAny<byte?>(), It.IsAny<byte?>(), It.IsAny<long?>()) ).ReturnsAsync(new List<BazaarLink> { new() { SellerName = "test", BazaarItem = new BazaarItemDto {Price = 50, Amount = 1, DateStart = TestHelpers.Instance.Clock.GetCurrentInstant(), Duration = 200}, ItemInstance = new ItemInstanceDto {ItemVNum = 1012, Amount = 1} } }); } private void ShouldReceiveOneItem() { var packet = (RcbListPacket?)Session.LastPackets.FirstOrDefault(s => s is RcbListPacket); Assert.IsTrue(packet?.Items?.Count == 1); } private void BazaarHasInvalidItems() { BazaarHttpClient.Setup(b => b.GetBazaar( It.IsAny<long>(), It.IsAny<byte?>(), It.IsAny<byte?>(), It.IsAny<BazaarListType?>(), It.IsAny<byte?>(), It.IsAny<byte?>(), It.IsAny<byte?>(), It.IsAny<byte?>(), It.IsAny<long?>()) ).ReturnsAsync(new List<BazaarLink> { new() { SellerName = "test", BazaarItem = new BazaarItemDto {Price = 50, Amount = 1}, ItemInstance = new ItemInstanceDto {ItemVNum = 1012, Amount = 1} } }); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Bazaar/CBuyPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.PacketHandlers.Bazaar; using NosCore.Packets.ClientPackets.Bazaar; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Bazaar { [TestClass] public class CBuyPacketHandlerTests { private static readonly ILogger<CBuyPacketHandler> Logger = new Mock<ILogger<CBuyPacketHandler>>().Object; private Mock<IBazaarHub> BazaarHttpClient = null!; private CBuyPacketHandler CbuyPacketHandler = null!; private Mock<IDao<IItemInstanceDto?, Guid>> ItemInstanceDao = null!; private Mock<IItemGenerationService> ItemProvider = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); BazaarHttpClient = new Mock<IBazaarHub>(); ItemInstanceDao = new Mock<IDao<IItemInstanceDto?, Guid>>(); ItemProvider = new Mock<IItemGenerationService>(); CbuyPacketHandler = new CBuyPacketHandler(BazaarHttpClient.Object, ItemProvider.Object, Logger, ItemInstanceDao.Object, TestHelpers.Instance.LogLanguageLocalizer); BazaarHttpClient.Setup(b => b.GetBazaar(0, null, null, null, null, null, null, null, null)).ReturnsAsync( new List<BazaarLink> { new BazaarLink { SellerName = "test", BazaarItem = new BazaarItemDto { Price = 50, Amount = 1 }, ItemInstance = new ItemInstanceDto { ItemVNum = 1012, Amount = 1 } }}); BazaarHttpClient.Setup(b => b.GetBazaar(2, null, null, null, null, null, null, null, null)).ReturnsAsync( new List<BazaarLink> { new BazaarLink { SellerName = Session.Character.Name, BazaarItem = new BazaarItemDto { Price = 60, Amount = 1 }, ItemInstance = new ItemInstanceDto { ItemVNum = 1012 } }}); BazaarHttpClient.Setup(b => b.GetBazaar(3, null, null, null, null, null, null, null, null)).ReturnsAsync( new List<BazaarLink> { new BazaarLink { SellerName = "test", BazaarItem = new BazaarItemDto { Price = 50, Amount = 99, IsPackage = true }, ItemInstance = new ItemInstanceDto { ItemVNum = 1012, Amount = 99 } }}); BazaarHttpClient.Setup(b => b.GetBazaar(1, null, null, null, null, null, null, null, null)).ReturnsAsync(new List<BazaarLink>()); BazaarHttpClient.Setup(b => b.DeleteBazaarAsync(It.IsAny<long>(), It.IsAny<short>(), It.IsAny<string>(), It.IsAny<long?>())).ReturnsAsync(true); } [TestMethod] public async Task BuyingWhileInShopShouldBeIgnored() { await new Spec("Buying while in shop should be ignored") .Given(CharacterIsInShop) .WhenAsync(BuyingFromBazaarViaMiddleware) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task BuyingNonExistentItemShouldShowOfferUpdated() { await new Spec("Buying non existent item should show offer updated") .WhenAsync(BuyingNonExistentItem) .Then(ShouldReceiveOfferUpdatedMessage) .ExecuteAsync(); } [TestMethod] public async Task BuyingOwnItemShouldShowOfferUpdated() { await new Spec("Buying own item should show offer updated") .WhenAsync(BuyingOwnItem) .Then(ShouldReceiveOfferUpdatedMessage) .ExecuteAsync(); } [TestMethod] public async Task BuyingAtWrongPriceShouldShowOfferUpdated() { await new Spec("Buying at wrong price should show offer updated") .WhenAsync(BuyingAtWrongPrice) .Then(ShouldReceiveOfferUpdatedMessage) .ExecuteAsync(); } [TestMethod] public async Task BuyingWhenInventoryFullShouldShowNoSpace() { await new Spec("Buying when inventory full should show no space") .Given(InventoryIsFull) .WhenAsync(BuyingItemFromBazaar) .Then(ShouldReceiveNotEnoughSpaceMessage) .ExecuteAsync(); } [TestMethod] public async Task BuyingMoreThanAvailableShouldShowOfferUpdated() { await new Spec("Buying more than available should show offer updated") .Given(CharacterHasGold_, 5000L) .WhenAsync(BuyingMoreThanAvailable) .Then(ShouldReceiveOfferUpdatedMessage) .ExecuteAsync(); } [TestMethod] public async Task BuyingPartialPackageShouldBeIgnored() { await new Spec("Buying partial package should be ignored") .Given(CharacterHasGold_, 5000L) .WhenAsync(BuyingPartialPackage) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task BuyingFullPackageShouldSucceed() { await new Spec("Buying full package should succeed") .Given(CharacterHasGold_, 5000L) .And(ItemProviderIsConfigured) .WhenAsync(BuyingFullPackage) .Then(ShouldReceiveBoughtItemMessage) .ExecuteAsync(); } [TestMethod] public async Task BuyingWithoutEnoughGoldShouldFail() { await new Spec("Buying without enough gold should fail") .WhenAsync(BuyingItemFromBazaar) .Then(ShouldReceiveInsufficientGoldMessage) .ExecuteAsync(); } [TestMethod] public async Task BuyingItemShouldSucceed() { await new Spec("Buying item should succeed") .Given(CharacterHasGold_, 5000L) .And(ItemProviderIsConfigured) .WhenAsync(BuyingItemFromBazaar) .Then(ShouldReceiveBoughtItemMessage) .ExecuteAsync(); } private void CharacterIsInShop() { Session.Character.InShop = true; } private async Task BuyingFromBazaarViaMiddleware() { await Session.HandlePacketsAsync(new[] { new CBuyPacket { BazaarId = 1, Price = 50, Amount = 1, VNum = 1012 } }); } private void NoPacketShouldBeSent() { Assert.IsNull(Session.LastPackets.FirstOrDefault()); } private async Task BuyingNonExistentItem() { await CbuyPacketHandler.ExecuteAsync(new CBuyPacket { BazaarId = 1, Price = 50, Amount = 1, VNum = 1012 }, Session); } private void ShouldReceiveOfferUpdatedMessage() { var packet = (ModaliPacket?)Session.LastPackets.FirstOrDefault(s => s is ModaliPacket); Assert.IsTrue(packet?.Type == 1 && packet?.Message == Game18NConstString.OfferUpdated); } private async Task BuyingOwnItem() { await CbuyPacketHandler.ExecuteAsync(new CBuyPacket { BazaarId = 2, Price = 50, Amount = 1, VNum = 1012 }, Session); } private async Task BuyingAtWrongPrice() { await CbuyPacketHandler.ExecuteAsync(new CBuyPacket { BazaarId = 0, Price = 40, Amount = 1, VNum = 1012 }, Session); } private void InventoryIsFull() { var guid1 = Guid.NewGuid(); var guid2 = Guid.NewGuid(); Session.Character.InventoryService.AddItemToPocket(new InventoryItemInstance(new ItemInstance(new Item { VNum = 1012 }) { Amount = 999, Id = guid2 }) { Id = guid2, Slot = 0, Type = NoscorePocketType.Main }); Session.Character.InventoryService.AddItemToPocket(new InventoryItemInstance(new ItemInstance(new Item { VNum = 1012 }) { Amount = 999, Id = guid1 }) { Id = guid1, Slot = 1, Type = NoscorePocketType.Main }); } private async Task BuyingItemFromBazaar() { await CbuyPacketHandler.ExecuteAsync(new CBuyPacket { BazaarId = 0, Price = 50, Amount = 1, VNum = 1012 }, Session); } private void ShouldReceiveNotEnoughSpaceMessage() { var packet = (InfoiPacket?)Session.LastPackets.FirstOrDefault(s => s is InfoiPacket); Assert.IsTrue(packet?.Message == Game18NConstString.NotEnoughSpace); } private void CharacterHasGold_(long gold) { Session.Character.Gold = gold; } private async Task BuyingMoreThanAvailable() { await CbuyPacketHandler.ExecuteAsync(new CBuyPacket { BazaarId = 0, Price = 50, Amount = 2, VNum = 1012 }, Session); } private async Task BuyingPartialPackage() { await CbuyPacketHandler.ExecuteAsync(new CBuyPacket { BazaarId = 3, Price = 50, Amount = 1, VNum = 1012 }, Session); } private void ItemProviderIsConfigured() { var item = new Item { Type = NoscorePocketType.Main, VNum = 1012 }; ItemProvider.Setup(s => s.Convert(It.IsAny<IItemInstanceDto>())) .Returns(new ItemInstance(item) { Amount = 1, Item = item }); } private async Task BuyingFullPackage() { await CbuyPacketHandler.ExecuteAsync(new CBuyPacket { BazaarId = 3, Price = 50, Amount = 99, VNum = 1012 }, Session); } private void ShouldReceiveBoughtItemMessage() { var packet = (SayiPacket?)Session.LastPackets.FirstOrDefault(s => s is SayiPacket); Assert.IsTrue(packet?.VisualType == VisualType.Player && packet?.VisualId == Session.Character.CharacterId && packet?.Type == SayColorType.Yellow && packet?.Message == Game18NConstString.BoughtItem); } private void ShouldReceiveInsufficientGoldMessage() { var packet = (ModaliPacket?)Session.LastPackets.FirstOrDefault(s => s is ModaliPacket); Assert.IsTrue(packet?.Message == Game18NConstString.InsufficientGoldAvailable); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Bazaar/CModPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Json.Patch; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Dto; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Bazaar; using NosCore.Packets.ClientPackets.Bazaar; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Bazaar { [TestClass] public class CModPacketHandlerTests { private static readonly ILogger<CModPacketHandler> Logger = new Mock<ILogger<CModPacketHandler>>().Object; private Mock<IBazaarHub> BazaarHttpClient = null!; private CModPacketHandler CmodPacketHandler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); BazaarHttpClient = new Mock<IBazaarHub>(); CmodPacketHandler = new CModPacketHandler(BazaarHttpClient.Object, Logger, TestHelpers.Instance.LogLanguageLocalizer); BazaarHttpClient.Setup(b => b.GetBazaar(0, null, null, null, null, null, null, null, null)).ReturnsAsync( new List<BazaarLink>() {new() { SellerName = "test", BazaarItem = new BazaarItemDto { Price = 50, Amount = 1 }, ItemInstance = new ItemInstanceDto { ItemVNum = 1012, Amount = 1 } }}); BazaarHttpClient.Setup(b => b.GetBazaar(3, null, null, null, null, null, null, null, null)).ReturnsAsync( new List<BazaarLink>() {new() { SellerName = Session.Character.Name, BazaarItem = new BazaarItemDto { Price = 50, Amount = 1 }, ItemInstance = new ItemInstanceDto { ItemVNum = 1012, Amount = 0 } }}); BazaarHttpClient.Setup(b => b.GetBazaar(2, null, null, null, null, null, null, null, null)).ReturnsAsync( new List<BazaarLink>() {new() { SellerName = Session.Character.Name, BazaarItem = new BazaarItemDto { Price = 60, Amount = 1 }, ItemInstance = new ItemInstanceDto { ItemVNum = 1012, Amount = 1 } }}); BazaarHttpClient.Setup(b => b.GetBazaar(1, null, null, null, null, null, null, null, null)).ReturnsAsync(new List<BazaarLink>()); BazaarHttpClient.Setup(b => b.ModifyBazaarAsync(It.IsAny<long>(), It.IsAny<JsonPatch?>()!)).ReturnsAsync(new BazaarLink { SellerName = Session.Character.Name, BazaarItem = new BazaarItemDto { Price = 70, Amount = 1 }, ItemInstance = new ItemInstanceDto { ItemVNum = 1012, Amount = 1 } }); } [TestMethod] public async Task ModifyingWhileInShopShouldBeIgnored() { await new Spec("Modifying while in shop should be ignored") .Given(CharacterIsInShop) .WhenAsync(ModifyingBazaarItemAsync) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ModifyingNonExistentItemShouldBeIgnored() { await new Spec("Modifying non existent item should be ignored") .WhenAsync(ModifyingNonExistentItemAsync) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ModifyingOtherSellersItemShouldBeIgnored() { await new Spec("Modifying other sellers item should be ignored") .WhenAsync(ModifyingOtherSellersItemAsync) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ModifyingSoldItemShouldShowError() { await new Spec("Modifying sold item should show error") .WhenAsync(ModifyingSoldItemAsync) .Then(ShouldReceiveCannotChangePriceMessage) .ExecuteAsync(); } [TestMethod] public async Task ModifyingWithWrongAmountShouldShowOfferUpdated() { await new Spec("Modifying with wrong amount should show offer updated") .WhenAsync(ModifyingWithWrongAmountAsync) .Then(ShouldReceiveOfferUpdatedMessage) .ExecuteAsync(); } [TestMethod] public async Task ModifyingToSamePriceShouldBeIgnored() { await new Spec("Modifying to same price should be ignored") .WhenAsync(ModifyingToSamePriceAsync) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ModifyingPriceShouldSucceed() { await new Spec("Modifying price should succeed") .WhenAsync(ModifyingPriceSuccessfullyAsync) .Then(ShouldReceiveNewPriceMessage) .ExecuteAsync(); } private void CharacterIsInShop() { Session.Character.InShop = true; } private async Task ModifyingBazaarItemAsync() { await CmodPacketHandler.ExecuteAsync(new CModPacket { BazaarId = 1, NewPrice = 50, Amount = 1, VNum = 1012 }, Session); } private void NoPacketShouldBeSent() { Assert.IsNull(Session.LastPackets.FirstOrDefault()); } private async Task ModifyingNonExistentItemAsync() { await CmodPacketHandler.ExecuteAsync(new CModPacket { BazaarId = 1, NewPrice = 50, Amount = 1, VNum = 1012 }, Session); } private async Task ModifyingOtherSellersItemAsync() { await CmodPacketHandler.ExecuteAsync(new CModPacket { BazaarId = 0, NewPrice = 50, Amount = 1, VNum = 1012 }, Session); } private async Task ModifyingSoldItemAsync() { await CmodPacketHandler.ExecuteAsync(new CModPacket { BazaarId = 3, NewPrice = 60, Amount = 1, VNum = 1012 }, Session); } private void ShouldReceiveCannotChangePriceMessage() { var packet = (ModaliPacket?)Session.LastPackets.FirstOrDefault(s => s is ModaliPacket); Assert.IsTrue(packet?.Type == 1 && packet?.Message == Game18NConstString.CannotChangePriceSoldItems); } private async Task ModifyingWithWrongAmountAsync() { await CmodPacketHandler.ExecuteAsync(new CModPacket { BazaarId = 2, NewPrice = 70, Amount = 2, VNum = 1012 }, Session); } private void ShouldReceiveOfferUpdatedMessage() { var packet = (ModaliPacket?)Session.LastPackets.FirstOrDefault(s => s is ModaliPacket); Assert.IsTrue(packet?.Type == 1 && packet?.Message == Game18NConstString.OfferUpdated); } private async Task ModifyingToSamePriceAsync() { await CmodPacketHandler.ExecuteAsync(new CModPacket { BazaarId = 2, NewPrice = 60, Amount = 1, VNum = 1012 }, Session); } private async Task ModifyingPriceSuccessfullyAsync() { await CmodPacketHandler.ExecuteAsync(new CModPacket { BazaarId = 2, NewPrice = 70, Amount = 1, VNum = 1012 }, Session); } private void ShouldReceiveNewPriceMessage() { var packet = (SayiPacket?)Session.LastPackets.FirstOrDefault(s => s is SayiPacket); Assert.IsTrue(packet?.VisualType == VisualType.Player && packet?.VisualId == Session.Character.CharacterId && packet?.Type == SayColorType.Yellow && packet?.Message == Game18NConstString.NewSellingPrice && packet?.ArgumentType == 4 && (long?)packet?.Game18NArguments[0] == 70); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Bazaar/CRegPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Buff; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub; using NosCore.PacketHandlers.Bazaar; using NosCore.Packets.ClientPackets.Bazaar; using NosCore.Packets.Enumerations; using NosCore.Tests.Shared; using NosCore.Tests.Shared.BDD; using NosCore.Tests.Shared.BDD.Steps; using SpecLight; using System; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Bazaar { [TestClass] public class CRegPacketHandlerTests : SpecBase { private Mock<IBazaarHub> BazaarHttpClient = null!; private CRegPacketHandler CregPacketHandler = null!; private Mock<IDao<InventoryItemInstanceDto, Guid>> InventoryItemInstanceDao = null!; private Mock<IDao<IItemInstanceDto?, Guid>> ItemInstanceDao = null!; [TestInitialize] public override async Task SetupAsync() { await base.SetupAsync(); BazaarHttpClient = new Mock<IBazaarHub>(); InventoryItemInstanceDao = new Mock<IDao<InventoryItemInstanceDto, Guid>>(); ItemInstanceDao = new Mock<IDao<IItemInstanceDto?, Guid>>(); BazaarHttpClient.Setup(s => s.AddBazaarAsync(It.IsAny<BazaarRequest>())) .ReturnsAsync(LanguageKey.OBJECT_IN_BAZAAR); CregPacketHandler = new CRegPacketHandler( TestHelpers.Instance.WorldConfiguration, BazaarHttpClient.Object, ItemInstanceDao.Object, InventoryItemInstanceDao.Object); ItemInstanceDao.Setup(s => s.TryInsertOrUpdateAsync(It.IsAny<IItemInstanceDto?>())) .Returns<IItemInstanceDto?>(Task.FromResult); } [TestMethod] public async Task RegisteringWhileInShopShouldBeIgnored() { await new Spec("Registering while in shop should be ignored") .Given(TheCharacterIsInAShop) .WhenAsync(AttemptingToRegisterAnItem) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task RegisteringWithoutEnoughGoldForTaxShouldFail() { await new Spec("Registering without enough gold for tax should fail") .WhenAsync(AttemptingToRegisterAnItem) .Then(ShouldReceiveNotEnoughGoldMessage) .ExecuteAsync(); } [TestMethod] public async Task RegisteringNegativeAmountShouldBeIgnored() { await new Spec("Registering negative amount should be ignored") .Given(CharacterHasGold_, 500000L) .WhenAsync(AttemptingToRegisterNegativeAmount) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task RegisteringNonExistentItemShouldBeIgnored() { await new Spec("Registering non existent item should be ignored") .Given(CharacterHasGold_, 500000L) .WhenAsync(AttemptingToRegisterAnItem) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task RegisteringTooExpensiveWithoutMedalShouldFail() { await new Spec("Registering too expensive without medal should fail") .Given(CharacterHasGold_, 500000L) .And(CharacterHasItem_, (short)1012) .WhenAsync(AttemptingToRegisterAtExcessivePrice) .Then(ShouldReceivePriceLimitMessage) .ExecuteAsync(); } [TestMethod] public async Task MedalHoldersPayReducedTax() { await new Spec("Medal holders pay reduced tax") .Given(CharacterHasGold_, 100000L) .And(CharacterHasBazaarMedal) .And(CharacterHasItem_, (short)1012) .WhenAsync(RegisteringAnExpensiveItem) .Then(InventoryShouldBeEmpty) .And(ShouldReceiveSuccessMessage) .ExecuteAsync(); } [TestMethod] public async Task RegisteringOverMaxPriceShouldFail() { await new Spec("Registering over max price should fail") .Given(CharacterHasGold_, 5000000L) .And(CharacterHasItem_, (short)1012) .WhenAsync(AttemptingToRegisterAboveMaxGold) .Then(ShouldReceivePriceLimitMessage) .ExecuteAsync(); } [TestMethod] public async Task RegisteringTooLongWithoutMedalShouldFail() { await new Spec("Registering too long without medal should fail") .Given(CharacterHasGold_, 5000000L) .And(CharacterHasItem_, (short)1012) .WhenAsync(AttemptingToRegisterForExtendedDuration) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task RegisteringInvalidDurationShouldFail() { await new Spec("Registering invalid duration should fail") .Given(CharacterHasGold_, 5000000L) .And(CharacterHasItem_, (short)1012) .WhenAsync(AttemptingToRegisterWithInvalidDuration) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ExceedingListingLimitShouldFail() { BazaarHttpClient.Reset(); BazaarHttpClient.Setup(s => s.AddBazaarAsync(It.IsAny<BazaarRequest>())) .ReturnsAsync(LanguageKey.LIMIT_EXCEEDED); await new Spec("Exceeding listing limit should fail") .Given(CharacterHasGold_, 5000000L) .And(CharacterHasManyItems) .WhenAsync(AttemptingToRegisterBeyondLimit) .Then(ItemShouldRemainInInventory) .And(ShouldReceiveLimitExceededMessage) .ExecuteAsync(); } [TestMethod] public async Task RegisteringFullStackShouldSucceed() { await new Spec("Registering full stack should succeed") .Given(CharacterHasGold_, 5000000L) .And(CharacterHasManyItems) .WhenAsync(RegisteringAll_Items, 999) .Then(InventoryShouldBeEmpty) .And(ShouldReceiveSuccessMessage) .ExecuteAsync(); } [TestMethod] public async Task RegisteringMoreThanInventoryShouldFail() { await new Spec("Registering more than inventory should fail") .Given(CharacterHasGold_, 5000000L) .And(CharacterHasItem_, (short)1012) .WhenAsync(AttemptingToRegister_Items, 2) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task RegisteringPartialStackShouldSucceed() { await new Spec("Registering partial stack should succeed") .Given(CharacterHasGold_, 5000000L) .And(CharacterHasManyItems) .WhenAsync(Registering_Items, 949) .Then(FiftyItemsShouldRemain) .And(ShouldReceiveSuccessMessage) .ExecuteAsync(); } private CRegPacket CreateCRegPacket(short amount = 1, long price = 1000, byte durability = 1) { return new CRegPacket { Type = 0, Inventory = 1, Slot = 0, Amount = amount, Price = price, Durability = durability, IsPackage = false, Taxe = 0, MedalUsed = 0 }; } private void TheCharacterIsInAShop() { Session.InShop(); } private async Task AttemptingToRegisterAnItem() { await Session.HandlePacketsAsync(new[] { CreateCRegPacket() }); } private void ShouldReceiveNotEnoughGoldMessage() { ShouldReceiveMessage(Game18NConstString.NotEnoughGold); } private void CharacterHasGold_(long gold) { CharacterHasGold(gold); } private async Task AttemptingToRegisterNegativeAmount() { await CregPacketHandler.ExecuteAsync(CreateCRegPacket(amount: -1), Session); } private void CharacterHasItem_(short vnum) { CharacterHasItem(vnum); } private async Task AttemptingToRegisterAtExcessivePrice() { await CregPacketHandler.ExecuteAsync(CreateCRegPacket(price: 100000001), Session); } private void ShouldReceivePriceLimitMessage() { ShouldReceiveModalMessage(Game18NConstString.NotExceedMaxPrice, 1, 4); } private void CharacterHasBazaarMedal() { CharacterHasMedalBonus(StaticBonusType.BazaarMedalGold); } private async Task RegisteringAnExpensiveItem() { await CregPacketHandler.ExecuteAsync(CreateCRegPacket(price: 10000000), Session); } private void ShouldReceiveSuccessMessage() { ShouldReceiveMessage(Game18NConstString.ItemAddedToBazar, MessageType.Default); } private async Task AttemptingToRegisterAboveMaxGold() { await CregPacketHandler.ExecuteAsync(CreateCRegPacket(price: TestHelpers.Instance.WorldConfiguration.Value.MaxGoldAmount + 1), Session); } private async Task AttemptingToRegisterForExtendedDuration() { await CregPacketHandler.ExecuteAsync(CreateCRegPacket(price: 1, durability: 2), Session); } private async Task AttemptingToRegisterWithInvalidDuration() { await CregPacketHandler.ExecuteAsync(CreateCRegPacket(price: 1, durability: 7), Session); } private void CharacterHasManyItems() { CharacterHasItem(1012, 999); } private async Task AttemptingToRegisterBeyondLimit() { await CregPacketHandler.ExecuteAsync(CreateCRegPacket(amount: 949, price: 1), Session); } private void ItemShouldRemainInInventory() { InventoryShouldContainItem(1012, 999); } private void ShouldReceiveLimitExceededMessage() { ShouldReceiveModalMessage(Game18NConstString.ListedMaxItemsNumber); } private async Task RegisteringAll_Items(int value) { await CregPacketHandler.ExecuteAsync(CreateCRegPacket(amount: 999, price: 1), Session); } private async Task AttemptingToRegister_Items(int value) { await CregPacketHandler.ExecuteAsync(CreateCRegPacket(amount: 2, price: 1), Session); } private async Task Registering_Items(int value) { await CregPacketHandler.ExecuteAsync(CreateCRegPacket(amount: 949, price: 1), Session); } private void FiftyItemsShouldRemain() { InventoryShouldContainItem(1012, 50); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Bazaar/CSListPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // namespace NosCore.PacketHandlers.Tests.Bazaar { //[TestClass] //public class CSListPacketHandlerTest //{ // private Mock<IBazaarHub> BazaarHttpClient; // private CSListPacketHandler CSListPacketHandler; // private ClientSession Session; // [TestInitialize] // public void Setup() // { // CSListPacketHandler = new CSListPacketHandler(BazaarHttpClient.Object); // } // //TODO list tests //} } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Bazaar/CScalcPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.PacketHandlers.Bazaar; using NosCore.Packets.ClientPackets.Bazaar; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Bazaar; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Bazaar { [TestClass] public class CScalcPacketHandlerTests { private static readonly ILogger<CScalcPacketHandler> Logger = new Mock<ILogger<CScalcPacketHandler>>().Object; private Mock<IBazaarHub> BazaarHttpClient = null!; private CScalcPacketHandler CScalcPacketHandler = null!; private Mock<IDao<IItemInstanceDto?, Guid>> ItemInstanceDao = null!; private Mock<IItemGenerationService> ItemProvider = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); BazaarHttpClient = new Mock<IBazaarHub>(); ItemProvider = new Mock<IItemGenerationService>(); ItemInstanceDao = new Mock<IDao<IItemInstanceDto?, Guid>>(); CScalcPacketHandler = new CScalcPacketHandler(TestHelpers.Instance.WorldConfiguration, BazaarHttpClient.Object, ItemProvider.Object, Logger, ItemInstanceDao.Object, TestHelpers.Instance.LogLanguageLocalizer); BazaarHttpClient.Setup(b => b.GetBazaar(0, null, null, null, null, null, null, null, null)).ReturnsAsync( new List<BazaarLink>() {new BazaarLink { SellerName = Session.Character.Name, BazaarItem = new BazaarItemDto { Price = 50, Amount = 1 }, ItemInstance = new ItemInstanceDto { ItemVNum = 1012, Amount = 0 } }}); BazaarHttpClient.Setup(b => b.GetBazaar(2, null, null, null, null, null, null, null, null)).ReturnsAsync( new List<BazaarLink>() {new BazaarLink { SellerName = "test", BazaarItem = new BazaarItemDto { Price = 60, Amount = 1 }, ItemInstance = new ItemInstanceDto { ItemVNum = 1012, Amount = 0 } }}); BazaarHttpClient.Setup(b => b.GetBazaar(1, null, null, null, null, null, null, null, null)).ReturnsAsync(new List<BazaarLink>()); BazaarHttpClient.Setup(b => b.DeleteBazaarAsync(It.IsAny<long>(), It.IsAny<short>(), It.IsAny<string>(), It.IsAny<long?>())).ReturnsAsync(true); ItemProvider.Setup(s => s.Convert(It.IsAny<IItemInstanceDto>())).Returns(new ItemInstance(new Item() { VNum = 1012 }) { Amount = 0, Item = new Item() }); } [TestMethod] public async Task RetrievingWhileInShopShouldBeIgnored() { await new Spec("Retrieving while in shop should be ignored") .Given(CharacterIsInShop) .WhenAsync(RetrievingFromBazaarViaMiddleware) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task RetrievingNonExistentItemShouldReturnZeroPrice() { await new Spec("Retrieving non existent item should return zero price") .WhenAsync(RetrievingNonExistentItem) .Then(ShouldReceiveZeroPriceResponse) .ExecuteAsync(); } [TestMethod] public async Task RetrievingOtherSellersItemShouldReturnZeroPrice() { await new Spec("Retrieving other sellers item should return zero price") .WhenAsync(RetrievingOtherSellersItem) .Then(ShouldReceiveZeroPriceResponse) .ExecuteAsync(); } [TestMethod] public async Task RetrievingWhenInventoryFullShouldStillReturnPrice() { await new Spec("Retrieving when inventory full should still return price") .Given(InventoryIsFull) .WhenAsync(RetrievingOwnItem) .Then(ShouldReceivePriceOf_, 50) .ExecuteAsync(); } [TestMethod] public async Task RetrievingWhenAtMaxGoldShouldShowError() { await new Spec("Retrieving when at max gold should show error") .Given(CharacterHasMaxGold) .WhenAsync(RetrievingOwnItem) .Then(ShouldReceiveMaxGoldMessage) .ExecuteAsync(); } [TestMethod] public async Task RetrievingSoldItemShouldSucceed() { await new Spec("Retrieving sold item should succeed") .Given(ItemInstanceDaoIsConfigured) .WhenAsync(RetrievingOwnItem) .Then(ShouldReceiveTotalOf_, 50) .ExecuteAsync(); } private void CharacterIsInShop() { Session.Character.InShop = true; } private async Task RetrievingFromBazaarViaMiddleware() { await Session.HandlePacketsAsync(new[] { new CScalcPacket { BazaarId = 1, Price = 50, Amount = 1, VNum = 1012 } }); } private void NoPacketShouldBeSent() { Assert.IsNull(Session.LastPackets.FirstOrDefault()); } private async Task RetrievingNonExistentItem() { await CScalcPacketHandler.ExecuteAsync(new CScalcPacket { BazaarId = 1, Price = 50, Amount = 1, VNum = 1012 }, Session); } private void ShouldReceiveZeroPriceResponse() { var packet = (RCScalcPacket?)Session.LastPackets.FirstOrDefault(s => s is RCScalcPacket); Assert.AreEqual(0, packet?.Price); } private async Task RetrievingOtherSellersItem() { await CScalcPacketHandler.ExecuteAsync(new CScalcPacket { BazaarId = 2, Price = 50, Amount = 1, VNum = 1012 }, Session); } private void InventoryIsFull() { var guid1 = Guid.NewGuid(); var guid2 = Guid.NewGuid(); Session.Character.InventoryService.AddItemToPocket( new InventoryItemInstance(new ItemInstance(new Item() { VNum = 1012 }) { Amount = 999, Id = guid2 }) { Id = guid2, Slot = 0, Type = NoscorePocketType.Main, }); Session.Character.InventoryService.AddItemToPocket(new InventoryItemInstance( new ItemInstance(new Item() { VNum = 1012 }) { Amount = 999, Id = guid1 }) { Id = guid1, Slot = 1, Type = NoscorePocketType.Main }); } private async Task RetrievingOwnItem() { await CScalcPacketHandler.ExecuteAsync(new CScalcPacket { BazaarId = 0, Price = 50, Amount = 1, VNum = 1012 }, Session); } private void ShouldReceivePriceOf_(int value) { var packet = (RCScalcPacket?)Session.LastPackets.FirstOrDefault(s => s is RCScalcPacket); Assert.AreEqual(value, packet?.Price); } private void CharacterHasMaxGold() { Session.Character.Gold = TestHelpers.Instance.WorldConfiguration.Value.MaxGoldAmount; } private void ShouldReceiveMaxGoldMessage() { var packet = (MsgiPacket?)Session.LastPackets.FirstOrDefault(s => s is MsgiPacket); Assert.AreEqual(Game18NConstString.MaxGoldReached, packet?.Message); } private void ItemInstanceDaoIsConfigured() { ItemInstanceDao.Setup(s => s.FirstOrDefaultAsync(It.IsAny<Expression<Func<IItemInstanceDto?, bool>>>())) .ReturnsAsync(new ItemInstanceDto { ItemVNum = 1012, Amount = 0 }); } private void ShouldReceiveTotalOf_(int value) { var packet = (RCScalcPacket?)Session.LastPackets.FirstOrDefault(s => s is RCScalcPacket); Assert.AreEqual(value, packet?.Total); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Bazaar/CSkillPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Buff; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Bazaar; using NosCore.Packets.ClientPackets.Bazaar; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Bazaar { [TestClass] public class CSkillPacketHandlerTests { private CSkillPacketHandler CskillPacketHandler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Session.Character.StaticBonusList = new List<StaticBonusDto>(); CskillPacketHandler = new CSkillPacketHandler(TestHelpers.Instance.Clock); } [TestMethod] public async Task OpeningBazaarWhileInShopShouldBeIgnored() { await new Spec("Opening bazaar while in shop should be ignored") .Given(CharacterIsInShop) .WhenAsync(OpeningBazaarViaMiddleware) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task OpeningBazaarWithoutMedalShouldShowInfo() { await new Spec("Opening bazaar without medal should show info") .WhenAsync(OpeningBazaar) .Then(ShouldReceiveMedalRequiredMessage) .ExecuteAsync(); } [TestMethod] public async Task OpeningBazaarWithMedalShouldSucceed() { await new Spec("Opening bazaar with medal should succeed") .Given(CharacterHasBazaarMedal) .WhenAsync(OpeningBazaar) .Then(NoErrorShouldOccur) .ExecuteAsync(); } private void CharacterIsInShop() { Session.Character.InShop = true; } private async Task OpeningBazaarViaMiddleware() { await Session.HandlePacketsAsync(new[] { new CSkillPacket() }); } private void NoPacketShouldBeSent() { Assert.IsNull(Session.LastPackets.FirstOrDefault()); } private async Task OpeningBazaar() { await CskillPacketHandler.ExecuteAsync(new CSkillPacket(), Session); } private void ShouldReceiveMedalRequiredMessage() { var packet = (InfoiPacket?)Session.LastPackets.FirstOrDefault(s => s is InfoiPacket); Assert.IsTrue(packet?.Message == Game18NConstString.NosMerchantMedaleAllowPlayerToUseNosbazarOnAllGeneralMaps); } private void CharacterHasBazaarMedal() { Session.Character.StaticBonusList.Add(new StaticBonusDto { StaticBonusType = StaticBonusType.BazaarMedalGold }); } private void NoErrorShouldOccur() { // Test passes if no exception is thrown } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/CharacterScreen/CharNewJobPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Dto; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.CharacterScreen; using NosCore.Packets.ClientPackets.CharacterSelectionScreen; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.CharacterScreen { [TestClass] public class CharNewJobPacketHandlerTests { private CharNewJobPacketHandler CharNewJobPacketHandler = null!; private ClientSession Session = null!; private CharacterDto ExistingCharacter = null!; private const string TestCharacterName = "TestCharacter"; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); ExistingCharacter = Session.Character.CharacterDto; Session.ClearPlayerEntity(); CharNewJobPacketHandler = new CharNewJobPacketHandler(TestHelpers.Instance.CharacterDao, TestHelpers.Instance.WorldConfiguration); } [TestMethod] public async Task CreatingMartialArtistWithoutLevel80ShouldFail() { await new Spec("Creating martial artist without level 80 should fail") .WhenAsync(CreatingMartialArtistAsync) .ThenAsync(CharacterShouldNotExistAsync) .ExecuteAsync(); } [TestMethod] public async Task CreatingMartialArtistWithLevel80ShouldSucceed() { await new Spec("Creating martial artist with level 80 should succeed") .GivenAsync(CharacterIsLevel_Async, 80) .WhenAsync(CreatingMartialArtistAsync) .ThenAsync(CharacterShouldExistAsync) .ExecuteAsync(); } [TestMethod] public async Task CreatingMartialArtistWhenAlreadyOneShouldFail() { await new Spec("Creating martial artist when already one should fail") .GivenAsync(CharacterIsAlreadyMartialArtistAsync) .WhenAsync(CreatingMartialArtistAsync) .ThenAsync(CharacterShouldNotExistAsync) .ExecuteAsync(); } private async Task CharacterIsLevel_Async(int level) { ExistingCharacter.Level = (byte)level; await TestHelpers.Instance.CharacterDao.TryInsertOrUpdateAsync(ExistingCharacter); } private async Task CharacterIsAlreadyMartialArtistAsync() { ExistingCharacter.Class = CharacterClassType.MartialArtist; ExistingCharacter.Level = 80; await TestHelpers.Instance.CharacterDao.TryInsertOrUpdateAsync(ExistingCharacter); } private async Task CreatingMartialArtistAsync() { await CharNewJobPacketHandler.ExecuteAsync(new CharNewJobPacket { Name = TestCharacterName, JobClass = 1 }, Session); } private async Task CharacterShouldNotExistAsync() { Assert.IsNull(await TestHelpers.Instance.CharacterDao.FirstOrDefaultAsync(s => s.Name == TestCharacterName)); } private async Task CharacterShouldExistAsync() { Assert.IsNotNull(await TestHelpers.Instance.CharacterDao.FirstOrDefaultAsync(s => s.Name == TestCharacterName)); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/CharacterScreen/CharNewPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Algorithm.HpService; using NosCore.Algorithm.MpService; using NosCore.Core.Services.IdService; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.Map; using NosCore.GameObject.Map; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.MapChangeService; using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.GameObject.Services.MapItemGenerationService; using NosCore.Networking.SessionGroup; using NosCore.PacketHandlers.CharacterScreen; using NosCore.Packets.ClientPackets.CharacterSelectionScreen; using NosCore.Packets.ClientPackets.Drops; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.CharacterScreen { [TestClass] public class CharNewPacketHandlerTests { private CharNewPacketHandler CharNewPacketHandler = null!; private ClientSession Session = null!; private Mock<IMapChangeService> MapChangeService = null!; private const string TestCharacterName = "TestCharacter"; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); CharNewPacketHandler = new CharNewPacketHandler(TestHelpers.Instance.CharacterDao, new Mock<IItemGenerationService>().Object, new Mock<IDao<QuicklistEntryDto, Guid>>().Object, new Mock<IDao<IItemInstanceDto?, Guid>>().Object, new Mock<IDao<InventoryItemInstanceDto, Guid>>().Object, new HpService(), new MpService(), TestHelpers.Instance.WorldConfiguration, new Mock<IDao<CharacterSkillDto, Guid>>().Object, TestHelpers.Instance.ItemList, NullLoggerFactory.Instance); Session = await TestHelpers.Instance.GenerateSessionAsync(new List<IPacketHandler> { CharNewPacketHandler }); MapChangeService = new Mock<IMapChangeService>(); Session.ClearPlayerEntity(); } [TestMethod] public async Task CreatingCharacterWhenInGameShouldFail() { await new Spec("Creating character when in game should fail") .GivenAsync(CharacterIsInGame) .WhenAsync(CreatingCharacterViaPacket) .ThenAsync(CharacterShouldNotExist) .ExecuteAsync(); } [TestMethod] public async Task CreatingCharacterShouldSucceed() { await new Spec("Creating character should succeed") .WhenAsync(CreatingCharacter) .ThenAsync(CharacterShouldExist) .ExecuteAsync(); } [TestMethod] public async Task CreatingCharacterWithInvalidNameShouldFail() { await new Spec("Creating character with invalid name should fail") .WhenAsync(CreatingCharacterWithInvalidName) .ThenAsync(CharacterWithInvalidNameShouldNotExist) .ExecuteAsync(); } [TestMethod] public async Task CreatingCharacterWithExistingNameShouldFail() { await new Spec("Creating character with existing name should fail") .WhenAsync(CreatingCharacterWithExistingName) .Then(OnlyOneCharacterWithNameShouldExist) .ExecuteAsync(); } [TestMethod] public async Task CreatingCharacterInNonEmptySlotShouldFail() { await new Spec("Creating character in non empty slot should fail") .WhenAsync(CreatingCharacterInSlot_, 1) .Then(OnlyOneCharacterInSlot_ShouldExist, 1) .ExecuteAsync(); } private async Task CharacterIsInGame() { Session = await TestHelpers.Instance.GenerateSessionAsync(new List<IPacketHandler> { CharNewPacketHandler }); } private async Task CreatingCharacterViaPacket() { await Session.HandlePacketsAsync(new[] { new CharNewPacket { Name = TestCharacterName } }); } private async Task CreatingCharacter() { await CharNewPacketHandler.ExecuteAsync(new CharNewPacket { Name = TestCharacterName }, Session); } private async Task CreatingCharacterWithInvalidName() { await CharNewPacketHandler.ExecuteAsync(new CharNewPacket { Name = "Test Character" }, Session); } private async Task CreatingCharacterWithExistingName() { await CharNewPacketHandler.ExecuteAsync(new CharNewPacket { Name = "TestExistingCharacter" }, Session); } private async Task CreatingCharacterInSlot_(int value) { await CharNewPacketHandler.ExecuteAsync(new CharNewPacket { Name = TestCharacterName, Slot = (byte)value }, Session); } private async Task CharacterShouldNotExist() { Assert.IsNull(await TestHelpers.Instance.CharacterDao.FirstOrDefaultAsync(s => s.Name == TestCharacterName)); } private async Task CharacterShouldExist() { Assert.IsNotNull(await TestHelpers.Instance.CharacterDao.FirstOrDefaultAsync(s => s.Name == TestCharacterName)); } private async Task CharacterWithInvalidNameShouldNotExist() { Assert.IsNull(await TestHelpers.Instance.CharacterDao.FirstOrDefaultAsync(s => s.Name == "Test Character")); } private void OnlyOneCharacterWithNameShouldExist() { Assert.IsFalse(TestHelpers.Instance.CharacterDao.Where(s => s.Name == "TestExistingCharacter")!.Skip(1).Any()); } private void OnlyOneCharacterInSlot_ShouldExist(int value) { Assert.IsFalse(TestHelpers.Instance.CharacterDao.Where(s => s.Slot == value)!.Skip(1).Any()); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/CharacterScreen/CharRenPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core.Services.IdService; using NosCore.Data.Enumerations.Map; using NosCore.GameObject.Map; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MapChangeService; using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.GameObject.Services.MapItemGenerationService; using NosCore.Networking.SessionGroup; using NosCore.PacketHandlers.CharacterScreen; using NosCore.Packets.ClientPackets.CharacterSelectionScreen; using NosCore.Packets.ClientPackets.Drops; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.CharacterScreen { [TestClass] public class CharRenPacketHandlerTests { private static readonly ILogger<CharRenPacketHandlerTests> Logger = new Mock<ILogger<CharRenPacketHandlerTests>>().Object; private CharRenPacketHandler CharRenPacketHandler = null!; private ClientSession Session = null!; private Data.Dto.CharacterDto ExistingCharacter = null!; private Mock<IMapChangeService> MapChangeService = null!; private const string NewCharacterName = "TestCharacter2"; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); MapChangeService = new Mock<IMapChangeService>(); CharRenPacketHandler = new CharRenPacketHandler(TestHelpers.Instance.CharacterDao, TestHelpers.Instance.WorldConfiguration); Session = await TestHelpers.Instance.GenerateSessionAsync(new List<IPacketHandler> { CharRenPacketHandler }); ExistingCharacter = Session.Character.CharacterDto; ExistingCharacter.ShouldRename = true; await TestHelpers.Instance.CharacterDao.TryInsertOrUpdateAsync(ExistingCharacter); Session.ClearPlayerEntity(); } [TestMethod] public async Task RenamingCharacterWhenInGameShouldFail() { await new Spec("Renaming character when in game should fail") .GivenAsync(CharacterIsInGame) .WhenAsync(RenamingCharacterViaPacket) .ThenAsync(CharacterShouldNotBeRenamed) .ExecuteAsync(); } [TestMethod] public async Task RenamingCharacterShouldSucceed() { await new Spec("Renaming character should succeed") .WhenAsync(RenamingCharacter) .ThenAsync(CharacterShouldBeRenamed) .AndAsync(ShouldRenameFlagShouldBeCleared) .ExecuteAsync(); } [TestMethod] public async Task RenamingUnflaggedCharacterShouldFail() { await new Spec("Renaming unflagged character should fail") .GivenAsync(CharacterIsNotFlaggedForRename) .WhenAsync(RenamingCharacter) .ThenAsync(CharacterShouldNotBeRenamed) .ExecuteAsync(); } [TestMethod] public async Task RenamingNonExistentCharacterShouldFail() { await new Spec("Renaming non existent character should fail") .WhenAsync(RenamingCharacterInWrongSlot) .ThenAsync(CharacterShouldNotBeRenamed) .ExecuteAsync(); } private async Task CharacterIsInGame() { Session = await TestHelpers.Instance.GenerateSessionAsync(new List<IPacketHandler> { CharRenPacketHandler }); } private async Task CharacterIsNotFlaggedForRename() { ExistingCharacter.ShouldRename = false; await TestHelpers.Instance.CharacterDao.TryInsertOrUpdateAsync(ExistingCharacter); } private async Task RenamingCharacterViaPacket() { await Session.HandlePacketsAsync(new[] { new CharRenamePacket { Name = NewCharacterName, Slot = 1 } }); } private async Task RenamingCharacter() { await CharRenPacketHandler.ExecuteAsync(new CharRenamePacket { Name = NewCharacterName, Slot = 1 }, Session); } private async Task RenamingCharacterInWrongSlot() { await CharRenPacketHandler.ExecuteAsync(new CharRenamePacket { Name = NewCharacterName, Slot = 2 }, Session); } private async Task CharacterShouldNotBeRenamed() { Assert.IsNull(await TestHelpers.Instance.CharacterDao.FirstOrDefaultAsync(s => s.Name == NewCharacterName)); } private async Task CharacterShouldBeRenamed() { var character = await TestHelpers.Instance.CharacterDao.FirstOrDefaultAsync(s => s.Name == NewCharacterName); Assert.IsNotNull(character); } private async Task ShouldRenameFlagShouldBeCleared() { var character = await TestHelpers.Instance.CharacterDao.FirstOrDefaultAsync(s => s.Name == NewCharacterName); Assert.IsFalse(character!.ShouldRename); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/CharacterScreen/CharacterDeletePacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Core.Encryption; using NosCore.Data.Enumerations.Character; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.CharacterScreen; using NosCore.Packets.ClientPackets.CharacterSelectionScreen; using NosCore.Tests.Shared; using SpecLight; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.CharacterScreen { [TestClass] public class CharacterDeletePacketHandlerTests { private CharacterDeletePacketHandler CharacterDeletePacketHandler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); CharacterDeletePacketHandler = new CharacterDeletePacketHandler(TestHelpers.Instance.CharacterDao, TestHelpers.Instance.AccountDao, new Sha512Hasher(), TestHelpers.Instance.WorldConfiguration); Session = await TestHelpers.Instance.GenerateSessionAsync(new List<IPacketHandler> { CharacterDeletePacketHandler }); } [TestMethod] public async Task DeletingCharacterWithInvalidPasswordShouldFail() { await new Spec("Deleting character with invalid password should fail") .GivenAsync(CharacterIsNotInGame) .WhenAsync(DeletingCharacterWithInvalidPassword) .ThenAsync(CharacterShouldStillExist) .ExecuteAsync(); } [TestMethod] public async Task DeletingCharacterWhenInGameShouldFail() { await new Spec("Deleting character when in game should fail") .WhenAsync(DeletingCharacterViaPacket) .ThenAsync(CharacterShouldStillExist) .ExecuteAsync(); } [TestMethod] public async Task DeletingCharacterWithValidPasswordShouldSucceed() { await new Spec("Deleting character with valid password should succeed") .GivenAsync(CharacterIsNotInGame) .WhenAsync(DeletingCharacterWithValidPassword) .ThenAsync(CharacterShouldBeDeleted) .ExecuteAsync(); } private Task CharacterIsNotInGame() { Session.ClearPlayerEntity(); return Task.CompletedTask; } private async Task DeletingCharacterWithInvalidPassword() { await CharacterDeletePacketHandler.ExecuteAsync(new CharacterDeletePacket { Slot = 1, Password = "testpassword" }, Session); } private async Task DeletingCharacterViaPacket() { await Session.HandlePacketsAsync(new[] { new CharacterDeletePacket { Slot = 1, Password = "test" } }); } private async Task DeletingCharacterWithValidPassword() { await CharacterDeletePacketHandler.ExecuteAsync(new CharacterDeletePacket { Slot = 1, Password = "test" }, Session); } private async Task CharacterShouldStillExist() { Assert.IsNotNull( await TestHelpers.Instance.CharacterDao .FirstOrDefaultAsync(s => (s.AccountId == Session.Account.AccountId) && (s.State == CharacterState.Active))); } private async Task CharacterShouldBeDeleted() { Assert.IsNull( await TestHelpers.Instance.CharacterDao .FirstOrDefaultAsync(s => (s.AccountId == Session.Account.AccountId) && (s.State == CharacterState.Active))); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/CharacterScreen/DacPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking.SessionRef; using NosCore.PacketHandlers.CharacterScreen; using NosCore.Packets.ClientPackets.Infrastructure; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.CharacterScreen { [TestClass] public class DacPacketHandlerTests { private static readonly Mock<ILogger<DacPacketHandler>> Logger = new(); private DacPacketHandler DacPacketHandler = null!; private ClientSession Session = null!; private Mock<IAuthHub> AuthHttpClient = null!; private Mock<IPubSubHub> PubSubHub = null!; private Mock<IChannelHub> ChannelHub = null!; private string AccountName = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); AccountName = Session.Account.Name; await TestHelpers.Instance.CharacterDao.TryInsertOrUpdateAsync(Session.Character.CharacterDto); Session.ClearPlayerEntity(); Session.Account = null!; AuthHttpClient = new Mock<IAuthHub>(); PubSubHub = TestHelpers.Instance.PubSubHub; ChannelHub = TestHelpers.Instance.ChannelHub; ChannelHub.Setup(o => o.GetCommunicationChannels()).ReturnsAsync(new List<ChannelInfo>()); PubSubHub.Setup(o => o.GetSubscribersAsync()).ReturnsAsync(new List<Subscriber>()); DacPacketHandler = new DacPacketHandler(TestHelpers.Instance.AccountDao, Logger.Object, AuthHttpClient.Object, TestHelpers.Instance.PubSubHub.Object, new SessionRefHolder(), TestHelpers.Instance.LogLanguageLocalizer); } [TestMethod] public async Task ConnectionWithAlreadyConnectedAccountShouldFail() { await new Spec("Connection with already connected account should fail") .Given(AccountIsAlreadyConnected) .WhenAsync(ConnectingWithAccount) .Then(AlreadyConnectedErrorShouldBeLogged) .And(AccountShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task ConnectionWithInvalidAccountShouldFail() { await new Spec("Connection with invalid account should fail") .WhenAsync(ConnectingWithFakeAccount) .Then(InvalidAccountErrorShouldBeLogged) .And(AccountShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task ConnectionWithNotInWaitingAccountShouldFail() { await new Spec("Connection with not in waiting account should fail") .WhenAsync(ConnectingWithAccount) .Then(InvalidPasswordErrorShouldBeLogged) .And(AccountShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task ConnectionWithWaitingAccountShouldSucceed() { await new Spec("Connection with waiting account should succeed") .Given(AccountIsInWaitingState) .WhenAsync(ConnectingWithAccount) .Then(AccountShouldBeSet) .ExecuteAsync(); } private void AccountIsAlreadyConnected() { ChannelHub.Setup(o => o.GetCommunicationChannels()).ReturnsAsync(new List<ChannelInfo>() { new() { Id = 1, } }); PubSubHub.Setup(o => o.GetSubscribersAsync()).ReturnsAsync( new List<Subscriber> { new() { ChannelId = 1, Name = AccountName } }); } private void AccountIsInWaitingState() { AuthHttpClient.Setup(authHttpClient => authHttpClient .GetAwaitingConnectionAsync(It.IsAny<string?>(), It.IsAny<string>(), It.IsAny<int>())) .ReturnsAsync("123"); } private async Task ConnectingWithAccount() { var packet = new DacPacket(AccountName) { Slot = 0, }; await DacPacketHandler.ExecuteAsync(packet, Session); } private async Task ConnectingWithFakeAccount() { var packet = new DacPacket("fakeName") { Slot = 2, }; await DacPacketHandler.ExecuteAsync(packet, Session); } private void AlreadyConnectedErrorShouldBeLogged() { var expected = (string)TestHelpers.Instance.LogLanguageLocalizer[LogLanguageKey.ALREADY_CONNECTED]; Logger.Verify(o => o.Log( LogLevel.Error, It.IsAny<EventId>(), It.Is<It.IsAnyType>((v, _) => v != null && v.ToString()!.Contains(expected)), It.IsAny<System.Exception?>(), It.IsAny<System.Func<It.IsAnyType, System.Exception?, string>>()), Times.Once); } private void InvalidAccountErrorShouldBeLogged() { var expected = (string)TestHelpers.Instance.LogLanguageLocalizer[LogLanguageKey.INVALID_ACCOUNT]; Logger.Verify(o => o.Log( LogLevel.Error, It.IsAny<EventId>(), It.Is<It.IsAnyType>((v, _) => v != null && v.ToString()!.Contains(expected)), It.IsAny<System.Exception?>(), It.IsAny<System.Func<It.IsAnyType, System.Exception?, string>>()), Times.Once); } private void InvalidPasswordErrorShouldBeLogged() { var expected = (string)TestHelpers.Instance.LogLanguageLocalizer[LogLanguageKey.INVALID_PASSWORD]; Logger.Verify(o => o.Log( LogLevel.Error, It.IsAny<EventId>(), It.Is<It.IsAnyType>((v, _) => v != null && v.ToString()!.Contains(expected)), It.IsAny<System.Exception?>(), It.IsAny<System.Func<It.IsAnyType, System.Exception?, string>>()), Times.Once); } private void AccountShouldBeNull() { Assert.IsNull(Session.Account); } private void AccountShouldBeSet() { Assert.IsNotNull(Session.Account); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/CharacterScreen/EntryPointPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.CommandPackets; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking.SessionRef; using NosCore.PacketHandlers.CharacterScreen; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.CharacterScreen { [TestClass] public class EntryPointPacketHandlerTests { private static readonly Mock<ILogger<EntryPointPacketHandler>> Logger = new(); private EntryPointPacketHandler EntryPointPacketHandler = null!; private ClientSession Session = null!; private Mock<IAuthHub> AuthHttpClient = null!; private Mock<IPubSubHub> PubSubHub = null!; private string AccountName = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); AccountName = Session.Account.Name; await TestHelpers.Instance.CharacterDao.TryInsertOrUpdateAsync(Session.Character.CharacterDto); Session.ClearPlayerEntity(); Session.Account = null!; AuthHttpClient = new Mock<IAuthHub>(); PubSubHub = TestHelpers.Instance.PubSubHub; PubSubHub.Setup(o => o.GetSubscribersAsync()).ReturnsAsync(new List<Subscriber>()); EntryPointPacketHandler = new EntryPointPacketHandler( TestHelpers.Instance.CharacterDao, TestHelpers.Instance.AccountDao, TestHelpers.Instance.MateDao, Logger.Object, AuthHttpClient.Object, PubSubHub.Object, TestHelpers.Instance.WorldConfiguration, new SessionRefHolder(), TestHelpers.Instance.LogLanguageLocalizer); } [TestMethod] public async Task ConnectionWithAlreadyConnectedAccountShouldFail() { await new Spec("Connection with already connected account should fail") .Given(AccountIsAlreadyConnected) .WhenAsync(ConnectingWithValidPassword) .Then(AlreadyConnectedErrorShouldBeLogged) .And(AccountShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task ConnectionWithInvalidAccountShouldFail() { await new Spec("Connection with invalid account should fail") .WhenAsync(ConnectingWithFakeAccount) .Then(InvalidAccountErrorShouldBeLogged) .And(AccountShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task ConnectionWithInvalidPasswordShouldFail() { await new Spec("Connection with invalid password should fail") .WhenAsync(ConnectingWithInvalidPassword) .Then(InvalidPasswordErrorShouldBeLogged) .And(AccountShouldBeNull) .ExecuteAsync(); } [TestMethod] public async Task ConnectionWithValidPasswordShouldSucceed() { await new Spec("Connection with valid password should succeed") .Given(AccountPasswordIsValid) .WhenAsync(ConnectingWithValidPassword) .Then(AccountShouldBeSet) .ExecuteAsync(); } [TestMethod] public async Task ConnectionWithGfModeShouldSucceed() { await new Spec("Connection with gf mode should succeed") .Given(AccountIsInWaitingState) .WhenAsync(ConnectingWithGfMode) .Then(AccountShouldBeSet) .And(MfaShouldBeValidated) .ExecuteAsync(); } [TestMethod] public async Task ConnectionWithMfaEnabledShouldRequireValidation() { await new Spec("Connection with MFA enabled should require validation") .GivenAsync(AccountHasMfaEnabled) .WhenAsync(ConnectingWithValidPassword) .ThenAsync(GuriPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ConnectionWhenAccountAlreadySetShouldSendCharacterList() { await new Spec("Connection when account already set should send character list") .GivenAsync(AccountIsAlreadyInitialized) .WhenAsync(ConnectingWithValidPassword) .ThenAsync(CharacterListShouldBeSent) .ExecuteAsync(); } private void AccountIsAlreadyConnected() { PubSubHub.Setup(o => o.GetSubscribersAsync()).ReturnsAsync( new List<Subscriber> { new() { ChannelId = 1, Name = AccountName } }); } private void AccountPasswordIsValid() { // Password "test" is already set in TestHelpers with Sha512 hash } private void AccountIsInWaitingState() { AuthHttpClient.Setup(authHttpClient => authHttpClient .GetAwaitingConnectionAsync(It.IsAny<string?>(), It.IsAny<string>(), It.IsAny<int>())) .ReturnsAsync("123"); } private async Task AccountHasMfaEnabled() { var account = await TestHelpers.Instance.AccountDao.FirstOrDefaultAsync(a => a.Name == AccountName); account!.MfaSecret = "testsecret"; await TestHelpers.Instance.AccountDao.TryInsertOrUpdateAsync(account); } private async Task AccountIsAlreadyInitialized() { var account = await TestHelpers.Instance.AccountDao.FirstOrDefaultAsync(a => a.Name == AccountName); Session.InitializeAccount(account!); } private async Task ConnectingWithValidPassword() { var packet = new EntryPointPacket { Name = AccountName, Password = "test" }; await EntryPointPacketHandler.ExecuteAsync(packet, Session); } private async Task ConnectingWithInvalidPassword() { var packet = new EntryPointPacket { Name = AccountName, Password = "wrongpassword" }; await EntryPointPacketHandler.ExecuteAsync(packet, Session); } private async Task ConnectingWithFakeAccount() { var packet = new EntryPointPacket { Name = "fakeaccount", Password = "test" }; await EntryPointPacketHandler.ExecuteAsync(packet, Session); } private async Task ConnectingWithGfMode() { var packet = new EntryPointPacket { Name = AccountName, Password = "thisisgfmode" }; await EntryPointPacketHandler.ExecuteAsync(packet, Session); } private void AlreadyConnectedErrorShouldBeLogged() { var expected = (string)TestHelpers.Instance.LogLanguageLocalizer[LogLanguageKey.ALREADY_CONNECTED]; Logger.Verify(o => o.Log( LogLevel.Error, It.IsAny<EventId>(), It.Is<It.IsAnyType>((v, _) => v != null && v.ToString()!.Contains(expected)), It.IsAny<System.Exception?>(), It.IsAny<System.Func<It.IsAnyType, System.Exception?, string>>()), Times.Once); } private void InvalidAccountErrorShouldBeLogged() { var expected = (string)TestHelpers.Instance.LogLanguageLocalizer[LogLanguageKey.INVALID_ACCOUNT]; Logger.Verify(o => o.Log( LogLevel.Error, It.IsAny<EventId>(), It.Is<It.IsAnyType>((v, _) => v != null && v.ToString()!.Contains(expected)), It.IsAny<System.Exception?>(), It.IsAny<System.Func<It.IsAnyType, System.Exception?, string>>()), Times.Once); } private void InvalidPasswordErrorShouldBeLogged() { var expected = (string)TestHelpers.Instance.LogLanguageLocalizer[LogLanguageKey.INVALID_PASSWORD]; Logger.Verify(o => o.Log( LogLevel.Error, It.IsAny<EventId>(), It.Is<It.IsAnyType>((v, _) => v != null && v.ToString()!.Contains(expected)), It.IsAny<System.Exception?>(), It.IsAny<System.Func<It.IsAnyType, System.Exception?, string>>()), Times.Once); } private void AccountShouldBeNull() { Assert.IsNull(Session.Account); } private void AccountShouldBeSet() { Assert.IsNotNull(Session.Account); } private void MfaShouldBeValidated() { Assert.IsTrue(Session.MfaValidated); } private async Task GuriPacketShouldBeSent() { await Task.CompletedTask; Assert.IsNotNull(Session.Account); Assert.IsFalse(Session.MfaValidated); } private async Task CharacterListShouldBeSent() { await Task.CompletedTask; Assert.IsNotNull(Session.Account); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/CharacterScreen/SelectPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Algorithm.DignityService; using NosCore.Algorithm.HpService; using NosCore.Algorithm.MpService; using NosCore.Algorithm.ReputationService; using NosCore.Algorithm.SpeedService; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.StaticEntities; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.CharacterService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.PacketHandlers.CharacterScreen; using NosCore.Packets.ClientPackets.CharacterSelectionScreen; using NosCore.Networking.SessionGroup; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.CharacterScreen { [TestClass] public class SelectPacketHandlerTests { private static readonly ILogger<SelectPacketHandler> Logger = new Mock<ILogger<SelectPacketHandler>>().Object; private SelectPacketHandler SelectPacketHandler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Session.ClearPlayerEntity(); SelectPacketHandler = new SelectPacketHandler( TestHelpers.Instance.CharacterDao, Logger, NullLoggerFactory.Instance, new Mock<IItemGenerationService>().Object, TestHelpers.Instance.MapInstanceAccessorService, new Mock<IDao<IItemInstanceDto?, Guid>>().Object, new Mock<IDao<InventoryItemInstanceDto, Guid>>().Object, new Mock<IDao<StaticBonusDto, long>>().Object, new Mock<IDao<QuicklistEntryDto, Guid>>().Object, new Mock<IDao<TitleDto, Guid>>().Object, new Mock<IDao<CharacterQuestDto, Guid>>().Object, new Mock<IDao<CharacterQuestObjectiveDto, Guid>>().Object, new Mock<IDao<RespawnDto, long>>().Object, new Mock<IDao<ScriptDto, Guid>>().Object, new List<QuestDto>(), new List<QuestObjectiveDto>(), TestHelpers.Instance.WorldConfiguration, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.PubSubHub.Object, TestHelpers.Instance.Clock, new List<ItemDto>(), new HpService(), new MpService(), new SpeedService(), new Mock<ISessionGroupFactory>().Object, new CharacterInitializationService(), new Mock<Wolverine.IMessageBus>().Object); } [TestMethod] public async Task SelectingValidSlotShouldSelectCharacter() { await new Spec("Selecting valid slot should select character") .WhenAsync(SelectingCharacterInSlot_, 1) .Then(CharacterShouldBeSelected) .ExecuteAsync(); } [TestMethod] public async Task SelectingEmptySlotShouldFail() { await new Spec("Selecting empty slot should fail") .WhenAsync(SelectingCharacterInSlot_, 0) .Then(CharacterShouldNotBeSelected) .ExecuteAsync(); } [TestMethod] public async Task SelectingInvalidSlotShouldFail() { await new Spec("Selecting invalid slot should fail") .WhenAsync(SelectingCharacterInSlot_, 5) .Then(CharacterShouldNotBeSelected) .ExecuteAsync(); } private async Task SelectingCharacterInSlot_(int slot) { var packet = new SelectPacket { Slot = (byte)slot }; await SelectPacketHandler.ExecuteAsync(packet, Session); } private void CharacterShouldBeSelected() { Assert.IsTrue(Session.HasSelectedCharacter); } private void CharacterShouldNotBeSelected() { Assert.IsFalse(Session.HasSelectedCharacter); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Chat/BtkPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core; using NosCore.Data.WebApi; using NosCore.GameObject.Ecs; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.PacketHandlers.Chat; using NosCore.Packets.ClientPackets.Chat; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Chat { [TestClass] public class BtkPacketHandlerTests { private BtkPacketHandler Handler = null!; private ClientSession Session = null!; private ClientSession FriendSession = null!; private Mock<IFriendHub> FriendHub = null!; private Mock<IPubSubHub> PubSubHub = null!; private Mock<ISerializer> Serializer = null!; private Mock<ISessionRegistry> SessionRegistry = null!; private readonly ILogger<BtkPacketHandler> Logger = new Mock<ILogger<BtkPacketHandler>>().Object; private const long OfflineFriendId = 99998; private const long DifferentChannelFriendId = 99997; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); FriendSession = await TestHelpers.Instance.GenerateSessionAsync(); FriendHub = new Mock<IFriendHub>(); PubSubHub = new Mock<IPubSubHub>(); Serializer = new Mock<ISerializer>(); SessionRegistry = new Mock<ISessionRegistry>(); FriendHub.Setup(x => x.GetFriendsAsync(It.IsAny<long>())) .Returns(Task.FromResult(new List<CharacterRelationStatus>())); PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber>())); Serializer.Setup(x => x.Serialize(It.IsAny<IPacket[]>())) .Returns("serialized"); var channel = new Channel { ChannelId = 1, ClientName = "TestChannel", Host = "localhost" }; Handler = new BtkPacketHandler( Logger, Serializer.Object, FriendHub.Object, PubSubHub.Object, PubSubHub.Object, channel, TestHelpers.Instance.GameLanguageLocalizer, SessionRegistry.Object); } [TestMethod] public async Task SendingMessageToNonFriendShouldBeIgnored() { await new Spec("Sending message to non friend should be ignored") .Given(CharacterIsOnMap) .WhenAsync(SendingMessageToNonFriendAsync) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task SendingMessageToOfflineFriendShouldShowOfflineMessage() { await new Spec("Sending message to offline friend should show offline message") .Given(CharacterIsOnMap) .And(OfflineTargetIsFriend) .WhenAsync(SendingMessageToOfflineFriendAsync) .Then(ShouldReceiveFriendOfflineMessage) .ExecuteAsync(); } [TestMethod] public async Task SendingMessageToFriendOnSameChannelShouldSendDirectly() { await new Spec("Sending message to friend on same channel should send directly") .Given(CharacterIsOnMap) .And(TargetIsFriend) .And(FriendIsOnSameChannel) .WhenAsync(SendingMessageToFriendAsync) .Then(FriendShouldReceiveMessage) .ExecuteAsync(); } [TestMethod] public async Task SendingMessageToFriendOnDifferentChannelShouldUsePubSub() { await new Spec("Sending message to friend on different channel should use pubsub") .Given(CharacterIsOnMap) .And(DifferentChannelTargetIsFriend) .And(FriendIsOnDifferentChannel) .WhenAsync(SendingMessageToFriendOnDifferentChannelAsync) .Then(MessageShouldBeSentViaPubSub) .ExecuteAsync(); } [TestMethod] public async Task LongMessageShouldBeTruncated() { await new Spec("Long message should be truncated") .Given(CharacterIsOnMap) .And(TargetIsFriend) .And(FriendIsOnSameChannel) .WhenAsync(SendingLongMessageToFriendAsync) .Then(FriendShouldReceiveMessage) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void TargetIsFriend() { FriendHub.Setup(x => x.GetFriendsAsync(It.IsAny<long>())) .Returns(Task.FromResult(new List<CharacterRelationStatus> { new CharacterRelationStatus { CharacterId = FriendSession.Character.CharacterId } })); } private void OfflineTargetIsFriend() { FriendHub.Setup(x => x.GetFriendsAsync(It.IsAny<long>())) .Returns(Task.FromResult(new List<CharacterRelationStatus> { new CharacterRelationStatus { CharacterId = OfflineFriendId } })); } private void DifferentChannelTargetIsFriend() { FriendHub.Setup(x => x.GetFriendsAsync(It.IsAny<long>())) .Returns(Task.FromResult(new List<CharacterRelationStatus> { new CharacterRelationStatus { CharacterId = DifferentChannelFriendId } })); } private void FriendIsOnSameChannel() { var friendCharacter = FriendSession.Character; SessionRegistry.Setup(x => x.GetCharacter(It.IsAny<System.Func<PlayerComponentBundle, bool>>())) .Returns(friendCharacter); SessionRegistry.Setup(x => x.TryGetCharacter(It.IsAny<System.Func<PlayerComponentBundle, bool>>(), out friendCharacter)) .Returns(true); } private void FriendIsOnDifferentChannel() { PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber> { new Subscriber { ConnectedCharacter = new Data.WebApi.Character { Id = DifferentChannelFriendId, Name = "DifferentChannelFriend" } } })); } private async Task SendingMessageToNonFriendAsync() { await Handler.ExecuteAsync(new BtkPacket { CharacterId = 99999, Message = "Hello friend!" }, Session); } private async Task SendingMessageToOfflineFriendAsync() { await Handler.ExecuteAsync(new BtkPacket { CharacterId = OfflineFriendId, Message = "Hello friend!" }, Session); } private async Task SendingMessageToFriendAsync() { await Handler.ExecuteAsync(new BtkPacket { CharacterId = FriendSession.Character.CharacterId, Message = "Hello friend!" }, Session); } private async Task SendingMessageToFriendOnDifferentChannelAsync() { await Handler.ExecuteAsync(new BtkPacket { CharacterId = DifferentChannelFriendId, Message = "Hello friend!" }, Session); } private async Task SendingLongMessageToFriendAsync() { var longMessage = new string('a', 100); await Handler.ExecuteAsync(new BtkPacket { CharacterId = FriendSession.Character.CharacterId, Message = longMessage }, Session); } private void NoPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } private void ShouldReceiveFriendOfflineMessage() { var packet = Session.LastPackets.OfType<InfoiPacket>().FirstOrDefault(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.FriendOffline, packet.Message); } private void FriendShouldReceiveMessage() { Assert.IsTrue(FriendSession.LastPackets.Count > 0); } private void MessageShouldBeSentViaPubSub() { PubSubHub.Verify(x => x.SendMessageAsync(It.IsAny<NosCore.GameObject.InterChannelCommunication.Messages.PostedPacket>()), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Chat/ClientSayPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Chat; using NosCore.Packets.ClientPackets.Chat; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Chat { [TestClass] public class ClientSayPacketHandlerTests { private ClientSayPacketHandler Handler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Handler = new ClientSayPacketHandler(); } [TestMethod] public async Task SayMessageShouldExecuteWithoutError() { await new Spec("Say message should execute without error") .Given(CharacterIsOnMap) .WhenAsync(SendingSayMessage) .Then(HandlerShouldCompleteSuccessfully) .ExecuteAsync(); } [TestMethod] public async Task SayMessageShouldNotBeSentBackToSender() { await new Spec("Say message should not be sent back to sender") .Given(CharacterIsOnMap) .WhenAsync(SendingSayMessage) .Then(SenderShouldNotReceiveOwnMessage) .ExecuteAsync(); } [TestMethod] public async Task EmptyMessageShouldBeHandled() { await new Spec("Empty message should be handled") .Given(CharacterIsOnMap) .WhenAsync(SendingEmptyMessage) .Then(HandlerShouldCompleteSuccessfully) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private async Task SendingSayMessage() { await Handler.ExecuteAsync(new ClientSayPacket { Message = "Hello everyone!" }, Session); } private async Task SendingEmptyMessage() { await Handler.ExecuteAsync(new ClientSayPacket { Message = "" }, Session); } private void HandlerShouldCompleteSuccessfully() { // If we reached here, the handler completed without throwing Assert.AreEqual(0, Session.LastPackets.Count); } private void SenderShouldNotReceiveOwnMessage() { Assert.AreEqual(0, Session.LastPackets.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Chat/WhisperPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Chat; using NosCore.Packets.ClientPackets.Chat; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Chat { [TestClass] public class WhisperPacketHandlerTests { private WhisperPacketHandler Handler = null!; private ClientSession Session = null!; private ClientSession TargetSession = null!; private Mock<IBlacklistHub> BlacklistHub = null!; private Mock<IPubSubHub> PubSubHub = null!; private Mock<ISerializer> Serializer = null!; private readonly ILogger<WhisperPacketHandler> Logger = new Mock<ILogger<WhisperPacketHandler>>().Object; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); TargetSession = await TestHelpers.Instance.GenerateSessionAsync(); BlacklistHub = new Mock<IBlacklistHub>(); PubSubHub = new Mock<IPubSubHub>(); Serializer = new Mock<ISerializer>(); BlacklistHub.Setup(x => x.GetBlacklistedAsync(It.IsAny<long>())) .Returns(Task.FromResult(new List<CharacterRelationStatus>())); PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber>())); Serializer.Setup(x => x.Serialize(It.IsAny<IPacket[]>())) .Returns("serialized"); var channel = new Channel { ChannelId = 1, ClientName = "TestChannel", Host = "localhost" }; Handler = new WhisperPacketHandler( Logger, Serializer.Object, BlacklistHub.Object, PubSubHub.Object, channel, TestHelpers.Instance.GameLanguageLocalizer, TestHelpers.Instance.SessionRegistry); } [TestMethod] public async Task WhisperingToNonExistentPlayerShouldShowNotPlayingMessage() { await new Spec("Whispering to nonexistent player should show not playing message") .Given(CharacterIsOnMap) .WhenAsync(WhisperingToNonExistentPlayer) .Then(ShouldReceiveNotPlayingMessage) .ExecuteAsync(); } [TestMethod] public async Task WhisperingToBlacklistedPlayerShouldShowBlacklistMessage() { await new Spec("Whispering to blacklisted player should show blacklist message") .Given(CharacterIsOnMap) .And(TargetIsOnline) .And(TargetIsBlacklisted) .WhenAsync(WhisperingToTarget) .Then(ShouldReceiveBlacklistMessage) .ExecuteAsync(); } [TestMethod] public async Task WhisperingToOnlinePlayerShouldSendMessage() { await new Spec("Whispering to online player should send message") .Given(CharacterIsOnMap) .And(TargetIsOnline) .WhenAsync(WhisperingToTarget) .Then(MessageShouldBeSentViaPubSub) .ExecuteAsync(); } [TestMethod] public async Task WhisperMessageShouldBeTruncatedIfTooLong() { await new Spec("Whisper message should be truncated if too long") .Given(CharacterIsOnMap) .And(TargetIsOnline) .WhenAsync(WhisperingLongMessageToTarget) .Then(MessageShouldBeSentViaPubSub) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void TargetIsOnline() { PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber> { new Subscriber { ConnectedCharacter = new Data.WebApi.Character { Id = TargetSession.Character.CharacterId, Name = TargetSession.Character.Name } } })); } private void TargetIsBlacklisted() { BlacklistHub.Setup(x => x.GetBlacklistedAsync(It.IsAny<long>())) .Returns(Task.FromResult(new List<CharacterRelationStatus> { new CharacterRelationStatus { CharacterId = TargetSession.Character.CharacterId } })); } private async Task WhisperingToNonExistentPlayer() { await Handler.ExecuteAsync(new WhisperPacket { Message = "NonExistentPlayer Hello there!" }, Session); } private async Task WhisperingToTarget() { await Handler.ExecuteAsync(new WhisperPacket { Message = $"{TargetSession.Character.Name} Hello there!" }, Session); } private async Task WhisperingLongMessageToTarget() { var longMessage = new string('a', 100); await Handler.ExecuteAsync(new WhisperPacket { Message = $"{TargetSession.Character.Name} {longMessage}" }, Session); } private void ShouldReceiveNotPlayingMessage() { var packet = Session.LastPackets.OfType<Infoi2Packet>().FirstOrDefault(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.IsNotPlaying, packet.Message); } private void ShouldReceiveBlacklistMessage() { var packet = Session.LastPackets.OfType<InfoiPacket>().FirstOrDefault(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.AlreadyBlacklisted, packet.Message); } private void MessageShouldBeSentViaPubSub() { PubSubHub.Verify(x => x.SendMessageAsync(It.IsAny<NosCore.GameObject.InterChannelCommunication.Messages.PostedPacket>()), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/ChangeChannelPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.CommandPackets; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ChannelService; using NosCore.PacketHandlers.Command; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class ChangeChannelPacketHandlerTests { private ChangeChannelPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IChannelService> ChannelService = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); ChannelService = new Mock<IChannelService>(); Handler = new ChangeChannelPacketHandler(ChannelService.Object); } [TestMethod] public async Task ChangeChannelForwardsTheRequestedChannelIdToChannelService() { await new Spec("Change-channel forwards the packet's ChannelId through to IChannelService.MoveChannelAsync") .WhenAsync(ChangingChannelTo_, 3) .Then(MoveChannelAsyncShouldBeCalledWith_, 3) .ExecuteAsync(); } private async Task ChangingChannelTo_(int channelId) { await Handler.ExecuteAsync(new ChangeChannelPacket { ChannelId = (byte)channelId }, Session); } private void MoveChannelAsyncShouldBeCalledWith_(int expectedChannelId) { ChannelService.Verify(x => x.MoveChannelAsync(Session, expectedChannelId), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/ChangeClassPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Data.CommandPackets; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Command; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class ChangeClassPacketHandlerTests { private ChangeClassPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IPubSubHub> PubSubHub = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); PubSubHub = new Mock<IPubSubHub>(); PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber>())); Handler = new ChangeClassPacketHandler(PubSubHub.Object, TestHelpers.Instance.WorldConfiguration, new ExperienceService(), new JobExperienceService(), new HeroExperienceService(), TestHelpers.Instance.GenerateItemProvider()); } [TestMethod] public async Task ChangingOwnClassShouldCallChangeClass() { await new Spec("Changing own class should call ChangeClass") .Given(CharacterIsOnMap) .WhenAsync(ChangingOwnClass) .Then(CharacterClassShouldBeChanged) .ExecuteAsync(); } [TestMethod] public async Task ChangingClassWithEmptyNameShouldChangeOwnClass() { await new Spec("Changing class with empty name should change own class") .Given(CharacterIsOnMap) .WhenAsync(ChangingClassWithEmptyName) .Then(CharacterClassShouldBeChanged) .ExecuteAsync(); } [TestMethod] public async Task ChangingClassForUnknownPlayerShouldShowError() { await new Spec("Changing class for unknown player should show error") .Given(CharacterIsOnMap) .WhenAsync(ChangingClassForUnknownPlayer) .Then(ShouldReceiveUnknownCharacterMessage) .ExecuteAsync(); } [TestMethod] public async Task ChangingClassForOnlinePlayerShouldSendStatData() { await new Spec("Changing class for online player should send stat data") .Given(CharacterIsOnMap) .And(TargetPlayerIsOnline) .WhenAsync(ChangingClassForTargetPlayer) .Then(StatDataShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void TargetPlayerIsOnline() { PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber> { new Subscriber { ConnectedCharacter = new Character { Id = 12345, Name = "TargetPlayer" } } })); } private async Task ChangingOwnClass() { await Handler.ExecuteAsync(new ChangeClassPacket { ClassType = CharacterClassType.Archer, Name = Session.Character.Name }, Session); } private async Task ChangingClassWithEmptyName() { await Handler.ExecuteAsync(new ChangeClassPacket { ClassType = CharacterClassType.Swordsman, Name = "" }, Session); } private async Task ChangingClassForUnknownPlayer() { await Handler.ExecuteAsync(new ChangeClassPacket { ClassType = CharacterClassType.Mage, Name = "UnknownPlayer123" }, Session); } private async Task ChangingClassForTargetPlayer() { await Handler.ExecuteAsync(new ChangeClassPacket { ClassType = CharacterClassType.Archer, Name = "TargetPlayer" }, Session); } private void CharacterClassShouldBeChanged() { PubSubHub.Verify(x => x.SendMessageAsync(It.IsAny<StatData>()), Times.Never); } private void ShouldReceiveUnknownCharacterMessage() { var packet = Session.LastPackets.OfType<InfoiPacket>().FirstOrDefault(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.UnknownCharacter, packet.Message); } private void StatDataShouldBeSent() { PubSubHub.Verify(x => x.SendMessageAsync(It.IsAny<StatData>()), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/CreateItemPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.CommandPackets; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.Data.StaticEntities; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.PacketHandlers.Command; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class CreateItemPacketHandlerTests { private CreateItemPackettHandler Handler = null!; private ClientSession Session = null!; private List<ItemDto> Items = null!; private Mock<IItemGenerationService> ItemProvider = null!; private readonly ILogger<CreateItemPackettHandler> Logger = new Mock<ILogger<CreateItemPackettHandler>>().Object; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); ItemProvider = new Mock<IItemGenerationService>(); Items = new List<ItemDto> { new Item { VNum = 1012, Type = NoscorePocketType.Main }, new Item { VNum = 1, Type = NoscorePocketType.Equipment, EquipmentSlot = EquipmentType.MainWeapon, ItemType = ItemType.Weapon }, new Item { VNum = 912, Type = NoscorePocketType.Equipment, EquipmentSlot = EquipmentType.Sp, ItemType = ItemType.Specialist } }; ItemProvider.Setup(x => x.Create(It.IsAny<short>(), It.IsAny<short>(), It.IsAny<sbyte>(), It.IsAny<byte>(), It.IsAny<byte>())) .Returns((short vnum, short amount, sbyte rare, byte upgrade, byte design) => new ItemInstance(new Item { VNum = vnum, Type = NoscorePocketType.Main }) { Amount = amount, Rare = rare, Upgrade = upgrade }); Handler = new CreateItemPackettHandler( Logger, Items, TestHelpers.Instance.WorldConfiguration, ItemProvider.Object, TestHelpers.Instance.LogLanguageLocalizer); } [TestMethod] public async Task CreatingNonExistentItemShouldShowError() { await new Spec("Creating non-existent item should show error") .Given(CharacterIsOnMap) .WhenAsync(CreatingNonExistentItem) .Then(ShouldReceiveItemDoesNotExistMessage) .ExecuteAsync(); } [TestMethod] public async Task CreatingGoldItemShouldBeIgnored() { await new Spec("Creating gold item (VNum 1046) should be ignored") .Given(CharacterIsOnMap) .WhenAsync(CreatingGoldItem) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task CreatingValidItemShouldAddToInventory() { await new Spec("Creating valid item should add to inventory") .Given(CharacterIsOnMap) .WhenAsync(CreatingValidItem) .Then(ShouldReceiveItemReceivedMessage) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private async Task CreatingNonExistentItem() { await Handler.ExecuteAsync(new CreateItemPacket { VNum = 9999 }, Session); } private async Task CreatingGoldItem() { Session.LastPackets.Clear(); await Handler.ExecuteAsync(new CreateItemPacket { VNum = 1046 }, Session); } private async Task CreatingValidItem() { await Handler.ExecuteAsync(new CreateItemPacket { VNum = 1012, DesignOrAmount = 5 }, Session); } private void ShouldReceiveItemDoesNotExistMessage() { var packet = Session.LastPackets.OfType<MsgiPacket>().FirstOrDefault(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.ItemDoesNotExist, packet.Message); } private void NoPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } private void ShouldReceiveItemReceivedMessage() { var packet = Session.LastPackets.OfType<SayiPacket>().FirstOrDefault(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.ReceivedThisItem, packet.Message); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/EffectCommandPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.CommandPackets; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Command; using NosCore.Tests.Shared; using SpecLight; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class EffectCommandPacketHandlerTests { private EffectCommandPackettHandler Handler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Handler = new EffectCommandPackettHandler(); } [TestMethod] public async Task EffectShouldSendPacket() { await new Spec("Effect should send packet") .Given(CharacterIsOnMap) .WhenAsync(ExecutingEffectCommand_, 1) .Then(ShouldSendPacketToMap) .ExecuteAsync(); } [TestMethod] public async Task EffectWithDifferentIdShouldSendPacket() { await new Spec("Effect with different id should send packet") .Given(CharacterIsOnMap) .WhenAsync(ExecutingEffectCommand_, 100) .Then(ShouldSendPacketToMap) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; Session.Character.MapInstance.LastPackets.Clear(); } private async Task ExecutingEffectCommand_(int effectId) { await Handler.ExecuteAsync(new EffectCommandPacket { EffectId = effectId }, Session); } private void ShouldSendPacketToMap() { Assert.IsTrue(Session.Character.MapInstance.LastPackets.Any()); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/GiftPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.CommandPackets; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.MailHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Command; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class GiftPacketHandlerTests { private GiftPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IPubSubHub> PubSubHub = null!; private Mock<IMailHub> MailHub = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); PubSubHub = new Mock<IPubSubHub>(); MailHub = new Mock<IMailHub>(); PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber>())); Handler = new GiftPacketHandler( PubSubHub.Object, MailHub.Object, TestHelpers.Instance.Clock); } [TestMethod] public async Task SendingGiftToUnknownPlayerShouldShowError() { await new Spec("Sending gift to unknown player should show error") .Given(CharacterIsOnMap) .WhenAsync(SendingGiftToUnknownPlayer) .Then(ShouldReceiveUnknownCharacterMessage) .ExecuteAsync(); } [TestMethod] public async Task SendingGiftToOnlinePlayerShouldSendMail() { await new Spec("Sending gift to online player should send mail") .Given(CharacterIsOnMap) .And(TargetPlayerIsOnline) .WhenAsync(SendingGiftToTargetPlayer) .Then(MailShouldBeSent) .And(ShouldReceiveGiftDeliveredMessage) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void TargetPlayerIsOnline() { PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber> { new Subscriber { ConnectedCharacter = new Character { Id = 12345, Name = "TargetPlayer" } } })); } private async Task SendingGiftToUnknownPlayer() { await Handler.ExecuteAsync(new GiftPacket { CharacterName = "UnknownPlayer123", VNum = 1012, Amount = 1, Rare = 0, Upgrade = 0 }, Session); } private async Task SendingGiftToTargetPlayer() { await Handler.ExecuteAsync(new GiftPacket { CharacterName = "TargetPlayer", VNum = 1012, Amount = 10, Rare = 0, Upgrade = 0 }, Session); } private void ShouldReceiveUnknownCharacterMessage() { var packet = Session.LastPackets.OfType<InfoiPacket>().FirstOrDefault(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.UnknownCharacter, packet.Message); } private void MailShouldBeSent() { MailHub.Verify(x => x.SendMailAsync(It.IsAny<MailRequest>()), Times.Once); } private void ShouldReceiveGiftDeliveredMessage() { var packet = Session.LastPackets.OfType<SayiPacket>().FirstOrDefault(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.GiftDelivered, packet.Message); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/HelpPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.CommandPackets; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Command; using NosCore.Packets.ServerPackets.Chats; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class HelpPacketHandlerTests { private HelpPacketHandler Handler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Handler = new HelpPacketHandler(); } [TestMethod] public async Task ExecutingHelpShouldSendHeaderMessage() { await new Spec("Executing help should send header message") .Given(CharacterIsOnMap) .And(CharacterHasGameMasterAuthority) .WhenAsync(ExecutingHelpCommand) .Then(ShouldReceiveHelpHeader) .ExecuteAsync(); } [TestMethod] public async Task ExecutingHelpShouldSendCommandsList() { await new Spec("Executing help should send commands list") .Given(CharacterIsOnMap) .And(CharacterHasGameMasterAuthority) .WhenAsync(ExecutingHelpCommand) .Then(ShouldReceiveMultipleSayPackets) .ExecuteAsync(); } [TestMethod] public async Task ExecutingHelpAsModeratorShouldShowOnlyModeratorCommands() { await new Spec("Executing help as moderator should show only moderator level commands") .Given(CharacterIsOnMap) .And(CharacterHasModeratorAuthority) .WhenAsync(ExecutingHelpCommand) .Then(ShouldReceiveHelpHeader) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void CharacterHasGameMasterAuthority() { Session.Account.Authority = AuthorityType.GameMaster; } private void CharacterHasModeratorAuthority() { Session.Account.Authority = AuthorityType.Moderator; } private async Task ExecutingHelpCommand() { await Handler.ExecuteAsync(new HelpPacket(), Session); } private void ShouldReceiveHelpHeader() { var sayPackets = Session.LastPackets.OfType<SayPacket>().ToList(); Assert.IsTrue(sayPackets.Any(p => p.Message != null && p.Message.Contains("Help command"))); } private void ShouldReceiveMultipleSayPackets() { var sayPackets = Session.LastPackets.OfType<SayPacket>().ToList(); Assert.IsTrue(sayPackets.Count > 1); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/InvisibleCommandPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.CommandPackets; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Command; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class InvisibleCommandPacketHandlerTests { private InvisibleCommandPacketHandler Handler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; Handler = new InvisibleCommandPacketHandler(); } [TestMethod] public async Task InvisibleCommandTogglesBothCamouflageAndInvisible() { await new Spec("Invisible command flips both Camouflage and Invisible together") .Given(CharacterIsVisible) .WhenAsync(RunningInvisibleCommand) .Then(CamouflageShouldBe_, true) .And(InvisibleShouldBe_, true) .ExecuteAsync(); } [TestMethod] public async Task RunningInvisibleTwiceRestoresVisibility() { await new Spec("Running the invisible command a second time flips back to visible") .Given(CharacterIsVisible) .WhenAsync(RunningInvisibleCommand) .AndAsync(RunningInvisibleCommand) .Then(CamouflageShouldBe_, false) .And(InvisibleShouldBe_, false) .ExecuteAsync(); } private void CharacterIsVisible() { Session.Character.Camouflage = false; Session.Character.Invisible = false; } private async Task RunningInvisibleCommand() { await Handler.ExecuteAsync(new InvisibleCommandPacket(), Session); } private void CamouflageShouldBe_(bool expected) => Assert.AreEqual(expected, Session.Character.Camouflage); private void InvisibleShouldBe_(bool expected) => Assert.AreEqual(expected, Session.Character.Invisible); } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/KickPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.CommandPackets; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Command; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class KickPacketHandlerTests { private KickPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IPubSubHub> PubSubHub = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); PubSubHub = new Mock<IPubSubHub>(); PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber>())); Handler = new KickPacketHandler(PubSubHub.Object); } [TestMethod] public async Task KickingUnknownPlayerShouldShowErrorMessage() { await new Spec("Kicking unknown player should show error message") .Given(CharacterIsOnMap) .WhenAsync(KickingUnknownPlayer) .Then(ShouldReceiveUnknownCharacterMessage) .ExecuteAsync(); } [TestMethod] public async Task KickingOnlinePlayerShouldUnsubscribeThem() { await new Spec("Kicking online player should unsubscribe them") .Given(CharacterIsOnMap) .And(TargetPlayerIsOnline) .WhenAsync(KickingTargetPlayer) .Then(TargetShouldBeUnsubscribed) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void TargetPlayerIsOnline() { PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber> { new Subscriber { ConnectedCharacter = new Character { Id = 12345, Name = "TargetPlayer" } } })); } private async Task KickingUnknownPlayer() { await Handler.ExecuteAsync(new KickPacket { Name = "UnknownPlayer123" }, Session); } private async Task KickingTargetPlayer() { await Handler.ExecuteAsync(new KickPacket { Name = "TargetPlayer" }, Session); } private void ShouldReceiveUnknownCharacterMessage() { var packet = Session.LastPackets.OfType<InfoiPacket>().FirstOrDefault(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.UnknownCharacter, packet.Message); } private void TargetShouldBeUnsubscribed() { PubSubHub.Verify(x => x.UnsubscribeAsync(12345), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/PositionPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.CommandPackets; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Command; using NosCore.Packets.ServerPackets.Chats; using NosCore.Tests.Shared; using SpecLight; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class PositionPacketHandlerTests { private PositionPacketHandler Handler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Handler = new PositionPacketHandler(); } [TestMethod] public async Task PositionShouldSendSayPacket() { await new Spec("Position should send say packet") .Given(CharacterIsOnMap) .WhenAsync(ExecutingPositionCommand) .Then(ShouldReceiveSayPacket) .ExecuteAsync(); } [TestMethod] public async Task PositionShouldContainMapId() { await new Spec("Position should contain map id") .Given(CharacterIsOnMap) .WhenAsync(ExecutingPositionCommand) .Then(SayPacketShouldContainMapInfo) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; Session.Character.PositionX = 0; Session.Character.PositionY = 0; Session.LastPackets.Clear(); } private async Task ExecutingPositionCommand() { await Handler.ExecuteAsync(new PositionPacket(), Session); } private void ShouldReceiveSayPacket() { var sayPacket = Session.LastPackets.OfType<SayPacket>().FirstOrDefault(); Assert.IsNotNull(sayPacket); } private void SayPacketShouldContainMapInfo() { var sayPacket = Session.LastPackets.OfType<SayPacket>().FirstOrDefault(); Assert.IsNotNull(sayPacket); Assert.IsTrue(sayPacket.Message?.Contains("Map:") ?? false); Assert.IsTrue(sayPacket.Message?.Contains("X:0") ?? false); Assert.IsTrue(sayPacket.Message?.Contains("Y:0") ?? false); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/SetGoldCommandPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.CommandPackets; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Command; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class SetGoldCommandPacketHandlerTests { private SetGoldCommandPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IPubSubHub> PubSubHub = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); PubSubHub = new Mock<IPubSubHub>(); PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber>())); Handler = new SetGoldCommandPacketHandler(PubSubHub.Object, TestHelpers.Instance.ItemList); } [TestMethod] public async Task SettingGoldForUnknownPlayerShouldShowError() { await new Spec("Setting gold for unknown player should show error") .Given(CharacterIsOnMap) .WhenAsync(SettingGoldForUnknownPlayer) .Then(ShouldReceiveUnknownCharacterMessage) .ExecuteAsync(); } [TestMethod] public async Task SettingGoldForOnlinePlayerShouldSendStatData() { await new Spec("Setting gold for online player should send stat data") .Given(CharacterIsOnMap) .And(TargetPlayerIsOnline) .WhenAsync(SettingGoldForTargetPlayer) .Then(StatDataShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void TargetPlayerIsOnline() { PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber> { new Subscriber { ConnectedCharacter = new Character { Id = 12345, Name = "TargetPlayer" } } })); } private async Task SettingGoldForUnknownPlayer() { await Handler.ExecuteAsync(new SetGoldCommandPacket { Name = "UnknownPlayer123", Gold = 1000000 }, Session); } private async Task SettingGoldForTargetPlayer() { await Handler.ExecuteAsync(new SetGoldCommandPacket { Name = "TargetPlayer", Gold = 1000000 }, Session); } private void ShouldReceiveUnknownCharacterMessage() { var packet = Session.LastPackets.OfType<InfoiPacket>().FirstOrDefault(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.UnknownCharacter, packet.Message); } private void StatDataShouldBeSent() { PubSubHub.Verify(x => x.SendMessageAsync(It.IsAny<StatData>()), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/SetHeroLevelCommandPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Core; using NosCore.Data.CommandPackets; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Command; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class SetHeroLevelCommandPacketHandlerTests { private SetHeroLevelCommandPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IPubSubHub> PubSubHub = null!; private Mock<IChannelHub> ChannelHub = null!; private Mock<IExperienceService> ExperienceService = null!; private Mock<IJobExperienceService> JobExperienceService = null!; private Mock<IHeroExperienceService> HeroExperienceService = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); PubSubHub = new Mock<IPubSubHub>(); ChannelHub = new Mock<IChannelHub>(); ExperienceService = new Mock<IExperienceService>(); JobExperienceService = new Mock<IJobExperienceService>(); HeroExperienceService = new Mock<IHeroExperienceService>(); PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber>())); ChannelHub.Setup(x => x.GetCommunicationChannels()) .Returns(Task.FromResult(new List<ChannelInfo>())); Handler = new SetHeroLevelCommandPacketHandler(PubSubHub.Object, ChannelHub.Object, ExperienceService.Object, JobExperienceService.Object, HeroExperienceService.Object); } [TestMethod] public async Task SettingOwnHeroLevelShouldChangeHeroLevel() { await new Spec("Setting own hero level should change hero level") .Given(CharacterIsOnMap) .WhenAsync(SettingOwnHeroLevel) .Then(HeroLevelShouldBeChanged) .ExecuteAsync(); } [TestMethod] public async Task SettingHeroLevelWithEmptyNameShouldChangeOwnHeroLevel() { await new Spec("Setting hero level with empty name should change own hero level") .Given(CharacterIsOnMap) .WhenAsync(SettingHeroLevelWithEmptyName) .Then(HeroLevelShouldBeChanged) .ExecuteAsync(); } [TestMethod] public async Task SettingHeroLevelForUnknownPlayerShouldShowError() { await new Spec("Setting hero level for unknown player should show error") .Given(CharacterIsOnMap) .WhenAsync(SettingHeroLevelForUnknownPlayer) .Then(ShouldReceiveUnknownCharacterMessage) .ExecuteAsync(); } [TestMethod] public async Task SettingHeroLevelForOnlinePlayerShouldSendStatData() { await new Spec("Setting hero level for online player should send stat data") .Given(CharacterIsOnMap) .And(TargetPlayerIsOnline) .WhenAsync(SettingHeroLevelForTargetPlayer) .Then(StatDataShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void TargetPlayerIsOnline() { PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber> { new Subscriber { ConnectedCharacter = new Character { Id = 12345, Name = "TargetPlayer" } } })); } private async Task SettingOwnHeroLevel() { await Handler.ExecuteAsync(new SetHeroLevelCommandPacket { Level = 50, Name = Session.Character.Name }, Session); } private async Task SettingHeroLevelWithEmptyName() { await Handler.ExecuteAsync(new SetHeroLevelCommandPacket { Level = 50, Name = "" }, Session); } private async Task SettingHeroLevelForUnknownPlayer() { await Handler.ExecuteAsync(new SetHeroLevelCommandPacket { Level = 50, Name = "UnknownPlayer123" }, Session); } private async Task SettingHeroLevelForTargetPlayer() { await Handler.ExecuteAsync(new SetHeroLevelCommandPacket { Level = 50, Name = "TargetPlayer" }, Session); } private void HeroLevelShouldBeChanged() { PubSubHub.Verify(x => x.SendMessageAsync(It.IsAny<StatData>()), Times.Never); } private void ShouldReceiveUnknownCharacterMessage() { var packet = Session.LastPackets.OfType<InfoiPacket>().FirstOrDefault(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.UnknownCharacter, packet.Message); } private void StatDataShouldBeSent() { PubSubHub.Verify(x => x.SendMessageAsync(It.IsAny<StatData>()), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/SetJobLevelCommandPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Data.CommandPackets; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Command; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class SetJobLevelCommandPacketHandlerTests { private SetJobLevelCommandPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IPubSubHub> PubSubHub = null!; private Mock<IExperienceService> ExperienceService = null!; private Mock<IJobExperienceService> JobExperienceService = null!; private Mock<IHeroExperienceService> HeroExperienceService = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); PubSubHub = new Mock<IPubSubHub>(); ExperienceService = new Mock<IExperienceService>(); JobExperienceService = new Mock<IJobExperienceService>(); HeroExperienceService = new Mock<IHeroExperienceService>(); PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber>())); Handler = new SetJobLevelCommandPacketHandler(PubSubHub.Object, ExperienceService.Object, JobExperienceService.Object, HeroExperienceService.Object); } [TestMethod] public async Task SettingOwnJobLevelShouldChangeJobLevel() { await new Spec("Setting own job level should change job level") .Given(CharacterIsOnMap) .WhenAsync(SettingOwnJobLevel) .Then(JobLevelShouldBeChanged) .ExecuteAsync(); } [TestMethod] public async Task SettingJobLevelWithEmptyNameShouldChangeOwnJobLevel() { await new Spec("Setting job level with empty name should change own job level") .Given(CharacterIsOnMap) .WhenAsync(SettingJobLevelWithEmptyName) .Then(JobLevelShouldBeChanged) .ExecuteAsync(); } [TestMethod] public async Task SettingJobLevelForUnknownPlayerShouldShowError() { await new Spec("Setting job level for unknown player should show error") .Given(CharacterIsOnMap) .WhenAsync(SettingJobLevelForUnknownPlayer) .Then(ShouldReceiveUnknownCharacterMessage) .ExecuteAsync(); } [TestMethod] public async Task SettingJobLevelForOnlinePlayerShouldSendStatData() { await new Spec("Setting job level for online player should send stat data") .Given(CharacterIsOnMap) .And(TargetPlayerIsOnline) .WhenAsync(SettingJobLevelForTargetPlayer) .Then(StatDataShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void TargetPlayerIsOnline() { PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber> { new Subscriber { ConnectedCharacter = new Character { Id = 12345, Name = "TargetPlayer" } } })); } private async Task SettingOwnJobLevel() { await Handler.ExecuteAsync(new SetJobLevelCommandPacket { Level = 50, Name = Session.Character.Name }, Session); } private async Task SettingJobLevelWithEmptyName() { await Handler.ExecuteAsync(new SetJobLevelCommandPacket { Level = 50, Name = "" }, Session); } private async Task SettingJobLevelForUnknownPlayer() { await Handler.ExecuteAsync(new SetJobLevelCommandPacket { Level = 50, Name = "UnknownPlayer123" }, Session); } private async Task SettingJobLevelForTargetPlayer() { await Handler.ExecuteAsync(new SetJobLevelCommandPacket { Level = 50, Name = "TargetPlayer" }, Session); } private void JobLevelShouldBeChanged() { PubSubHub.Verify(x => x.SendMessageAsync(It.IsAny<StatData>()), Times.Never); } private void ShouldReceiveUnknownCharacterMessage() { var packet = Session.LastPackets.OfType<InfoiPacket>().FirstOrDefault(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.UnknownCharacter, packet.Message); } private void StatDataShouldBeSent() { PubSubHub.Verify(x => x.SendMessageAsync(It.IsAny<StatData>()), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/SetLevelCommandPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Core; using NosCore.Data.CommandPackets; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Command; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class SetLevelCommandPacketHandlerTests { private SetLevelCommandPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IPubSubHub> PubSubHub = null!; private Mock<IChannelHub> ChannelHub = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); PubSubHub = new Mock<IPubSubHub>(); ChannelHub = new Mock<IChannelHub>(); PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber>())); ChannelHub.Setup(x => x.GetCommunicationChannels()) .Returns(Task.FromResult(new List<ChannelInfo>())); Handler = new SetLevelCommandPacketHandler(PubSubHub.Object, ChannelHub.Object, new ExperienceService(), new JobExperienceService(), new HeroExperienceService(), TestHelpers.Instance.SessionRegistry, TestHelpers.Instance.GameLanguageLocalizer); } [TestMethod] public async Task SettingOwnLevelShouldChangeLevel() { await new Spec("Setting own level should change level") .Given(CharacterIsOnMap) .WhenAsync(SettingOwnLevel) .Then(LevelShouldBeChanged) .ExecuteAsync(); } [TestMethod] public async Task SettingLevelWithEmptyNameShouldChangeOwnLevel() { await new Spec("Setting level with empty name should change own level") .Given(CharacterIsOnMap) .WhenAsync(SettingLevelWithEmptyName) .Then(LevelShouldBeChanged) .ExecuteAsync(); } [TestMethod] public async Task SettingLevelForUnknownPlayerShouldShowError() { await new Spec("Setting level for unknown player should show error") .Given(CharacterIsOnMap) .WhenAsync(SettingLevelForUnknownPlayer) .Then(ShouldReceiveUnknownCharacterMessage) .ExecuteAsync(); } [TestMethod] public async Task SettingLevelForOnlinePlayerShouldSendStatData() { await new Spec("Setting level for online player should send stat data") .Given(CharacterIsOnMap) .And(TargetPlayerIsOnline) .WhenAsync(SettingLevelForTargetPlayer) .Then(StatDataShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void TargetPlayerIsOnline() { PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber> { new Subscriber { ConnectedCharacter = new Character { Id = 12345, Name = "TargetPlayer" } } })); } private async Task SettingOwnLevel() { await Handler.ExecuteAsync(new SetLevelCommandPacket { Level = 99, Name = Session.Character.Name }, Session); } private async Task SettingLevelWithEmptyName() { await Handler.ExecuteAsync(new SetLevelCommandPacket { Level = 99, Name = "" }, Session); } private async Task SettingLevelForUnknownPlayer() { await Handler.ExecuteAsync(new SetLevelCommandPacket { Level = 99, Name = "UnknownPlayer123" }, Session); } private async Task SettingLevelForTargetPlayer() { await Handler.ExecuteAsync(new SetLevelCommandPacket { Level = 99, Name = "TargetPlayer" }, Session); } private void LevelShouldBeChanged() { PubSubHub.Verify(x => x.SendMessageAsync(It.IsAny<StatData>()), Times.Never); } private void ShouldReceiveUnknownCharacterMessage() { var packet = Session.LastPackets.OfType<InfoiPacket>().FirstOrDefault(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.UnknownCharacter, packet.Message); } private void StatDataShouldBeSent() { PubSubHub.Verify(x => x.SendMessageAsync(It.IsAny<StatData>()), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/SetMaintenancePacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.CommandPackets; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Command; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class SetMaintenancePacketHandlerTests { private SetMaintenancePacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IChannelHub> ChannelHub = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); ChannelHub = new Mock<IChannelHub>(); Handler = new SetMaintenancePacketHandler(ChannelHub.Object); } [TestMethod] public async Task SetMaintenanceForwardsGlobalAndModeFlagsToChannelHub() { await new Spec("Set-maintenance forwards IsGlobal + MaintenanceMode flags through to IChannelHub.SetMaintenance") .WhenAsync(SettingMaintenance_, true, true) .Then(ChannelHubSetMaintenanceShouldBeCalledWith_, true, true) .ExecuteAsync(); } [TestMethod] public async Task SetMaintenanceCanDisableAndScopeLocally() { await new Spec("Disabling maintenance locally forwards (false, false) to the hub") .WhenAsync(SettingMaintenance_, false, false) .Then(ChannelHubSetMaintenanceShouldBeCalledWith_, false, false) .ExecuteAsync(); } private async Task SettingMaintenance_(bool isGlobal, bool mode) { await Handler.ExecuteAsync(new SetMaintenancePacket { IsGlobal = isGlobal, MaintenanceMode = mode, }, Session); } private void ChannelHubSetMaintenanceShouldBeCalledWith_(bool expectedGlobal, bool expectedMode) { ChannelHub.Verify(x => x.SetMaintenance(expectedGlobal, expectedMode), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/SetReputationPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.CommandPackets; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Command; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class SetReputationPacketHandlerTests { private SetReputationPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IPubSubHub> PubSubHub = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); PubSubHub = new Mock<IPubSubHub>(); PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber>())); Handler = new SetReputationPacketHandler(PubSubHub.Object, TestHelpers.Instance.GameLanguageLocalizer); } [TestMethod] public async Task SettingOwnReputationShouldChangeReputation() { await new Spec("Setting own reputation should change reputation") .Given(CharacterIsOnMap) .WhenAsync(SettingOwnReputation) .Then(ReputationShouldBeChanged) .ExecuteAsync(); } [TestMethod] public async Task SettingReputationWithEmptyNameShouldChangeOwnReputation() { await new Spec("Setting reputation with empty name should change own reputation") .Given(CharacterIsOnMap) .WhenAsync(SettingReputationWithEmptyName) .Then(ReputationShouldBeChanged) .ExecuteAsync(); } [TestMethod] public async Task SettingReputationForUnknownPlayerShouldShowError() { await new Spec("Setting reputation for unknown player should show error") .Given(CharacterIsOnMap) .WhenAsync(SettingReputationForUnknownPlayer) .Then(ShouldReceiveUnknownCharacterMessage) .ExecuteAsync(); } [TestMethod] public async Task SettingReputationForOnlinePlayerShouldSendStatData() { await new Spec("Setting reputation for online player should send stat data") .Given(CharacterIsOnMap) .And(TargetPlayerIsOnline) .WhenAsync(SettingReputationForTargetPlayer) .Then(StatDataShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void TargetPlayerIsOnline() { PubSubHub.Setup(x => x.GetSubscribersAsync()) .Returns(Task.FromResult(new List<Subscriber> { new Subscriber { ConnectedCharacter = new Character { Id = 12345, Name = "TargetPlayer" } } })); } private async Task SettingOwnReputation() { await Handler.ExecuteAsync(new SetReputationPacket { Reputation = 100000, Name = Session.Character.Name }, Session); } private async Task SettingReputationWithEmptyName() { await Handler.ExecuteAsync(new SetReputationPacket { Reputation = 100000, Name = "" }, Session); } private async Task SettingReputationForUnknownPlayer() { await Handler.ExecuteAsync(new SetReputationPacket { Reputation = 100000, Name = "UnknownPlayer123" }, Session); } private async Task SettingReputationForTargetPlayer() { await Handler.ExecuteAsync(new SetReputationPacket { Reputation = 100000, Name = "TargetPlayer" }, Session); } private void ReputationShouldBeChanged() { PubSubHub.Verify(x => x.SendMessageAsync(It.IsAny<StatData>()), Times.Never); } private void ShouldReceiveUnknownCharacterMessage() { var packet = Session.LastPackets.OfType<InfoiPacket>().FirstOrDefault(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.UnknownCharacter, packet.Message); } private void StatDataShouldBeSent() { PubSubHub.Verify(x => x.SendMessageAsync(It.IsAny<StatData>()), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/ShoutPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.CommandPackets; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Command; using NosCore.Packets.Interfaces; using NosCore.Tests.Shared; using SpecLight; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class ShoutPacketHandlerTests { private ShoutPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IPubSubHub> PubSubHub = null!; private Mock<ISerializer> Serializer = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); PubSubHub = new Mock<IPubSubHub>(); Serializer = new Mock<ISerializer>(); Serializer.Setup(x => x.Serialize(It.IsAny<IPacket[]>())) .Returns("serialized_packet"); Handler = new ShoutPacketHandler( Serializer.Object, PubSubHub.Object, TestHelpers.Instance.GameLanguageLocalizer); } [TestMethod] public async Task ShoutingShouldBroadcastToAllPlayers() { await new Spec("Shouting should broadcast to all players") .Given(CharacterIsOnMap) .WhenAsync(ShoutingMessage) .Then(MessagesShouldBeBroadcast) .ExecuteAsync(); } [TestMethod] public async Task ShoutingShouldSerializeBothPacketTypes() { await new Spec("Shouting should serialize both say and msg packets") .Given(CharacterIsOnMap) .WhenAsync(ShoutingMessage) .Then(SerializerShouldBeCalledTwice) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private async Task ShoutingMessage() { await Handler.ExecuteAsync(new ShoutPacket { Message = "Test announcement message" }, Session); } private void MessagesShouldBeBroadcast() { PubSubHub.Verify(x => x.SendMessagesAsync(It.IsAny<List<IMessage>>()), Times.Once); } private void SerializerShouldBeCalledTwice() { Serializer.Verify(x => x.Serialize(It.IsAny<IPacket[]>()), Times.Exactly(2)); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/SizePacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.CommandPackets; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Command; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class SizePacketHandlerTests { private SizePacketHandler Handler = null!; private ClientSession Session = null!; private Mock<ILogger<SizePacketHandler>> Logger = null!; private Mock<ILogLanguageLocalizer<LogLanguageKey>> LogLanguage = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Logger = new Mock<ILogger<SizePacketHandler>>(); LogLanguage = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); Handler = new SizePacketHandler(Logger.Object, LogLanguage.Object); } [TestMethod] public async Task SizeOnPlayerShouldChangePlayerSize() { await new Spec("Size on player should change player size") .Given(CharacterIsOnMap) .WhenAsync(ExecutingSizeCommandOnPlayer_, 20) .Then(PlayerSizeShouldBe_, 20) .ExecuteAsync(); } [TestMethod] public async Task SizeOnUnknownVisualTypeShouldLogError() { await new Spec("Size on unknown visual type should log error") .Given(CharacterIsOnMap) .WhenAsync(ExecutingSizeCommandWithUnknownVisualType) .Then(ShouldLogError) .ExecuteAsync(); } [TestMethod] public async Task SizeOnNonExistentEntityShouldLogError() { await new Spec("Size on non existent entity should log error") .Given(CharacterIsOnMap) .WhenAsync(ExecutingSizeCommandOnNonExistentNpc) .Then(ShouldLogError) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; Session.LastPackets.Clear(); } private async Task ExecutingSizeCommandOnPlayer_(int newSize) { await Handler.ExecuteAsync(new SizePacket { VisualType = VisualType.Player, VisualId = Session.Character.CharacterId, Size = (byte)newSize }, Session); } private async Task ExecutingSizeCommandWithUnknownVisualType() { await Handler.ExecuteAsync(new SizePacket { VisualType = unchecked((VisualType)99), VisualId = 1, Size = 20 }, Session); } private async Task ExecutingSizeCommandOnNonExistentNpc() { await Handler.ExecuteAsync(new SizePacket { VisualType = VisualType.Npc, VisualId = 999999, Size = 20 }, Session); } private void PlayerSizeShouldBe_(int expectedSize) { Assert.AreEqual((byte)expectedSize, Session.Character.Size); } private void ShouldLogError() { Logger.Verify(x => x.Log( LogLevel.Error, It.IsAny<EventId>(), It.Is<It.IsAnyType>((v, _) => true), It.IsAny<System.Exception?>(), It.IsAny<System.Func<It.IsAnyType, System.Exception?, string>>()), Times.AtLeastOnce); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/SpeedPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.CommandPackets; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Command; using NosCore.Packets.ServerPackets.Chats; using NosCore.Tests.Shared; using SpecLight; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class SpeedPacketHandlerTests { private SpeedPacketHandler Handler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Handler = new SpeedPacketHandler(); } [TestMethod] public async Task SpeedWithValidValueShouldSetVehicleSpeed() { await new Spec("Speed with valid value should set vehicle speed") .WhenAsync(SettingSpeed_, 30) .Then(VehicleSpeedShouldBe_, 30) .ExecuteAsync(); } [TestMethod] public async Task SpeedWithZeroShouldShowHelp() { await new Spec("Speed with zero should show help") .WhenAsync(SettingSpeed_, 0) .Then(ShouldShowHelpMessage) .ExecuteAsync(); } [TestMethod] public async Task SpeedWithNegativeShouldShowHelp() { await new Spec("Speed with value 60 or more should show help") .WhenAsync(SettingSpeed_, 60) .Then(ShouldShowHelpMessage) .ExecuteAsync(); } [TestMethod] public async Task SpeedWith59ShouldSetSpeed() { await new Spec("Speed with 59 should set speed") .WhenAsync(SettingSpeed_, 59) .Then(VehicleSpeedShouldBe_, 59) .ExecuteAsync(); } [TestMethod] public async Task SpeedShouldSendPacketResponse() { await new Spec("Speed should send packet response") .WhenAsync(SettingSpeed_, 30) .Then(ShouldSendPacketResponse) .ExecuteAsync(); } private async Task SettingSpeed_(int speed) { Session.LastPackets.Clear(); await Handler.ExecuteAsync(new SpeedPacket { Speed = (byte)speed }, Session); } private void VehicleSpeedShouldBe_(int expectedSpeed) { Assert.AreEqual((byte)expectedSpeed, Session.Character.VehicleSpeed); } private void ShouldShowHelpMessage() { Assert.IsTrue(Session.LastPackets.Any(p => p is SayPacket)); } private void ShouldSendPacketResponse() { Assert.IsTrue(Session.LastPackets.Count > 0); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Command/TeleportPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.CommandPackets; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MapChangeService; using NosCore.PacketHandlers.Command; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Command { [TestClass] public class TeleportPacketHandlerTests { private TeleportPacketHandler Handler = null!; private ClientSession Session = null!; private ClientSession TargetSession = null!; private Mock<IMapChangeService> MapChangeService = null!; private readonly ILogger<TeleportPacketHandler> Logger = new Mock<ILogger<TeleportPacketHandler>>().Object; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); TargetSession = await TestHelpers.Instance.GenerateSessionAsync(); MapChangeService = new Mock<IMapChangeService>(); Handler = new TeleportPacketHandler( Logger, MapChangeService.Object, TestHelpers.Instance.GameLanguageLocalizer, TestHelpers.Instance.SessionRegistry); } [TestMethod] public async Task TeleportingToPlayerShouldChangeMapInstance() { await new Spec("Teleporting to player should change map instance") .Given(CharacterIsOnMap) .And(TargetIsOnline) .WhenAsync(TeleportingToPlayer) .Then(MapChangeServiceShouldBeCalled) .ExecuteAsync(); } [TestMethod] public async Task TeleportingToMapByIdShouldChangeMap() { await new Spec("Teleporting to map by id should change map") .Given(CharacterIsOnMap) .WhenAsync(TeleportingToMapById) .Then(MapChangeByIdShouldBeCalled) .ExecuteAsync(); } [TestMethod] public async Task TeleportingToUnknownPlayerShouldLogError() { await new Spec("Teleporting to unknown player should log error") .Given(CharacterIsOnMap) .WhenAsync(TeleportingToUnknownPlayer) .Then(NoMapChangeShouldOccur) .ExecuteAsync(); } [TestMethod] public async Task TeleportingToPlayerForwardsTargetMapXYNotSelfPosition() { await new Spec("Teleport-to-player forwards the target's MapX/MapY (not the caller's)") .Given(CharacterIsOnMap) .And(TargetIsOnlineAtMapXY_, (short)77, (short)88) .And(CallerIsAtDifferentPosition_, (short)10, (short)10) .WhenAsync(TeleportingToPlayer) .Then(MapChangeInstanceCalledWithCoords_, 77, 88) .ExecuteAsync(); } [TestMethod] public async Task TeleportingToMapByIdForwardsPacketMapXYCoordinates() { await new Spec("Teleport-by-map-id forwards the packet's MapX/MapY to ChangeMapAsync") .Given(CharacterIsOnMap) .WhenAsync(TeleportingToMapByIdAt_, (short)50, (short)50) .Then(MapChangeByIdCalledWithMapAndCoords_, (short)1, (short)50, (short)50) .ExecuteAsync(); } private void TargetIsOnlineAtMapXY_(short x, short y) { TargetSession.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; TargetSession.Character.MapX = x; TargetSession.Character.MapY = y; } private void CallerIsAtDifferentPosition_(short x, short y) { Session.Character.MapX = x; Session.Character.MapY = y; } private async Task TeleportingToMapByIdAt_(short x, short y) { await Handler.ExecuteAsync(new TeleportPacket { TeleportArgument = "1", MapX = x, MapY = y, }, Session); } private void MapChangeInstanceCalledWithCoords_(int expectedX, int expectedY) { MapChangeService.Verify(x => x.ChangeMapInstanceAsync( Session, It.IsAny<System.Guid>(), It.Is<int?>(v => v == expectedX), It.Is<int?>(v => v == expectedY)), Times.Once); } private void MapChangeByIdCalledWithMapAndCoords_(short expectedMapId, short expectedX, short expectedY) { MapChangeService.Verify(x => x.ChangeMapAsync( Session, It.Is<short?>(v => v == expectedMapId), It.Is<short?>(v => v == expectedX), It.Is<short?>(v => v == expectedY)), Times.Once); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void TargetIsOnline() { TargetSession.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private async Task TeleportingToPlayer() { await Handler.ExecuteAsync(new TeleportPacket { TeleportArgument = TargetSession.Character.Name }, Session); } private async Task TeleportingToMapById() { await Handler.ExecuteAsync(new TeleportPacket { TeleportArgument = "1", MapX = 50, MapY = 50 }, Session); } private async Task TeleportingToUnknownPlayer() { await Handler.ExecuteAsync(new TeleportPacket { TeleportArgument = "UnknownPlayerName123" }, Session); } private void MapChangeServiceShouldBeCalled() { MapChangeService.Verify(x => x.ChangeMapInstanceAsync( It.IsAny<ClientSession>(), It.IsAny<System.Guid>(), It.IsAny<int?>(), It.IsAny<int?>()), Times.Once); } private void MapChangeByIdShouldBeCalled() { MapChangeService.Verify(x => x.ChangeMapAsync( It.IsAny<ClientSession>(), It.IsAny<short?>(), It.IsAny<short?>(), It.IsAny<short?>()), Times.Once); } private void NoMapChangeShouldOccur() { MapChangeService.Verify(x => x.ChangeMapInstanceAsync( It.IsAny<ClientSession>(), It.IsAny<System.Guid>(), It.IsAny<int?>(), It.IsAny<int?>()), Times.Never); MapChangeService.Verify(x => x.ChangeMapAsync( It.IsAny<ClientSession>(), It.IsAny<short?>(), It.IsAny<short?>(), It.IsAny<short?>()), Times.Never); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Exchange/ExcListPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations; using NosCore.Data.StaticEntities; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ExchangeService; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.PacketHandlers.Exchange; using NosCore.Packets.ClientPackets.Exchanges; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Exchanges; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Exchange { [TestClass] public class ExcListPacketHandlerTests { private ExcListPacketHandler Handler = null!; private ClientSession Session = null!; private ClientSession TargetSession = null!; private Mock<IExchangeService> ExchangeService = null!; private ItemGenerationService ItemProvider = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); TargetSession = await TestHelpers.Instance.GenerateSessionAsync(); ExchangeService = new Mock<IExchangeService>(); var items = new List<ItemDto> { new Item { Type = NoscorePocketType.Main, VNum = 1012, IsTradable = true }, new Item { Type = NoscorePocketType.Main, VNum = 1013, IsTradable = false } }; ItemProvider = new ItemGenerationService(items, NullLoggerFactory.Instance, TestHelpers.Instance.LogLanguageLocalizer); Handler = new ExcListPacketHandler( ExchangeService.Object, NullLogger<ExcListPacketHandler>.Instance, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.SessionRegistry); } [TestMethod] public async Task SettingGoldMoreThanAvailableShouldBeIgnored() { await new Spec("Setting gold more than available should be ignored") .Given(CharacterHasNoGold) .WhenAsync(SettingGoldInExchange) .Then(ExchangeGoldShouldNotBeSet) .ExecuteAsync(); } [TestMethod] public async Task AddingNonTradableItemShouldCloseExchange() { await new Spec("Adding non tradable item should close exchange") .Given(CharacterHasNonTradableItem) .And(ExchangeIsOpenWithTarget) .WhenAsync(AddingNonTradableItemToExchange) .Then(ExchangeShouldBeClosed) .ExecuteAsync(); } [TestMethod] public async Task AddingTradableItemShouldSucceed() { await new Spec("Adding tradable item should succeed") .Given(CharacterHasTradableItem) .And(ExchangeIsOpenWithTarget) .WhenAsync(AddingTradableItemToExchange) .Then(ItemShouldBeAddedToExchange) .ExecuteAsync(); } [TestMethod] public async Task SettingValidGoldShouldUpdateExchange() { await new Spec("Setting valid gold should update exchange") .Given(CharacterHasGold) .And(ExchangeIsOpenWithTarget) .WhenAsync(SettingGoldInExchange) .Then(ExchangeGoldShouldBeSet) .ExecuteAsync(); } private void CharacterHasNoGold() { Session.Character.Gold = 0; Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void CharacterHasGold() { Session.Character.Gold = 10000; Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void CharacterHasNonTradableItem() { Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemProvider.Create(1013, 1), 0), NoscorePocketType.Main, 0); Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void CharacterHasTradableItem() { Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemProvider.Create(1012, 10), 0), NoscorePocketType.Main, 0); Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void ExchangeIsOpenWithTarget() { TargetSession.Character.MapInstance = Session.Character.MapInstance; var visualId = Session.Character.VisualId; var targetVisualId = TargetSession.Character.VisualId; ExchangeService.Setup(x => x.GetTargetId(visualId)) .Returns(targetVisualId); ExchangeService.Setup(x => x.CloseExchange(It.IsAny<long>(), It.IsAny<ExchangeResultType>())) .Returns(new ExcClosePacket { Type = ExchangeResultType.Failure }); } private async Task SettingGoldInExchange() { await Handler.ExecuteAsync(new ExcListPacket { Gold = 5000, BankGold = 0, SubPackets = new List<ExcListSubPacket?>() }, Session); } private async Task AddingNonTradableItemToExchange() { await Handler.ExecuteAsync(new ExcListPacket { Gold = 0, BankGold = 0, SubPackets = new List<ExcListSubPacket?> { new() { Slot = 0, PocketType = PocketType.Main, Amount = 1 } } }, Session); } private async Task AddingTradableItemToExchange() { await Handler.ExecuteAsync(new ExcListPacket { Gold = 0, BankGold = 0, SubPackets = new List<ExcListSubPacket?> { new() { Slot = 0, PocketType = PocketType.Main, Amount = 5 } } }, Session); } private void ExchangeGoldShouldNotBeSet() { ExchangeService.Verify(x => x.SetGold(It.IsAny<long>(), It.IsAny<long>(), It.IsAny<long>()), Times.Never); } private void ExchangeGoldShouldBeSet() { var characterId = Session.Character.CharacterId; ExchangeService.Verify(x => x.SetGold(characterId, 5000, 0), Times.Once); } private void ExchangeShouldBeClosed() { var visualId = Session.Character.VisualId; ExchangeService.Verify(x => x.CloseExchange(visualId, ExchangeResultType.Failure), Times.Once); } private void ItemShouldBeAddedToExchange() { var characterId = Session.Character.CharacterId; ExchangeService.Verify(x => x.AddItems(characterId, It.IsAny<InventoryItemInstance>(), 5), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Exchange/ExchangeRequestPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ExchangeService; using NosCore.PacketHandlers.Exchange; using NosCore.Packets.ClientPackets.Exchanges; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Exchanges; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Exchange { [TestClass] public class ExchangeRequestPacketHandlerTests { private ExchangeRequestPackettHandler Handler = null!; private ClientSession Session = null!; private ClientSession TargetSession = null!; private Mock<IExchangeService> ExchangeService = null!; private Mock<IBlacklistHub> BlacklistHub = null!; private readonly ILogger<ExchangeRequestPackettHandler> Logger = new Mock<ILogger<ExchangeRequestPackettHandler>>().Object; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); TargetSession = await TestHelpers.Instance.GenerateSessionAsync(); ExchangeService = new Mock<IExchangeService>(); BlacklistHub = new Mock<IBlacklistHub>(); BlacklistHub.Setup(x => x.GetBlacklistedAsync(It.IsAny<long>())) .Returns(Task.FromResult(new List<CharacterRelationStatus>())); Handler = new ExchangeRequestPackettHandler( ExchangeService.Object, Logger, BlacklistHub.Object, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.SessionRegistry, TestHelpers.Instance.GameLanguageLocalizer); } [TestMethod] public async Task RequestingExchangeWhileInShopShouldBeIgnored() { await new Spec("Requesting exchange while in shop should be ignored") .Given(CharacterIsInShop) .WhenAsync(RequestingExchange) .Then(NoExchangeShouldBeOpened) .ExecuteAsync(); } [TestMethod] public async Task RequestingExchangeWhenTargetAlreadyInExchangeShouldFail() { await new Spec("Requesting exchange when target already in exchange should fail") .Given(TargetIsAlreadyInExchange) .WhenAsync(RequestingExchange) .Then(ShouldReceiveTradingWithSomeoneMessage) .ExecuteAsync(); } [TestMethod] public async Task RequestingExchangeWhenTargetBlocksExchangeShouldFail() { await new Spec("Requesting exchange when target blocks exchange should fail") .Given(TargetBlocksExchange) .WhenAsync(RequestingExchange) .Then(ShouldReceiveBlockingTradesMessage) .ExecuteAsync(); } [TestMethod] public async Task RequestingExchangeWithBlacklistedPlayerShouldFail() { await new Spec("Requesting exchange with blacklisted player should fail") .Given(TargetIsBlacklisted) .WhenAsync(RequestingExchange) .Then(ShouldReceiveBlacklistedMessage) .ExecuteAsync(); } [TestMethod] public async Task CancellingExchangeShouldCloseExchange() { await new Spec("Cancelling exchange should close exchange") .Given(ExchangeIsOpen) .WhenAsync(CancellingExchange) .Then(ExchangeShouldBeClosed) .ExecuteAsync(); } private void CharacterIsInShop() { Session.Character.InShop = true; Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; TargetSession.Character.MapInstance = Session.Character.MapInstance; } private void TargetIsAlreadyInExchange() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; TargetSession.Character.MapInstance = Session.Character.MapInstance; ExchangeService.Setup(x => x.CheckExchange(It.IsAny<long>())).Returns(true); } private void TargetBlocksExchange() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; TargetSession.Character.MapInstance = Session.Character.MapInstance; TargetSession.Character.ExchangeBlocked = true; ExchangeService.Setup(x => x.CheckExchange(It.IsAny<long>())).Returns(false); } private void TargetIsBlacklisted() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; TargetSession.Character.MapInstance = Session.Character.MapInstance; ExchangeService.Setup(x => x.CheckExchange(It.IsAny<long>())).Returns(false); var visualId = Session.Character.VisualId; var targetVisualId = TargetSession.Character.VisualId; BlacklistHub.Setup(x => x.GetBlacklistedAsync(visualId)) .Returns(Task.FromResult(new List<CharacterRelationStatus> { new() { CharacterId = targetVisualId } })); } private void ExchangeIsOpen() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; TargetSession.Character.MapInstance = Session.Character.MapInstance; ExchangeService.Setup(x => x.GetTargetId(It.IsAny<long>())) .Returns((long?)TargetSession.Character.CharacterId); ExchangeService.Setup(x => x.CloseExchange(It.IsAny<long>(), It.IsAny<ExchangeResultType>())) .Returns(new ExcClosePacket { Type = ExchangeResultType.Failure }); } private async Task RequestingExchange() { await Handler.ExecuteAsync(new ExchangeRequestPacket { RequestType = RequestExchangeType.Requested, VisualId = TargetSession.Character.VisualId }, Session); } private async Task CancellingExchange() { await Handler.ExecuteAsync(new ExchangeRequestPacket { RequestType = RequestExchangeType.Cancelled, VisualId = 0 }, Session); } private void NoExchangeShouldBeOpened() { ExchangeService.Verify(x => x.OpenExchange(It.IsAny<long>(), It.IsAny<long>()), Times.Never); } private void ShouldReceiveTradingWithSomeoneMessage() { var packet = Session.LastPackets.FirstOrDefault(s => s is Infoi2Packet) as Infoi2Packet; Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.TradingWithSomeoneElse, packet.Message); } private void ShouldReceiveBlockingTradesMessage() { var packet = Session.LastPackets.FirstOrDefault(s => s is Infoi2Packet) as Infoi2Packet; Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.BlockingTrades, packet.Message); } private void ShouldReceiveBlacklistedMessage() { var packet = Session.LastPackets.FirstOrDefault(s => s is SayiPacket) as SayiPacket; Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.AlreadyBlacklisted, packet.Message); } private void ExchangeShouldBeClosed() { ExchangeService.Verify(x => x.CloseExchange(It.IsAny<long>(), ExchangeResultType.Failure), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Friend/BlDelPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BlackListService; using NosCore.PacketHandlers.Friend; using NosCore.Packets.ClientPackets.Relations; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Friend { [TestClass] public class BlDelPacketHandlerTests { private static readonly ILogger<BlDelPacketHandlerTests> Logger = new Mock<ILogger<BlDelPacketHandlerTests>>().Object; private BlacklistService BlackListController = null!; private Mock<IBlacklistHub> BlackListHttpClient = null!; private BlDelPacketHandler BlDelPacketHandler = null!; private Mock<IDao<CharacterDto, long>> CharacterDao = null!; private IDao<CharacterRelationDto, Guid> CharacterRelationDao = null!; private Mock<IPubSubHub> ConnectedAccountHttpClient = null!; private Mock<IChannelHub> ChannelHub = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { CharacterRelationDao = TestHelpers.Instance.CharacterRelationDao; Broadcaster.Reset(); await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); ConnectedAccountHttpClient = TestHelpers.Instance.PubSubHub; ChannelHub = new Mock<IChannelHub>(); ConnectedAccountHttpClient.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber>(){ new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = Session.Character.CharacterId } } }); BlackListHttpClient = TestHelpers.Instance.BlacklistHttpClient; BlDelPacketHandler = new BlDelPacketHandler(BlackListHttpClient.Object, TestHelpers.Instance.GameLanguageLocalizer); CharacterDao = new Mock<IDao<CharacterDto, long>>(); BlackListController = new BlacklistService(ConnectedAccountHttpClient.Object, ChannelHub.Object, CharacterRelationDao, CharacterDao.Object); BlackListHttpClient.Setup(s => s.GetBlacklistedAsync(It.IsAny<long>())) .Returns((long id) => BlackListController.GetBlacklistedListAsync(id)); BlackListHttpClient.Setup(s => s.DeleteAsync(It.IsAny<Guid>())) .Callback((Guid id) => Task.FromResult(BlackListController.UnblacklistAsync(id))); } [TestMethod] public async Task DeletingBlacklistedPlayerWhenDisconnectedShouldSucceed() { await new Spec("Deleting blacklisted player when disconnected should succeed") .Given(TargetPlayerIsDisconnected) .AndAsync(CharacterHasBlockedDisconnectedTarget) .WhenAsync(DeletingFromBlacklist) .Then(BlacklistShouldBeEmpty) .ExecuteAsync(); } [TestMethod] public async Task DeletingBlacklistedPlayerShouldSucceed() { await new Spec("Deleting blacklisted player should succeed") .GivenAsync(TargetPlayerIsOnline) .AndAsync(CharacterHasBlockedTarget) .WhenAsync(DeletingTargetFromBlacklist) .Then(BlacklistShouldBeEmpty) .ExecuteAsync(); } [TestMethod] public async Task DeletingNonBlacklistedPlayerShouldShowError() { await new Spec("Deleting non blacklisted player should show error") .GivenAsync(TargetPlayerIsOnline) .WhenAsync(DeletingTargetFromBlacklist) .Then(ShouldReceiveNotInBlacklistMessage) .ExecuteAsync(); } private ClientSession? TargetSession; private long TargetCharacterId = 2; private void TargetPlayerIsDisconnected() { var list = new List<CharacterDto> { Session.Character.CharacterDto, new() { CharacterId = 2, Name = "test" } }; CharacterDao.Setup(s => s.FirstOrDefaultAsync(It.IsAny<Expression<Func<CharacterDto, bool>>>())) .Returns((Expression<Func<CharacterDto, bool>> exp) => Task.FromResult(list.FirstOrDefault(exp.Compile()))!); } private async Task TargetPlayerIsOnline() { TargetSession = await TestHelpers.Instance.GenerateSessionAsync(); TargetCharacterId = TargetSession.Character.CharacterId; var list = new List<CharacterDto> { Session.Character.CharacterDto, TargetSession.Character.CharacterDto }; CharacterDao.Setup(s => s.FirstOrDefaultAsync(It.IsAny<Expression<Func<CharacterDto, bool>>>())) .Returns((Expression<Func<CharacterDto, bool>> exp) => Task.FromResult(list.FirstOrDefault(exp.Compile()))!); } private async Task CharacterHasBlockedDisconnectedTarget() { var targetGuid = Guid.NewGuid(); await CharacterRelationDao.TryInsertOrUpdateAsync(new[] { new CharacterRelationDto { RelatedCharacterId = 2, CharacterRelationId = targetGuid, CharacterId = Session.Character.CharacterId, RelationType = CharacterRelationType.Blocked } }); } private async Task CharacterHasBlockedTarget() { var targetGuid = Guid.NewGuid(); await CharacterRelationDao.TryInsertOrUpdateAsync(new[] { new CharacterRelationDto { RelatedCharacterId = TargetSession!.Character.CharacterId, CharacterRelationId = targetGuid, CharacterId = Session.Character.CharacterId, RelationType = CharacterRelationType.Blocked } }); } private async Task DeletingFromBlacklist() { await BlDelPacketHandler.ExecuteAsync(new BlDelPacket { CharacterId = 2 }, Session); } private async Task DeletingTargetFromBlacklist() { await BlDelPacketHandler.ExecuteAsync(new BlDelPacket { CharacterId = TargetCharacterId }, Session); } private void BlacklistShouldBeEmpty() { Assert.IsFalse(CharacterRelationDao.LoadAll().Any()); } private void ShouldReceiveNotInBlacklistMessage() { var lastpacket = (InfoPacket?)Session.LastPackets.FirstOrDefault(s => s is InfoPacket); Assert.AreEqual(TestHelpers.Instance.GameLanguageLocalizer[LanguageKey.NOT_IN_BLACKLIST, Session.Account.Language], lastpacket!.Message); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Friend/BlInsPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core; using NosCore.Data.WebApi; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BlackListService; using NosCore.PacketHandlers.Friend; using NosCore.Packets.ClientPackets.Relations; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Collections.Generic; using System.Threading.Tasks; using Character = NosCore.Data.WebApi.Character; namespace NosCore.PacketHandlers.Tests.Friend { [TestClass] public class BlInsPacketHandlerTests { private static readonly ILogger<BlInsPackettHandler> Logger = new Mock<ILogger<BlInsPackettHandler>>().Object; private BlInsPackettHandler BlInsPacketHandler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); TestHelpers.Instance.ChannelHub.Setup(s => s.GetCommunicationChannels()) .ReturnsAsync(new List<ChannelInfo>(){ new ChannelInfo { Type = ServerType.WorldServer, Id = 1 } }); BlInsPacketHandler = new BlInsPackettHandler(TestHelpers.Instance.BlacklistHttpClient.Object, Logger, TestHelpers.Instance.LogLanguageLocalizer); TestHelpers.Instance.PubSubHub.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber>(){ new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = Session.Character.CharacterId } } }); } [TestMethod] public async Task BlacklistingDisconnectedPlayerShouldNotCreateRelation() { await new Spec("Blacklisting disconnected player should not create relation") .WhenAsync(BlacklistingDisconnectedCharacter) .ThenAsync(NoBlockedRelationShouldExist) .ExecuteAsync(); } [TestMethod] public async Task BlacklistingConnectedPlayerShouldCreateRelation() { await new Spec("Blacklisting connected player should create relation") .GivenAsync(TargetIsOnline) .WhenAsync(BlacklistingTargetCharacter) .ThenAsync(BlockedRelationShouldExist) .ExecuteAsync(); } private ClientSession? TargetSession; private async Task TargetIsOnline() { TargetSession = await TestHelpers.Instance.GenerateSessionAsync(); TestHelpers.Instance.PubSubHub.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber>(){ new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = TargetSession.Character.CharacterId } }, new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = Session.Character.CharacterId } } }); var blacklist = new BlacklistService(TestHelpers.Instance.PubSubHub.Object, TestHelpers.Instance.ChannelHub.Object, TestHelpers.Instance.CharacterRelationDao, TestHelpers.Instance.CharacterDao); TestHelpers.Instance.BlacklistHttpClient.Setup(s => s.AddBlacklistAsync(It.IsAny<BlacklistRequest>())) .Returns(blacklist.BlacklistPlayerAsync(Session.Character.CharacterId, TargetSession.Character.VisualId)); } private async Task BlacklistingDisconnectedCharacter() { await BlInsPacketHandler.ExecuteAsync(new BlInsPacket { CharacterId = 2 }, Session); } private async Task BlacklistingTargetCharacter() { await BlInsPacketHandler.ExecuteAsync(new BlInsPacket { CharacterId = TargetSession!.Character.CharacterId }, Session); } private async Task NoBlockedRelationShouldExist() { var characterId = Session.Character.CharacterId; var result = await TestHelpers.Instance.CharacterRelationDao.FirstOrDefaultAsync(s => characterId == s.CharacterId && s.RelationType == CharacterRelationType.Blocked); Assert.IsNull(result); } private async Task BlockedRelationShouldExist() { var characterId = Session.Character.CharacterId; var targetCharacterId = TargetSession!.Character.CharacterId; var result = await TestHelpers.Instance.CharacterRelationDao.FirstOrDefaultAsync(s => characterId == s.CharacterId && targetCharacterId == s.RelatedCharacterId && s.RelationType == CharacterRelationType.Blocked); Assert.IsNotNull(result); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Friend/BlPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.WebApi; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BlackListService; using NosCore.PacketHandlers.Friend; using NosCore.Packets.ClientPackets.Relations; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System; using System.Collections.Generic; using System.Threading.Tasks; using Character = NosCore.Data.WebApi.Character; namespace NosCore.PacketHandlers.Tests.Friend { [TestClass] public class BlPacketHandlerTests { private static readonly ILogger<NosCore.GameObject.Services.BroadcastService.SessionRegistry> Logger = new Mock<ILogger<NosCore.GameObject.Services.BroadcastService.SessionRegistry>>().Object; private BlPacketHandler BlPacketHandler = null!; private IDao<CharacterRelationDto, Guid> CharacterRelationDao = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { CharacterRelationDao = TestHelpers.Instance.CharacterRelationDao; Broadcaster.Reset(); await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); TestHelpers.Instance.ChannelHub.Setup(s => s.GetCommunicationChannels()) .ReturnsAsync(new List<ChannelInfo>(){ new ChannelInfo { Type = ServerType.WorldServer, Id = 1 } }); TestHelpers.Instance.PubSubHub.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber>(){ new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = Session.Character.CharacterId } } }); BlPacketHandler = new BlPacketHandler(new NosCore.GameObject.Services.BroadcastService.SessionRegistry(Logger)); } [TestMethod] public async Task BlacklistingDistantPlayerByNameShouldSucceed() { await new Spec("Blacklisting distant player by name should succeed") .GivenAsync(TargetPlayerIsOnline) .WhenAsync(BlacklistingTargetByName) .ThenAsync(BlockedRelationShouldExist) .ExecuteAsync(); } private ClientSession? TargetSession; private async Task TargetPlayerIsOnline() { TargetSession = await TestHelpers.Instance.GenerateSessionAsync(); TestHelpers.Instance.PubSubHub.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber>(){ new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = TargetSession.Character.CharacterId } }, new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = Session.Character.CharacterId } } }); var blacklist = new BlacklistService(TestHelpers.Instance.PubSubHub.Object, TestHelpers.Instance.ChannelHub.Object, CharacterRelationDao, TestHelpers.Instance.CharacterDao); TestHelpers.Instance.BlacklistHttpClient.Setup(s => s.AddBlacklistAsync(It.IsAny<BlacklistRequest>())) .Returns(blacklist.BlacklistPlayerAsync(Session.Character.CharacterId, TargetSession.Character.VisualId)); } private async Task BlacklistingTargetByName() { await BlPacketHandler.ExecuteAsync(new BlPacket { CharacterName = TargetSession!.Character.Name }, Session); } private async Task BlockedRelationShouldExist() { var characterId = Session.Character.CharacterId; var targetCharacterId = TargetSession!.Character.CharacterId; var result = await CharacterRelationDao.FirstOrDefaultAsync(s => s.CharacterId == characterId && s.RelatedCharacterId == targetCharacterId && s.RelationType == CharacterRelationType.Blocked); Assert.IsNotNull(result); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Friend/FinsPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.WebApi; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.FriendService; using NosCore.PacketHandlers.Friend; using NosCore.Packets.ClientPackets.Relations; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using NosCore.Tests.Shared.AutoFixture; using Microsoft.Extensions.Logging; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Character = NosCore.Data.WebApi.Character; namespace NosCore.PacketHandlers.Tests.Friend { [TestClass] public class FinsPacketHandlerTests { private static readonly ILogger<NosCore.GameObject.Services.BroadcastService.SessionRegistry> Logger = new Mock<ILogger<NosCore.GameObject.Services.BroadcastService.SessionRegistry>>().Object; private NosCoreFixture Fixture = null!; private readonly Mock<IChannelHub> ChannelHttpClient = TestHelpers.Instance.ChannelHttpClient; private IDao<CharacterRelationDto, Guid> CharacterRelationDao = null!; private readonly Mock<IPubSubHub> ConnectedAccountHttpClient = TestHelpers.Instance.PubSubHub; private Mock<IChannelHub> ChannelHub = null!; private FinsPacketHandler FinsPacketHandler = null!; private readonly Mock<IFriendHub> FriendHttpClient = TestHelpers.Instance.FriendHttpClient; private FriendRequestRegistry FriendRequestHolder = null!; private ClientSession Session = null!; private ClientSession TargetSession = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); Fixture = new NosCoreFixture(); Session = await TestHelpers.Instance.GenerateSessionAsync(); TargetSession = await TestHelpers.Instance.GenerateSessionAsync(); CharacterRelationDao = TestHelpers.Instance.CharacterRelationDao; ChannelHub = new Mock<IChannelHub>(); ChannelHub.Setup(s => s.GetCommunicationChannels()) .ReturnsAsync(new List<ChannelInfo> { new ChannelInfo { Type = ServerType.WorldServer, Id = 1 } }); FriendRequestHolder = new FriendRequestRegistry(); ConnectedAccountHttpClient.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber> { new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = TargetSession.Character.CharacterId } }, new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = Session.Character.CharacterId } } }); FinsPacketHandler = new FinsPacketHandler( FriendHttpClient.Object, ChannelHttpClient.Object, ConnectedAccountHttpClient.Object, new NosCore.GameObject.Services.BroadcastService.SessionRegistry(Logger)); } private FriendService CreateFriendService() { return new FriendService( new Mock<ILogger<FriendService>>().Object, CharacterRelationDao, TestHelpers.Instance.CharacterDao, FriendRequestHolder, ConnectedAccountHttpClient.Object, ChannelHub.Object, TestHelpers.Instance.LogLanguageLocalizer); } [TestMethod] public async Task AcceptingFriendRequestShouldCreateMutualRelation() { await new Spec("Accepting friend request should create mutual relation") .Given(AFriendRequestExists) .WhenAsync(AcceptingTheFriendRequest) .Then(TwoFriendRelationsShouldBeCreated) .ExecuteAsync(); } [TestMethod] public async Task AddingFriendWhenTargetDisconnectedShouldFail() { await new Spec("Adding friend when target disconnected should fail") .WhenAsync(AttemptingToAddFriend) .Then(NoRelationShouldBeCreated) .ExecuteAsync(); } [TestMethod] public async Task AcceptingUnrequestedFriendShouldFail() { await new Spec("Accepting unrequested friend should fail") .WhenAsync(AttemptingToAcceptNonExistentRequest) .Then(NoRelationShouldBeCreated) .ExecuteAsync(); } private void AFriendRequestExists() { FriendRequestHolder.RegisterRequest(Guid.NewGuid(), TargetSession.Character.CharacterId, Session.Character.CharacterId); } private async Task AcceptingTheFriendRequest() { var finsPacket = new FinsPacket { CharacterId = TargetSession.Character.CharacterId, Type = FinsPacketType.Accepted }; var friend = CreateFriendService(); FriendHttpClient.Setup(s => s.AddFriendAsync(It.IsAny<FriendShipRequest>())) .Returns(friend.AddFriendAsync(Session.Character.CharacterId, finsPacket.CharacterId, finsPacket.Type)); await FinsPacketHandler.ExecuteAsync(finsPacket, Session); } private void TwoFriendRelationsShouldBeCreated() { Assert.AreEqual(2, CharacterRelationDao.LoadAll().Count()); } private async Task AttemptingToAddFriend() { var finsPacket = new FinsPacket { CharacterId = TargetSession.Character.CharacterId, Type = FinsPacketType.Accepted }; var friend = CreateFriendService(); FriendHttpClient.Setup(s => s.AddFriendAsync(It.IsAny<FriendShipRequest>())) .Returns(friend.AddFriendAsync(Session.Character.CharacterId, finsPacket.CharacterId, finsPacket.Type)); await FinsPacketHandler.ExecuteAsync(finsPacket, Session); } private void NoRelationShouldBeCreated() { Assert.IsFalse(CharacterRelationDao.LoadAll().Any()); } private async Task AttemptingToAcceptNonExistentRequest() { var finsPacket = new FinsPacket { CharacterId = TargetSession.Character.CharacterId, Type = FinsPacketType.Accepted }; var friend = CreateFriendService(); FriendHttpClient.Setup(s => s.AddFriendAsync(It.IsAny<FriendShipRequest>())) .Returns(friend.AddFriendAsync(Session.Character.CharacterId, finsPacket.CharacterId, finsPacket.Type)); await FinsPacketHandler.ExecuteAsync(finsPacket, Session); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Friend/FlPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core; using NosCore.Dao.Interfaces; using NosCore.Data.CommandPackets; using NosCore.Data.Dto; using NosCore.Data.WebApi; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.FriendService; using NosCore.PacketHandlers.Friend; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; using System; using System.Collections.Generic; using System.Threading.Tasks; using Character = NosCore.Data.WebApi.Character; namespace NosCore.PacketHandlers.Tests.Friend { [TestClass] public class FlPacketHandlerTests { private IDao<CharacterRelationDto, Guid> CharacterRelationDao = null!; private FlCommandPacketHandler FlPacketHandler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { CharacterRelationDao = TestHelpers.Instance.CharacterRelationDao; await TestHelpers.ResetAsync(); Broadcaster.Reset(); TestHelpers.Instance.ChannelHub.Setup(s => s.GetCommunicationChannels()) .ReturnsAsync(new List<ChannelInfo>(){ new ChannelInfo { Type = ServerType.WorldServer, Id = 1 } }); Session = await TestHelpers.Instance.GenerateSessionAsync(); FlPacketHandler = new FlCommandPacketHandler(new NosCore.GameObject.Services.BroadcastService.SessionRegistry(NullLogger<NosCore.GameObject.Services.BroadcastService.SessionRegistry>.Instance)); } [TestMethod] public async Task AddingDistantFriendShouldCreateRelation() { await new Spec("Adding distant friend should create relation") .GivenAsync(TargetPlayerIsOnlineAndFriendRequestExists) .WhenAsync(AddingFriendByName) .ThenAsync(FriendRelationShouldExist) .ExecuteAsync(); } private ClientSession? TargetSession; private async Task TargetPlayerIsOnlineAndFriendRequestExists() { TargetSession = await TestHelpers.Instance.GenerateSessionAsync(); var friendRequestHolder = new FriendRequestRegistry(); friendRequestHolder.RegisterRequest(Guid.NewGuid(), TargetSession.Character.CharacterId, Session.Character.CharacterId); TestHelpers.Instance.PubSubHub.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber>(){ new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = TargetSession.Character.CharacterId } }, new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = Session.Character.CharacterId } } }); var friend = new FriendService(NullLogger<FriendService>.Instance, CharacterRelationDao, TestHelpers.Instance.CharacterDao, friendRequestHolder, TestHelpers.Instance.PubSubHub.Object, TestHelpers.Instance.ChannelHub.Object, TestHelpers.Instance.LogLanguageLocalizer); TestHelpers.Instance.FriendHttpClient.Setup(s => s.AddFriendAsync(It.IsAny<FriendShipRequest>())) .Returns(friend.AddFriendAsync(Session.Character.CharacterId, TargetSession.Character.VisualId, FinsPacketType.Accepted)); } private async Task AddingFriendByName() { await FlPacketHandler.ExecuteAsync(new FlCommandPacket { CharacterName = TargetSession!.Character.Name }, Session); } private async Task FriendRelationShouldExist() { var characterId = Session.Character.CharacterId; var targetCharacterId = TargetSession!.Character.CharacterId; var result = await CharacterRelationDao.FirstOrDefaultAsync(s => s.CharacterId == characterId && s.RelatedCharacterId == targetCharacterId && s.RelationType == CharacterRelationType.Friend); Assert.IsNotNull(result); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Friend/fDelPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.FriendService; using NosCore.PacketHandlers.Friend; using NosCore.Packets.ClientPackets.Relations; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; using Character = NosCore.Data.WebApi.Character; namespace NosCore.PacketHandlers.Tests.Friend { [TestClass] public class FDelPacketHandlerTests { private Mock<IChannelHub> ChannelHttpClient = null!; private Mock<IDao<CharacterDto, long>> CharacterDao = null!; private IDao<CharacterRelationDto, Guid> CharacterRelationDao = null!; private Mock<IPubSubHub> ConnectedAccountHttpClient = null!; private Mock<IChannelHub> ChannelHub = null!; private FdelPacketHandler FDelPacketHandler = null!; private FriendService FriendController = null!; private Mock<IFriendHub> FriendHttpClient = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { CharacterRelationDao = TestHelpers.Instance.CharacterRelationDao; Broadcaster.Reset(); await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); ChannelHttpClient = TestHelpers.Instance.ChannelHttpClient; ConnectedAccountHttpClient = TestHelpers.Instance.PubSubHub; ChannelHub = new Mock<IChannelHub>(); ConnectedAccountHttpClient.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber>(){ new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = Session.Character.CharacterId } } }); FriendHttpClient = TestHelpers.Instance.FriendHttpClient; FDelPacketHandler = new FdelPacketHandler(FriendHttpClient.Object, ChannelHttpClient.Object, TestHelpers.Instance.PubSubHub.Object, TestHelpers.Instance.GameLanguageLocalizer, new NosCore.GameObject.Services.BroadcastService.SessionRegistry(NullLogger<NosCore.GameObject.Services.BroadcastService.SessionRegistry>.Instance)); CharacterDao = new Mock<IDao<CharacterDto, long>>(); FriendController = new FriendService(NullLogger<FriendService>.Instance, CharacterRelationDao, CharacterDao.Object, new FriendRequestRegistry(), ConnectedAccountHttpClient.Object, ChannelHub.Object, TestHelpers.Instance.LogLanguageLocalizer); FriendHttpClient.Setup(s => s.GetFriendsAsync(It.IsAny<long>())) .Returns((long id) => FriendController.GetFriendsAsync(id)); FriendHttpClient.Setup(s => s.DeleteAsync(It.IsAny<Guid>())) .Callback((Guid id) => Task.FromResult(FriendController.DeleteAsync(id))); } [TestMethod] public async Task DeletingFriendWhenDisconnectedShouldSucceed() { await new Spec("Deleting friend when disconnected should succeed") .GivenAsync(TargetIsDisconnectedWithFriendRelation) .WhenAsync(DeletingFriend) .Then(NoRelationsShouldExist) .ExecuteAsync(); } [TestMethod] public async Task DeletingFriendShouldSucceed() { await new Spec("Deleting friend should succeed") .GivenAsync(TargetIsOnlineWithFriendRelation) .WhenAsync(DeletingTargetFriend) .Then(NoRelationsShouldExist) .ExecuteAsync(); } [TestMethod] public async Task DeletingNonFriendShouldShowError() { await new Spec("Deleting non friend should show error") .GivenAsync(TargetIsOnline) .WhenAsync(DeletingTargetFriend) .Then(ShouldReceiveNotInFriendlistMessage) .ExecuteAsync(); } private ClientSession? TargetSession; private long TargetCharacterId = 2; private async Task TargetIsDisconnectedWithFriendRelation() { var guid = Guid.NewGuid(); var targetGuid = Guid.NewGuid(); var list = new List<CharacterDto> { Session.Character.CharacterDto, new() { CharacterId = 2, Name = "test" } }; CharacterDao.Setup(s => s.FirstOrDefaultAsync(It.IsAny<Expression<Func<CharacterDto, bool>>>())) .Returns((Expression<Func<CharacterDto, bool>> exp) => Task.FromResult(list.FirstOrDefault(exp.Compile()))!); await CharacterRelationDao.TryInsertOrUpdateAsync(new[] { new CharacterRelationDto { CharacterId = 2, CharacterRelationId = guid, RelatedCharacterId = Session.Character.CharacterId, RelationType = CharacterRelationType.Friend }, new CharacterRelationDto { RelatedCharacterId = 2, CharacterRelationId = targetGuid, CharacterId = Session.Character.CharacterId, RelationType = CharacterRelationType.Friend } }); } private async Task TargetIsOnlineWithFriendRelation() { TargetSession = await TestHelpers.Instance.GenerateSessionAsync(); TargetCharacterId = TargetSession.Character.CharacterId; var guid = Guid.NewGuid(); var targetGuid = Guid.NewGuid(); var list = new List<CharacterDto> { Session.Character.CharacterDto, TargetSession.Character.CharacterDto }; CharacterDao.Setup(s => s.FirstOrDefaultAsync(It.IsAny<Expression<Func<CharacterDto, bool>>>()))! .ReturnsAsync((Expression<Func<CharacterDto, bool>> exp) => list.FirstOrDefault(exp.Compile())); await CharacterRelationDao.TryInsertOrUpdateAsync(new[] { new CharacterRelationDto { CharacterId = TargetSession.Character.CharacterId, CharacterRelationId = guid, RelatedCharacterId = Session.Character.CharacterId, RelationType = CharacterRelationType.Friend }, new CharacterRelationDto { RelatedCharacterId = TargetSession.Character.CharacterId, CharacterRelationId = targetGuid, CharacterId = Session.Character.CharacterId, RelationType = CharacterRelationType.Friend } }); } private async Task TargetIsOnline() { TargetSession = await TestHelpers.Instance.GenerateSessionAsync(); TargetCharacterId = TargetSession.Character.CharacterId; var list = new List<CharacterDto> { Session.Character.CharacterDto, TargetSession.Character.CharacterDto }; CharacterDao.Setup(s => s.FirstOrDefaultAsync(It.IsAny<Expression<Func<CharacterDto, bool>>>())) .Returns((Expression<Func<CharacterDto, bool>> exp) => Task.FromResult(list.FirstOrDefault(exp.Compile()))!); } private async Task DeletingFriend() { await FDelPacketHandler.ExecuteAsync(new FdelPacket { CharacterId = 2 }, Session); } private async Task DeletingTargetFriend() { await FDelPacketHandler.ExecuteAsync(new FdelPacket { CharacterId = TargetCharacterId }, Session); } private void NoRelationsShouldExist() { Assert.IsFalse(CharacterRelationDao.LoadAll().Any()); } private void ShouldReceiveNotInFriendlistMessage() { var lastpacket = (InfoPacket?)Session.LastPackets.FirstOrDefault(s => s is InfoPacket); Assert.AreEqual(TestHelpers.Instance.GameLanguageLocalizer[LanguageKey.NOT_IN_FRIENDLIST, Session.Account.Language], lastpacket?.Message); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Game/GameStartPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.WebApi; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.InterChannelCommunication.Hubs.MailHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MapChangeService; using NosCore.GameObject.Services.QuestService; using NosCore.GameObject.Services.SkillService; using NosCore.PacketHandlers.Game; using NosCore.Packets.ClientPackets.CharacterSelectionScreen; using NosCore.Packets.Interfaces; using NosCore.Tests.Shared; using SpecLight; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Game { [TestClass] public class GameStartPacketHandlerTests { private GameStartPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IMapChangeService> MapChangeService = null!; private Mock<ISkillService> SkillService = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); var friendHub = new Mock<IFriendHub>(); var channelHub = new Mock<IChannelHub>(); var pubSubHub = new Mock<IPubSubHub>(); var blacklistHub = new Mock<IBlacklistHub>(); var mailHub = new Mock<IMailHub>(); var questService = new Mock<IQuestService>(); MapChangeService = new Mock<IMapChangeService>(); SkillService = new Mock<ISkillService>(); var serializer = new Mock<ISerializer>(); friendHub.Setup(s => s.GetFriendsAsync(It.IsAny<long>())) .ReturnsAsync(new List<CharacterRelationStatus>()); blacklistHub.Setup(s => s.GetBlacklistedAsync(It.IsAny<long>())) .ReturnsAsync(new List<CharacterRelationStatus>()); mailHub.Setup(s => s.GetMails(It.IsAny<long>(), It.IsAny<long>(), It.IsAny<bool>())) .ReturnsAsync(new List<MailData>()); Handler = new GameStartPacketHandler( TestHelpers.Instance.WorldConfiguration, friendHub.Object, channelHub.Object, pubSubHub.Object, blacklistHub.Object, serializer.Object, mailHub.Object, questService.Object, MapChangeService.Object, SkillService.Object); } [TestMethod] public async Task GameStartWhenAlreadyStartedShouldDoNothing() { await new Spec("Game start when already started should do nothing") .Given(GameAlreadyStarted) .WhenAsync(ExecutingGameStart) .Then(MapChangeShouldNotBeCalled) .ExecuteAsync(); } [TestMethod] public async Task GameStartWithoutSelectedCharacterShouldDoNothing() { await new Spec("Game start without selected character should do nothing") .Given(NoCharacterSelected) .WhenAsync(ExecutingGameStart) .Then(GameStartedShouldBeFalse) .ExecuteAsync(); } [TestMethod] public async Task GameStartWithValidCharacterShouldSetGameStartedFlag() { await new Spec("Game start with valid character should set game started flag") .Given(CharacterIsReadyToStart) .WhenAsync(ExecutingGameStart) .Then(GameStartedShouldBeTrue) .ExecuteAsync(); } [TestMethod] public async Task GameStartWithPositiveHpShouldCallMapChange() { await new Spec("Game start with positive HP should call map change") .Given(CharacterIsReadyToStart) .And(CharacterHasPositiveHp) .WhenAsync(ExecutingGameStart) .Then(MapChangeShouldBeCalled) .ExecuteAsync(); } [TestMethod] public async Task GameStartShouldLoadSkills() { await new Spec("Game start should load skills") .Given(CharacterIsReadyToStart) .WhenAsync(ExecutingGameStart) .Then(SkillServiceShouldBeCalled) .ExecuteAsync(); } [TestMethod] public async Task GameStartWithZeroHpShouldNotCallMapChange() { await new Spec("Game start with zero HP should not call map change") .Given(CharacterIsReadyToStart) .And(CharacterHasZeroHp) .WhenAsync(ExecutingGameStart) .Then(MapChangeShouldNotBeCalled) .ExecuteAsync(); } private void GameAlreadyStarted() { Session.GameStarted = true; } private void NoCharacterSelected() { Session.GameStarted = false; Session.HasSelectedCharacter = false; } private void CharacterIsReadyToStart() { Session.GameStarted = false; Session.Character.Quests = new ConcurrentDictionary<Guid, CharacterQuest>(); } private void CharacterHasPositiveHp() { Session.Character.Hp = 100; } private void CharacterHasZeroHp() { Session.Character.Hp = 0; } private async Task ExecutingGameStart() { await Handler.ExecuteAsync(new GameStartPacket(), Session); } private void GameStartedShouldBeFalse() { Assert.IsFalse(Session.GameStarted); } private void GameStartedShouldBeTrue() { Assert.IsTrue(Session.GameStarted); } private void MapChangeShouldNotBeCalled() { MapChangeService.Verify(x => x.ChangeMapAsync(It.IsAny<ClientSession>()), Times.Never); } private void MapChangeShouldBeCalled() { MapChangeService.Verify(x => x.ChangeMapAsync(It.IsAny<ClientSession>()), Times.Once); } private void SkillServiceShouldBeCalled() { SkillService.Verify(x => x.LoadSkill(It.IsAny<ICharacterEntity>()), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Game/GuriPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Messaging.Events; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Game; using NosCore.Packets.ClientPackets.UI; using NosCore.Packets.Enumerations; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; using Wolverine; namespace NosCore.PacketHandlers.Tests.Game { [TestClass] public class GuriPacketHandlerTests { private GuriPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IMessageBus> MessageBus = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); MessageBus = new Mock<IMessageBus>(); Handler = new GuriPacketHandler(MessageBus.Object); } [TestMethod] public void HandlerCanBeConstructed() { new Spec("Handler can be constructed") .Then(HandlerShouldNotBeNull) .Execute(); } [TestMethod] public async Task GuriPacketShouldPublishEvent() { await new Spec("Guri packet should publish GuriPacketReceivedEvent") .Given(CharacterIsOnMap) .WhenAsync(ExecutingGuriPacket) .Then(MessageBusShouldBeCalled) .ExecuteAsync(); } [TestMethod] public async Task GuriPacketWithTypeShouldPassCorrectData() { await new Spec("Guri packet with type should publish event carrying that type") .Given(CharacterIsOnMap) .WhenAsync(ExecutingGuriPacketWithType) .Then(MessageBusShouldBeCalledWithCorrectType) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(0)!; } private async Task ExecutingGuriPacket() { await Handler.ExecuteAsync(new GuriPacket(), Session); } private async Task ExecutingGuriPacketWithType() { await Handler.ExecuteAsync(new GuriPacket { Type = GuriPacketType.Title }, Session); } private void HandlerShouldNotBeNull() { Assert.IsNotNull(Handler); } private void MessageBusShouldBeCalled() { MessageBus.Verify(x => x.PublishAsync( It.IsAny<GuriPacketReceivedEvent>(), It.IsAny<DeliveryOptions?>()), Times.Once); } private void MessageBusShouldBeCalledWithCorrectType() { MessageBus.Verify(x => x.PublishAsync( It.Is<GuriPacketReceivedEvent>(e => e.Packet.Type == GuriPacketType.Title), It.IsAny<DeliveryOptions?>()), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Game/NcifPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Dto; using NosCore.Data.StaticEntities; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.PacketHandlers.Game; using NosCore.Packets.ClientPackets.Battle; using NosCore.Packets.ServerPackets.Entities; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Game { [TestClass] public class NcifPacketHandlerTests { private NcifPacketHandler Handler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); var logger = new Mock<ILogger<NcifPacketHandler>>().Object; Handler = new NcifPacketHandler( logger, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.SessionRegistry); } [TestMethod] public async Task NcifForPlayerShouldReturnStatInfo() { await new Spec("Ncif for player should return stat info") .Given(CharacterIsOnMap) .WhenAsync(RequestingPlayerStatInfo) .Then(StInfoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task NcifForUnknownTypeShouldNotSendPacket() { await new Spec("Ncif for unknown type should not send packet") .Given(CharacterIsOnMap) .WhenAsync(RequestingUnknownTypeStatInfo) .Then(NoStInfoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task NcifForNonExistentEntityShouldNotSendPacket() { await new Spec("Ncif for non existent entity should not send packet") .Given(CharacterIsOnMap) .WhenAsync(RequestingNonExistentEntityStatInfo) .Then(NoStInfoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task NcifForMonsterShouldReturnStatInfoWithMonsterIdAndPercentages() { await new Spec("Ncif for monster returns its level + HP/MP percentages") .Given(CharacterIsOnMap) .And(MonsterIsOnMap) .WhenAsync(RequestingMonsterStatInfo) .Then(StInfoPacketShouldBeSent) .And(LastStPacketShouldHaveType_, VisualType.Monster) .And(LastStPacketShouldHaveHpPercentage_, 100) .ExecuteAsync(); } [TestMethod] public async Task NcifForNpcShouldReturnStatInfo() { await new Spec("Ncif for NPC returns its level + HP/MP percentages") .Given(CharacterIsOnMap) .And(NpcIsOnMap) .WhenAsync(RequestingNpcStatInfo) .Then(StInfoPacketShouldBeSent) .And(LastStPacketShouldHaveType_, VisualType.Npc) .ExecuteAsync(); } [TestMethod] public async Task NcifForPlayerWithZeroMaxHpReturnsZeroPercentageInsteadOfCrashing() { // Regression: GenerateStatInfo used to do `Hp / (float)MaxHp * 100` and produce // ±Infinity (cast to int.MinValue) when MaxHp was 0. Should clamp to 0 instead. await new Spec("Player stat info with MaxHp=0 returns 0 hp percentage instead of crashing") .Given(CharacterIsOnMap) .And(CharacterMaxHpAndMaxMpAreZero) .WhenAsync(RequestingPlayerStatInfo) .Then(StInfoPacketShouldBeSent) .And(LastStPacketShouldHaveHpPercentage_, 0) .And(LastStPacketShouldHaveMpPercentage_, 0) .ExecuteAsync(); } [TestMethod] public async Task NcifSelfTargetingResolvesViaSessionRegistry() { // Self-inspect: a player right-clicks their own portrait. The requesting // player must be findable via the same SessionRegistry path other players use. await new Spec("Self-targeted ncif resolves the requesting player and replies with stat info") .Given(CharacterIsOnMap) .WhenAsync(RequestingOwnStatInfo) .Then(StInfoPacketShouldBeSent) .And(LastStPacketShouldHaveType_, VisualType.Player) .ExecuteAsync(); } [TestMethod] public async Task NcifForObjectVisualTypeIsRejectedSilently() { // Dropped items use VisualType.Object — they are not statful entities, // so the handler should fall through to the default UNKNOWN branch // and emit no StPacket. Documents the current contract. await new Spec("Object type (dropped item) is rejected — items are not statful") .Given(CharacterIsOnMap) .WhenAsync(RequestingObjectStatInfo) .Then(NoStInfoPacketShouldBeSent) .ExecuteAsync(); } private async Task RequestingOwnStatInfo() { Session.LastPackets.Clear(); await Handler.ExecuteAsync(new NcifPacket { Type = VisualType.Player, TargetId = Session.Character.VisualId }, Session); } private async Task RequestingObjectStatInfo() { Session.LastPackets.Clear(); await Handler.ExecuteAsync(new NcifPacket { Type = VisualType.Object, TargetId = 1 }, Session); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(0)!; TestHelpers.Instance.SessionRegistry.Register(new SessionInfo { ChannelId = Session.Channel!.Id, SessionId = Session.SessionId, Sender = Session, AccountName = Session.Account.Name, Disconnect = () => Task.CompletedTask, CharacterId = Session.Character.CharacterId, MapInstanceId = Session.Character.MapInstance.MapInstanceId }); } private async Task RequestingPlayerStatInfo() { Session.LastPackets.Clear(); await Handler.ExecuteAsync(new NcifPacket { Type = VisualType.Player, TargetId = Session.Character.VisualId }, Session); } private async Task RequestingUnknownTypeStatInfo() { Session.LastPackets.Clear(); await Handler.ExecuteAsync(new NcifPacket { Type = (VisualType)99, TargetId = 1 }, Session); } private async Task RequestingNonExistentEntityStatInfo() { Session.LastPackets.Clear(); await Handler.ExecuteAsync(new NcifPacket { Type = VisualType.Player, TargetId = 99999 }, Session); } private void StInfoPacketShouldBeSent() { Assert.IsTrue(Session.LastPackets.Any(p => p is StPacket)); } private void NoStInfoPacketShouldBeSent() { Assert.IsFalse(Session.LastPackets.Any(p => p is StPacket)); } private StPacket LastStPacket() => Session.LastPackets.OfType<StPacket>().Last(); private void LastStPacketShouldHaveType_(VisualType expected) => Assert.AreEqual(expected, LastStPacket().Type); private void LastStPacketShouldHaveHpPercentage_(int expected) => Assert.AreEqual(expected, LastStPacket().HpPercentage); private void LastStPacketShouldHaveMpPercentage_(int expected) => Assert.AreEqual(expected, LastStPacket().MpPercentage); private void MonsterIsOnMap() { Session.Character.MapInstance.LoadMonsters( new List<MapMonsterDto> { new() { MapMonsterId = 200, MapId = 0, MapX = 1, MapY = 1, VNum = 1 } }, new List<NpcMonsterDto> { new() { NpcMonsterVNum = 1, MaxHp = 100, MaxMp = 50, Level = 5 } }); } private void NpcIsOnMap() { Session.Character.MapInstance.LoadNpcs( new List<MapNpcDto> { new() { MapNpcId = 300, MapId = 0, MapX = 2, MapY = 2, VNum = 1 } }, new List<NpcMonsterDto> { new() { NpcMonsterVNum = 1, MaxHp = 100, MaxMp = 50, Level = 3 } }); } private void CharacterMaxHpAndMaxMpAreZero() { Session.Character.MaxHp = 0; Session.Character.MaxMp = 0; } private async Task RequestingMonsterStatInfo() { Session.LastPackets.Clear(); await Handler.ExecuteAsync(new NcifPacket { Type = VisualType.Monster, TargetId = 200 }, Session); } private async Task RequestingNpcStatInfo() { Session.LastPackets.Clear(); await Handler.ExecuteAsync(new NcifPacket { Type = VisualType.Npc, TargetId = 300 }, Session); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Game/PulsePacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Game; using NosCore.Packets.ClientPackets.Movement; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Game { [TestClass] public class PulsePacketHandlerTests { private PulsePacketHandler PulsePacketHandler = null!; private ClientSession Session = null!; private PulsePacket LastPulsePacket = null!; [TestInitialize] public async Task SetupAsync() { PulsePacketHandler = new PulsePacketHandler(); Broadcaster.Reset(); await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); } [TestMethod] public async Task PulsePacketShouldUpdateLastPulse() { await new Spec("Pulse packet should update last pulse") .WhenAsync(SendingMultiplePulsePackets) .Then(LastPulseShouldBeUpdated) .ExecuteAsync(); } private async Task SendingMultiplePulsePackets() { var pulsePacket = new PulsePacket { Tick = 0 }; for (var i = 60; i < 600; i += 60) { pulsePacket = new PulsePacket { Tick = i }; await PulsePacketHandler.ExecuteAsync(pulsePacket, Session); } LastPulsePacket = pulsePacket; } private void LastPulseShouldBeUpdated() { Assert.IsTrue(Session.LastPulse == LastPulsePacket.Tick); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Game/QsetPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Game; using NosCore.Packets.ClientPackets.Quicklist; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Quicklist; using NosCore.Tests.Shared; using SpecLight; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Game { [TestClass] public class QsetPacketHandlerTests { private QSetPacketHandler QsetPacketHandler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); QsetPacketHandler = new QSetPacketHandler(); } [TestMethod] public async Task AddingToQuicklistShouldSucceed() { await new Spec("Adding to quicklist should succeed") .WhenAsync(AddingToQuicklist) .Then(QuicklistEntryShouldBeCreated) .And(AddPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task DeletingFromQuicklistShouldSucceed() { await new Spec("Deleting from quicklist should succeed") .WhenAsync(DeletingFromQuicklist) .Then(QuicklistShouldBeEmpty) .And(ResetPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task MovingQuicklistEntryShouldSucceed() { await new Spec("Moving quicklist entry should succeed") .GivenAsync(TwoQuicklistEntriesExist) .WhenAsync(MovingQuicklistEntry) .Then(BothQuicklistEntriesShouldExist) .ExecuteAsync(); } [TestMethod] public async Task MovingToEmptySlotShouldSucceed() { await new Spec("Moving to empty slot should succeed") .GivenAsync(OneQuicklistEntryExists) .WhenAsync(MovingQuicklistEntry) .Then(OneQuicklistEntryShouldExist) .ExecuteAsync(); } private async Task AddingToQuicklist() { await QsetPacketHandler.ExecuteAsync(new QsetPacket { Type = QSetType.Set, OriginQuickList = 1, OriginQuickListSlot = 2, FirstData = 3, SecondData = 4 }, Session); } private async Task DeletingFromQuicklist() { await QsetPacketHandler.ExecuteAsync(new QsetPacket { Type = QSetType.Remove, OriginQuickList = 1, OriginQuickListSlot = 2, FirstData = 3, SecondData = 4 }, Session); } private async Task TwoQuicklistEntriesExist() { await QsetPacketHandler.ExecuteAsync(new QsetPacket { Type = QSetType.Set, OriginQuickList = 1, OriginQuickListSlot = 2, FirstData = 3, SecondData = 4 }, Session); await QsetPacketHandler.ExecuteAsync(new QsetPacket { Type = QSetType.Set, OriginQuickList = 1, OriginQuickListSlot = 3, FirstData = 4, SecondData = 5 }, Session); Session.LastPackets.Clear(); } private async Task OneQuicklistEntryExists() { await QsetPacketHandler.ExecuteAsync(new QsetPacket { Type = QSetType.Set, OriginQuickList = 1, OriginQuickListSlot = 2, FirstData = 3, SecondData = 4 }, Session); Session.LastPackets.Clear(); } private async Task MovingQuicklistEntry() { await QsetPacketHandler.ExecuteAsync(new QsetPacket { Type = QSetType.Move, OriginQuickList = 1, OriginQuickListSlot = 3, FirstData = 1, SecondData = 2 }, Session); } private void QuicklistEntryShouldBeCreated() { Assert.AreEqual(1, Session.Character.QuicklistEntries.Count); } private void AddPacketShouldBeSent() { var lastpacket = (QsetClientPacket?)Session.LastPackets.FirstOrDefault(s => s is QsetClientPacket); Assert.AreEqual(QSetType.Set, lastpacket?.Data?.Type); Assert.AreEqual(1, lastpacket?.OriginQuickList ?? 0); Assert.AreEqual(2, lastpacket?.OriginQuickListSlot ?? 0); Assert.AreEqual(0, lastpacket?.Data?.Data ?? 0); Assert.AreEqual(3, lastpacket?.Data?.OriginQuickList ?? 0); Assert.AreEqual(4, lastpacket?.Data?.OriginQuickListSlot ?? 0); } private void QuicklistShouldBeEmpty() { Assert.AreEqual(0, Session.Character.QuicklistEntries.Count); } private void ResetPacketShouldBeSent() { var lastpacket = (QsetClientPacket?)Session.LastPackets.FirstOrDefault(s => s is QsetClientPacket); Assert.AreEqual(QSetType.Reset, lastpacket?.Data?.Type ?? 0); Assert.AreEqual(1, lastpacket?.OriginQuickList ?? 0); Assert.AreEqual(2, lastpacket?.OriginQuickListSlot ?? 0); Assert.AreEqual(0, lastpacket?.Data?.Data ?? 0); Assert.AreEqual(7, lastpacket?.Data?.OriginQuickList ?? 0); Assert.AreEqual(-1, lastpacket?.Data?.OriginQuickListSlot ?? 0); } private void BothQuicklistEntriesShouldExist() { Assert.AreEqual(2, Session.Character.QuicklistEntries.Count); } private void OneQuicklistEntryShouldExist() { Assert.AreEqual(1, Session.Character.QuicklistEntries.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Game/ReqInfoPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Dto; using NosCore.Data.StaticEntities; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.PacketHandlers.Game; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Entities; using NosCore.Packets.ServerPackets.Inventory; using NosCore.Packets.ServerPackets.Player; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; namespace NosCore.PacketHandlers.Tests.Game { [TestClass] public class ReqInfoPacketHandlerTests { private ReqInfoPacketHandler Handler = null!; private ClientSession Session = null!; private List<NpcMonsterDto> NpcMonsters = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); TestHelpers.Instance.SessionRegistry.Register(new SessionInfo { ChannelId = Session.Channel!.Id, SessionId = Session.SessionId, Sender = Session, AccountName = Session.Account.Name, Disconnect = () => Task.CompletedTask, CharacterId = Session.Character.CharacterId, MapInstanceId = Session.Character.MapInstance.MapInstanceId, }); NpcMonsters = new List<NpcMonsterDto> { new() { NpcMonsterVNum = 303, Level = 35, MaxHp = 1360, MaxMp = 630, Name = new I18NString(), }, }; Handler = new ReqInfoPacketHandler( new Mock<ILogger<ReqInfoPacketHandler>>().Object, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.SessionRegistry, NpcMonsters); } [TestMethod] public async Task PlayerReqInfoRepliesWithTcInfoForTheTargetedCharacter() { await new Spec("req_info 1 <characterId> replies with tc_info for the targeted player") .WhenAsync(RequestingPlayerInfoForSelf) .Then(TcInfoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task PlayerReqInfoForUnknownTargetEmitsNothing() { await new Spec("req_info 1 <unknownId> emits nothing") .WhenAsync(RequestingPlayerInfoForUnknownVisualId) .Then(NoTcInfoShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task NpcInfoReqResolvesTemplateByVNumFromTheGlobalCatalog() { // Official wire: `req_info 5 303` -> `e_info 10 303 35 ...`. Type 5 is a static // catalog lookup on the NpcMonster VNum, NOT a lookup on entities currently on // the map — so the reply comes back even if no such NPC is spawned nearby. await new Spec("req_info 5 <npcMonsterVNum> replies with e_info for the catalog entry") .WhenAsync(RequestingNpcInfoByVNum) .Then(EInfoForVNum303ShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task NpcInfoReqForUnknownVNumEmitsNothing() { await new Spec("req_info 5 <unknownVNum> emits nothing") .WhenAsync(RequestingNpcInfoForUnknownVNum) .Then(NoEInfoNpcMonsterPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task MapEntityInfoReqResolvesNpcByVisualIdOnCurrentMap() { // Official wire: `req_info 6 2 <mapNpcVisualId>` -> `e_info 10 <npcVNum> ...`. // Type 6 is live-map lookup discriminated by VisualType in TargetVNum and the // VisualId in MateVNum. await new Spec("req_info 6 2 <mapNpcVisualId> replies with e_info for the npc on the current map") .Given(NpcIsOnMap) .WhenAsync(RequestingMapInfoForNpc) .Then(EInfoForVNum909ShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task MapEntityInfoReqResolvesMonsterByVisualIdOnCurrentMap() { // Official wire: `req_info 6 3 <mapMonsterVisualId>` -> `e_info 10 <vnum> ...`. await new Spec("req_info 6 3 <mapMonsterVisualId> replies with e_info for the monster on the current map") .Given(MonsterIsOnMap) .WhenAsync(RequestingMapInfoForMonster) .Then(EInfoForVNum25ShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task MateInfoReqWithoutMateVNumIsMateLookupNoOp() { // `req_info 6 <mateTransportId>` single-arg form routes to the mate-lookup // branch. OpenNos looks the mate up in Character.Mates; NosCore has no runtime // Mate collection yet so this no-ops, same as OpenNos's null-mate path. await new Spec("req_info 6 <mateTransportId> no-ops until the mate subsystem lands") .WhenAsync(RequestingMateInfoForUnknownTransportId) .Then(NoEInfoNpcMonsterPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task MapEntityInfoReqForUnsupportedVisualTypeIsQuietNoOp() { // VisualType.Player via req_info 6 is currently unwired — the handler drops at // Debug level instead of spamming WARN. await new Spec("req_info 6 1 <playerId> is a quiet no-op (player branch not wired)") .WhenAsync(RequestingMapInfoForPlayer) .Then(NoEInfoNpcMonsterPacketShouldBeSent) .ExecuteAsync(); } // --- Givens --- private void NpcIsOnMap() { Session.Character.MapInstance.LoadNpcs( new List<MapNpcDto> { new() { MapNpcId = 73680, MapId = Session.Character.MapInstance.Map.MapId, MapX = 34, MapY = 122, VNum = 909, } }, new List<NpcMonsterDto> { new() { NpcMonsterVNum = 909, Level = 71, MaxHp = 21450, MaxMp = 1863, Name = new I18NString(), } }); } private void MonsterIsOnMap() { Session.Character.MapInstance.LoadMonsters( new List<MapMonsterDto> { new() { MapMonsterId = 2848, MapId = Session.Character.MapInstance.Map.MapId, MapX = 3, MapY = 3, VNum = 25, } }, new List<NpcMonsterDto> { new() { NpcMonsterVNum = 25, Level = 2, MaxHp = 175, MaxMp = 15, Name = new I18NString(), } }); } // --- Whens --- private Task RequestingPlayerInfoForSelf() => ExecuteAsync(new ReqInfoPacket { ReqType = ReqInfoType.PlayerInfo, TargetVNum = Session.Character.VisualId, }); private Task RequestingPlayerInfoForUnknownVisualId() => ExecuteAsync(new ReqInfoPacket { ReqType = ReqInfoType.PlayerInfo, TargetVNum = 99999, }); private Task RequestingNpcInfoByVNum() => ExecuteAsync(new ReqInfoPacket { ReqType = ReqInfoType.NpcInfo, TargetVNum = 303, }); private Task RequestingNpcInfoForUnknownVNum() => ExecuteAsync(new ReqInfoPacket { ReqType = ReqInfoType.NpcInfo, TargetVNum = 99999, }); private Task RequestingMapInfoForNpc() => ExecuteAsync(new ReqInfoPacket { ReqType = ReqInfoType.MateInfo, TargetVNum = (long)VisualType.Npc, MateVNum = 73680, }); private Task RequestingMapInfoForMonster() => ExecuteAsync(new ReqInfoPacket { ReqType = ReqInfoType.MateInfo, TargetVNum = (long)VisualType.Monster, MateVNum = 2848, }); private Task RequestingMateInfoForUnknownTransportId() => ExecuteAsync(new ReqInfoPacket { ReqType = ReqInfoType.MateInfo, TargetVNum = 12345, MateVNum = null, }); private Task RequestingMapInfoForPlayer() => ExecuteAsync(new ReqInfoPacket { ReqType = ReqInfoType.MateInfo, TargetVNum = (long)VisualType.Player, MateVNum = (int)Session.Character.VisualId, }); private Task ExecuteAsync(ReqInfoPacket packet) { Session.LastPackets.Clear(); return Handler.ExecuteAsync(packet, Session); } // --- Thens --- private void TcInfoPacketShouldBeSent() => Assert.IsTrue(Session.LastPackets.Any(p => p is TcInfoPacket)); private void NoTcInfoShouldBeSent() => Assert.IsFalse(Session.LastPackets.Any(p => p is TcInfoPacket)); private void EInfoForVNum303ShouldBeSent() => Assert.IsTrue(Session.LastPackets.Any(p => p is EInfoNpcMonsterPacket pkt && pkt.NpcMonsterVNum == 303 && pkt.Level == 35)); private void EInfoForVNum909ShouldBeSent() => Assert.IsTrue(Session.LastPackets.Any(p => p is EInfoNpcMonsterPacket pkt && pkt.NpcMonsterVNum == 909 && pkt.Level == 71)); private void EInfoForVNum25ShouldBeSent() => Assert.IsTrue(Session.LastPackets.Any(p => p is EInfoNpcMonsterPacket pkt && pkt.NpcMonsterVNum == 25 && pkt.Level == 2)); private void NoEInfoNpcMonsterPacketShouldBeSent() => Assert.IsFalse(Session.LastPackets.Any(p => p is EInfoNpcMonsterPacket)); } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Game/TitEqPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Dto; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Game; using NosCore.Packets.ClientPackets.Player; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Game { [TestClass] public class TitEqPacketHandlerTests { private TitEqPacketHandler Handler = null!; private ClientSession Session = null!; private const short TitleId = 1; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Handler = new TitEqPacketHandler(); } [TestMethod] public async Task TitEqWithInvalidTitleShouldDoNothing() { await new Spec("TitEq with invalid title should do nothing") .Given(CharacterIsOnMap) .WhenAsync(ActivatingNonExistentTitle) .Then(NoInfoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task TitEqMode1ShouldToggleVisibility() { await new Spec("TitEq mode 1 should toggle visibility") .Given(CharacterIsOnMap) .And(CharacterHasTitle) .WhenAsync(TogglingTitleVisibility) .Then(TitleVisibilityShouldBeToggled) .And(TitleChangedInfoShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task TitEqMode0ShouldToggleActive() { await new Spec("TitEq mode 0 should toggle active") .Given(CharacterIsOnMap) .And(CharacterHasTitle) .WhenAsync(TogglingTitleActive) .Then(TitleActiveShouldBeToggled) .And(TitleEffectChangedInfoShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task TitEqVisibilityShouldResetOtherTitles() { await new Spec("TitEq visibility should reset other titles") .Given(CharacterIsOnMap) .And(CharacterHasMultipleTitles) .WhenAsync(TogglingTitleVisibility) .Then(OnlySelectedTitleShouldBeVisible) .ExecuteAsync(); } [TestMethod] public async Task TitEqActiveShouldResetOtherTitles() { await new Spec("TitEq active should reset other titles") .Given(CharacterIsOnMap) .And(CharacterHasMultipleTitles) .WhenAsync(TogglingTitleActive) .Then(OnlySelectedTitleShouldBeActive) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(0)!; } private void CharacterHasTitle() { Session.Character.Titles = new List<TitleDto> { new TitleDto { TitleType = TitleId, Visible = false, Active = false } }; } private void CharacterHasMultipleTitles() { Session.Character.Titles = new List<TitleDto> { new TitleDto { TitleType = TitleId, Visible = false, Active = false }, new TitleDto { TitleType = 2, Visible = true, Active = true } }; } private async Task ActivatingNonExistentTitle() { Session.LastPackets.Clear(); await Handler.ExecuteAsync(new TitEqPacket { TitleId = 9999, Mode = 0 }, Session); } private async Task TogglingTitleVisibility() { Session.LastPackets.Clear(); await Handler.ExecuteAsync(new TitEqPacket { TitleId = TitleId, Mode = 1 }, Session); } private async Task TogglingTitleActive() { Session.LastPackets.Clear(); await Handler.ExecuteAsync(new TitEqPacket { TitleId = TitleId, Mode = 0 }, Session); } private void NoInfoPacketShouldBeSent() { Assert.IsFalse(Session.LastPackets.Any(p => p is InfoiPacket)); } private void TitleVisibilityShouldBeToggled() { var title = Session.Character.Titles.First(t => t.TitleType == TitleId); Assert.IsTrue(title.Visible); } private void TitleActiveShouldBeToggled() { var title = Session.Character.Titles.First(t => t.TitleType == TitleId); Assert.IsTrue(title.Active); } private void TitleChangedInfoShouldBeSent() { Assert.IsTrue(Session.LastPackets.Any(p => p is InfoiPacket)); } private void TitleEffectChangedInfoShouldBeSent() { Assert.IsTrue(Session.LastPackets.Any(p => p is InfoiPacket)); } private void OnlySelectedTitleShouldBeVisible() { var selectedTitle = Session.Character.Titles.First(t => t.TitleType == TitleId); var otherTitles = Session.Character.Titles.Where(t => t.TitleType != TitleId); Assert.IsTrue(selectedTitle.Visible); Assert.IsTrue(otherTitles.All(t => !t.Visible)); } private void OnlySelectedTitleShouldBeActive() { var selectedTitle = Session.Character.Titles.First(t => t.TitleType == TitleId); var otherTitles = Session.Character.Titles.Where(t => t.TitleType != TitleId); Assert.IsTrue(selectedTitle.Active); Assert.IsTrue(otherTitles.All(t => !t.Active)); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Group/GroupTalkPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core.Services.IdService; using NosCore.Data.Enumerations.Group; using NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using NosCore.Networking.SessionGroup; using NosCore.PacketHandlers.Group; using NosCore.Packets.ClientPackets.Chat; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Groups; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Group { [TestClass] public class GroupTalkPacketHandlerTests { private static readonly ILogger<PjoinPacketHandler> Logger = new Mock<ILogger<PjoinPacketHandler>>().Object; private readonly Dictionary<int, ClientSession> _sessions = new(); private GroupTalkPacketHandler _groupTalkPacketHandler = null!; private PjoinPacketHandler _pJoinPacketHandler = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); var idServer = new IdService<NosCore.GameObject.Services.GroupService.Group>(1); for (var i = 0; i < 3; i++) { var session = await TestHelpers.Instance.GenerateSessionAsync(); var mockChannel = new Mock<IChannel>(); mockChannel.Setup(s => s.Id).Returns(Guid.NewGuid().ToString()); session.RegisterChannel(mockChannel.Object); _sessions.Add(i, session); var sessionGroupFactoryMock = new Mock<ISessionGroupFactory>(); sessionGroupFactoryMock.Setup(x => x.Create()).Returns(new Mock<ISessionGroup>().Object); session.Character.Group = new NosCore.GameObject.Services.GroupService.Group(GroupType.Group, sessionGroupFactoryMock.Object); session.Character.Group.JoinGroup(session.Character); } _groupTalkPacketHandler = new GroupTalkPacketHandler(); var mock = new Mock<IBlacklistHub>(); _pJoinPacketHandler = new PjoinPacketHandler( Logger, mock.Object, TestHelpers.Instance.Clock, idServer, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.GameLanguageLocalizer, TestHelpers.Instance.SessionRegistry); } [TestMethod] public async Task GroupTalkWhenAloneShouldNotSendMessage() { await new Spec("Group talk when alone should not send message") .WhenAsync(Session0SendsGroupMessage) .Then(NoSpkPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task GroupTalkWhenInGroupShouldSendMessage() { await new Spec("Group talk when in group should send message") .GivenAsync(TwoSessionsAreGroupedAsync) .WhenAsync(Session0SendsGroupMessage) .Then(SpkPacketShouldBeSentToGroup) .ExecuteAsync(); } [TestMethod] public async Task GroupTalkShouldHaveCorrectSpeakType() { await new Spec("Group talk should have correct speak type") .GivenAsync(TwoSessionsAreGroupedAsync) .WhenAsync(Session0SendsGroupMessage) .Then(SpkPacketShouldHaveGroupSpeakType) .ExecuteAsync(); } [TestMethod] public async Task GroupTalkShouldContainCorrectMessage() { await new Spec("Group talk should contain correct message") .GivenAsync(TwoSessionsAreGroupedAsync) .WhenAsync(Session0SendsSpecificMessage) .Then(SpkPacketShouldContainCorrectMessage) .ExecuteAsync(); } [TestMethod] public async Task GroupTalkInFullGroupShouldWork() { await new Spec("Group talk in full group should work") .GivenAsync(ThreeSessionsAreGroupedAsync) .WhenAsync(Session0SendsGroupMessage) .Then(SpkPacketShouldBeSentToGroup) .ExecuteAsync(); } private async Task TwoSessionsAreGroupedAsync() { _sessions[1].Character.GroupRequestCharacterIds .TryAdd(_sessions[0].Character.CharacterId, _sessions[0].Character.CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = _sessions[1].Character.CharacterId }; await _pJoinPacketHandler.ExecuteAsync(pjoinPacket, _sessions[0]); } private async Task ThreeSessionsAreGroupedAsync() { for (var i = 1; i < 3; i++) { _sessions[i].Character.GroupRequestCharacterIds .TryAdd(_sessions[0].Character.CharacterId, _sessions[0].Character.CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = _sessions[i].Character.CharacterId }; await _pJoinPacketHandler.ExecuteAsync(pjoinPacket, _sessions[0]); } } private async Task Session0SendsGroupMessage() { var packet = new GroupTalkPacket { Message = "Hello Group!" }; await _groupTalkPacketHandler.ExecuteAsync(packet, _sessions[0]); } private async Task Session0SendsSpecificMessage() { var packet = new GroupTalkPacket { Message = "Test Message 123" }; await _groupTalkPacketHandler.ExecuteAsync(packet, _sessions[0]); } private void NoSpkPacketShouldBeSent() { var packet = _sessions[0].Character.Group.LastPackets.FirstOrDefault(s => s is SpeakPacket); Assert.IsNull(packet); } private void SpkPacketShouldBeSentToGroup() { var packet = _sessions[0].Character.Group.LastPackets.FirstOrDefault(s => s is SpeakPacket); Assert.IsNotNull(packet); } private void SpkPacketShouldHaveGroupSpeakType() { var packet = (SpeakPacket?)_sessions[0].Character.Group.LastPackets.FirstOrDefault(s => s is SpeakPacket); Assert.IsNotNull(packet); Assert.AreEqual(SpeakType.Group, packet.SpeakType); } private void SpkPacketShouldContainCorrectMessage() { var packet = (SpeakPacket?)_sessions[0].Character.Group.LastPackets.FirstOrDefault(s => s is SpeakPacket); Assert.IsNotNull(packet); Assert.AreEqual("Test Message 123", packet.Message); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Group/PJoinPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core.Services.IdService; using NosCore.Data.Enumerations.Group; using NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using NosCore.Networking.SessionGroup; using NosCore.PacketHandlers.Group; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Groups; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Group { [TestClass] public class PJoinPacketHandlerTests { private static readonly ILogger<PjoinPacketHandler> Logger = new Mock<ILogger<PjoinPacketHandler>>().Object; private readonly Dictionary<int, ClientSession> Sessions = new(); private PjoinPacketHandler PJoinPacketHandler = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); var idServer = new IdService<NosCore.GameObject.Services.GroupService.Group>(1); for (byte i = 0; i < (byte)(GroupType.Group + 1); i++) { var session = await TestHelpers.Instance.GenerateSessionAsync(); var mockChannel = new Mock<IChannel>(); mockChannel.Setup(s => s.Id).Returns(Guid.NewGuid().ToString()); session.RegisterChannel(mockChannel.Object); Sessions.Add(i, session); var sessionGroupFactoryMock = new Mock<ISessionGroupFactory>(); sessionGroupFactoryMock.Setup(x => x.Create()).Returns(new Mock<ISessionGroup>().Object); session.Character.Group = new NosCore.GameObject.Services.GroupService.Group(GroupType.Group, sessionGroupFactoryMock.Object); session.Character.Group.JoinGroup(session.Character); } var mock = new Mock<IBlacklistHub>(); PJoinPacketHandler = new PjoinPacketHandler(Logger, mock.Object, TestHelpers.Instance.Clock, idServer, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.GameLanguageLocalizer, TestHelpers.Instance.SessionRegistry); } [TestMethod] public async Task AcceptGroupJoinRequestShouldSucceed() { await new Spec("Accept group join request should succeed") .Given(Session1HasGroupRequestFromSession0) .WhenAsync(Session0AcceptsSession1RequestAsync) .Then(BothSessionsShouldBeInSameGroup) .ExecuteAsync(); } [TestMethod] public async Task JoinFullGroupShouldFail() { await new Spec("Join full group should fail") .GivenAsync(GroupIsFullAsync) .WhenAsync(Session_RequestsToJoinAsync, 3) .Then(Session_ShouldNotJoinGroup, 3) .ExecuteAsync(); } [TestMethod] public async Task AcceptNotRequestedGroupShouldFail() { await new Spec("Accept not requested group should fail") .WhenAsync(Session0AcceptsSession1RequestAsync) .Then(BothSessionsShouldBeAlone) .ExecuteAsync(); } [TestMethod] public async Task DeclineNotRequestedGroupShouldFail() { await new Spec("Decline not requested group should fail") .WhenAsync(Session0DeclinesSession1RequestAsync) .Then(BothSessionsShouldBeAlone) .ExecuteAsync(); } [TestMethod] public async Task LastRequestNotNullAfterOne() { await new Spec("Last request not null after one") .WhenAsync(Session_InvitesMultipleSessionsAsync, 0) .Then(LastGroupRequestShouldNotBeNull) .ExecuteAsync(); } [TestMethod] public async Task TwoRequestsLess5SecDelayShouldOnlyAddOne() { await new Spec("Two requests less 5 sec delay should only add one") .WhenAsync(Session_InvitesWithShortDelayAsync, 0) .Then(OnlyOneRequestShouldExist) .ExecuteAsync(); } [TestMethod] public async Task TwoRequestsMore5SecDelayShouldAddBoth() { await new Spec("Two requests more 5 sec delay should add both") .WhenAsync(Session_InvitesWithLongDelayAsync, 0) .Then(TwoRequestsShouldExist) .ExecuteAsync(); } private void Session1HasGroupRequestFromSession0() { Sessions[1].Character.GroupRequestCharacterIds .TryAdd(Sessions[0].Character.CharacterId, Sessions[0].Character.CharacterId); } private async Task GroupIsFullAsync() { for (var i = 1; i < 3; i++) { Sessions[i].Character.GroupRequestCharacterIds .TryAdd(Sessions[0].Character.CharacterId, Sessions[0].Character.CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = Sessions[i].Character.CharacterId }; await PJoinPacketHandler.ExecuteAsync(pjoinPacket, Sessions[0]); } } private async Task Session0AcceptsSession1RequestAsync() { var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = Sessions[1].Character.CharacterId }; await PJoinPacketHandler.ExecuteAsync(pjoinPacket, Sessions[0]); } private async Task Session0DeclinesSession1RequestAsync() { var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Declined, CharacterId = Sessions[1].Character.CharacterId }; await PJoinPacketHandler.ExecuteAsync(pjoinPacket, Sessions[0]); } private async Task Session_RequestsToJoinAsync(int value) { Sessions[3].Character.GroupRequestCharacterIds .TryAdd(Sessions[0].Character.CharacterId, Sessions[0].Character.CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = Sessions[3].Character.CharacterId }; await PJoinPacketHandler.ExecuteAsync(pjoinPacket, Sessions[0]); } private async Task Session_InvitesMultipleSessionsAsync(int value) { for (var i = 1; i < 3; i++) { var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Invited, CharacterId = Sessions[i].Character.CharacterId }; await PJoinPacketHandler.ExecuteAsync(pjoinPacket, Sessions[0]); } } private async Task Session_InvitesWithShortDelayAsync(int value) { for (var i = 1; i < 3; i++) { var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Invited, CharacterId = Sessions[i].Character.CharacterId }; TestHelpers.Instance.Clock.AdvanceSeconds(1); await PJoinPacketHandler.ExecuteAsync(pjoinPacket, Sessions[0]); } } private async Task Session_InvitesWithLongDelayAsync(int value) { for (var i = 1; i < 3; i++) { var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Invited, CharacterId = Sessions[i].Character.CharacterId }; if (i == 2) { TestHelpers.Instance.Clock.AdvanceMinutes(6); } await PJoinPacketHandler.ExecuteAsync(pjoinPacket, Sessions[0]); } } private void BothSessionsShouldBeInSameGroup() { Assert.IsTrue((Sessions[0].Character.Group.Count > 1) && (Sessions[1].Character.Group.Count > 1) && (Sessions[0].Character.Group.GroupId == Sessions[1].Character.Group.GroupId)); } private void Session_ShouldNotJoinGroup(int value) { Assert.IsTrue(Sessions[3].Character.Group.Count == 1); } private void BothSessionsShouldBeAlone() { Assert.IsTrue((Sessions[0].Character.Group.Count == 1) && (Sessions[1].Character.Group.Count == 1)); } private void LastGroupRequestShouldNotBeNull() { Assert.IsNotNull(Sessions[0].Character.LastGroupRequest); } private void OnlyOneRequestShouldExist() { Assert.IsTrue(Sessions[0].Character.GroupRequestCharacterIds.Count == 1); } private void TwoRequestsShouldExist() { Assert.IsTrue(Sessions[0].Character.GroupRequestCharacterIds.Count == 2); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Group/PleavePacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core.Services.IdService; using NosCore.Data.Enumerations.Group; using NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.Networking; using NosCore.Networking.SessionGroup; using NosCore.PacketHandlers.Group; using NosCore.Packets.ClientPackets.Groups; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Groups; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Group { [TestClass] public class PleavePacketHandlerTests { private static readonly ILogger<PjoinPacketHandler> Logger = new Mock<ILogger<PjoinPacketHandler>>().Object; private readonly Dictionary<int, ClientSession> Sessions = new(); private PjoinPacketHandler PJoinPacketHandler = null!; private PleavePacketHandler PLeavePacketHandler = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); var idServer = new IdService<NosCore.GameObject.Services.GroupService.Group>(1); for (byte i = 0; i < (byte)(GroupType.Group + 1); i++) { var session = await TestHelpers.Instance.GenerateSessionAsync(); var mockChannel = new Mock<IChannel>(); mockChannel.Setup(s => s.Id).Returns(Guid.NewGuid().ToString()); session.RegisterChannel(mockChannel.Object); Sessions.Add(i, session); var sessionGroupFactoryMock = new Mock<ISessionGroupFactory>(); sessionGroupFactoryMock.Setup(x => x.Create()).Returns(new Mock<ISessionGroup>().Object); session.Character.Group = new NosCore.GameObject.Services.GroupService.Group(GroupType.Group, sessionGroupFactoryMock.Object); session.Character.Group.JoinGroup(session.Character); } var sessionGroupFactoryForHandler = new Mock<ISessionGroupFactory>(); sessionGroupFactoryForHandler.Setup(x => x.Create()).Returns(new Mock<ISessionGroup>().Object); PLeavePacketHandler = new PleavePacketHandler(idServer, TestHelpers.Instance.SessionRegistry, sessionGroupFactoryForHandler.Object); var mock = new Mock<IBlacklistHub>(); PJoinPacketHandler = new PjoinPacketHandler(Logger, mock.Object, TestHelpers.Instance.Clock, idServer, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.GameLanguageLocalizer, TestHelpers.Instance.SessionRegistry); } [TestMethod] public async Task LeaveGroupWhenNotGroupedShouldKeepSolo() { await new Spec("Leave group when not grouped should keep solo") .WhenAsync(Session_LeavesGroupAsync, 0) .Then(Session_ShouldBeAlone, 0) .ExecuteAsync(); } [TestMethod] public async Task LeaveGroupWhenGroupedShouldLeave() { await new Spec("Leave group when grouped should leave") .GivenAsync(SessionsAreInFullGroupAsync) .WhenAsync(Session_LeavesGroupAsync, 1) .Then(Session_ShouldBeAlone, 1) .ExecuteAsync(); } [TestMethod] public async Task LeaderLeavingShouldTransferLeadership() { await new Spec("Leader leaving should transfer leadership") .GivenAsync(SessionsAreInFullGroupAsync) .WhenAsync(Session_LeavesGroupAsync, 0) .Then(Session_ShouldBeLeader, 1) .ExecuteAsync(); } [TestMethod] public async Task NonLeaderLeavingThreePersonGroupShouldKeepLeader() { await new Spec("Non leader leaving three person group should keep leader") .GivenAsync(SessionsAreInFullGroupAsync) .WhenAsync(Session_LeavesGroupAsync, 1) .Then(Session_ShouldBeLeader, 0) .ExecuteAsync(); } [TestMethod] public async Task DeclineGroupJoinShouldKeepBothAlone() { await new Spec("Decline group join should keep both alone") .Given(Session1HasGroupRequestFromSession0) .WhenAsync(Session_DeclinesAndLeavesAsync, 0) .Then(BothSessionsShouldBeAlone) .ExecuteAsync(); } [TestMethod] public async Task LeavingTwoPersonGroupShouldDissolve() { await new Spec("Leaving two person group should dissolve") .GivenAsync(TwoSessionsAreGroupedAsync) .WhenAsync(Session_LeavesGroupAsync, 0) .Then(BothSessionsShouldBeAlone) .ExecuteAsync(); } private async Task SessionsAreInFullGroupAsync() { for (var i = 1; i < 3; i++) { Sessions[i].Character.GroupRequestCharacterIds .TryAdd(Sessions[0].Character.CharacterId, Sessions[0].Character.CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = Sessions[i].Character.CharacterId }; await PJoinPacketHandler.ExecuteAsync(pjoinPacket, Sessions[0]); } } private void Session1HasGroupRequestFromSession0() { Sessions[1].Character.GroupRequestCharacterIds .TryAdd(Sessions[0].Character.CharacterId, Sessions[0].Character.CharacterId); } private async Task TwoSessionsAreGroupedAsync() { Sessions[1].Character.GroupRequestCharacterIds .TryAdd(Sessions[0].Character.CharacterId, Sessions[0].Character.CharacterId); var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Accepted, CharacterId = Sessions[1].Character.CharacterId }; await PJoinPacketHandler.ExecuteAsync(pjoinPacket, Sessions[0]); } private async Task Session_LeavesGroupAsync(int value) { await PLeavePacketHandler.ExecuteAsync(new PleavePacket(), Sessions[value]); } private async Task Session_DeclinesAndLeavesAsync(int value) { var pjoinPacket = new PjoinPacket { RequestType = GroupRequestType.Declined, CharacterId = Sessions[1].Character.CharacterId }; await PJoinPacketHandler.ExecuteAsync(pjoinPacket, Sessions[0]); await PLeavePacketHandler.ExecuteAsync(new PleavePacket(), Sessions[0]); } private void Session_ShouldBeAlone(int value) { Assert.IsTrue(Sessions[value].Character.Group.Count == 1); } private void Session_ShouldBeLeader(int value) { Assert.IsTrue(Sessions[value].Character.Group .IsGroupLeader(Sessions[value].Character.CharacterId)); } private void BothSessionsShouldBeAlone() { Assert.IsTrue((Sessions[0].Character.Group.Count == 1) && (Sessions[1].Character.Group.Count == 1)); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Inventory/BiPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Logging.Abstractions; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.PacketHandlers.Inventory; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Inventory; using NosCore.Tests.Shared; using NosCore.Tests.Shared.BDD; using SpecLight; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Inventory { [TestClass] public class BiPacketHandlerTests : SpecBase { private BiPacketHandler BiPacketHandler = null!; [TestInitialize] public override async Task SetupAsync() { await base.SetupAsync(); BiPacketHandler = new BiPacketHandler(NullLogger<BiPacketHandler>.Instance, TestHelpers.Instance.LogLanguageLocalizer); } [TestMethod] public async Task DeletingItemFromMainSlotShouldClearSlot() { await new Spec("Deleting item from main slot should clear slot") .Given(AnItemWith999QuantityInSlot0) .WhenAsync(ConfirmingDeletionFromMainSlot_, 0) .Then(SlotShouldBeCleared) .ExecuteAsync(); } [TestMethod] public async Task DeletingItemFromEquipmentSlotShouldClearInventory() { await new Spec("Deleting item from equipment slot should clear inventory") .Given(AnEquipmentItemInSlot_, 0) .WhenAsync(ConfirmingDeletionFromEquipmentSlot) .Then(InventoryShouldBeEmpty) .And(SlotShouldBeCleared) .ExecuteAsync(); } private void AnItemWith999QuantityInSlot0() { CharacterHasItem(1012, 999); } private async Task ConfirmingDeletionFromMainSlot_(int value) { await BiPacketHandler.ExecuteAsync(new BiPacket { Option = RequestDeletionType.Confirmed, Slot = (byte)value, PocketType = PocketType.Main }, Session); } private void SlotShouldBeCleared() { var packet = GetLastPacket<IvnPacket>(); Assert.IsNotNull(packet); Assert.IsTrue(packet.IvnSubPackets?.All(iv => iv.Slot == 0 && iv.VNum == 0) ?? false); } private void AnEquipmentItemInSlot_(int value) { CharacterHasItem(1); } private async Task ConfirmingDeletionFromEquipmentSlot() { await BiPacketHandler.ExecuteAsync(new BiPacket { Option = RequestDeletionType.Confirmed, Slot = 0, PocketType = PocketType.Equipment }, Session); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Inventory/MvePacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Enumerations; using NosCore.GameObject.Services.InventoryService; using NosCore.PacketHandlers.Inventory; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Inventory; using NosCore.Tests.Shared.BDD; using SpecLight; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Inventory { [TestClass] public class MvePacketHandlerTests : SpecBase { private MvePacketHandler MvePacketHandler = null!; [TestInitialize] public override async Task SetupAsync() { await base.SetupAsync(); MvePacketHandler = new MvePacketHandler(); } [TestMethod] public async Task MovingEquipmentItemBetweenSlotsShouldUpdateBothSlots() { await new Spec("Moving equipment item between slots should update both slots") .Given(CharacterHasEquipmentItemInSlot0) .WhenAsync(MovingItemFromSlot0ToSlot1) .Then(ItemShouldBeInSlot1) .And(Slot0ShouldBeEmpty) .ExecuteAsync(); } [TestMethod] public async Task MovingItemFromEquipmentToCostumeShouldWork() { await new Spec("Moving item from equipment to costume should work") .Given(CharacterHasFashionItemInEquipment) .WhenAsync(MovingItemFromEquipmentToCostume) .Then(ItemShouldBeInCostumePocket) .ExecuteAsync(); } [TestMethod] public async Task MovingItemShouldSendPocketChangePackets() { await new Spec("Moving item should send pocket change packets") .Given(CharacterHasEquipmentItemInSlot0) .WhenAsync(MovingItemFromSlot0ToSlot1) .Then(ShouldReceivePocketChangePackets) .ExecuteAsync(); } private void CharacterHasEquipmentItemInSlot0() { var item = ItemProvider.Create(1, 1); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(item, Session.Character.CharacterId), NoscorePocketType.Equipment, 0); } private void CharacterHasFashionItemInEquipment() { var item = ItemProvider.Create(924, 1); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(item, Session.Character.CharacterId), NoscorePocketType.Equipment, 0); } private async Task MovingItemFromSlot0ToSlot1() { await MvePacketHandler.ExecuteAsync(new MvePacket { Slot = 0, InventoryType = PocketType.Equipment, DestinationSlot = 1, DestinationInventoryType = PocketType.Equipment }, Session); } private async Task MovingItemFromEquipmentToCostume() { await MvePacketHandler.ExecuteAsync(new MvePacket { Slot = 0, InventoryType = PocketType.Equipment, DestinationSlot = 0, DestinationInventoryType = PocketType.Costume }, Session); } private void ItemShouldBeInSlot1() { var item = Session.Character.InventoryService.LoadBySlotAndType(1, NoscorePocketType.Equipment); Assert.IsNotNull(item); Assert.AreEqual(1, item.ItemInstance.ItemVNum); } private void Slot0ShouldBeEmpty() { var item = Session.Character.InventoryService.LoadBySlotAndType(0, NoscorePocketType.Equipment); Assert.IsNull(item); } private void ItemShouldBeInCostumePocket() { var item = Session.Character.InventoryService.LoadBySlotAndType(0, NoscorePocketType.Costume); Assert.IsNotNull(item); Assert.AreEqual(924, item.ItemInstance.ItemVNum); } private void ShouldReceivePocketChangePackets() { var packets = Session.LastPackets.OfType<IvnPacket>().ToList(); Assert.IsTrue(packets.Count >= 2); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Inventory/MviPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Enumerations; using NosCore.GameObject.Services.InventoryService; using NosCore.PacketHandlers.Inventory; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Inventory; using NosCore.Tests.Shared.BDD; using SpecLight; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Inventory { [TestClass] public class MviPacketHandlerTests : SpecBase { private MviPacketHandler MviPacketHandler = null!; [TestInitialize] public override async Task SetupAsync() { await base.SetupAsync(); MviPacketHandler = new MviPacketHandler(); } [TestMethod] public async Task MovingFullStackShouldMoveItemToNewSlot() { await new Spec("Moving full stack should move item to new slot") .Given(CharacterHasStackOf999ItemsInSlot0) .WhenAsync(MovingFullStackFromSlot0ToSlot1) .Then(ItemShouldBeInSlot1WithAmount999) .And(Slot0ShouldBeEmpty) .ExecuteAsync(); } [TestMethod] public async Task MovingPartialStackShouldSplitItems() { await new Spec("Moving partial stack should split items") .Given(CharacterHasStackOf999ItemsInSlot0) .WhenAsync(Moving500ItemsFromSlot0ToSlot1) .Then(Slot1ShouldHave500Items) .And(Slot0ShouldHave499Items) .ExecuteAsync(); } [TestMethod] public async Task SwappingItemsBetweenSlotsShouldWork() { await new Spec("Swapping items between slots should work") .Given(CharacterHasDifferentItemsInSlot0And1) .WhenAsync(MovingItemFromSlot0ToSlot1) .Then(ItemsShouldBeSwapped) .ExecuteAsync(); } [TestMethod] public async Task MovingItemShouldSendTwoPocketChangePackets() { await new Spec("Moving item should send two pocket change packets") .Given(CharacterHasStackOf999ItemsInSlot0) .WhenAsync(MovingFullStackFromSlot0ToSlot1) .Then(ShouldReceiveTwoPocketChangePackets) .ExecuteAsync(); } [TestMethod] public async Task StackingItemsOntoExistingStackShouldMerge() { await new Spec("Stacking items onto existing stack should merge") .Given(CharacterHas100ItemsInSlot0And200InSlot1) .WhenAsync(Moving100ItemsFromSlot0ToSlot1) .Then(Slot1ShouldHave300Items) .And(Slot0ShouldBeEmpty) .ExecuteAsync(); } private void CharacterHasStackOf999ItemsInSlot0() { var item = ItemProvider.Create(1012, 999); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(item, Session.Character.CharacterId), NoscorePocketType.Main, 0); } private void CharacterHasDifferentItemsInSlot0And1() { var item1 = ItemProvider.Create(1012, 100); var item2 = ItemProvider.Create(1013, 50); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(item1, Session.Character.CharacterId), NoscorePocketType.Main, 0); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(item2, Session.Character.CharacterId), NoscorePocketType.Main, 1); } private void CharacterHas100ItemsInSlot0And200InSlot1() { var item1 = ItemProvider.Create(1012, 100); var item2 = ItemProvider.Create(1012, 200); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(item1, Session.Character.CharacterId), NoscorePocketType.Main, 0); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(item2, Session.Character.CharacterId), NoscorePocketType.Main, 1); } private async Task MovingFullStackFromSlot0ToSlot1() { await MviPacketHandler.ExecuteAsync(new MviPacket { Slot = 0, InventoryType = PocketType.Main, Amount = 999, DestinationSlot = 1 }, Session); } private async Task Moving500ItemsFromSlot0ToSlot1() { await MviPacketHandler.ExecuteAsync(new MviPacket { Slot = 0, InventoryType = PocketType.Main, Amount = 500, DestinationSlot = 1 }, Session); } private async Task MovingItemFromSlot0ToSlot1() { await MviPacketHandler.ExecuteAsync(new MviPacket { Slot = 0, InventoryType = PocketType.Main, Amount = 100, DestinationSlot = 1 }, Session); } private async Task Moving100ItemsFromSlot0ToSlot1() { await MviPacketHandler.ExecuteAsync(new MviPacket { Slot = 0, InventoryType = PocketType.Main, Amount = 100, DestinationSlot = 1 }, Session); } private void ItemShouldBeInSlot1WithAmount999() { var item = Session.Character.InventoryService.LoadBySlotAndType(1, NoscorePocketType.Main); Assert.IsNotNull(item); Assert.AreEqual(1012, item.ItemInstance.ItemVNum); Assert.AreEqual(999, item.ItemInstance.Amount); } private void Slot0ShouldBeEmpty() { var item = Session.Character.InventoryService.LoadBySlotAndType(0, NoscorePocketType.Main); Assert.IsNull(item); } private void Slot1ShouldHave500Items() { var item = Session.Character.InventoryService.LoadBySlotAndType(1, NoscorePocketType.Main); Assert.IsNotNull(item); Assert.AreEqual(500, item.ItemInstance.Amount); } private void Slot0ShouldHave499Items() { var item = Session.Character.InventoryService.LoadBySlotAndType(0, NoscorePocketType.Main); Assert.IsNotNull(item); Assert.AreEqual(499, item.ItemInstance.Amount); } private void Slot1ShouldHave300Items() { var item = Session.Character.InventoryService.LoadBySlotAndType(1, NoscorePocketType.Main); Assert.IsNotNull(item); Assert.AreEqual(300, item.ItemInstance.Amount); } private void ItemsShouldBeSwapped() { var slot0Item = Session.Character.InventoryService.LoadBySlotAndType(0, NoscorePocketType.Main); var slot1Item = Session.Character.InventoryService.LoadBySlotAndType(1, NoscorePocketType.Main); Assert.IsNotNull(slot0Item); Assert.IsNotNull(slot1Item); Assert.AreEqual(1013, slot0Item.ItemInstance.ItemVNum); Assert.AreEqual(1012, slot1Item.ItemInstance.ItemVNum); } private void ShouldReceiveTwoPocketChangePackets() { var packets = Session.LastPackets.OfType<IvnPacket>().ToList(); Assert.AreEqual(2, packets.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Inventory/PutPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.PacketHandlers.Inventory; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Inventory { [TestClass] public class PutPacketHandlerTests { private IItemGenerationService Item = null!; private PutPacketHandler PutPacketHandler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Item = TestHelpers.Instance.GenerateItemProvider(); Session = await TestHelpers.Instance.GenerateSessionAsync(); PutPacketHandler = new PutPacketHandler(TestHelpers.Instance.WorldConfiguration, TestHelpers.Instance.GameLanguageLocalizer); } [TestMethod] public async Task DroppingPartialStackShouldKeepRemaining() { await new Spec("Dropping partial stack should keep remaining") .Given(CharacterHasStackOf_Items, 999) .WhenAsync(Dropping_Items, 500) .Then(InventoryShouldHaveOneItem) .And(ItemAmountShouldBe_, 499) .ExecuteAsync(); } [TestMethod] public async Task DroppingNonDroppableItemShouldFail() { await new Spec("Dropping non droppable item should fail") .Given(CharacterHasNonDroppableItem) .WhenAsync(DroppingOneItem) .Then(ShouldReceiveCantDropMessage) .And(InventoryShouldNotBeEmpty) .ExecuteAsync(); } [TestMethod] public async Task DroppingItemShouldRemoveFromInventory() { await new Spec("Dropping item should remove from inventory") .Given(CharacterHasDroppableItem) .WhenAsync(DroppingOneItem) .Then(InventoryShouldBeEmpty) .ExecuteAsync(); } [TestMethod] public async Task DroppingAtBadPositionShouldFail() { await new Spec("Dropping at bad position should fail") .Given(CharacterIsAtBadPosition) .And(CharacterHasDroppableItem) .WhenAsync(DroppingOneItem) .Then(ShouldReceiveCantDropMessage) .And(InventoryShouldNotBeEmpty) .ExecuteAsync(); } [TestMethod] public async Task DroppingOutOfBoundsShouldFail() { await new Spec("Dropping out of bounds should fail") .Given(CharacterIsOutOfBounds) .And(CharacterHasDroppableItem) .WhenAsync(DroppingOneItem) .Then(ShouldReceiveCantDropMessage) .And(InventoryShouldNotBeEmpty) .ExecuteAsync(); } private void CharacterHasStackOf_Items(int value) { Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(Item.Create(1012, 999), 0)); } private void CharacterHasDroppableItem() { Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(Item.Create(1012, 1), 0)); } private void CharacterHasNonDroppableItem() { Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(Item.Create(1013, 1), 0)); } private void CharacterIsAtBadPosition() { Session.Character.PositionX = 2; Session.Character.PositionY = 2; } private void CharacterIsOutOfBounds() { Session.Character.PositionX = -1; Session.Character.PositionY = -1; } private async Task Dropping_Items(int value) { await PutPacketHandler.ExecuteAsync(new PutPacket { PocketType = PocketType.Main, Slot = 0, Amount = 500 }, Session); } private async Task DroppingOneItem() { await PutPacketHandler.ExecuteAsync(new PutPacket { PocketType = PocketType.Main, Slot = 0, Amount = 1 }, Session); } private void InventoryShouldHaveOneItem() { Assert.AreEqual(1, Session.Character.InventoryService.Count); } private void ItemAmountShouldBe_(int value) { Assert.AreEqual((short)value, Session.Character.InventoryService.FirstOrDefault().Value.ItemInstance?.Amount); } private void InventoryShouldBeEmpty() { Assert.AreEqual(0, Session.Character.InventoryService.Count); } private void InventoryShouldNotBeEmpty() { Assert.IsTrue(Session.Character.InventoryService.Count > 0); } private void ShouldReceiveCantDropMessage() { var packet = (SayiPacket?)Session.LastPackets.FirstOrDefault(s => s is SayiPacket); Assert.IsTrue(packet?.VisualType == VisualType.Player && packet?.VisualId == Session.Character.CharacterId && packet?.Type == SayColorType.Yellow && packet?.Message == Game18NConstString.CantDropItem); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Inventory/RemovePacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Enumerations; using NosCore.GameObject.Services.InventoryService; using NosCore.PacketHandlers.Inventory; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Inventory; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using NosCore.Tests.Shared.BDD; using SpecLight; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Inventory { [TestClass] public class RemovePacketHandlerTests : SpecBase { private RemovePacketHandler RemovePacketHandler = null!; [TestInitialize] public override async Task SetupAsync() { await base.SetupAsync(); RemovePacketHandler = new RemovePacketHandler(); } [TestMethod] public async Task RemovingEquippedWeaponShouldMoveToEquipmentPocket() { await new Spec("Removing equipped weapon should move to equipment pocket") .Given(CharacterHasWeaponEquipped) .WhenAsync(RemovingMainWeapon) .Then(WeaponShouldBeInEquipmentPocket) .And(WeaponSlotShouldBeEmpty) .ExecuteAsync(); } [TestMethod] public async Task RemovingNonExistentItemShouldDoNothing() { await new Spec("Removing non existent item should do nothing") .WhenAsync(RemovingMainWeapon) .Then(InventoryShouldBeEmpty) .ExecuteAsync(); } [TestMethod] public async Task RemovingEquippedArmorShouldWork() { await new Spec("Removing equipped armor should work") .Given(CharacterHasArmorEquipped) .WhenAsync(RemovingArmor) .Then(ArmorShouldBeInEquipmentPocket) .ExecuteAsync(); } [TestMethod] public async Task RemovingItemWithFullInventoryShouldShowNotEnoughSpaceMessage() { await new Spec("Removing item with full inventory should show not enough space message") .Given(CharacterHasWeaponEquipped) .And(EquipmentInventoryIsFull) .WhenAsync(RemovingMainWeapon) .Then(ShouldReceiveNotEnoughSpaceMessage) .And(WeaponShouldStillBeEquipped) .ExecuteAsync(); } [TestMethod] public async Task RemovingEquippedItemShouldSendPocketChangePacket() { await new Spec("Removing equipped item should send pocket change packet") .Given(CharacterHasWeaponEquipped) .WhenAsync(RemovingMainWeapon) .Then(ShouldReceivePocketChangePacket) .ExecuteAsync(); } private void CharacterHasWeaponEquipped() { var item = ItemProvider.Create(1, 1); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(item, Session.Character.CharacterId), NoscorePocketType.Wear, (short)EquipmentType.MainWeapon); } private void CharacterHasArmorEquipped() { var item = ItemProvider.Create(1, 1); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(item, Session.Character.CharacterId), NoscorePocketType.Wear, (short)EquipmentType.Armor); } private void EquipmentInventoryIsFull() { for (short i = 0; i < TestHelpers.Instance.WorldConfiguration.Value.BackpackSize; i++) { var item = ItemProvider.Create(1, 1); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(item, Session.Character.CharacterId), NoscorePocketType.Equipment, i); } } private async Task RemovingMainWeapon() { await RemovePacketHandler.ExecuteAsync(new RemovePacket { InventorySlot = EquipmentType.MainWeapon }, Session); } private async Task RemovingArmor() { await RemovePacketHandler.ExecuteAsync(new RemovePacket { InventorySlot = EquipmentType.Armor }, Session); } private void WeaponShouldBeInEquipmentPocket() { var item = Session.Character.InventoryService.FirstOrDefault(i => i.Value.Type == NoscorePocketType.Equipment); Assert.IsNotNull(item.Value); Assert.AreEqual(1, item.Value.ItemInstance.ItemVNum); } private void ArmorShouldBeInEquipmentPocket() { var item = Session.Character.InventoryService.FirstOrDefault(i => i.Value.Type == NoscorePocketType.Equipment); Assert.IsNotNull(item.Value); Assert.AreEqual(1, item.Value.ItemInstance.ItemVNum); } private void WeaponSlotShouldBeEmpty() { var item = Session.Character.InventoryService.LoadBySlotAndType( (short)EquipmentType.MainWeapon, NoscorePocketType.Wear); Assert.IsNull(item); } private void WeaponShouldStillBeEquipped() { var item = Session.Character.InventoryService.LoadBySlotAndType( (short)EquipmentType.MainWeapon, NoscorePocketType.Wear); Assert.IsNotNull(item); Assert.AreEqual(1, item.ItemInstance.ItemVNum); } private void ShouldReceiveNotEnoughSpaceMessage() { var packet = GetLastPacket<MsgiPacket>(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.NotEnoughSpace, packet.Message); } private void ShouldReceivePocketChangePacket() { var packet = GetLastPacket<IvnPacket>(); Assert.IsNotNull(packet); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Inventory/SpTransformPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.JobExperienceService; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.TransformationService; using NosCore.PacketHandlers.Inventory; using NosCore.Packets.ClientPackets.Specialists; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Linq; using System.Threading.Tasks; #pragma warning disable 618 namespace NosCore.PacketHandlers.Tests.Inventory { [TestClass] public class SpTransformPacketHandlerTests { private IItemGenerationService Item = null!; private ClientSession Session = null!; private SpTransformPacketHandler SpTransformPacketHandler = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Item = TestHelpers.Instance.GenerateItemProvider(); Session = await TestHelpers.Instance.GenerateSessionAsync(); SpTransformPacketHandler = new SpTransformPacketHandler(TestHelpers.Instance.Clock, new TransformationService(TestHelpers.Instance.Clock, new Mock<IExperienceService>().Object, new Mock<IJobExperienceService>().Object, new Mock<IHeroExperienceService>().Object, new Mock<ILogger<TransformationService>>().Object, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.WorldConfiguration), TestHelpers.Instance.GameLanguageLocalizer); } [TestMethod] public async Task TransformingWithoutSpShouldShowError() { await new Spec("Transforming without sp should show error") .WhenAsync(AttemptingToTransform) .Then(ShouldReceiveNoSpEquippedMessage) .ExecuteAsync(); } [TestMethod] public async Task TransformingWhileInVehicleShouldFail() { await new Spec("Transforming while in vehicle should fail") .Given(CharacterIsInVehicle) .And(CharacterHasSpEquipped) .WhenAsync(AttemptingToTransform) .Then(ShouldReceiveCantUseInVehicleMessage) .ExecuteAsync(); } [TestMethod] public async Task TransformingWhileSittingShouldBeIgnored() { await new Spec("Transforming while sitting should be ignored") .Given(CharacterIsSitting) .WhenAsync(AttemptingToTransform) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task RemovingSpWhileTransformedShouldUntransform() { await new Spec("Removing sp while transformed should untransform") .Given(CharacterHasSpEquipped) .And(CharacterIsTransformed) .WhenAsync(AttemptingToTransformWithWearAndTransform) .Then(CharacterShouldNotBeTransformed) .ExecuteAsync(); } [TestMethod] public async Task TransformingWithSpPointsAndReputationShouldSucceed() { await new Spec("Transforming with sp points and reputation should succeed") .Given(CharacterHasSpPoints) .And(CharacterHasHighReputation) .And(CharacterHasSpEquipped) .WhenAsync(AttemptingToTransformWithWearAndTransform) .Then(CharacterShouldBeTransformed) .ExecuteAsync(); } [TestMethod] public async Task TransformingWithBadFairyElementShouldFail() { await new Spec("Transforming with bad fairy element should fail") .Given(CharacterHasSpPoints) .And(CharacterHasHighReputation) .And(CharacterHasSpAndMismatchedFairyEquipped) .WhenAsync(AttemptingToTransformWithWearAndTransform) .Then(ShouldReceiveDifferentElementMessage) .ExecuteAsync(); } [TestMethod] public async Task TransformingWithLowReputationShouldFail() { await new Spec("Transforming with low reputation should fail") .Given(CharacterHasSpPoints) .And(CharacterHasSpEquipped) .WhenAsync(AttemptingToTransformWithWearAndTransform) .Then(ShouldReceiveLowReputationMessage) .ExecuteAsync(); } [TestMethod] public async Task TransformingDuringCooldownShouldShowCooldownMessage() { await new Spec("Transforming during cooldown should show cooldown message") .Given(CharacterHasSpPoints) .And(CharacterHasSpEquipped) .And(CharacterHasSpCooldown) .WhenAsync(AttemptingToTransformWithWearAndTransform) .Then(ShouldReceiveCooldownMessage) .ExecuteAsync(); } [TestMethod] public async Task TransformingWithoutSpPointsShouldShowNoPointsMessage() { await new Spec("Transforming without sp points should show no points message") .Given(CharacterHasSpEquipped) .And(CharacterHasLastSpSet) .WhenAsync(AttemptingToTransformWithWearAndTransform) .Then(ShouldReceiveNoSpPointsMessage) .ExecuteAsync(); } [TestMethod] public async Task TransformingShouldShowDelayPacket() { await new Spec("Transforming should show delay packet") .Given(CharacterHasSpPoints) .And(CharacterHasSpEquipped) .And(CharacterHasLastSpSet) .WhenAsync(AttemptingToTransform) .Then(ShouldReceiveDelayPacket) .ExecuteAsync(); } private void CharacterIsInVehicle() { Session.Character.IsVehicled = true; } private void CharacterHasSpEquipped() { Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(Item.Create(912, 1), Session.Character.CharacterId)); var item = Session.Character.InventoryService.First(); item.Value.Type = NoscorePocketType.Wear; item.Value.Slot = (byte)EquipmentType.Sp; } private void CharacterIsSitting() { Session.Character.IsSitting = true; } private void CharacterIsTransformed() { Session.Character.UseSp = true; } private void CharacterHasSpPoints() { Session.Character.SpPoint = 1; } private void CharacterHasHighReputation() { Session.Character.Reput = 5000000; } private void CharacterHasSpAndMismatchedFairyEquipped() { var spItem = Session.Character.InventoryService .AddItemToPocket(InventoryItemInstance.Create(Item.Create(912, 1), Session.Character.CharacterId))! .First(); var fairy = Session.Character.InventoryService .AddItemToPocket(InventoryItemInstance.Create(Item.Create(2, 1), Session.Character.CharacterId))! .First(); spItem.Type = NoscorePocketType.Wear; spItem.Slot = (byte)EquipmentType.Sp; fairy.Type = NoscorePocketType.Wear; fairy.Slot = (byte)EquipmentType.Fairy; } private void CharacterHasSpCooldown() { Session.Character.LastSp = TestHelpers.Instance.Clock.GetCurrentInstant(); Session.Character.SpCooldown = 30; } private void CharacterHasLastSpSet() { Session.Character.LastSp = TestHelpers.Instance.Clock.GetCurrentInstant(); } private async Task AttemptingToTransform() { await SpTransformPacketHandler.ExecuteAsync(new SpTransformPacket { Type = SlPacketType.WearSp }, Session); } private async Task AttemptingToTransformWithWearAndTransform() { await SpTransformPacketHandler.ExecuteAsync(new SpTransformPacket { Type = SlPacketType.WearSpAndTransform }, Session); } private void ShouldReceiveNoSpEquippedMessage() { var packet = (MsgiPacket?)Session.LastPackets.FirstOrDefault(s => s is MsgiPacket); Assert.IsTrue(packet?.Type == MessageType.Default && packet?.Message == Game18NConstString.NoSpecialistCardEquipped); } private void ShouldReceiveCantUseInVehicleMessage() { var packet = (MsgiPacket?)Session.LastPackets.FirstOrDefault(s => s is MsgiPacket); Assert.IsTrue(packet?.Message == Game18NConstString.CantUseInVehicle); } private void NoPacketShouldBeSent() { Assert.IsNull(Session.LastPackets.FirstOrDefault()); } private void CharacterShouldNotBeTransformed() { Assert.IsFalse(Session.Character.UseSp); } private void CharacterShouldBeTransformed() { Assert.IsTrue(Session.Character.UseSp); } private void ShouldReceiveDifferentElementMessage() { var packet = (MsgiPacket?)Session.LastPackets.FirstOrDefault(s => s is MsgiPacket); Assert.IsTrue(packet?.Message == Game18NConstString.SpecialistAndFairyDifferentElement); } private void ShouldReceiveLowReputationMessage() { var packet = (SayiPacket?)Session.LastPackets.FirstOrDefault(s => s is SayiPacket); Assert.IsTrue(packet?.VisualType == VisualType.Player && packet?.VisualId == Session.Character.CharacterId && packet?.Type == SayColorType.Yellow && packet?.Message == Game18NConstString.CanNotBeWornReputationLow); } private void ShouldReceiveCooldownMessage() { var packet = (MsgiPacket?)Session.LastPackets.FirstOrDefault(s => s is MsgiPacket); Assert.IsTrue(packet?.Type == MessageType.Default && packet?.Message == Game18NConstString.CantTrasformWithSideEffect && packet?.ArgumentType == 4 && (short?)packet?.Game18NArguments[0] == 30); } private void ShouldReceiveNoSpPointsMessage() { var packet = (MsgPacket?)Session.LastPackets.FirstOrDefault(s => s is MsgPacket); Assert.IsTrue(packet?.Message == TestHelpers.Instance.GameLanguageLocalizer[LanguageKey.SP_NOPOINTS, Session.Account.Language]); } private void ShouldReceiveDelayPacket() { var packet = (DelayPacket?)Session.LastPackets.FirstOrDefault(s => s is DelayPacket); Assert.IsTrue(packet?.Delay == 5000); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Login/NoS0575PacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.Extensions.Options; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core; using NosCore.Core.Configuration; using NosCore.Core.Encryption; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.LoginService; using NosCore.Networking; using NosCore.Networking.SessionRef; using NosCore.PacketHandlers.Login; using NosCore.Packets.ClientPackets.Login; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Login; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Login { [TestClass] public class NoS0575PacketHandlerSpecs { private static readonly ILogger<NoS0575PacketHandler> Logger = new Mock<ILogger<NoS0575PacketHandler>>().Object; private string Password = null!; private Mock<IAuthHub> AuthHttpClient = null!; private Mock<IPubSubHub> PubSubHub = null!; private IOptions<LoginConfiguration> LoginConfiguration = null!; private NoS0575PacketHandler NoS0575PacketHandler = null!; private ClientSession Session = null!; private Mock<IChannelHub> ChannelHub = null!; private SessionRefHolder SessionRefHolder = null!; [TestInitialize] public async Task SetupAsync() { Password = new Sha512Hasher().Hash("test").ToUpperInvariant(); await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); AuthHttpClient = new Mock<IAuthHub>(); PubSubHub = TestHelpers.Instance.PubSubHub; LoginConfiguration = Options.Create(new LoginConfiguration()); SessionRefHolder = new SessionRefHolder(); ChannelHub = new Mock<IChannelHub>(); SessionRefHolder[Session.Channel!.Id] = new RegionTypeMapping(Session.SessionId, RegionType.EN); NoS0575PacketHandler = new NoS0575PacketHandler(new LoginService(LoginConfiguration, TestHelpers.Instance.AccountDao, AuthHttpClient.Object, PubSubHub.Object, ChannelHub.Object, TestHelpers.Instance.CharacterDao, SessionRefHolder), LoginConfiguration, Logger, TestHelpers.Instance.LogLanguageLocalizer); } [TestMethod] public async Task LoginWithOldClientShouldFail() { await new Spec("Login with old client should fail") .Given(ClientVersionIsSet) .WhenAsync(LoggingInWithUppercaseNameAsync) .Then(ShouldReceiveOldClientError) .ExecuteAsync(); } [TestMethod] public async Task LoginWithOldAuthWhenNewEnforcedShouldFail() { await new Spec("Login with old auth when new enforced should fail") .Given(NewAuthIsEnforced) .WhenAsync(LoggingInWithUppercaseNameAsync) .Then(NoPacketsShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task LoginWithNoAccountShouldFail() { await new Spec("Login with no account should fail") .WhenAsync(LoggingInWithFakeAccountAsync) .Then(ShouldReceiveAccountWrongError) .ExecuteAsync(); } [TestMethod] public async Task LoginWithWrongCapsShouldFail() { await new Spec("Login with wrong caps should fail") .WhenAsync(LoggingInWithUppercaseNameAsync) .Then(ShouldReceiveWrongCapsError) .ExecuteAsync(); } [TestMethod] public async Task LoginWithWrongPasswordShouldFail() { await new Spec("Login with wrong password should fail") .WhenAsync(LoggingInWithWrongPasswordAsync) .Then(ShouldReceiveAccountWrongError) .ExecuteAsync(); } [TestMethod] public async Task LoginWithCorrectCredentialsShouldSucceed() { await new Spec("Login with correct credentials should succeed") .Given(ServerIsAvailable) .WhenAsync(LoggingInCorrectlyAsync) .Then(ShouldReceiveNsTestPacket) .ExecuteAsync(); } [TestMethod] public async Task LoginWhenAlreadyConnectedShouldFail() { await new Spec("Login when already connected should fail") .Given(AccountIsAlreadyConnected) .WhenAsync(LoggingInCorrectlyAsync) .Then(ShouldReceiveAlreadyConnectedError) .ExecuteAsync(); } [TestMethod] public async Task LoginWithNoServerShouldFail() { await new Spec("Login with no server should fail") .Given(NoServerIsAvailable) .WhenAsync(LoggingInCorrectlyAsync) .Then(ShouldReceiveCantConnectError) .ExecuteAsync(); } [TestMethod] public async Task LoginDuringMaintenanceShouldFail() { await new Spec("Login during maintenance should fail") .Given(ServerIsInMaintenance) .WhenAsync(LoggingInCorrectlyAsync) .Then(ShouldReceiveMaintenanceError) .ExecuteAsync(); } [TestMethod] public async Task LoginDuringMaintenanceAsGmShouldSucceed() { await new Spec("Login during maintenance as gm should succeed") .Given(ServerIsInMaintenance) .AndAsync(AccountIsGameMasterAsync) .WhenAsync(LoggingInCorrectlyAsync) .Then(ShouldReceiveNsTestPacket) .ExecuteAsync(); } private void ClientVersionIsSet() { LoginConfiguration.Value.ClientVersion = new ClientVersionSubPacket { Major = 1 }; } private void NewAuthIsEnforced() { LoginConfiguration.Value.EnforceNewAuth = true; } private void ServerIsAvailable() { ChannelHub.Setup(s => s.GetCommunicationChannels()).ReturnsAsync(new List<ChannelInfo> { new() { Type = ServerType.WorldServer } }); PubSubHub.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber>()); } private void AccountIsAlreadyConnected() { ChannelHub.Setup(s => s.GetCommunicationChannels()).ReturnsAsync(new List<ChannelInfo> { new() { Type = ServerType.WorldServer } }); PubSubHub.Setup(s => s.GetSubscribersAsync()).ReturnsAsync( new List<Subscriber> { new() { Name = Session.Account.Name } }); } private void NoServerIsAvailable() { ChannelHub.Setup(s => s.GetCommunicationChannels()).ReturnsAsync(new List<ChannelInfo>()); PubSubHub.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber>()); } private void ServerIsInMaintenance() { ChannelHub.Setup(s => s.GetCommunicationChannels()).ReturnsAsync(new List<ChannelInfo> { new() { Type = ServerType.WorldServer, IsMaintenance = true } }); PubSubHub.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber>()); } private async Task AccountIsGameMasterAsync() { Session.Account.Authority = AuthorityType.GameMaster; await TestHelpers.Instance.AccountDao.TryInsertOrUpdateAsync(Session.Account); } private async Task LoggingInWithUppercaseNameAsync() { await NoS0575PacketHandler.ExecuteAsync(new NoS0575Packet { Password = Password, Username = Session.Account.Name.ToUpperInvariant() }, Session); } private async Task LoggingInWithFakeAccountAsync() { await NoS0575PacketHandler.ExecuteAsync(new NoS0575Packet { Password = Password, Username = "noaccount" }, Session); } private async Task LoggingInWithWrongPasswordAsync() { var encryption = new Sha512Hasher(); await NoS0575PacketHandler.ExecuteAsync(new NoS0575Packet { Password = encryption.Hash("test1").ToUpperInvariant(), Username = Session.Account.Name }, Session); } private async Task LoggingInCorrectlyAsync() { await NoS0575PacketHandler.ExecuteAsync(new NoS0575Packet { Password = Password, Username = Session.Account.Name }, Session); } private void ShouldReceiveOldClientError() { Assert.IsTrue(((FailcPacket?)Session.LastPackets.FirstOrDefault(s => s is FailcPacket))?.Type == LoginFailType.OldClient); } private void NoPacketsShouldBeSent() { Assert.IsTrue(Session.LastPackets.Count == 0); } private void ShouldReceiveAccountWrongError() { Assert.IsTrue(((FailcPacket?)Session.LastPackets.FirstOrDefault(s => s is FailcPacket))?.Type == LoginFailType.AccountOrPasswordWrong); } private void ShouldReceiveWrongCapsError() { Assert.IsTrue(((FailcPacket?)Session.LastPackets.FirstOrDefault(s => s is FailcPacket))?.Type == LoginFailType.WrongCaps); } private void ShouldReceiveNsTestPacket() { Assert.IsNotNull((NsTestPacket?)Session.LastPackets.FirstOrDefault(s => s is NsTestPacket)); } private void ShouldReceiveAlreadyConnectedError() { Assert.IsTrue(((FailcPacket?)Session.LastPackets.FirstOrDefault(s => s is FailcPacket))?.Type == LoginFailType.AlreadyConnected); } private void ShouldReceiveCantConnectError() { Assert.IsTrue(((FailcPacket?)Session.LastPackets.FirstOrDefault(s => s is FailcPacket))?.Type == LoginFailType.CantConnect); } private void ShouldReceiveMaintenanceError() { Assert.IsTrue(((FailcPacket?)Session.LastPackets.FirstOrDefault(s => s is FailcPacket))?.Type == LoginFailType.Maintenance); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Login/NoS0577PacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core; using NosCore.Core.Configuration; using NosCore.Core.Encryption; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.LoginService; using NosCore.Networking; using NosCore.Networking.SessionRef; using NosCore.PacketHandlers.Login; using NosCore.Packets.ClientPackets.Login; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Login; using NosCore.Shared.Authentication; using NosCore.Shared.Configuration; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Login { [TestClass] public class NoS0577PacketHandlerSpecs { private readonly string TokenGuid = Guid.NewGuid().ToString(); private IHasher Encryption = null!; private readonly Mock<IAuthHub> AuthHttpClient = new(); private readonly Mock<IPubSubHub> PubSubHub = TestHelpers.Instance.PubSubHub; private readonly IOptions<LoginConfiguration> LoginConfiguration = Options.Create(new LoginConfiguration { MasterCommunication = new WebApiConfiguration() }); private NoS0577PacketHandler NoS0577PacketHandler = null!; private ClientSession Session = null!; private Mock<IChannelHub> ChannelHub = null!; private SessionRefHolder SessionRefHolder = null!; private static string GuidToToken(string token) { return string.Join("", token.ToCharArray().Select(s => Convert.ToByte(s).ToString("x"))); } [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); ChannelHub = new Mock<IChannelHub>(); SessionRefHolder = new SessionRefHolder(); Session = await TestHelpers.Instance.GenerateSessionAsync(); SessionRefHolder[Session.Channel!.Id] = new RegionTypeMapping(Session.SessionId, RegionType.EN); AuthHttpClient.Setup(s => s.GetAwaitingConnectionAsync(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>())).ReturnsAsync((string a, string b, int c) => (string?)((new OkObjectResult(Session.Account.Name)).Value)); NoS0577PacketHandler = new NoS0577PacketHandler(new LoginService(LoginConfiguration, TestHelpers.Instance.AccountDao, AuthHttpClient.Object, PubSubHub.Object, ChannelHub.Object, TestHelpers.Instance.CharacterDao, SessionRefHolder)); } [TestMethod] public async Task LoginWithBcryptShouldSucceed() { await new Spec("Login with bcrypt should succeed") .Given(ServerIsAvailable) .And(AccountUsesBcrypt) .WhenAsync(LoggingInWithToken) .Then(ShouldReceiveNsTestPacket) .ExecuteAsync(); } [TestMethod] public async Task LoginWithPbkdf2ShouldSucceed() { await new Spec("Login with pbkdf2 should succeed") .Given(ServerIsAvailable) .And(AccountUsesPbkdf_, 2) .WhenAsync(LoggingInWithToken) .Then(ShouldReceiveNsTestPacket) .ExecuteAsync(); } [TestMethod] public async Task LoginWithOldClientShouldFail() { await new Spec("Login with old client should fail") .Given(ClientVersionIsSet) .WhenAsync(LoggingInWithToken) .Then(ShouldReceiveOldClientError) .ExecuteAsync(); } [TestMethod] public async Task LoginWithWrongTokenShouldFail() { await new Spec("Login with wrong token should fail") .Given(TokenIsInvalid) .WhenAsync(LoggingInWithWrongToken) .Then(ShouldReceiveAccountWrongError) .ExecuteAsync(); } [TestMethod] public async Task LoginWithCorrectCredentialsShouldSucceed() { await new Spec("Login with correct credentials should succeed") .Given(ServerIsAvailable) .WhenAsync(LoggingInWithToken) .Then(ShouldReceiveNsTestPacket) .ExecuteAsync(); } [TestMethod] public async Task LoginWhenAlreadyConnectedShouldFail() { await new Spec("Login when already connected should fail") .Given(AccountIsAlreadyConnected) .WhenAsync(LoggingInWithToken) .Then(ShouldReceiveAlreadyConnectedError) .ExecuteAsync(); } [TestMethod] public async Task LoginWithNoServerShouldFail() { await new Spec("Login with no server should fail") .Given(NoServerIsAvailable) .WhenAsync(LoggingInWithToken) .Then(ShouldReceiveCantConnectError) .ExecuteAsync(); } [TestMethod] public async Task LoginDuringMaintenanceShouldFail() { await new Spec("Login during maintenance should fail") .Given(ServerIsInMaintenance) .WhenAsync(LoggingInWithToken) .Then(ShouldReceiveMaintenanceError) .ExecuteAsync(); } [TestMethod] public async Task LoginDuringMaintenanceAsGmShouldSucceed() { await new Spec("Login during maintenance as gm should succeed") .Given(ServerIsInMaintenance) .AndAsync(AccountIsGameMaster) .WhenAsync(LoggingInWithToken) .Then(ShouldReceiveNsTestPacket) .ExecuteAsync(); } private void ServerIsAvailable() { ChannelHub.Setup(s => s.GetCommunicationChannels()).ReturnsAsync(new List<ChannelInfo> { new() }); PubSubHub.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber>()); } private void AccountUsesBcrypt() { Encryption = new BcryptHasher(); Session.Account.NewAuthSalt = BCrypt.Net.BCrypt.GenerateSalt(); Session.Account.NewAuthPassword = Encryption.Hash(TokenGuid, Session.Account.NewAuthSalt); } private void AccountUsesPbkdf_(int value) { Encryption = new Pbkdf2Hasher(); Session.Account.NewAuthPassword = Encryption.Hash(TokenGuid, "MYSUPERSECRETHASH"); Session.Account.NewAuthSalt = "MYSUPERSECRETHASH"; } private void ClientVersionIsSet() { LoginConfiguration.Value.ClientVersion = new ClientVersionSubPacket { Major = 1 }; } private void TokenIsInvalid() { AuthHttpClient.Setup(s => s.GetAwaitingConnectionAsync(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>())).ReturnsAsync((string a, string b, int c) => (string?)((new OkObjectResult(null)).Value)); } private void AccountIsAlreadyConnected() { ChannelHub.Setup(s => s.GetCommunicationChannels()).ReturnsAsync(new List<ChannelInfo> { new() }); PubSubHub.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber> { new() { Name = Session.Account.Name } }); } private void NoServerIsAvailable() { ChannelHub.Setup(s => s.GetCommunicationChannels()).ReturnsAsync(new List<ChannelInfo>()); PubSubHub.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber>()); } private void ServerIsInMaintenance() { ChannelHub.Setup(s => s.GetCommunicationChannels()).ReturnsAsync(new List<ChannelInfo> { new() { IsMaintenance = true } }); PubSubHub.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber>()); } private async Task AccountIsGameMaster() { Session.Account.Authority = AuthorityType.GameMaster; await TestHelpers.Instance.AccountDao.TryInsertOrUpdateAsync(Session.Account); } private async Task LoggingInWithToken() { await NoS0577PacketHandler.ExecuteAsync(new NoS0577Packet { AuthToken = GuidToToken(TokenGuid), }, Session); } private async Task LoggingInWithWrongToken() { await NoS0577PacketHandler.ExecuteAsync(new NoS0577Packet { AuthToken = GuidToToken(Guid.NewGuid().ToString()), }, Session); } private void ShouldReceiveNsTestPacket() { Assert.IsNotNull((NsTestPacket?)Session.LastPackets.FirstOrDefault(s => s is NsTestPacket)); } private void ShouldReceiveOldClientError() { Assert.IsTrue(((FailcPacket?)Session.LastPackets.FirstOrDefault(s => s is FailcPacket))?.Type == LoginFailType.OldClient); } private void ShouldReceiveAccountWrongError() { Assert.IsTrue(((FailcPacket?)Session.LastPackets.FirstOrDefault(s => s is FailcPacket))?.Type == LoginFailType.AccountOrPasswordWrong); } private void ShouldReceiveAlreadyConnectedError() { Assert.IsTrue(((FailcPacket?)Session.LastPackets.FirstOrDefault(s => s is FailcPacket))?.Type == LoginFailType.AlreadyConnected); } private void ShouldReceiveCantConnectError() { Assert.IsTrue(((FailcPacket?)Session.LastPackets.FirstOrDefault(s => s is FailcPacket))?.Type == LoginFailType.CantConnect); } private void ShouldReceiveMaintenanceError() { Assert.IsTrue(((FailcPacket?)Session.LastPackets.FirstOrDefault(s => s is FailcPacket))?.Type == LoginFailType.Maintenance); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Miniland/AddobjPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.Data.StaticEntities; using NosCore.GameObject.Map; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.PacketHandlers.Miniland; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.ClientPackets.Miniland; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Miniland { [TestClass] public class AddobjPacketHandlerTests { private AddobjPacketHandler _addobjPacketHandler = null!; private ClientSession _session = null!; private IMinilandService _minilandProvider = null!; private InventoryItemInstance _minilandObject = null!; private ItemGenerationService _itemProvider = null!; private List<ItemDto> MinilandItems => new() { new Item { Type = NoscorePocketType.Miniland, VNum = 3000, ItemType = ItemType.Minigame, MinilandObjectPoint = 100 } }; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); await TestHelpers.Instance.MinilandDao.TryInsertOrUpdateAsync(new MinilandDto() { OwnerId = _session.Character.CharacterId, }); _minilandProvider = new MinilandService(TestHelpers.Instance.MapInstanceAccessorService, TestHelpers.Instance.FriendHttpClient.Object, new List<MapDto> {new Map { MapId = 20001, NameI18NKey = "miniland", Data = new byte[] {} }}, TestHelpers.Instance.MinilandDao, TestHelpers.Instance.MinilandObjectDao, new MinilandRegistry()); await _minilandProvider.InitializeAsync(_session.Character, TestHelpers.Instance.MapInstanceGeneratorService); var miniland = _minilandProvider.GetMiniland(_session.Character.CharacterId); var mapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetMapInstance(miniland.MapInstanceId)!; _session.Character.MapInstance = mapInstance; _addobjPacketHandler = new AddobjPacketHandler(_minilandProvider); _itemProvider = new ItemGenerationService( MinilandItems, NullLoggerFactory.Instance, TestHelpers.Instance.LogLanguageLocalizer); } [TestMethod] public async Task AddObjectWithoutItemShouldFail() { await new Spec("Add object without item should fail") .Given(MinilandIsLocked) .WhenAsync(AddingNonExistentObject) .Then(NoObjectShouldBeAdded) .ExecuteAsync(); } [TestMethod] public async Task AddObjectWhenMinilandNotLockedShouldFail() { await new Spec("Add object when miniland not locked should fail") .Given(MinilandObjectExists) .And(MinilandIsOpen) .WhenAsync(AddingMinilandObject) .Then(ShouldReceiveInstallationOnlyLockModeMessage) .And(NoObjectShouldBeAdded) .ExecuteAsync(); } [TestMethod] public async Task AddObjectWhenLockedShouldSucceed() { await new Spec("Add object when locked should succeed") .Given(MinilandObjectExists) .And(MinilandIsLocked) .WhenAsync(AddingMinilandObject) .Then(ObjectShouldBeAdded) .ExecuteAsync(); } [TestMethod] public async Task AddDuplicateObjectShouldFail() { await new Spec("Add duplicate object should fail") .Given(MinilandObjectExists) .And(MinilandIsLocked) .And(ObjectAlreadyPlaced) .WhenAsync(AddingMinilandObject) .Then(ShouldReceiveAlreadyHaveObjectMessage) .ExecuteAsync(); } private void MinilandIsLocked() { var miniland = _minilandProvider.GetMiniland(_session.Character.CharacterId); miniland.State = MinilandState.Lock; } private void MinilandIsOpen() { var miniland = _minilandProvider.GetMiniland(_session.Character.CharacterId); miniland.State = MinilandState.Open; } private void MinilandObjectExists() { var item = _itemProvider.Create(3000, 1); _minilandObject = InventoryItemInstance.Create(item, _session.Character.CharacterId); _minilandObject.Type = NoscorePocketType.Miniland; _minilandObject.Slot = 0; _session.Character.InventoryService[_minilandObject.Id] = _minilandObject; } private void ObjectAlreadyPlaced() { var mapObject = new MapDesignObject { MinilandObjectId = Guid.NewGuid(), MapX = 5, MapY = 5 }; _minilandProvider.AddMinilandObject(mapObject, _session.Character.CharacterId, _minilandObject); } private async Task AddingNonExistentObject() { var addobjPacket = new AddobjPacket { Slot = 99, PositionX = 5, PositionY = 5 }; await _addobjPacketHandler.ExecuteAsync(addobjPacket, _session); } private async Task AddingMinilandObject() { var addobjPacket = new AddobjPacket { Slot = 0, PositionX = 5, PositionY = 5 }; await _addobjPacketHandler.ExecuteAsync(addobjPacket, _session); } private void NoObjectShouldBeAdded() { Assert.AreEqual(0, _session.Character.MapInstance.MapDesignObjects.Count); } private void ObjectShouldBeAdded() { Assert.AreEqual(1, _session.Character.MapInstance.MapDesignObjects.Count); } private void ShouldReceiveInstallationOnlyLockModeMessage() { var lastPacket = (MsgiPacket?)_session.LastPackets.FirstOrDefault(s => s is MsgiPacket); Assert.AreEqual(Game18NConstString.InstallationOnlyLockMode, lastPacket?.Message); } private void ShouldReceiveAlreadyHaveObjectMessage() { var lastPacket = (MsgiPacket?)_session.LastPackets.FirstOrDefault(s => s is MsgiPacket); Assert.AreEqual(Game18NConstString.YouAlreadyHaveThisMinilandObject, lastPacket?.Message); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Miniland/MJoinPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Dto; using NosCore.Data.WebApi; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MapChangeService; using NosCore.PacketHandlers.Miniland; using NosCore.Packets.ClientPackets.Miniland; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Character = NosCore.Data.WebApi.Character; namespace NosCore.PacketHandlers.Tests.Miniland { [TestClass] public class MJoinPacketHandlerTests { private static readonly ILogger<MJoinPacketHandlerTests> Logger = new Mock<ILogger<MJoinPacketHandlerTests>>().Object; private readonly Mock<IPubSubHub> ConnectedAccountHttpClient = TestHelpers.Instance.PubSubHub; private readonly Mock<IFriendHub> FriendHttpClient = TestHelpers.Instance.FriendHttpClient; private Mock<IMinilandService> MinilandProvider = null!; private MJoinPacketHandler MjoinPacketHandler = null!; private ClientSession Session = null!; private ClientSession TargetSession = null!; private Mock<IMapChangeService> MapChangeService = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); TargetSession = await TestHelpers.Instance.GenerateSessionAsync(); MinilandProvider = new Mock<IMinilandService>(); MapChangeService = new Mock<IMapChangeService>(); MjoinPacketHandler = new MJoinPacketHandler(FriendHttpClient.Object, MinilandProvider.Object, MapChangeService.Object, TestHelpers.Instance.SessionRegistry); } [TestMethod] public async Task JoinNonConnectedPlayerShouldFail() { await new Spec("Join non connected player should fail") .WhenAsync(JoiningNonConnectedPlayer) .Then(MapShouldNotChange) .ExecuteAsync(); } [TestMethod] public async Task JoinNonFriendShouldFail() { await new Spec("Join non friend should fail") .WhenAsync(JoiningNonFriend) .Then(MapShouldNotChange) .ExecuteAsync(); } [TestMethod] public async Task JoinClosedMinilandShouldFail() { await new Spec("Join closed miniland should fail") .Given(TargetIsFriend) .And(MinilandIsLocked) .WhenAsync(JoiningTargetMiniland) .Then(ShouldReceiveMinilandLockedMessage) .And(MapShouldNotChange) .ExecuteAsync(); } [TestMethod] public async Task JoinOpenMinilandShouldSucceed() { await new Spec("Join open miniland should succeed") .Given(TargetIsFriend) .And(MinilandIsOpen) .WhenAsync(JoiningTargetMiniland) .Then(MapShouldChangeToMiniland) .ExecuteAsync(); } [TestMethod] public async Task JoinPrivateMinilandAsFriendShouldSucceed() { await new Spec("Join private miniland as friend should succeed") .Given(TargetIsFriend) .And(MinilandIsPrivate) .WhenAsync(JoiningTargetMiniland) .Then(MapShouldChangeToMiniland) .ExecuteAsync(); } [TestMethod] public async Task JoinPrivateMinilandWhenBlockedShouldFail() { await new Spec("Join private miniland when blocked should fail") .Given(TargetHasBlockedSession) .And(MinilandIsPrivate) .WhenAsync(JoiningTargetMiniland) .Then(ShouldReceiveMinilandLockedMessage) .And(MapShouldNotChange) .ExecuteAsync(); } private void TargetIsFriend() { ConnectedAccountHttpClient.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber>() { new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = TargetSession.Character.CharacterId } }, new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = Session.Character.CharacterId } } }); FriendHttpClient.Setup(s => s.GetFriendsAsync(It.IsAny<long>())).ReturnsAsync(new List<CharacterRelationStatus> { new() { CharacterId = TargetSession.Character.CharacterId, IsConnected = true, CharacterName = TargetSession.Character.Name, RelationType = CharacterRelationType.Friend } }); } private void TargetHasBlockedSession() { ConnectedAccountHttpClient.Setup(s => s.GetSubscribersAsync()) .ReturnsAsync(new List<Subscriber>() { new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = TargetSession.Character.CharacterId } }, new Subscriber { ChannelId = 1, ConnectedCharacter = new Character { Id = Session.Character.CharacterId } } }); FriendHttpClient.Setup(s => s.GetFriendsAsync(It.IsAny<long>())).ReturnsAsync(new List<CharacterRelationStatus> { new() { CharacterId = TargetSession.Character.CharacterId, IsConnected = true, CharacterName = TargetSession.Character.Name, RelationType = CharacterRelationType.Blocked } }); } private void MinilandIsLocked() { MinilandProvider.Setup(s => s.GetMiniland(It.IsAny<long>())).Returns(new GameObject.Services.MinilandService.Miniland { MapInstanceId = TestHelpers.Instance.MinilandId, State = MinilandState.Lock }); } private void MinilandIsOpen() { MinilandProvider.Setup(s => s.GetMiniland(It.IsAny<long>())).Returns(new GameObject.Services.MinilandService.Miniland { MapInstanceId = TestHelpers.Instance.MinilandId, State = MinilandState.Open }); } private void MinilandIsPrivate() { MinilandProvider.Setup(s => s.GetMiniland(It.IsAny<long>())).Returns(new GameObject.Services.MinilandService.Miniland { MapInstanceId = TestHelpers.Instance.MinilandId, State = MinilandState.Private }); } private async Task JoiningNonConnectedPlayer() { var mjoinPacket = new MJoinPacket { VisualId = 50, Type = VisualType.Player }; await MjoinPacketHandler.ExecuteAsync(mjoinPacket, Session); } private async Task JoiningNonFriend() { var mjoinPacket = new MJoinPacket { VisualId = TargetSession.Character.CharacterId, Type = VisualType.Player }; await MjoinPacketHandler.ExecuteAsync(mjoinPacket, Session); } private async Task JoiningTargetMiniland() { var mjoinPacket = new MJoinPacket { VisualId = TargetSession.Character.CharacterId, Type = VisualType.Player }; await MjoinPacketHandler.ExecuteAsync(mjoinPacket, Session); } private void MapShouldNotChange() { MapChangeService.Verify(x => x.ChangeMapInstanceAsync(Session, TestHelpers.Instance.MinilandId, 5, 8), Times.Never); } private void MapShouldChangeToMiniland() { MapChangeService.Verify(x => x.ChangeMapInstanceAsync(Session, TestHelpers.Instance.MinilandId, 5, 8), Times.Once); } private void ShouldReceiveMinilandLockedMessage() { var lastpacket = (InfoiPacket?)Session.LastPackets.FirstOrDefault(s => s is InfoiPacket); Assert.AreEqual(lastpacket?.Message, Game18NConstString.MinilandLocked); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Miniland/MinilandObjects/MgPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.Data.StaticEntities; using NosCore.GameObject.Map; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.PacketHandlers.Miniland.MinilandObjects; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.ClientPackets.Miniland; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.Miniland; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Miniland.MinilandObjects { [TestClass] public class MgPacketHandlerTests { private MgPacketHandler _mgPacketHandler = null!; private ClientSession _session = null!; private IMinilandService _minilandProvider = null!; private InventoryItemInstance _minilandObject = null!; private ItemGenerationService _itemProvider = null!; private List<ItemDto> MinilandItems => new() { new Item { Type = NoscorePocketType.Miniland, VNum = 3000, ItemType = ItemType.Minigame, MinilandObjectPoint = 100, IsWarehouse = false, EquipmentSlot = EquipmentType.Amulet }, new Item { Type = NoscorePocketType.Miniland, VNum = 3001, ItemType = ItemType.Minigame, MinilandObjectPoint = 100, IsWarehouse = true } }; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); await TestHelpers.Instance.MinilandDao.TryInsertOrUpdateAsync(new MinilandDto() { OwnerId = _session.Character.CharacterId, }); _minilandProvider = new MinilandService(TestHelpers.Instance.MapInstanceAccessorService, TestHelpers.Instance.FriendHttpClient.Object, new List<MapDto> {new Map { MapId = 20001, NameI18NKey = "miniland", Data = new byte[] {} }}, TestHelpers.Instance.MinilandDao, TestHelpers.Instance.MinilandObjectDao, new MinilandRegistry()); await _minilandProvider.InitializeAsync(_session.Character, TestHelpers.Instance.MapInstanceGeneratorService); var miniland = _minilandProvider.GetMiniland(_session.Character.CharacterId); var mapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetMapInstance(miniland.MapInstanceId)!; _session.Character.MapInstance = mapInstance; _itemProvider = new ItemGenerationService( MinilandItems, NullLoggerFactory.Instance, TestHelpers.Instance.LogLanguageLocalizer); _mgPacketHandler = new MgPacketHandler(_minilandProvider, _itemProvider); } [TestMethod] public async Task PlayMinigameWithoutObjectShouldFail() { await new Spec("Play minigame without object should fail") .WhenAsync(PlayingMinigameWithoutObject) .Then(NothingShouldHappen) .ExecuteAsync(); } [TestMethod] public async Task PlayMinigameWithWarehouseShouldFail() { await new Spec("Play minigame with warehouse should fail") .Given(WarehouseObjectExistsAndPlaced) .WhenAsync(PlayingMinigameOnWarehouse) .Then(NothingShouldHappen) .ExecuteAsync(); } [TestMethod] public async Task PlayMinigameWithZeroDurabilityShouldFail() { await new Spec("Play minigame with zero durability should fail") .Given(MinigameObjectExistsAndPlacedWithZeroDurability) .WhenAsync(PlayingMinigame) .Then(ShouldReceiveRestoreDurabilityMessage) .ExecuteAsync(); } [TestMethod] public async Task PlayMinigameWithZeroMinilandPointsShouldAskConfirmation() { await new Spec("Play minigame with zero miniland points should ask confirmation") .Given(MinigameObjectExistsAndPlaced) .And(MinilandHasZeroPoints) .WhenAsync(PlayingMinigame) .Then(ShouldReceiveConfirmationQuestion) .ExecuteAsync(); } [TestMethod] public async Task ShowManagementShouldSucceed() { await new Spec("Show management should succeed") .Given(MinigameObjectExistsAndPlaced) .WhenAsync(ShowingManagement) .Then(ShouldReceiveManagementPacket) .ExecuteAsync(); } [TestMethod] public async Task ShowGiftsShouldSucceed() { await new Spec("Show gifts should succeed") .Given(MinigameObjectExistsAndPlaced) .WhenAsync(ShowingGifts) .Then(ShouldReceiveGiftsPacket) .ExecuteAsync(); } private void MinigameObjectExistsAndPlaced() { var item = _itemProvider.Create(3000, 1); item.DurabilityPoint = 1000; _minilandObject = InventoryItemInstance.Create(item, _session.Character.CharacterId); _minilandObject.Type = NoscorePocketType.Miniland; _minilandObject.Slot = 0; _session.Character.InventoryService[_minilandObject.Id] = _minilandObject; var mapObject = new MapDesignObject { MinilandObjectId = Guid.NewGuid(), MapX = 5, MapY = 5, Slot = 0 }; _minilandProvider.AddMinilandObject(mapObject, _session.Character.CharacterId, _minilandObject); } private void MinigameObjectExistsAndPlacedWithZeroDurability() { var item = _itemProvider.Create(3000, 1); item.DurabilityPoint = 0; _minilandObject = InventoryItemInstance.Create(item, _session.Character.CharacterId); _minilandObject.Type = NoscorePocketType.Miniland; _minilandObject.Slot = 0; _session.Character.InventoryService[_minilandObject.Id] = _minilandObject; var mapObject = new MapDesignObject { MinilandObjectId = Guid.NewGuid(), MapX = 5, MapY = 5, Slot = 0 }; _minilandProvider.AddMinilandObject(mapObject, _session.Character.CharacterId, _minilandObject); } private void WarehouseObjectExistsAndPlaced() { var item = _itemProvider.Create(3001, 1); _minilandObject = InventoryItemInstance.Create(item, _session.Character.CharacterId); _minilandObject.Type = NoscorePocketType.Miniland; _minilandObject.Slot = 0; _session.Character.InventoryService[_minilandObject.Id] = _minilandObject; var mapObject = new MapDesignObject { MinilandObjectId = Guid.NewGuid(), MapX = 5, MapY = 5, Slot = 0 }; _minilandProvider.AddMinilandObject(mapObject, _session.Character.CharacterId, _minilandObject); } private void MinilandHasZeroPoints() { var miniland = _minilandProvider.GetMiniland(_session.Character.CharacterId); miniland.MinilandPoint = 0; } private async Task PlayingMinigameWithoutObject() { var minigamePacket = new MinigamePacket { Type = 1, Id = 99, MinigameVNum = 3000 }; await _mgPacketHandler.ExecuteAsync(minigamePacket, _session); } private async Task PlayingMinigameOnWarehouse() { var minigamePacket = new MinigamePacket { Type = 1, Id = 0, MinigameVNum = 3001 }; await _mgPacketHandler.ExecuteAsync(minigamePacket, _session); } private async Task PlayingMinigame() { var minigamePacket = new MinigamePacket { Type = 1, Id = 0, MinigameVNum = 3000 }; await _mgPacketHandler.ExecuteAsync(minigamePacket, _session); } private async Task ShowingManagement() { var minigamePacket = new MinigamePacket { Type = 5, Id = 0, MinigameVNum = 3000 }; await _mgPacketHandler.ExecuteAsync(minigamePacket, _session); } private async Task ShowingGifts() { var minigamePacket = new MinigamePacket { Type = 7, Id = 0, MinigameVNum = 3000 }; await _mgPacketHandler.ExecuteAsync(minigamePacket, _session); } private void NothingShouldHappen() { Assert.AreEqual(0, _session.LastPackets.Count); } private void ShouldReceiveRestoreDurabilityMessage() { var lastPacket = (SayiPacket?)_session.LastPackets.FirstOrDefault(s => s is SayiPacket); Assert.IsNotNull(lastPacket); Assert.AreEqual(Game18NConstString.NeedToRestoreDurability, lastPacket.Message); } private void ShouldReceiveConfirmationQuestion() { var lastPacket = (QnaiPacket?)_session.LastPackets.FirstOrDefault(s => s is QnaiPacket); Assert.IsNotNull(lastPacket); Assert.AreEqual(Game18NConstString.NotEnoughProductionPointsAskStart, lastPacket.Question); } private void ShouldReceiveManagementPacket() { var lastPacket = (MloMgPacket?)_session.LastPackets.FirstOrDefault(s => s is MloMgPacket); Assert.IsNotNull(lastPacket); } private void ShouldReceiveGiftsPacket() { var lastPacket = (MloPmgPacket?)_session.LastPackets.FirstOrDefault(s => s is MloPmgPacket); Assert.IsNotNull(lastPacket); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Miniland/MinilandObjects/UseobjPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.Data.Enumerations.Miniland; using NosCore.Data.StaticEntities; using NosCore.Data.WebApi; using NosCore.GameObject.Map; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.WarehouseHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.PacketHandlers.Miniland.MinilandObjects; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Miniland; using NosCore.Packets.ServerPackets.Warehouse; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using UseObjPacket = NosCore.Packets.ClientPackets.Miniland.UseObjPacket; namespace NosCore.PacketHandlers.Tests.Miniland.MinilandObjects { [TestClass] public class UseobjPacketHandlerTests { private UseobjPacketHandler _useobjPacketHandler = null!; private ClientSession _session = null!; private IMinilandService _minilandProvider = null!; private InventoryItemInstance _minilandObject = null!; private Mock<IWarehouseHub> _warehouseHubMock = null!; private Mock<IDao<IItemInstanceDto?, Guid>> _itemInstanceDaoMock = null!; private ItemGenerationService _itemProvider = null!; private List<ItemDto> MinilandItems => new() { new Item { Type = NoscorePocketType.Miniland, VNum = 3000, ItemType = ItemType.Minigame, MinilandObjectPoint = 100, IsWarehouse = false, EquipmentSlot = EquipmentType.Amulet }, new Item { Type = NoscorePocketType.Miniland, VNum = 3001, ItemType = ItemType.Minigame, MinilandObjectPoint = 50, IsWarehouse = true } }; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); await TestHelpers.Instance.MinilandDao.TryInsertOrUpdateAsync(new MinilandDto() { OwnerId = _session.Character.CharacterId, }); _minilandProvider = new MinilandService(TestHelpers.Instance.MapInstanceAccessorService, TestHelpers.Instance.FriendHttpClient.Object, new List<MapDto> {new Map { MapId = 20001, NameI18NKey = "miniland", Data = new byte[] {} }}, TestHelpers.Instance.MinilandDao, TestHelpers.Instance.MinilandObjectDao, new MinilandRegistry()); await _minilandProvider.InitializeAsync(_session.Character, TestHelpers.Instance.MapInstanceGeneratorService); var miniland = _minilandProvider.GetMiniland(_session.Character.CharacterId); var mapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetMapInstance(miniland.MapInstanceId)!; _session.Character.MapInstance = mapInstance; _warehouseHubMock = new Mock<IWarehouseHub>(); _itemInstanceDaoMock = new Mock<IDao<IItemInstanceDto?, Guid>>(); _itemProvider = new ItemGenerationService( MinilandItems, NullLoggerFactory.Instance, TestHelpers.Instance.LogLanguageLocalizer); _useobjPacketHandler = new UseobjPacketHandler(_minilandProvider, _warehouseHubMock.Object, _itemInstanceDaoMock.Object, _itemProvider); } [TestMethod] public async Task UseObjectWithoutObjectShouldFail() { await new Spec("Use object without object should fail") .WhenAsync(UsingNonExistentObject) .Then(NothingShouldHappen) .ExecuteAsync(); } [TestMethod] public async Task UseMinigameObjectShouldShowInfo() { await new Spec("Use minigame object should show info") .Given(MinigameObjectExistsAndPlaced) .WhenAsync(UsingMinigameObject) .Then(ShouldReceiveMinigameInfoPacket) .ExecuteAsync(); } [TestMethod] public async Task UseWarehouseObjectShouldShowWarehouse() { await new Spec("Use warehouse object should show warehouse") .Given(WarehouseObjectExistsAndPlaced) .And(WarehouseHubReturnsEmptyList) .WhenAsync(UsingWarehouseObject) .Then(ShouldReceiveWarehousePacket) .ExecuteAsync(); } private void MinigameObjectExistsAndPlaced() { var item = _itemProvider.Create(3000, 1); item.DurabilityPoint = 1000; _minilandObject = InventoryItemInstance.Create(item, _session.Character.CharacterId); _minilandObject.Type = NoscorePocketType.Miniland; _minilandObject.Slot = 0; _session.Character.InventoryService[_minilandObject.Id] = _minilandObject; var mapObject = new MapDesignObject { MinilandObjectId = Guid.NewGuid(), MapX = 5, MapY = 5, Slot = 0 }; _minilandProvider.AddMinilandObject(mapObject, _session.Character.CharacterId, _minilandObject); } private void WarehouseObjectExistsAndPlaced() { var item = _itemProvider.Create(3001, 1); _minilandObject = InventoryItemInstance.Create(item, _session.Character.CharacterId); _minilandObject.Type = NoscorePocketType.Miniland; _minilandObject.Slot = 0; _session.Character.InventoryService[_minilandObject.Id] = _minilandObject; var mapObject = new MapDesignObject { MinilandObjectId = Guid.NewGuid(), MapX = 5, MapY = 5, Slot = 0 }; _minilandProvider.AddMinilandObject(mapObject, _session.Character.CharacterId, _minilandObject); } private void WarehouseHubReturnsEmptyList() { var characterId = _session.Character.CharacterId; _warehouseHubMock.Setup(x => x.GetWarehouseItems(null, characterId, WarehouseType.Warehouse, null)) .ReturnsAsync(new List<WarehouseLink>()); } private async Task UsingNonExistentObject() { var useobjPacket = new UseObjPacket(_session.Character.Name) { Slot = 99 }; await _useobjPacketHandler.ExecuteAsync(useobjPacket, _session); } private async Task UsingMinigameObject() { var useobjPacket = new UseObjPacket(_session.Character.Name) { Slot = 0 }; await _useobjPacketHandler.ExecuteAsync(useobjPacket, _session); } private async Task UsingWarehouseObject() { var useobjPacket = new UseObjPacket(_session.Character.Name) { Slot = 0 }; await _useobjPacketHandler.ExecuteAsync(useobjPacket, _session); } private void NothingShouldHappen() { Assert.AreEqual(0, _session.LastPackets.Count); } private void ShouldReceiveMinigameInfoPacket() { var lastPacket = (MloInfoPacket?)_session.LastPackets.FirstOrDefault(s => s is MloInfoPacket); Assert.IsNotNull(lastPacket); } private void ShouldReceiveWarehousePacket() { var lastPacket = (StashAllPacket?)_session.LastPackets.FirstOrDefault(s => s is StashAllPacket); Assert.IsNotNull(lastPacket); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Miniland/MlEditPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Dto; using NosCore.Data.StaticEntities; using NosCore.Data.WebApi; using NosCore.GameObject.Map; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Miniland; using NosCore.Packets.ClientPackets.Miniland; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Miniland; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Miniland { [TestClass] public class MlEditPacketHandlerTests { private static readonly ILogger<MlEditPacketHandlerTests> Logger = new Mock<ILogger<MlEditPacketHandlerTests>>().Object; private MlEditPacketHandler MlEditPacketHandler = null!; private ClientSession Session = null!; private IMinilandService MinilandProvider = null!; private ClientSession Session2 = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Session2 = await TestHelpers.Instance.GenerateSessionAsync(); var session3 = await TestHelpers.Instance.GenerateSessionAsync(); TestHelpers.Instance.FriendHttpClient .Setup(s => s.GetFriendsAsync(It.IsAny<long>())) .ReturnsAsync(new List<CharacterRelationStatus> { new() { CharacterId = Session2.Character.CharacterId, CharacterName = Session2.Character.Name, IsConnected = true, RelationType = CharacterRelationType.Friend, CharacterRelationId = Guid.NewGuid() } }); await TestHelpers.Instance.MinilandDao.TryInsertOrUpdateAsync(new MinilandDto() { OwnerId = Session.Character.CharacterId, }); MinilandProvider = new MinilandService(TestHelpers.Instance.MapInstanceAccessorService, TestHelpers.Instance.FriendHttpClient.Object, new List<MapDto> {new Map { MapId = 20001, NameI18NKey = "miniland", Data = new byte[] {} }}, TestHelpers.Instance.MinilandDao, TestHelpers.Instance.MinilandObjectDao, new MinilandRegistry()); await MinilandProvider.InitializeAsync(Session.Character, TestHelpers.Instance.MapInstanceGeneratorService); var miniland = MinilandProvider.GetMiniland(Session.Character.CharacterId); await TestHelpers.Instance.MapChangeService.ChangeMapInstanceAsync(Session, miniland.MapInstanceId); await TestHelpers.Instance.MapChangeService.ChangeMapInstanceAsync(Session2, miniland.MapInstanceId); await TestHelpers.Instance.MapChangeService.ChangeMapInstanceAsync(session3, miniland.MapInstanceId); MlEditPacketHandler = new MlEditPacketHandler(MinilandProvider); } [TestMethod] public async Task CanChangeMinilandMessage() { await new Spec("Can change miniland message") .WhenAsync(ChangingMinilandMessageAsync) .Then(MinilandMessageShouldBeChanged) .And(InfoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task CanChangeMinilandMessageWithSpace() { await new Spec("Can change miniland message with space") .WhenAsync(ChangingMinilandMessageWithSpaceAsync) .Then(MinilandMessageWithSpaceShouldBeChanged) .And(InfoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task CanLockMiniland() { await new Spec("Can lock miniland") .WhenAsync(LockingMinilandAsync) .Then(MinilandShouldBeLocked) .ExecuteAsync(); } [TestMethod] public async Task CanOpenMiniland() { await new Spec("Can open miniland") .WhenAsync(OpeningMinilandAsync) .Then(MinilandShouldBeOpen) .ExecuteAsync(); } [TestMethod] public async Task CanSetMinilandPrivate() { await new Spec("Can set miniland private") .WhenAsync(SettingMinilandPrivateAsync) .Then(MinilandShouldBePrivate) .ExecuteAsync(); } [TestMethod] public async Task PrivateKicksEveryoneButFriend() { await new Spec("Private kicks everyone but friend") .WhenAsync(SettingMinilandPrivateAsync) .Then(OnlyOwnerAndFriendShouldRemain) .ExecuteAsync(); } [TestMethod] public async Task LockKicksEveryone() { await new Spec("Lock kicks everyone") .WhenAsync(LockingMinilandAsync) .Then(OnlyOwnerShouldRemain) .ExecuteAsync(); } private async Task ChangingMinilandMessageAsync() { var mleditPacket = new MLEditPacket() { MinilandInfo = "test", Type = 1 }; await MlEditPacketHandler.ExecuteAsync(mleditPacket, Session); } private async Task ChangingMinilandMessageWithSpaceAsync() { var mleditPacket = new MLEditPacket() { MinilandInfo = "Test Test", Type = 1 }; await MlEditPacketHandler.ExecuteAsync(mleditPacket, Session); } private async Task LockingMinilandAsync() { var mleditPacket = new MLEditPacket() { Parameter = MinilandState.Lock, Type = 2 }; await MlEditPacketHandler.ExecuteAsync(mleditPacket, Session); } private async Task OpeningMinilandAsync() { var mleditPacket = new MLEditPacket() { Parameter = MinilandState.Open, Type = 2 }; await MlEditPacketHandler.ExecuteAsync(mleditPacket, Session); } private async Task SettingMinilandPrivateAsync() { var mleditPacket = new MLEditPacket() { Parameter = MinilandState.Private, Type = 2 }; await MlEditPacketHandler.ExecuteAsync(mleditPacket, Session); } private void MinilandMessageShouldBeChanged() { var miniland = MinilandProvider.GetMiniland(Session.Character.CharacterId); Assert.AreEqual("test", miniland.MinilandMessage); var lastpacket2 = (MlintroPacket?)Session.LastPackets.FirstOrDefault(s => s is MlintroPacket); Assert.AreEqual("test", lastpacket2?.Intro); } private void MinilandMessageWithSpaceShouldBeChanged() { var miniland = MinilandProvider.GetMiniland(Session.Character.CharacterId); Assert.AreEqual("Test Test", miniland.MinilandMessage); var lastpacket2 = (MlintroPacket?)Session.LastPackets.FirstOrDefault(s => s is MlintroPacket); Assert.AreEqual("Test^Test", lastpacket2?.Intro); } private void InfoPacketShouldBeSent() { var lastpacket = (InfoiPacket?)Session.LastPackets.FirstOrDefault(s => s is InfoiPacket); Assert.AreEqual(Game18NConstString.MinilandChanged, lastpacket!.Message); } private void MinilandShouldBeLocked() { var lastpacket = (MsgiPacket?)Session.LastPackets.FirstOrDefault(s => s is MsgiPacket); Assert.AreEqual(lastpacket?.Message, Game18NConstString.MinilandLocked); var miniland = MinilandProvider.GetMiniland(Session.Character.CharacterId); Assert.AreEqual(MinilandState.Lock, miniland.State); } private void MinilandShouldBeOpen() { var lastpacket = (MsgiPacket?)Session.LastPackets.FirstOrDefault(s => s is MsgiPacket); Assert.AreEqual(lastpacket?.Message, Game18NConstString.MinilandPublic); var miniland = MinilandProvider.GetMiniland(Session.Character.CharacterId); Assert.AreEqual(MinilandState.Open, miniland.State); } private void MinilandShouldBePrivate() { var lastpacket = (MsgiPacket?)Session.LastPackets.FirstOrDefault(s => s is MsgiPacket); Assert.AreEqual(lastpacket?.Message, Game18NConstString.MinilandPrivate); var miniland = MinilandProvider.GetMiniland(Session.Character.CharacterId); Assert.AreEqual(MinilandState.Private, miniland.State); } private void OnlyOwnerAndFriendShouldRemain() { var miniland = MinilandProvider.GetMiniland(Session.Character.CharacterId); Assert.IsFalse(TestHelpers.Instance.SessionRegistry.GetCharacters() .Where(s => s.MapInstanceId == miniland.MapInstanceId) .Any(s => s.VisualId != Session.Character.CharacterId && s.VisualId != Session2.Character.VisualId)); Assert.AreEqual(2, TestHelpers.Instance.SessionRegistry .GetCharacters().Count(s => s.MapInstanceId == miniland.MapInstanceId)); } private void OnlyOwnerShouldRemain() { var miniland = MinilandProvider.GetMiniland(Session.Character.CharacterId); Assert.IsFalse(TestHelpers.Instance.SessionRegistry.GetCharacters() .Where(s => s.MapInstanceId == miniland.MapInstanceId) .Any(s => s.VisualId != Session.Character.CharacterId)); Assert.AreEqual(1, TestHelpers.Instance.SessionRegistry .GetCharacters().Count(s => s.MapInstanceId == miniland.MapInstanceId)); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Miniland/RmvobjPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.Data.StaticEntities; using NosCore.GameObject.Map; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.PacketHandlers.Miniland; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.ClientPackets.Miniland; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Miniland { [TestClass] public class RmvobjPacketHandlerTests { private RmvobjPacketHandler _rmvobjPacketHandler = null!; private ClientSession _session = null!; private IMinilandService _minilandProvider = null!; private InventoryItemInstance _minilandObject = null!; private ItemGenerationService _itemProvider = null!; private List<ItemDto> MinilandItems => new() { new Item { Type = NoscorePocketType.Miniland, VNum = 3000, ItemType = ItemType.Minigame, MinilandObjectPoint = 100 } }; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); await TestHelpers.Instance.MinilandDao.TryInsertOrUpdateAsync(new MinilandDto() { OwnerId = _session.Character.CharacterId, }); _minilandProvider = new MinilandService(TestHelpers.Instance.MapInstanceAccessorService, TestHelpers.Instance.FriendHttpClient.Object, new List<MapDto> {new Map { MapId = 20001, NameI18NKey = "miniland", Data = new byte[] {} }}, TestHelpers.Instance.MinilandDao, TestHelpers.Instance.MinilandObjectDao, new MinilandRegistry()); await _minilandProvider.InitializeAsync(_session.Character, TestHelpers.Instance.MapInstanceGeneratorService); var miniland = _minilandProvider.GetMiniland(_session.Character.CharacterId); var mapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetMapInstance(miniland.MapInstanceId)!; _session.Character.MapInstance = mapInstance; _rmvobjPacketHandler = new RmvobjPacketHandler(_minilandProvider); _itemProvider = new ItemGenerationService( MinilandItems, NullLoggerFactory.Instance, TestHelpers.Instance.LogLanguageLocalizer); } [TestMethod] public async Task RemoveObjectWithoutItemShouldFail() { await new Spec("Remove object without item should fail") .Given(MinilandIsLocked) .WhenAsync(RemovingNonExistentObject) .Then(NothingShouldChange) .ExecuteAsync(); } [TestMethod] public async Task RemoveObjectWhenMinilandNotLockedShouldFail() { await new Spec("Remove object when miniland not locked should fail") .Given(MinilandObjectExistsAndPlaced) .And(MinilandIsOpen) .WhenAsync(RemovingMinilandObject) .Then(ShouldReceiveRemoveOnlyLockModeMessage) .And(ObjectShouldStillExist) .ExecuteAsync(); } [TestMethod] public async Task RemoveObjectWhenLockedShouldSucceed() { await new Spec("Remove object when locked should succeed") .Given(MinilandObjectExistsAndPlaced) .And(MinilandIsLocked) .WhenAsync(RemovingMinilandObject) .Then(ObjectShouldBeRemoved) .ExecuteAsync(); } [TestMethod] public async Task RemoveNonPlacedObjectShouldFail() { await new Spec("Remove non placed object should fail") .Given(MinilandObjectExistsButNotPlaced) .And(MinilandIsLocked) .WhenAsync(RemovingMinilandObject) .Then(NothingShouldChange) .ExecuteAsync(); } private void MinilandIsLocked() { var miniland = _minilandProvider.GetMiniland(_session.Character.CharacterId); miniland.State = MinilandState.Lock; } private void MinilandIsOpen() { var miniland = _minilandProvider.GetMiniland(_session.Character.CharacterId); miniland.State = MinilandState.Open; } private void MinilandObjectExistsAndPlaced() { var item = _itemProvider.Create(3000, 1); _minilandObject = InventoryItemInstance.Create(item, _session.Character.CharacterId); _minilandObject.Type = NoscorePocketType.Miniland; _minilandObject.Slot = 0; _session.Character.InventoryService[_minilandObject.Id] = _minilandObject; var mapObject = new MapDesignObject { MinilandObjectId = Guid.NewGuid(), MapX = 5, MapY = 5 }; _minilandProvider.AddMinilandObject(mapObject, _session.Character.CharacterId, _minilandObject); } private void MinilandObjectExistsButNotPlaced() { var item = _itemProvider.Create(3000, 1); _minilandObject = InventoryItemInstance.Create(item, _session.Character.CharacterId); _minilandObject.Type = NoscorePocketType.Miniland; _minilandObject.Slot = 0; _session.Character.InventoryService[_minilandObject.Id] = _minilandObject; } private async Task RemovingNonExistentObject() { var rmvobjPacket = new RmvobjPacket { Slot = 99 }; await _rmvobjPacketHandler.ExecuteAsync(rmvobjPacket, _session); } private async Task RemovingMinilandObject() { var rmvobjPacket = new RmvobjPacket { Slot = 0 }; await _rmvobjPacketHandler.ExecuteAsync(rmvobjPacket, _session); } private void NothingShouldChange() { var msgiPacket = _session.LastPackets.FirstOrDefault(s => s is MsgiPacket); Assert.IsNull(msgiPacket); } private void ObjectShouldStillExist() { Assert.AreEqual(1, _session.Character.MapInstance.MapDesignObjects.Count); } private void ObjectShouldBeRemoved() { Assert.AreEqual(0, _session.Character.MapInstance.MapDesignObjects.Count); } private void ShouldReceiveRemoveOnlyLockModeMessage() { var lastPacket = (MsgiPacket?)_session.LastPackets.FirstOrDefault(s => s is MsgiPacket); Assert.AreEqual(Game18NConstString.RemoveOnlyLockMode, lastPacket?.Message); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Movement/ClientDirPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Movement; using NosCore.Packets.ClientPackets.Movement; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Movement { [TestClass] public class ClientDirPacketHandlerTests { private ClientDirPacketHandler Handler = null!; private ClientSession Session = null!; private readonly ILogger<ClientDirPacketHandler> Logger = new Mock<ILogger<ClientDirPacketHandler>>().Object; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Handler = new ClientDirPacketHandler( Logger, TestHelpers.Instance.LogLanguageLocalizer); } [TestMethod] public async Task ChangingDirectionForPlayerShouldExecute() { await new Spec("Changing direction for player should execute") .Given(CharacterIsOnMap) .WhenAsync(ChangingDirectionForPlayer) .Then(HandlerShouldComplete) .ExecuteAsync(); } [TestMethod] public async Task ChangingDirectionForUnknownVisualTypeShouldBeIgnored() { await new Spec("Changing direction for unknown visual type should be ignored") .Given(CharacterIsOnMap) .WhenAsync(ChangingDirectionForUnknownVisualType) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private async Task ChangingDirectionForPlayer() { await Handler.ExecuteAsync(new ClientDirPacket { VisualType = VisualType.Player, VisualId = Session.Character.VisualId, Direction = 2 }, Session); } private async Task ChangingDirectionForUnknownVisualType() { await Handler.ExecuteAsync(new ClientDirPacket { VisualType = (VisualType)99, VisualId = Session.Character.VisualId, Direction = 2 }, Session); } private void HandlerShouldComplete() { Assert.AreEqual(0, Session.LastPackets.Count); } private void NoPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Movement/PreqPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations.Map; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.MapChangeService; using NosCore.GameObject.Services.MinilandService; using NosCore.PacketHandlers.Movement; using NosCore.Packets.ClientPackets.Movement; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.PathFinder.Interfaces; using NosCore.Tests.Shared; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Movement { [TestClass] public class PreqPacketHandlerTests { private PreqPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IHeuristic> DistanceCalculator = null!; private Mock<IMinilandService> MinilandService = null!; private Mock<IMapChangeService> MapChangeService = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); DistanceCalculator = new Mock<IHeuristic>(); MinilandService = new Mock<IMinilandService>(); MapChangeService = new Mock<IMapChangeService>(); DistanceCalculator.Setup(x => x.GetDistance(It.IsAny<(short, short)>(), It.IsAny<(short, short)>())) .Returns(10); MinilandService.Setup(x => x.GetMinilandPortals(It.IsAny<long>())) .Returns(new List<NosCore.GameObject.Map.Portal>()); Handler = new PreqPacketHandler( TestHelpers.Instance.MapInstanceAccessorService, MinilandService.Object, DistanceCalculator.Object, TestHelpers.Instance.Clock, MapChangeService.Object); } [TestMethod] public async Task UsingPortalTooQuicklyShouldShowCooldownMessage() { await new Spec("Using portal too quickly should show cooldown message") .Given(CharacterIsOnMap) .And(CharacterRecentlyUsedPortal) .WhenAsync(UsingPortal) .Then(ShouldReceiveCooldownMessage) .ExecuteAsync(); } [TestMethod] public async Task UsingPortalWhenNoPortalNearbyShouldBeIgnored() { await new Spec("Using portal when no portal nearby should be ignored") .Given(CharacterIsOnMap) .And(NoPortalNearby) .WhenAsync(UsingPortal) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ExitingFromNonBaseInstanceToBaseMapUsesCharacterMapXY() { await new Spec("Exit from non-base instance to base map uses character.MapId/MapX/MapY, not portal.DestinationX/Y") .Given(CharacterIsInsideMinilandWithBasePositionRememberedAt_, (short)1, (short)48, (short)132) .And(MinilandHasExitPortalToBaseMap) .And(PortalCooldownHasElapsed) .WhenAsync(UsingPortal) .Then(ChangeMapAsyncWasCalledWith_, (short)1, (short)48, (short)132) .And(ChangeMapInstanceAsyncWasNotCalled) .ExecuteAsync(); } [TestMethod] public async Task EnteringFromBaseMapToNonBaseInstanceUsesPortalDestination() { await new Spec("Entry from base map to non-base instance forwards the portal's destination coords") .Given(CharacterIsOnMap) .And(BaseMapHasEntryPortalToMiniland) .And(PortalCooldownHasElapsed) .WhenAsync(UsingPortal) .Then(ChangeMapInstanceAsyncWasCalledWithPortalCoords_, (short)5, (short)8) .And(ChangeMapAsyncWasNotCalled) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; Session.Character.PositionX = 10; Session.Character.PositionY = 10; } private void CharacterRecentlyUsedPortal() { Session.Character.LastPortal = TestHelpers.Instance.Clock.GetCurrentInstant(); } private void NoPortalNearby() { DistanceCalculator.Setup(x => x.GetDistance(It.IsAny<(short, short)>(), It.IsAny<(short, short)>())) .Returns(100); TestHelpers.Instance.Clock.Advance(NodaTime.Duration.FromSeconds(10)); Session.Character.LastMove = TestHelpers.Instance.Clock.GetCurrentInstant(); } private void CharacterIsInsideMinilandWithBasePositionRememberedAt_(short baseMapId, short baseX, short baseY) { var miniland = TestHelpers.Instance.MapInstanceAccessorService.GetMapInstance(TestHelpers.Instance.MinilandId)!; miniland.MapInstanceType = MapInstanceType.NormalInstance; Session.Character.MapInstance = miniland; Session.Character.MapId = baseMapId; Session.Character.MapX = baseX; Session.Character.MapY = baseY; Session.Character.PositionX = 3; Session.Character.PositionY = 8; } private void MinilandHasExitPortalToBaseMap() { var baseMap = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; Session.Character.MapInstance.Portals.Clear(); Session.Character.MapInstance.Portals.Add(new NosCore.GameObject.Map.Portal { SourceX = 3, SourceY = 8, DestinationX = 999, DestinationY = 999, SourceMapInstanceId = Session.Character.MapInstance.MapInstanceId, DestinationMapInstanceId = baseMap.MapInstanceId, DestinationMapId = 1, Type = PortalType.MapPortal, }); DistanceCalculator.Setup(x => x.GetDistance(It.IsAny<(short, short)>(), It.IsAny<(short, short)>())) .Returns(0); } private void BaseMapHasEntryPortalToMiniland() { var miniland = TestHelpers.Instance.MapInstanceAccessorService.GetMapInstance(TestHelpers.Instance.MinilandId)!; miniland.MapInstanceType = MapInstanceType.NormalInstance; Session.Character.MapInstance.Portals.Clear(); Session.Character.MapInstance.Portals.Add(new NosCore.GameObject.Map.Portal { SourceX = 10, SourceY = 10, DestinationX = 5, DestinationY = 8, SourceMapInstanceId = Session.Character.MapInstance.MapInstanceId, DestinationMapInstanceId = miniland.MapInstanceId, DestinationMapId = 20001, Type = PortalType.Miniland, }); DistanceCalculator.Setup(x => x.GetDistance(It.IsAny<(short, short)>(), It.IsAny<(short, short)>())) .Returns(0); } private void PortalCooldownHasElapsed() { TestHelpers.Instance.Clock.Advance(NodaTime.Duration.FromSeconds(10)); Session.Character.LastMove = TestHelpers.Instance.Clock.GetCurrentInstant(); Session.Character.LastPortal = TestHelpers.Instance.Clock.GetCurrentInstant() - NodaTime.Duration.FromSeconds(20); } private void ChangeMapAsyncWasCalledWith_(short expectedMapId, short expectedMapX, short expectedMapY) { MapChangeService.Verify(x => x.ChangeMapAsync( Session, It.Is<short?>(v => v == expectedMapId), It.Is<short?>(v => v == expectedMapX), It.Is<short?>(v => v == expectedMapY)), Times.Once); } private void ChangeMapAsyncWasNotCalled() { MapChangeService.Verify(x => x.ChangeMapAsync( It.IsAny<ClientSession>(), It.IsAny<short?>(), It.IsAny<short?>(), It.IsAny<short?>()), Times.Never); } private void ChangeMapInstanceAsyncWasCalledWithPortalCoords_(short expectedX, short expectedY) { MapChangeService.Verify(x => x.ChangeMapInstanceAsync( Session, It.IsAny<Guid>(), It.Is<int?>(v => v == expectedX), It.Is<int?>(v => v == expectedY)), Times.Once); } private void ChangeMapInstanceAsyncWasNotCalled() { MapChangeService.Verify(x => x.ChangeMapInstanceAsync( It.IsAny<ClientSession>(), It.IsAny<Guid>(), It.IsAny<int?>(), It.IsAny<int?>()), Times.Never); } private async Task UsingPortal() { await Handler.ExecuteAsync(new PreqPacket(), Session); } private void ShouldReceiveCooldownMessage() { var packet = Session.LastPackets.OfType<SayiPacket>().FirstOrDefault(); Assert.IsNotNull(packet); Assert.AreEqual(Game18NConstString.WillMoveShortly, packet.Message); } private void NoPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Movement/SitPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Movement; using NosCore.Packets.ClientPackets.Movement; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Movement { [TestClass] public class SitPacketHandlerTests { private SitPacketHandler Handler = null!; private ClientSession Session = null!; private ClientSession OtherSession = null!; private readonly ILogger<SitPacketHandler> Logger = new Mock<ILogger<SitPacketHandler>>().Object; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); OtherSession = await TestHelpers.Instance.GenerateSessionAsync(); Handler = new SitPacketHandler( Logger, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.SessionRegistry); } [TestMethod] public async Task SitWithOwnCharacterShouldExecute() { await new Spec("Sit with own character should execute") .Given(CharacterIsOnMap) .WhenAsync(SittingWithOwnCharacter) .Then(HandlerShouldComplete) .ExecuteAsync(); } [TestMethod] public async Task SitWithUnknownVisualTypeShouldBeIgnored() { await new Spec("Sit with unknown visual type should be ignored") .Given(CharacterIsOnMap) .WhenAsync(SittingWithUnknownVisualType) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task SittingSelfTogglesIsSittingOn() { await new Spec("Sitting self flips IsSitting from false to true") .Given(CharacterIsOnMap) .And(CharacterIsStanding) .WhenAsync(SittingWithOwnCharacter) .Then(IsSittingShouldBe_, true) .ExecuteAsync(); } [TestMethod] public async Task SittingSelfTwiceTogglesIsSittingBackOff() { await new Spec("Calling sit twice stands the character back up") .Given(CharacterIsOnMap) .And(CharacterIsStanding) .WhenAsync(SittingWithOwnCharacter) .AndAsync(SittingWithOwnCharacter) .Then(IsSittingShouldBe_, false) .ExecuteAsync(); } [TestMethod] public async Task AttemptingToSitAnotherPlayerDoesNotFlipTheirState() { await new Spec("A sit packet targeting a different player's VisualId does not flip their sit state") .Given(CharacterIsOnMap) .And(CharacterIsStanding) .And(OtherPlayerIsOnSameMap) .And(OtherPlayerIsStanding) .WhenAsync(SittingOtherPlayer) .Then(OtherPlayerIsSittingShouldBe_, false) .And(IsSittingShouldBe_, false) .ExecuteAsync(); } [TestMethod] public async Task NonExistentPlayerIdIsSilentlyIgnored() { await new Spec("Sit packet targeting a VisualId not in the session registry is ignored") .Given(CharacterIsOnMap) .And(CharacterIsStanding) .WhenAsync(SittingOnUnknownVisualId) .Then(IsSittingShouldBe_, false) .ExecuteAsync(); } private void CharacterIsStanding() { Session.Character.IsSitting = false; } private void OtherPlayerIsStanding() { OtherSession.Character.IsSitting = false; } private void OtherPlayerIsOnSameMap() { OtherSession.Character.MapInstance = Session.Character.MapInstance; } private async Task SittingOtherPlayer() { await Handler.ExecuteAsync(new SitPacket { Users = new List<SitSubPacket?> { new SitSubPacket { VisualType = VisualType.Player, VisualId = OtherSession.Character.VisualId } } }, Session); } private async Task SittingOnUnknownVisualId() { await Handler.ExecuteAsync(new SitPacket { Users = new List<SitSubPacket?> { new SitSubPacket { VisualType = VisualType.Player, VisualId = int.MaxValue } } }, Session); } private void IsSittingShouldBe_(bool expected) => Assert.AreEqual(expected, Session.Character.IsSitting); private void OtherPlayerIsSittingShouldBe_(bool expected) => Assert.AreEqual(expected, OtherSession.Character.IsSitting); private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private async Task SittingWithOwnCharacter() { await Handler.ExecuteAsync(new SitPacket { Users = new List<SitSubPacket?> { new SitSubPacket { VisualType = VisualType.Player, VisualId = Session.Character.VisualId } } }, Session); } private async Task SittingWithUnknownVisualType() { await Handler.ExecuteAsync(new SitPacket { Users = new List<SitSubPacket?> { new SitSubPacket { VisualType = (VisualType)99, VisualId = Session.Character.VisualId } } }, Session); } private void HandlerShouldComplete() { Assert.AreEqual(0, Session.LastPackets.Count); } private void NoPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Movement/WalkPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations.Map; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Movement; using NosCore.Packets.ClientPackets.Movement; using NosCore.PathFinder.Interfaces; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Movement { [TestClass] public class WalkPacketHandlerTests { private WalkPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IHeuristic> DistanceCalculator = null!; private readonly ILogger<WalkPacketHandler> Logger = new Mock<ILogger<WalkPacketHandler>>().Object; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); DistanceCalculator = new Mock<IHeuristic>(); DistanceCalculator.Setup(x => x.GetDistance(It.IsAny<(short, short)>(), It.IsAny<(short, short)>())) .Returns(1); Handler = new WalkPacketHandler( DistanceCalculator.Object, Logger, TestHelpers.Instance.Clock, TestHelpers.Instance.LogLanguageLocalizer, new Mock<Wolverine.IMessageBus>().Object); } [TestMethod] public async Task WalkWithHighSpeedShouldBeIgnored() { await new Spec("Walk with high speed should be ignored") .Given(CharacterIsOnMap) .WhenAsync(WalkingWithHighSpeed) .Then(PositionShouldNotBeUpdated) .ExecuteAsync(); } [TestMethod] public async Task WalkShouldExecuteWithoutError() { await new Spec("Walk should execute without error") .Given(CharacterIsOnMap) .WhenAsync(WalkingToValidPosition) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task WalkOnBaseMapUpdatesMapXY() { await new Spec("Walk on a BaseMap updates the persistent MapX/Y alongside PositionX/Y") .Given(CharacterIsOnMap) .WhenAsync(WalkingToValidPosition) .Then(MapXYShouldBe_, (short)5, (short)5) .ExecuteAsync(); } [TestMethod] public async Task WalkInsideMinilandDoesNotUpdateMapXY() { await new Spec("Walk inside a non-base instance leaves MapX/Y pinned to last base position") .Given(CharacterIsOnMap) .And(MapInstanceBecomesNormalInstance) .And(MapXYAreAlreadyPersistedAt_, (short)48, (short)132) .WhenAsync(WalkingToValidPosition) .Then(MapXYShouldBe_, (short)48, (short)132) .ExecuteAsync(); } private short InitialX; private short InitialY; private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; Session.Character.PositionX = 4; Session.Character.PositionY = 4; Session.Character.Speed = 20; InitialX = Session.Character.PositionX; InitialY = Session.Character.PositionY; } private async Task WalkingToValidPosition() { var checksum = ((5 + 5) % 3) % 2; await Handler.ExecuteAsync(new WalkPacket { XCoordinate = 5, YCoordinate = 5, Speed = 20, CheckSum = (byte)checksum }, Session); } private async Task WalkingWithHighSpeed() { await Handler.ExecuteAsync(new WalkPacket { XCoordinate = 5, YCoordinate = 5, Speed = 100, CheckSum = 0 }, Session); } private void PositionShouldNotBeUpdated() { Assert.AreEqual(InitialX, Session.Character.PositionX); Assert.AreEqual(InitialY, Session.Character.PositionY); } private void MapInstanceBecomesNormalInstance() { Session.Character.MapInstance.MapInstanceType = MapInstanceType.NormalInstance; } private void MapXYAreAlreadyPersistedAt_(short x, short y) { Session.Character.MapX = x; Session.Character.MapY = y; } private void MapXYShouldBe_(short expectedX, short expectedY) { Assert.AreEqual(expectedX, Session.Character.MapX); Assert.AreEqual(expectedY, Session.Character.MapY); } private void NoPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/NosCore.PacketHandlers.Tests.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net10.0</TargetFramework> <IsPackable>false</IsPackable> <NoWarn>MSTEST0001;MSTEST0017;MSTEST0023;MSTEST0037;MSTEST0044;NU1701</NoWarn> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <ItemGroup> <PackageReference Include="coverlet.msbuild"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Microsoft.NET.Test.Sdk" /> <PackageReference Include="MSTest.TestAdapter" /> <PackageReference Include="MSTest.TestFramework" /> <PackageReference Include="SpecLight" /> <PackageReference Include="AutoFixture" /> <PackageReference Include="AutoFixture.AutoMoq" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\..\src\NosCore.PacketHandlers\NosCore.PacketHandlers.csproj" /> <ProjectReference Include="..\..\test\NosCore.Tests.Shared\NosCore.Tests.Shared.csproj" /> <ProjectReference Include="..\NosCore.GameObject.Tests\NosCore.GameObject.Tests.csproj" /> </ItemGroup> <ItemGroup> <PackageReference Include="NosCore.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> </Project> ================================================ FILE: test/NosCore.PacketHandlers.Tests/Parcel/PclPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.GameObject.InterChannelCommunication.Hubs.MailHub; using NosCore.GameObject.InterChannelCommunication.Messages; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.PacketHandlers.Parcel; using NosCore.Packets.ClientPackets.Parcel; using NosCore.Packets.ServerPackets.Parcel; using NosCore.Tests.Shared; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Parcel { [TestClass] public class PclPacketHandlerTests { private Mock<IMailHub> MailHttpClient = null!; private PclPacketHandler PclPacketHandler = null!; private IItemGenerationService Item = null!; private ClientSession Session = null!; private Mock<IDao<IItemInstanceDto?, Guid>> ItemInstanceDao = null!; private MailData? Mail; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Item = TestHelpers.Instance.GenerateItemProvider(); MailHttpClient = new Mock<IMailHub>(); ItemInstanceDao = new Mock<IDao<IItemInstanceDto?, Guid>>(); PclPacketHandler = new PclPacketHandler(MailHttpClient.Object, Item, ItemInstanceDao.Object); } [TestMethod] public async Task GiftNotFoundShouldReturnNoPacket() { await new Spec("Gift not found should return no packet") .Given(NoGiftExists) .WhenAsync(DeletingGift) .Then(NoParcelPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task DeletingGiftShouldReturnDeletePacket() { await new Spec("Deleting gift should return delete packet") .Given(GiftExists) .WhenAsync(DeletingGift) .Then(DeleteParcelPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ReceivingGiftShouldReturnReceivePacket() { await new Spec("Receiving gift should return receive packet") .Given(GiftExists) .WhenAsync(ReceivingGift) .Then(ReceiveParcelPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ReceivingGiftWithNoSpaceShouldReturnNoSpacePacket() { await new Spec("Receiving gift with no space should return no space packet") .Given(GiftExists) .And(InventoryIsFull) .WhenAsync(ReceivingGift) .Then(NoSpaceParcelPacketShouldBeSent) .ExecuteAsync(); } private void NoGiftExists() { var characterId = Session.Character.CharacterId; MailHttpClient.Setup(s => s.GetMails(1, characterId, false)).ReturnsAsync(new List<MailData>()); } private void GiftExists() { var item = Item.Create(1); Mail = new MailData { ItemInstance = (ItemInstanceDto)item, MailDto = new MailDto { ItemInstanceId = item.Id } }; ItemInstanceDao.Setup(o => o.FirstOrDefaultAsync(It.IsAny<Expression<Func<IItemInstanceDto?, bool>>>())) .ReturnsAsync(item); var characterId = Session.Character.CharacterId; MailHttpClient.Setup(s => s.GetMails(1, characterId, false)).ReturnsAsync(new List<MailData> { Mail }); } private void InventoryIsFull() { TestHelpers.Instance.WorldConfiguration.Value.BackpackSize = 0; } private async Task DeletingGift() { await PclPacketHandler.ExecuteAsync(new PclPacket { Type = 5, GiftId = 1 }, Session); } private async Task ReceivingGift() { await PclPacketHandler.ExecuteAsync(new PclPacket { Type = 4, GiftId = 1 }, Session); } private void NoParcelPacketShouldBeSent() { var packet = (ParcelPacket?)Session.LastPackets.FirstOrDefault(s => s is ParcelPacket); Assert.IsNull(packet); } private void DeleteParcelPacketShouldBeSent() { var packet = (ParcelPacket?)Session.LastPackets.FirstOrDefault(s => s is ParcelPacket); Assert.IsTrue(packet?.Type == 7); } private void ReceiveParcelPacketShouldBeSent() { var packet = (ParcelPacket?)Session.LastPackets.FirstOrDefault(s => s is ParcelPacket); Assert.IsTrue(packet?.Type == 2); } private void NoSpaceParcelPacketShouldBeSent() { var packet = (ParcelPacket?)Session.LastPackets.FirstOrDefault(s => s is ParcelPacket); Assert.IsTrue(packet?.Type == 5); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Parcel/PstClientPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; namespace NosCore.PacketHandlers.Tests.Parcel { [TestClass] public class PstClientPacketHandlerTests { [TestInitialize] public void Setup() { } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Quest/QtPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.StaticEntities; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.QuestService; using NosCore.PacketHandlers.Quest; using NosCore.Packets.ClientPackets.Quest; using NosCore.Packets.Enumerations; using NosCore.Tests.Shared; using SpecLight; using System; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Quest { [TestClass] public class QtPacketHandlerTests { private QtPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IQuestService> QuestService = null!; private Guid QuestGuid; private short QuestId = 1001; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); QuestService = new Mock<IQuestService>(); QuestGuid = Guid.NewGuid(); Handler = new QtPacketHandler(QuestService.Object); } [TestMethod] public async Task UnknownQuestShouldBeIgnored() { await new Spec("Unknown quest should be ignored") .Given(CharacterIsOnMap) .WhenAsync(HandlingUnknownQuest) .Then(QuestServiceShouldNotBeCalled) .ExecuteAsync(); } [TestMethod] public async Task ValidatingQuestShouldCallQuestService() { await new Spec("Validating quest should call quest service") .Given(CharacterIsOnMap) .And(CharacterHasQuest) .And(CharacterHasScript) .WhenAsync(ValidatingQuest) .Then(QuestServiceShouldBeCalledWithValidate) .ExecuteAsync(); } [TestMethod] public async Task AchievingQuestShouldCallQuestService() { await new Spec("Achieving quest should call quest service") .Given(CharacterIsOnMap) .And(CharacterHasQuest) .And(CharacterHasScript) .WhenAsync(AchievingQuest) .Then(QuestServiceShouldBeCalledWithAchieve) .ExecuteAsync(); } [TestMethod] public async Task GivingUpQuestShouldRemoveQuestFromCharacter() { await new Spec("Giving up quest should remove quest from character") .Given(CharacterIsOnMap) .And(CharacterHasQuest) .WhenAsync(GivingUpQuest) .Then(QuestShouldBeRemoved) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; Session.Character.Quests = new System.Collections.Concurrent.ConcurrentDictionary<Guid, CharacterQuest>(); } private void CharacterHasQuest() { var characterQuest = new CharacterQuest { QuestId = QuestId, Quest = new NosCore.GameObject.Services.QuestService.Quest { QuestId = QuestId, QuestObjectives = new System.Collections.Generic.List<QuestObjectiveDto>() } }; Session.Character.Quests.TryAdd(QuestGuid, characterQuest); } private void CharacterHasScript() { Session.Character.Script = new ScriptDto { Argument1 = 1, ScriptId = 100, ScriptStepId = 1 }; } private async Task HandlingUnknownQuest() { await Handler.ExecuteAsync(new QtPacket { Type = QuestActionType.Validate, Data = 9999 }, Session); } private async Task ValidatingQuest() { await Handler.ExecuteAsync(new QtPacket { Type = QuestActionType.Validate, Data = QuestId }, Session); } private async Task AchievingQuest() { await Handler.ExecuteAsync(new QtPacket { Type = QuestActionType.Achieve, Data = QuestId }, Session); } private async Task GivingUpQuest() { await Handler.ExecuteAsync(new QtPacket { Type = QuestActionType.GiveUp, Data = QuestId }, Session); } private void QuestServiceShouldNotBeCalled() { QuestService.Verify(x => x.RunScriptAsync( It.IsAny<NosCore.GameObject.Ecs.Interfaces.ICharacterEntity>(), It.IsAny<ScriptClientPacket>()), Times.Never); } private void QuestServiceShouldBeCalledWithValidate() { QuestService.Verify(x => x.RunScriptAsync( It.IsAny<NosCore.GameObject.Ecs.Interfaces.ICharacterEntity>(), It.Is<ScriptClientPacket>(p => p != null && p.Type == QuestActionType.Validate)), Times.Once); } private void QuestServiceShouldBeCalledWithAchieve() { QuestService.Verify(x => x.RunScriptAsync( It.IsAny<NosCore.GameObject.Ecs.Interfaces.ICharacterEntity>(), It.Is<ScriptClientPacket>(p => p != null && p.Type == QuestActionType.Achieve)), Times.Once); } private void QuestShouldBeRemoved() { Assert.AreEqual(0, Session.Character.Quests.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Quest/ScriptPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.QuestService; using NosCore.PacketHandlers.Quest; using NosCore.Packets.ClientPackets.Quest; using NosCore.Packets.Enumerations; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Quest { [TestClass] public class ScriptPacketHandlerTests { private ScriptPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IQuestService> QuestService = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); QuestService = new Mock<IQuestService>(); Handler = new ScriptPacketHandler(QuestService.Object); } [TestMethod] public async Task RunningScriptShouldCallQuestService() { await new Spec("Running script should call quest service") .Given(CharacterIsOnMap) .WhenAsync(RunningScript) .Then(QuestServiceShouldBeCalled) .ExecuteAsync(); } [TestMethod] public async Task RunningScriptWithValidateActionShouldCallQuestService() { await new Spec("Running script with validate action should call quest service") .Given(CharacterIsOnMap) .WhenAsync(RunningScriptWithValidateAction) .Then(QuestServiceShouldBeCalled) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private async Task RunningScript() { await Handler.ExecuteAsync(new ScriptClientPacket { Type = QuestActionType.Achieve, FirstArgument = 1, SecondArgument = 100, ThirdArgument = 1 }, Session); } private async Task RunningScriptWithValidateAction() { await Handler.ExecuteAsync(new ScriptClientPacket { Type = QuestActionType.Validate, FirstArgument = 1, SecondArgument = 100, ThirdArgument = 1 }, Session); } private void QuestServiceShouldBeCalled() { var character = Session.Character; QuestService.Verify(x => x.RunScriptAsync( character, It.IsAny<ScriptClientPacket>()), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/SetupAssemblyInitializer.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Dto; using NosCore.Tests.Shared; namespace NosCore.PacketHandlers.Tests { [TestClass] public class SetupAssemblyInitializer { [AssemblyInitialize] public static void AssemblyInit(TestContext _) { TestHelpers.Instance.InitDatabase(); TypeAdapterConfig.GlobalSettings.ForDestinationType<IStaticDto>() .IgnoreMember((member, side) => typeof(I18NString).IsAssignableFrom(member.Type)); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Shops/BuyPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Shops; using NosCore.Packets.ClientPackets.Shops; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Shops { [TestClass] public class BuyPacketHandlerTests { private BuyPacketHandler Handler = null!; private ClientSession Session = null!; private readonly ILogger<BuyPacketHandler> Logger = new Mock<ILogger<BuyPacketHandler>>().Object; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Handler = new BuyPacketHandler( Logger, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.SessionRegistry, TestHelpers.Instance.WorldConfiguration, TestHelpers.Instance.GenerateItemProvider(), TestHelpers.Instance.GameLanguageLocalizer); } [TestMethod] public async Task BuyingFromUnknownVisualTypeShouldBeIgnored() { await new Spec("Buying from unknown visual type should be ignored") .Given(CharacterIsOnMap) .WhenAsync(BuyingFromUnknownVisualType) .Then(NoErrorPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task BuyingFromNonExistentNpcShouldBeIgnored() { await new Spec("Buying from non existent npc should be ignored") .Given(CharacterIsOnMap) .WhenAsync(BuyingFromNonExistentNpc) .Then(NoErrorPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task BuyingFromNonExistentPlayerShouldBeIgnored() { await new Spec("Buying from non existent player should be ignored") .Given(CharacterIsOnMap) .WhenAsync(BuyingFromNonExistentPlayer) .Then(NoErrorPacketShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private async Task BuyingFromUnknownVisualType() { await Handler.ExecuteAsync(new BuyPacket { VisualType = (VisualType)99, VisualId = 1, Slot = 0, Amount = 1 }, Session); } private async Task BuyingFromNonExistentNpc() { await Handler.ExecuteAsync(new BuyPacket { VisualType = VisualType.Npc, VisualId = 99999, Slot = 0, Amount = 1 }, Session); } private async Task BuyingFromNonExistentPlayer() { await Handler.ExecuteAsync(new BuyPacket { VisualType = VisualType.Player, VisualId = 99999, Slot = 0, Amount = 1 }, Session); } private void NoErrorPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Shops/MShopPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Group; using NosCore.Data.StaticEntities; using NosCore.GameObject.Map; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Networking.SessionGroup; using NosCore.PacketHandlers.Shops; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.ClientPackets.Shops; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Chats; using NosCore.Packets.ServerPackets.UI; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; #pragma warning disable 618 namespace NosCore.PacketHandlers.Tests.Shops { [TestClass] public class MShopPacketHandlerTests { private readonly MShopPacket ShopPacket = new() { Type = CreateShopPacketType.Open, ItemList = new List<MShopItemSubPacket?> { new() { Type = PocketType.Etc, Slot = 0, Amount = 1, Price = 10000 }, new() { Type = PocketType.Etc, Slot = 1, Amount = 2, Price = 20000 }, new() { Type = PocketType.Etc, Slot = 2, Amount = 3, Price = 30000 } }, Name = "TEST SHOP" }; private MShopPacketHandler MShopPacketHandler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Session.Character.MapInstance.Portals = new List<Portal> { new() { DestinationMapId = Session.Character.MapInstance.Map.MapId, Type = PortalType.Open, SourceMapInstanceId = Session.Character.MapInstance.MapInstanceId, DestinationMapInstanceId = Session.Character.MapInstance.MapInstanceId, DestinationX = 5, DestinationY = 5, PortalId = 1, SourceMapId = Session.Character.MapInstance.Map.MapId, SourceX = 0, SourceY = 0 } }; MShopPacketHandler = new MShopPacketHandler(TestHelpers.Instance.DistanceCalculator); } [TestMethod] public async Task UserCannotCreateShopCloseToPortal() { await new Spec("User cannot create shop close to portal") .WhenAsync(CreatingShopAtPortal) .Then(ShouldReceiveOpenAwayFromPortalError) .And(ShopShouldNotBeCreated) .ExecuteAsync(); } [TestMethod] public async Task UserCannotCreateShopInTeam() { await new Spec("User cannot create shop in team") .Given(CharacterIsInTeam) .WhenAsync(CreatingShop) .Then(ShouldReceiveTeammateCannotShopError) .And(ShopShouldNotBeCreated) .ExecuteAsync(); } [TestMethod] public async Task UserCanCreateShopInGroup() { await new Spec("User can create shop in group") .Given(CharacterIsInGroup) .WhenAsync(CreatingShop) .Then(NoErrorShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task UserCannotCreateShopInNonShopAllowedMap() { await new Spec("User cannot create shop in non shop allowed map") .Given(CharacterIsAwayFromPortal) .WhenAsync(CreatingShop) .Then(ShouldReceiveUseCommercialMapError) .And(ShopShouldNotBeCreated) .ExecuteAsync(); } [TestMethod] public async Task UserCannotCreateShopWithMissingItem() { await new Spec("User cannot create shop with missing item") .Given(CharacterHasOnlyOneItem) .WhenAsync(CreatingShop) .Then(ShopShouldNotBeCreated) .ExecuteAsync(); } [TestMethod] public async Task UserCannotCreateShopWithMissingAmount() { await new Spec("User cannot create shop with missing amount") .Given(CharacterHasItemsWithAmount_, 1) .WhenAsync(CreatingShop) .Then(ShouldReceiveItemsCannotBeTradedError) .And(ShopShouldNotBeCreated) .ExecuteAsync(); } [TestMethod] public async Task UserCanCreateShop() { await new Spec("User can create shop") .Given(CharacterHasTradableItems) .WhenAsync(CreatingShop) .Then(ShopShouldBeCreated) .ExecuteAsync(); } [TestMethod] public async Task UserCannotCreateShopInExchange() { await new Spec("User cannot create shop in exchange") .Given(CharacterIsInExchange) .And(CharacterHasTradableItems) .WhenAsync(CreatingShopViaPacket) .Then(ShopShouldNotBeCreated) .ExecuteAsync(); } [TestMethod] public async Task UserCannotCreateEmptyShop() { await new Spec("User cannot create empty shop") .Given(CharacterIsOnShopAllowedMap) .WhenAsync(CreatingEmptyShop) .Then(ShouldReceiveNoItemToSellError) .And(ShopShouldNotBeCreated) .ExecuteAsync(); } private void CharacterIsInTeam() { Session.Character.PositionX = 7; Session.Character.PositionY = 7; Session.Character.Group = new NosCore.GameObject.Services.GroupService.Group(GroupType.Team, new Mock<ISessionGroupFactory>().Object); } private void CharacterIsInGroup() { Session.Character.PositionX = 7; Session.Character.PositionY = 7; Session.Character.Group = new NosCore.GameObject.Services.GroupService.Group(GroupType.Group, new Mock<ISessionGroupFactory>().Object); } private void CharacterIsAwayFromPortal() { Session.Character.PositionX = 7; Session.Character.PositionY = 7; } private void CharacterHasOnlyOneItem() { var items = new List<ItemDto> { new Item { Type = NoscorePocketType.Etc, VNum = 1 } }; var itemBuilder = new ItemGenerationService(items, NullLoggerFactory.Instance, TestHelpers.Instance.LogLanguageLocalizer); Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 1), 0)); Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void CharacterHasItemsWithAmount_(int value) { var items = new List<ItemDto> { new Item { Type = NoscorePocketType.Etc, VNum = 1 } }; var itemBuilder = new ItemGenerationService(items, NullLoggerFactory.Instance, TestHelpers.Instance.LogLanguageLocalizer); Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, (short)value), 0), NoscorePocketType.Etc, 0); Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, (short)value), 0), NoscorePocketType.Etc, 1); Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, (short)value), 0), NoscorePocketType.Etc, 2); Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void CharacterHasTradableItems() { var items = new List<ItemDto> { new Item { Type = NoscorePocketType.Etc, VNum = 1, IsTradable = true } }; var itemBuilder = new ItemGenerationService(items, NullLoggerFactory.Instance, TestHelpers.Instance.LogLanguageLocalizer); Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 1), 0), NoscorePocketType.Etc, 0); Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 2), 0), NoscorePocketType.Etc, 1); Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 3), 0), NoscorePocketType.Etc, 2); Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void CharacterIsInExchange() { Session.Character.InShop = true; } private void CharacterIsOnShopAllowedMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private async Task CreatingShopAtPortal() { await MShopPacketHandler.ExecuteAsync(ShopPacket, Session); } private async Task CreatingShop() { await MShopPacketHandler.ExecuteAsync(ShopPacket, Session); } private async Task CreatingShopViaPacket() { await Session.HandlePacketsAsync(new[] { ShopPacket }); } private async Task CreatingEmptyShop() { await MShopPacketHandler.ExecuteAsync(new MShopPacket { Type = CreateShopPacketType.Open, ItemList = new List<MShopItemSubPacket?>(), Name = "TEST SHOP" }, Session); } private void ShouldReceiveOpenAwayFromPortalError() { var packet = (InfoiPacket?)Session.LastPackets.FirstOrDefault(s => s is InfoiPacket); Assert.IsTrue(packet?.Message == Game18NConstString.OpenShopAwayPortal); } private void ShouldReceiveTeammateCannotShopError() { var packet = (SayiPacket?)Session.LastPackets.FirstOrDefault(s => s is SayiPacket); Assert.IsTrue(packet?.VisualType == VisualType.Player && packet?.VisualId == Session.Character.CharacterId && packet?.Type == SayColorType.Red && packet?.Message == Game18NConstString.TeammateCanNotOpenShop); } private void ShouldReceiveUseCommercialMapError() { var packet = (InfoiPacket?)Session.LastPackets.FirstOrDefault(s => s is InfoiPacket); Assert.IsTrue(packet?.Message == Game18NConstString.UseCommercialMapToShop); } private void ShouldReceiveItemsCannotBeTradedError() { var packet = (SayiPacket?)Session.LastPackets.FirstOrDefault(s => s is SayiPacket); Assert.IsTrue(packet?.VisualType == VisualType.Player && packet?.VisualId == Session.Character.CharacterId && packet?.Type == SayColorType.Red && packet?.Message == Game18NConstString.SomeItemsCannotBeTraded); } private void ShouldReceiveNoItemToSellError() { var packet = (SayiPacket?)Session.LastPackets.FirstOrDefault(s => s is SayiPacket); Assert.IsTrue(packet?.VisualType == VisualType.Player && packet?.VisualId == Session.Character.CharacterId && packet?.Type == SayColorType.Yellow && packet?.Message == Game18NConstString.NoItemToSell); } private void NoErrorShouldBeSent() { var packet = (SayiPacket?)Session.LastPackets.FirstOrDefault(s => s is SayiPacket); Assert.IsNull(packet); } private void ShopShouldNotBeCreated() { Assert.IsNull(Session.Character.Shop); } private void ShopShouldBeCreated() { Assert.IsNotNull(Session.Character.Shop); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Shops/NrunPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Ecs.Interfaces; using NosCore.GameObject.Messaging.Handlers.Nrun; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.BroadcastService; using NosCore.PacketHandlers.Shops; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Packets.Enumerations; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Collections.Generic; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Shops { [TestClass] public class NrunPacketHandlerTests { private static readonly ILogger<NrunPacketHandler> Logger = new Mock<ILogger<NrunPacketHandler>>().Object; private NrunPacketHandler _nrunPacketHandler = null!; private ClientSession _session = null!; private Mock<INrunEventHandler> _fakeHandlerMock = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _fakeHandlerMock = new Mock<INrunEventHandler>(); _fakeHandlerMock.SetupGet(h => h.Runner).Returns(NrunRunnerType.ChangeClass); _fakeHandlerMock .Setup(h => h.HandleAsync(It.IsAny<ClientSession>(), It.IsAny<IAliveEntity?>(), It.IsAny<NrunPacket>())) .Returns(Task.CompletedTask); _nrunPacketHandler = new NrunPacketHandler( Logger, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.SessionRegistry, new[] { _fakeHandlerMock.Object }); } [TestMethod] public async Task NrunWithNullVisualTypeInvokesHandler() { await new Spec("Nrun with null visual type invokes the matching handler") .WhenAsync(ExecutingNrunPacketWithNullType) .Then(HandlerShouldBeCalled) .ExecuteAsync(); } [TestMethod] public async Task NrunWithUnknownVisualTypeDoesNotInvokeHandler() { await new Spec("Nrun with unknown visual type does not invoke the handler") .WhenAsync(ExecutingNrunPacketWithUnknownType) .Then(HandlerShouldNotBeCalled) .ExecuteAsync(); } [TestMethod] public async Task NrunWithoutRegisteredRunnerDoesNotInvokeHandler() { await new Spec("Nrun with a runner no handler declares is silently dropped") .WhenAsync(ExecutingNrunPacketWithUnregisteredRunner) .Then(HandlerShouldNotBeCalled) .ExecuteAsync(); } [TestMethod] public async Task NrunWithExistingNpcInvokesHandler() { await new Spec("Nrun with existing NPC invokes the matching handler") .Given(NpcExistsOnMap) .WhenAsync(ExecutingNrunPacketWithNpcType) .Then(HandlerShouldBeCalled) .ExecuteAsync(); } [TestMethod] public async Task NrunWithExistingPlayerInvokesHandler() { await new Spec("Nrun with existing player invokes the matching handler") .Given(PlayerIsRegistered) .WhenAsync(ExecutingNrunPacketWithPlayerType) .Then(HandlerShouldBeCalled) .ExecuteAsync(); } private void NpcExistsOnMap() { var npc = new NosCore.Data.Dto.MapNpcDto { MapNpcId = 100, MapId = _session.Character.MapInstance.Map.MapId, MapX = 1, MapY = 1, VNum = 1 }; _session.Character.MapInstance.LoadNpcs( new List<NosCore.Data.Dto.MapNpcDto> { npc }, new List<NosCore.Data.StaticEntities.NpcMonsterDto> { new() { NpcMonsterVNum = 1 } }); } private void PlayerIsRegistered() { TestHelpers.Instance.SessionRegistry.Register(new SessionInfo { ChannelId = _session.Channel!.Id, SessionId = _session.SessionId, Sender = _session, AccountName = _session.Account.Name, Disconnect = () => Task.CompletedTask, CharacterId = _session.Character.CharacterId, MapInstanceId = _session.Character.MapInstance.MapInstanceId }); } private Task ExecutingNrunPacketWithNpcType() => _nrunPacketHandler.ExecuteAsync( new NrunPacket { Runner = NrunRunnerType.ChangeClass, VisualType = VisualType.Npc, VisualId = 100, Type = 0 }, _session); private Task ExecutingNrunPacketWithPlayerType() => _nrunPacketHandler.ExecuteAsync( new NrunPacket { Runner = NrunRunnerType.ChangeClass, VisualType = VisualType.Player, VisualId = _session.Character.VisualId, Type = 0 }, _session); private Task ExecutingNrunPacketWithNullType() => _nrunPacketHandler.ExecuteAsync( new NrunPacket { Runner = NrunRunnerType.ChangeClass, VisualType = null, VisualId = 0, Type = 0 }, _session); private Task ExecutingNrunPacketWithUnknownType() => _nrunPacketHandler.ExecuteAsync( new NrunPacket { Runner = NrunRunnerType.ChangeClass, VisualType = VisualType.Monster, VisualId = 1, Type = 0 }, _session); private Task ExecutingNrunPacketWithUnregisteredRunner() => _nrunPacketHandler.ExecuteAsync( new NrunPacket { Runner = NrunRunnerType.OpenProduction, VisualType = null, VisualId = 0, Type = 0 }, _session); private void HandlerShouldBeCalled() { _fakeHandlerMock.Verify(h => h.HandleAsync( It.IsAny<ClientSession>(), It.IsAny<IAliveEntity?>(), It.IsAny<NrunPacket>()), Times.Once); } private void HandlerShouldNotBeCalled() { _fakeHandlerMock.Verify(h => h.HandleAsync( It.IsAny<ClientSession>(), It.IsAny<IAliveEntity?>(), It.IsAny<NrunPacket>()), Times.Never); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Shops/RequestNpcPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Algorithm.DignityService; using NosCore.Data.Dto; using NosCore.Data.StaticEntities; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.PacketHandlerService; using NosCore.PacketHandlers.Shops; using NosCore.Packets.ClientPackets.Npcs; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.Shop; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; namespace NosCore.PacketHandlers.Tests.Shops { [TestClass] public class RequestNpcPacketHandlerTests { private RequestNpcPacketHandler _requestNpcPacketHandler = null!; private ClientSession _session = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); // Register ShoppingPacketHandler so the shop-no-dialog branch can dispatch // a ShoppingPacket through HandlePacketsAsync and we can observe the n_inv. var shoppingHandler = new ShoppingPacketHandler( NullLogger<ShoppingPacketHandler>.Instance, new Mock<IDignityService>().Object, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.SessionRegistry); _session = await TestHelpers.Instance.GenerateSessionAsync(new List<IPacketHandler> { shoppingHandler }); _requestNpcPacketHandler = new RequestNpcPacketHandler( NullLogger<RequestNpcPacketHandler>.Instance, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.SessionRegistry); } [TestMethod] public async Task RequestNpcWithNonExistentNpcShouldNotThrow() { await new Spec("Request NPC with non-existent NPC should not throw") .WhenAsync(ExecutingRequestNpcPacketWithNonExistentNpc) .Then(SessionShouldRemainValid) .ExecuteAsync(); } [TestMethod] public async Task RequestNpcWithUnknownVisualTypeShouldNotThrow() { await new Spec("Request NPC with unknown visual type should not throw") .WhenAsync(ExecutingRequestNpcPacketWithUnknownType) .Then(SessionShouldRemainValid) .ExecuteAsync(); } [TestMethod] public async Task RequestNpcWithExistingNpcShouldNotThrow() { await new Spec("Request NPC with existing NPC should not throw") .Given(NpcWithDialogExistsOnMap) .WhenAsync(ExecutingRequestNpcPacketWithNpcType) .Then(SessionShouldRemainValid) .ExecuteAsync(); } [TestMethod] public async Task RequestNpcOnShopWithNoDialogOpensShopDirectly() { // OpenNos parity: grocer/weapon NPCs have a Shop but Dialog=0 — clicking them // must open the shop tab directly instead of replying with npc_req ... 0 (a // no-op on the client). Regression from #271bad47 era. await new Spec("req_npc on a shop-only NPC opens the shop (n_inv) without a dialog round-trip") .Given(ShopOnlyNpcExistsOnMap) .WhenAsync(ExecutingRequestNpcPacketWithNpcType) .Then(NInvPacketShouldBeSent) .ExecuteAsync(); } private void NpcWithDialogExistsOnMap() { var npc = new MapNpcDto { MapNpcId = 100, Dialog = 100, MapId = _session.Character.MapInstance.Map.MapId, MapX = 1, MapY = 1, VNum = 1 }; _session.Character.MapInstance.LoadNpcs( new List<MapNpcDto> { npc }, new List<NpcMonsterDto> { new() { NpcMonsterVNum = 1 } }); } private void ShopOnlyNpcExistsOnMap() { var npc = new MapNpcDto { MapNpcId = 100, Dialog = 0, MapId = _session.Character.MapInstance.Map.MapId, MapX = 1, MapY = 1, VNum = 1 }; _session.Character.MapInstance.LoadNpcs( new List<MapNpcDto> { npc }, new List<NpcMonsterDto> { new() { NpcMonsterVNum = 1 } }); var bundle = _session.Character.MapInstance.GetNpcById(100)!.Value; bundle.InitializeShopAndDialog( new List<ShopDto> { new() { ShopId = 1, MapNpcId = 100, MenuType = 0, ShopType = 0 } }, null, new List<ShopItemDto> { new() { ShopItemId = 1, ShopId = 1, ItemVNum = 1012, Slot = 0, Type = 0 } }, TestHelpers.Instance.GenerateItemProvider()); } private void NInvPacketShouldBeSent() { // ShoppingPacketHandler emits the n_inv; if the dialog-first branch fires // instead we won't see it on the session. Assert.IsTrue(_session.LastPackets.Any(p => p is NInvPacket), "expected an n_inv packet after clicking a shop-only NPC"); } private async Task ExecutingRequestNpcPacketWithNpcType() { var packet = new RequestNpcPacket { Type = VisualType.Npc, TargetId = 100 }; await _requestNpcPacketHandler.ExecuteAsync(packet, _session); } private async Task ExecutingRequestNpcPacketWithNonExistentNpc() { var packet = new RequestNpcPacket { Type = VisualType.Npc, TargetId = 99999 }; await _requestNpcPacketHandler.ExecuteAsync(packet, _session); } private async Task ExecutingRequestNpcPacketWithUnknownType() { var packet = new RequestNpcPacket { Type = VisualType.Monster, TargetId = 1 }; await _requestNpcPacketHandler.ExecuteAsync(packet, _session); } private void SessionShouldRemainValid() { Assert.IsNotNull(_session); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Shops/SellPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.Data.StaticEntities; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.GameObject.Services.MapInstanceAccessService; using NosCore.PacketHandlers.Shops; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.ClientPackets.Shops; using NosCore.Packets.Enumerations; using NosCore.Packets.ServerPackets.Shop; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging.Abstractions; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Shops { [TestClass] public class SellPacketHandlerTests { private MapInstanceAccessorService InstanceProvider = null!; private SellPacketHandler SellPacketHandler = null!; private ClientSession Session = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); InstanceProvider = TestHelpers.Instance.MapInstanceAccessorService; Session = await TestHelpers.Instance.GenerateSessionAsync(); SellPacketHandler = new SellPacketHandler(TestHelpers.Instance.WorldConfiguration); } [TestMethod] public async Task UserCannotSellInExchange() { await new Spec("User cannot sell in exchange") .Given(CharacterIsInShop) .And(CharacterHasTradableItems) .WhenAsync(SellingItem) .Then(GoldShouldNotIncrease) .And(ItemShouldStillExist) .ExecuteAsync(); } [TestMethod] public async Task UserCannotSellNonSoldableItem() { await new Spec("User cannot sell non soldable item") .Given(CharacterHasNonSoldableItems) .WhenAsync(SellingItem) .Then(ShouldReceiveCannotSellError) .And(GoldShouldNotIncrease) .And(ItemShouldStillExist) .ExecuteAsync(); } [TestMethod] public async Task UserCanSellItem() { await new Spec("User can sell item") .Given(CharacterHasSoldableItems) .WhenAsync(SellingItem) .Then(GoldShouldIncrease) .And(ItemShouldBeRemoved) .ExecuteAsync(); } [TestMethod] public async Task SellingRejectsOnPriceAmountOverflow() { await new Spec("Selling rejects silently when price*amount would overflow long") .Given(CharacterHasExtremePricedItem) .WhenAsync(SellingTwoOfSlotZero) .Then(GoldShouldNotIncrease) .And(ItemShouldStillExist) .ExecuteAsync(); } [TestMethod] public async Task SellingRejectsWhenSaleWouldBreachMaxGold() { await new Spec("Selling rejects with MaxGoldReached when the payout would exceed MaxGoldAmount") .Given(CharacterHasSoldableItems) .And(CharacterIsAtMaxGold) .WhenAsync(SellingItem) .Then(ShouldReceiveMaxGoldReachedMessage) .And(ItemShouldStillExist) .ExecuteAsync(); } private void CharacterHasExtremePricedItem() { var items = new List<ItemDto> { new Item { Type = NoscorePocketType.Etc, VNum = 1, IsSoldable = true, ItemType = ItemType.Sell, Price = long.MaxValue } }; var itemBuilder = new ItemGenerationService(items, NullLoggerFactory.Instance, TestHelpers.Instance.LogLanguageLocalizer); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(itemBuilder.Create(1, 5), 0), NoscorePocketType.Etc, 0); Session.Character.MapInstance = InstanceProvider.GetBaseMapById(1)!; } private async Task SellingTwoOfSlotZero() { await SellPacketHandler.ExecuteAsync( new SellPacket { Slot = 0, Amount = 2, Data = (short)NoscorePocketType.Etc }, Session); } private void CharacterIsAtMaxGold() { Session.Character.Gold = TestHelpers.Instance.WorldConfiguration.Value.MaxGoldAmount; } private void ShouldReceiveMaxGoldReachedMessage() { var packet = Session.LastPackets.OfType<NosCore.Packets.ServerPackets.UI.MsgiPacket>() .FirstOrDefault(m => m.Message == Game18NConstString.MaxGoldReached); Assert.IsNotNull(packet); } private void CharacterIsInShop() { Session.Character.InShop = true; } private void CharacterHasTradableItems() { var items = new List<ItemDto> { new Item { Type = NoscorePocketType.Etc, VNum = 1, IsTradable = true } }; var itemBuilder = new ItemGenerationService(items, NullLoggerFactory.Instance, TestHelpers.Instance.LogLanguageLocalizer); Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 1), 0), NoscorePocketType.Etc, 0); Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 2), 0), NoscorePocketType.Etc, 1); Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 3), 0), NoscorePocketType.Etc, 2); Session.Character.MapInstance = InstanceProvider.GetBaseMapById(1)!; } private void CharacterHasNonSoldableItems() { var items = new List<ItemDto> { new Item { Type = NoscorePocketType.Etc, VNum = 1, IsSoldable = false } }; var itemBuilder = new ItemGenerationService(items, NullLoggerFactory.Instance, TestHelpers.Instance.LogLanguageLocalizer); Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 1), 0), NoscorePocketType.Etc, 0); Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 2), 0), NoscorePocketType.Etc, 1); Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 3), 0), NoscorePocketType.Etc, 2); Session.Character.MapInstance = InstanceProvider.GetBaseMapById(1)!; } private void CharacterHasSoldableItems() { var items = new List<ItemDto> { new Item { Type = NoscorePocketType.Etc, VNum = 1, IsSoldable = true, Price = 500000 } }; var itemBuilder = new ItemGenerationService(items, NullLoggerFactory.Instance, TestHelpers.Instance.LogLanguageLocalizer); Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 1), 0), NoscorePocketType.Etc, 0); Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 2), 0), NoscorePocketType.Etc, 1); Session.Character.InventoryService.AddItemToPocket(InventoryItemInstance.Create(itemBuilder.Create(1, 3), 0), NoscorePocketType.Etc, 2); Session.Character.MapInstance = InstanceProvider.GetBaseMapById(1)!; } private async Task SellingItem() { await SellPacketHandler.ExecuteAsync(new SellPacket { Slot = 0, Amount = 1, Data = (short)NoscorePocketType.Etc }, Session); } private void GoldShouldNotIncrease() { Assert.IsTrue(Session.Character.Gold == 0); } private void GoldShouldIncrease() { Assert.IsTrue(Session.Character.Gold > 0); } private void ItemShouldStillExist() { Assert.IsNotNull(Session.Character.InventoryService.LoadBySlotAndType(0, NoscorePocketType.Etc)); } private void ItemShouldBeRemoved() { Assert.IsNull(Session.Character.InventoryService.LoadBySlotAndType(0, NoscorePocketType.Etc)); } private void ShouldReceiveCannotSellError() { var packet = (SMemoiPacket?)Session.LastPackets.FirstOrDefault(s => s is SMemoiPacket); Assert.IsTrue(packet?.Type == SMemoType.FailNpc && packet?.Message == Game18NConstString.ItemCanNotBeSold); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Shops/ShoppingPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Algorithm.DignityService; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Shops; using NosCore.Packets.ClientPackets.Shops; using NosCore.Shared.Enumerations; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Shops { [TestClass] public class ShoppingPacketHandlerTests { private ShoppingPacketHandler Handler = null!; private ClientSession Session = null!; private Mock<IDignityService> DignityService = null!; private readonly ILogger<ShoppingPacketHandler> Logger = new Mock<ILogger<ShoppingPacketHandler>>().Object; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); DignityService = new Mock<IDignityService>(); DignityService.Setup(x => x.GetLevelFromDignity(It.IsAny<short>())).Returns(DignityType.Default); Handler = new ShoppingPacketHandler( Logger, DignityService.Object, TestHelpers.Instance.LogLanguageLocalizer, TestHelpers.Instance.SessionRegistry); } [TestMethod] public async Task ShoppingFromUnknownVisualTypeShouldBeIgnored() { await new Spec("Shopping from unknown visual type should be ignored") .Given(CharacterIsOnMap) .WhenAsync(ShoppingFromUnknownVisualType) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ShoppingFromNonExistentNpcShouldBeIgnored() { await new Spec("Shopping from non existent npc should be ignored") .Given(CharacterIsOnMap) .WhenAsync(ShoppingFromNonExistentNpc) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ShoppingFromNonExistentPlayerShouldBeIgnored() { await new Spec("Shopping from non existent player should be ignored") .Given(CharacterIsOnMap) .WhenAsync(ShoppingFromNonExistentPlayer) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private async Task ShoppingFromUnknownVisualType() { await Handler.ExecuteAsync(new ShoppingPacket { VisualType = (VisualType)99, VisualId = 1, ShopType = 0 }, Session); } private async Task ShoppingFromNonExistentNpc() { await Handler.ExecuteAsync(new ShoppingPacket { VisualType = VisualType.Npc, VisualId = 99999, ShopType = 0 }, Session); } private async Task ShoppingFromNonExistentPlayer() { await Handler.ExecuteAsync(new ShoppingPacket { VisualType = VisualType.Player, VisualId = 99999, ShopType = 0 }, Session); } private void NoPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Upgrades/UpgradePacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.UpgradeService; using NosCore.PacketHandlers.Upgrades; using NosCore.Packets.ClientPackets.Player; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Tests.Shared; using Microsoft.Extensions.Logging; using SpecLight; namespace NosCore.PacketHandlers.Tests.Upgrades { [TestClass] public class UpgradePacketHandlerTests { private ClientSession _session = null!; private Mock<IUpgradeOperation> _matchingOperation = null!; private Mock<IUpgradeOperation> _otherOperation = null!; private Mock<ILogger<UpgradePacketHandler>> _logger = null!; private UpgradePacketHandler _handler = null!; [TestInitialize] public async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); _session = await TestHelpers.Instance.GenerateSessionAsync(); _matchingOperation = new Mock<IUpgradeOperation>(); _matchingOperation.Setup(o => o.Kind).Returns(UpgradePacketType.SumResistance); _matchingOperation.Setup(o => o.ExecuteAsync(It.IsAny<ClientSession>(), It.IsAny<UpgradePacket>())) .ReturnsAsync((IReadOnlyList<IPacket>)new IPacket[0]); _otherOperation = new Mock<IUpgradeOperation>(); _otherOperation.Setup(o => o.Kind).Returns(UpgradePacketType.RarifyItem); _logger = new Mock<ILogger<UpgradePacketHandler>>(); _handler = new UpgradePacketHandler( new[] { _otherOperation.Object, _matchingOperation.Object }, _logger.Object, TestHelpers.Instance.LogLanguageLocalizer); } [TestMethod] public async Task DispatchesToOperationWithMatchingKind() { await new Spec("Dispatches to the operation whose Kind matches the packet's UpgradeType") .WhenAsync(SumResistancePacketIsHandled) .Then(MatchingOperationShouldHaveExecutedExactlyOnce) .And(OtherOperationShouldNotHaveExecuted) .ExecuteAsync(); } [TestMethod] public async Task UnknownUpgradeTypeIsLoggedAndIgnored() { await new Spec("Unknown UpgradeType logs a warning and dispatches to nothing") .WhenAsync(UnknownUpgradeTypePacketIsHandled) .Then(NoOperationShouldHaveExecuted) .And(WarningShouldHaveBeenLogged) .ExecuteAsync(); } // --- Whens --- private Task SumResistancePacketIsHandled() => _handler.ExecuteAsync(new UpgradePacket { UpgradeType = UpgradePacketType.SumResistance, InventoryType = PocketType.Equipment, Slot = 0, }, _session); private Task UnknownUpgradeTypePacketIsHandled() => _handler.ExecuteAsync(new UpgradePacket { UpgradeType = UpgradePacketType.FusionItem, InventoryType = PocketType.Equipment, Slot = 0, }, _session); // --- Thens --- private void MatchingOperationShouldHaveExecutedExactlyOnce() => _matchingOperation.Verify(o => o.ExecuteAsync(_session, It.IsAny<UpgradePacket>()), Times.Once); private void OtherOperationShouldNotHaveExecuted() => _otherOperation.Verify(o => o.ExecuteAsync(It.IsAny<ClientSession>(), It.IsAny<UpgradePacket>()), Times.Never); private void NoOperationShouldHaveExecuted() { _matchingOperation.Verify(o => o.ExecuteAsync(It.IsAny<ClientSession>(), It.IsAny<UpgradePacket>()), Times.Never); _otherOperation.Verify(o => o.ExecuteAsync(It.IsAny<ClientSession>(), It.IsAny<UpgradePacket>()), Times.Never); } private void WarningShouldHaveBeenLogged() => _logger.Verify(l => l.Log( LogLevel.Warning, It.IsAny<EventId>(), It.Is<It.IsAnyType>((v, _) => true), It.IsAny<System.Exception?>(), It.IsAny<System.Func<It.IsAnyType, System.Exception?, string>>()), Times.AtLeastOnce); } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Warehouse/DepositPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations.Miniland; using NosCore.Data.WebApi; using NosCore.GameObject.InterChannelCommunication.Hubs.WarehouseHub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.PacketHandlers.Warehouse; using NosCore.Packets.ClientPackets.Warehouse; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Warehouse { [TestClass] public class DepositPacketHandlerTests { private ClientSession Session = null!; private Mock<IWarehouseHub> WarehouseHub = null!; private DepositPacketHandler Handler = null!; private IItemGenerationService ItemProvider = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); WarehouseHub = new Mock<IWarehouseHub>(); Handler = new DepositPacketHandler(WarehouseHub.Object); ItemProvider = TestHelpers.Instance.GenerateItemProvider(); } [TestMethod] public async Task DepositPacketShouldCallWarehouseHub() { await new Spec("Deposit packet should call warehouse hub") .Given(CharacterIsOnMap) .WhenAsync(DepositingItemToWarehouse) .Then(WarehouseHubShouldBeCalled) .ExecuteAsync(); } [TestMethod] public async Task DepositPacketShouldSendCorrectOwnerId() { await new Spec("Deposit packet should send correct owner id") .Given(CharacterIsOnMap) .WhenAsync(DepositingItemToWarehouse) .Then(WarehouseHubShouldReceiveCorrectOwnerId) .ExecuteAsync(); } [TestMethod] public async Task DepositPacketShouldUseWarehouseType() { await new Spec("Deposit packet should use warehouse type") .Given(CharacterIsOnMap) .WhenAsync(DepositingItemToWarehouse) .Then(WarehouseHubShouldReceiveWarehouseType) .ExecuteAsync(); } [TestMethod] public async Task DepositingWithItemInInventoryShouldSucceed() { await new Spec("Depositing with item in inventory should succeed") .Given(CharacterIsOnMap) .And(CharacterHasItemInInventory) .WhenAsync(DepositingItemToWarehouse) .Then(WarehouseHubShouldBeCalled) .ExecuteAsync(); } [TestMethod] public async Task DepositingFromEmptyInventoryShouldStillCallHub() { await new Spec("Depositing from empty inventory should still call hub") .Given(CharacterIsOnMap) .And(CharacterHasEmptyInventory) .WhenAsync(DepositingItemToWarehouse) .Then(WarehouseHubShouldBeCalled) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void CharacterHasItemInInventory() { Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemProvider.Create(1012, 10), 0)); } private void CharacterHasEmptyInventory() { Session.Character.InventoryService.Clear(); } private async Task DepositingItemToWarehouse() { await Handler.ExecuteAsync(new DepositPacket(), Session); } private void WarehouseHubShouldBeCalled() { WarehouseHub.Verify(x => x.AddWarehouseItemAsync(It.IsAny<WareHouseDepositRequest>()), Times.Once); } private void WarehouseHubShouldReceiveCorrectOwnerId() { var characterId = Session.Character.CharacterId; WarehouseHub.Verify(x => x.AddWarehouseItemAsync( It.Is<WareHouseDepositRequest>(r => r.OwnerId == characterId)), Times.Once); } private void WarehouseHubShouldReceiveWarehouseType() { WarehouseHub.Verify(x => x.AddWarehouseItemAsync( It.Is<WareHouseDepositRequest>(r => r.WarehouseType == WarehouseType.Warehouse)), Times.Once); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Warehouse/FDepositPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.PacketHandlers.Warehouse; using NosCore.Packets.ClientPackets.Warehouse; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Warehouse { [TestClass] public class FDepositPacketHandlerTests { private ClientSession Session = null!; private FDepositPacketHandler Handler = null!; private IItemGenerationService ItemProvider = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Handler = new FDepositPacketHandler(); ItemProvider = TestHelpers.Instance.GenerateItemProvider(); } [TestMethod] public async Task FamilyDepositPacketShouldExecuteWithoutError() { await new Spec("Family deposit packet should execute without error") .Given(CharacterIsOnMap) .WhenAsync(DepositingItemToFamilyWarehouse) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyDepositWithItemShouldNotThrow() { await new Spec("Family deposit with item should not throw") .Given(CharacterIsOnMap) .And(CharacterHasItemInInventory) .WhenAsync(DepositingItemToFamilyWarehouse) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyDepositFromEmptyInventoryShouldNotThrow() { await new Spec("Family deposit from empty inventory should not throw") .Given(CharacterIsOnMap) .And(CharacterHasEmptyInventory) .WhenAsync(DepositingItemToFamilyWarehouse) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyDepositToSpecificSlotShouldNotThrow() { await new Spec("Family deposit to specific slot should not throw") .Given(CharacterIsOnMap) .And(CharacterHasItemInInventory) .WhenAsync(DepositingItemToSlot5) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void CharacterHasItemInInventory() { Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemProvider.Create(1012, 10), 0)); } private void CharacterHasEmptyInventory() { Session.Character.InventoryService.Clear(); } private async Task DepositingItemToFamilyWarehouse() { await Handler.ExecuteAsync(new FDepositPacket(), Session); } private async Task DepositingItemToSlot5() { await Handler.ExecuteAsync(new FDepositPacket { Slot = 5 }, Session); } private void NoPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Warehouse/FReposPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Warehouse; using NosCore.Packets.ClientPackets.Warehouse; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Warehouse { [TestClass] public class FReposPacketHandlerTests { private ClientSession Session = null!; private FReposPacketHandler Handler = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Handler = new FReposPacketHandler(); } [TestMethod] public async Task FamilyReposPacketShouldExecuteWithoutError() { await new Spec("Family repos packet should execute without error") .Given(CharacterIsOnMap) .WhenAsync(RearrangingFamilyWarehouseItems) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyReposFromSlot0ToSlot1ShouldNotThrow() { await new Spec("Family repos from slot 0 to slot 1 should not throw") .Given(CharacterIsOnMap) .WhenAsync(MovingItemFromSlot0ToSlot1) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyReposFromInvalidSlotShouldNotThrow() { await new Spec("Family repos from invalid slot should not throw") .Given(CharacterIsOnMap) .WhenAsync(MovingItemFromInvalidSlot) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyReposToInvalidSlotShouldNotThrow() { await new Spec("Family repos to invalid slot should not throw") .Given(CharacterIsOnMap) .WhenAsync(MovingItemToInvalidSlot) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyReposSameSlotShouldNotThrow() { await new Spec("Family repos same slot should not throw") .Given(CharacterIsOnMap) .WhenAsync(MovingItemToSameSlot) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private async Task RearrangingFamilyWarehouseItems() { await Handler.ExecuteAsync(new FReposPacket(), Session); } private async Task MovingItemFromSlot0ToSlot1() { await Handler.ExecuteAsync(new FReposPacket { OldSlot = 0, NewSlot = 1 }, Session); } private async Task MovingItemFromInvalidSlot() { await Handler.ExecuteAsync(new FReposPacket { OldSlot = 255, NewSlot = 0 }, Session); } private async Task MovingItemToInvalidSlot() { await Handler.ExecuteAsync(new FReposPacket { OldSlot = 0, NewSlot = 255 }, Session); } private async Task MovingItemToSameSlot() { await Handler.ExecuteAsync(new FReposPacket { OldSlot = 5, NewSlot = 5 }, Session); } private void NoPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Warehouse/FStashEndPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Warehouse; using NosCore.Packets.ClientPackets.Warehouse; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Warehouse { [TestClass] public class FStashEndPacketHandlerTests { private ClientSession Session = null!; private FStashEndPackettHandler Handler = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Handler = new FStashEndPackettHandler(); } [TestMethod] public async Task FamilyStashEndPacketShouldExecuteWithoutError() { await new Spec("Family stash end packet should execute without error") .Given(CharacterIsOnMap) .WhenAsync(ClosingFamilyWarehouse) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyStashEndPacketShouldNotThrowWhenWarehouseNotOpen() { await new Spec("Family stash end packet should not throw when warehouse not open") .Given(CharacterIsOnMap) .WhenAsync(ClosingFamilyWarehouseWithoutOpening) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyStashEndPacketShouldNotThrowMultipleTimes() { await new Spec("Family stash end packet should not throw multiple times") .Given(CharacterIsOnMap) .WhenAsync(ClosingFamilyWarehouseMultipleTimes) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private async Task ClosingFamilyWarehouse() { await Handler.ExecuteAsync(new FStashEndPacket(), Session); } private async Task ClosingFamilyWarehouseWithoutOpening() { await Handler.ExecuteAsync(new FStashEndPacket(), Session); } private async Task ClosingFamilyWarehouseMultipleTimes() { await Handler.ExecuteAsync(new FStashEndPacket(), Session); await Handler.ExecuteAsync(new FStashEndPacket(), Session); await Handler.ExecuteAsync(new FStashEndPacket(), Session); } private void NoPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Warehouse/FWithdrawPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.PacketHandlers.Warehouse; using NosCore.Packets.ClientPackets.Warehouse; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Warehouse { [TestClass] public class FWithdrawPacketHandlerTests { private ClientSession Session = null!; private FWithdrawPacketHandler Handler = null!; private IItemGenerationService ItemProvider = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Handler = new FWithdrawPacketHandler(); ItemProvider = TestHelpers.Instance.GenerateItemProvider(); } [TestMethod] public async Task FamilyWithdrawPacketShouldExecuteWithoutError() { await new Spec("Family withdraw packet should execute without error") .Given(CharacterIsOnMap) .WhenAsync(WithdrawingItemFromFamilyWarehouse) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyWithdrawFromEmptyWarehouseShouldNotThrow() { await new Spec("Family withdraw from empty warehouse should not throw") .Given(CharacterIsOnMap) .WhenAsync(WithdrawingFromSlot0) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyWithdrawFromInvalidSlotShouldNotThrow() { await new Spec("Family withdraw from invalid slot should not throw") .Given(CharacterIsOnMap) .WhenAsync(WithdrawingFromInvalidSlot) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyWithdrawWithFullInventoryShouldNotThrow() { await new Spec("Family withdraw with full inventory should not throw") .Given(CharacterIsOnMap) .And(CharacterHasFullInventory) .WhenAsync(WithdrawingItemFromFamilyWarehouse) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyWithdrawWithEmptyInventoryShouldNotThrow() { await new Spec("Family withdraw with empty inventory should not throw") .Given(CharacterIsOnMap) .And(CharacterHasEmptyInventory) .WhenAsync(WithdrawingItemFromFamilyWarehouse) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void CharacterHasFullInventory() { Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemProvider.Create(1012, 999), 0)); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemProvider.Create(1012, 999), 0)); } private void CharacterHasEmptyInventory() { Session.Character.InventoryService.Clear(); } private async Task WithdrawingItemFromFamilyWarehouse() { await Handler.ExecuteAsync(new FWithdrawPacket(), Session); } private async Task WithdrawingFromSlot0() { await Handler.ExecuteAsync(new FWithdrawPacket { Slot = 0 }, Session); } private async Task WithdrawingFromInvalidSlot() { await Handler.ExecuteAsync(new FWithdrawPacket { Slot = 999 }, Session); } private void NoPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Warehouse/ReposPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Warehouse; using NosCore.Packets.ClientPackets.Warehouse; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Warehouse { [TestClass] public class ReposPacketHandlerTests { private ClientSession Session = null!; private ReposPacketHandler Handler = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Handler = new ReposPacketHandler(); } [TestMethod] public async Task ReposPacketShouldExecuteWithoutError() { await new Spec("Repos packet should execute without error") .Given(CharacterIsOnMap) .WhenAsync(RearrangingWarehouseItems) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ReposFromSlot0ToSlot1ShouldNotThrow() { await new Spec("Repos from slot 0 to slot 1 should not throw") .Given(CharacterIsOnMap) .WhenAsync(MovingItemFromSlot0ToSlot1) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ReposFromInvalidSlotShouldNotThrow() { await new Spec("Repos from invalid slot should not throw") .Given(CharacterIsOnMap) .WhenAsync(MovingItemFromInvalidSlot) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ReposToInvalidSlotShouldNotThrow() { await new Spec("Repos to invalid slot should not throw") .Given(CharacterIsOnMap) .WhenAsync(MovingItemToInvalidSlot) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ReposSameSlotShouldNotThrow() { await new Spec("Repos same slot should not throw") .Given(CharacterIsOnMap) .WhenAsync(MovingItemToSameSlot) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private async Task RearrangingWarehouseItems() { await Handler.ExecuteAsync(new ReposPacket(), Session); } private async Task MovingItemFromSlot0ToSlot1() { await Handler.ExecuteAsync(new ReposPacket { OldSlot = 0, NewSlot = 1 }, Session); } private async Task MovingItemFromInvalidSlot() { await Handler.ExecuteAsync(new ReposPacket { OldSlot = 255, NewSlot = 0 }, Session); } private async Task MovingItemToInvalidSlot() { await Handler.ExecuteAsync(new ReposPacket { OldSlot = 0, NewSlot = 255 }, Session); } private async Task MovingItemToSameSlot() { await Handler.ExecuteAsync(new ReposPacket { OldSlot = 5, NewSlot = 5 }, Session); } private void NoPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Warehouse/StashEndPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Warehouse; using NosCore.Packets.ClientPackets.Warehouse; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Warehouse { [TestClass] public class StashEndPacketHandlerTests { private ClientSession Session = null!; private StashEndPacketHandler Handler = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Handler = new StashEndPacketHandler(); } [TestMethod] public async Task StashEndPacketShouldExecuteWithoutError() { await new Spec("Stash end packet should execute without error") .Given(CharacterIsOnMap) .WhenAsync(ClosingWarehouse) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task StashEndPacketShouldNotThrowWhenWarehouseNotOpen() { await new Spec("Stash end packet should not throw when warehouse not open") .Given(CharacterIsOnMap) .WhenAsync(ClosingWarehouseWithoutOpening) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task StashEndPacketShouldNotThrowMultipleTimes() { await new Spec("Stash end packet should not throw multiple times") .Given(CharacterIsOnMap) .WhenAsync(ClosingWarehouseMultipleTimes) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private async Task ClosingWarehouse() { await Handler.ExecuteAsync(new StashEndPacket(), Session); } private async Task ClosingWarehouseWithoutOpening() { await Handler.ExecuteAsync(new StashEndPacket(), Session); } private async Task ClosingWarehouseMultipleTimes() { await Handler.ExecuteAsync(new StashEndPacket(), Session); await Handler.ExecuteAsync(new StashEndPacket(), Session); await Handler.ExecuteAsync(new StashEndPacket(), Session); } private void NoPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Warehouse/WarehousePacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.GameObject.InterChannelCommunication.Hubs.WarehouseHub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.PacketHandlers.Warehouse; using NosCore.Packets.ClientPackets.Warehouse; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Warehouse { [TestClass] public class WarehousePacketHandlerTests { private ClientSession Session = null!; private Mock<IWarehouseHub> WarehouseHub = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); WarehouseHub = new Mock<IWarehouseHub>(); } [TestMethod] public async Task DepositPacketShouldCallWarehouseHub() { await new Spec("Deposit packet should call warehouse hub") .Given(CharacterIsOnMap) .WhenAsync(DepositingItemToWarehouse) .Then(WarehouseHubShouldBeCalled) .ExecuteAsync(); } [TestMethod] public async Task WithdrawPacketShouldExecuteWithoutError() { await new Spec("Withdraw packet should execute without error") .Given(CharacterIsOnMap) .WhenAsync(WithdrawingItemFromWarehouse) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task StashEndPacketShouldExecuteWithoutError() { await new Spec("Stash end packet should execute without error") .Given(CharacterIsOnMap) .WhenAsync(ClosingWarehouse) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task ReposPacketShouldExecuteWithoutError() { await new Spec("Repos packet should execute without error") .Given(CharacterIsOnMap) .WhenAsync(RearrangingWarehouseItems) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyDepositPacketShouldExecuteWithoutError() { await new Spec("Family deposit packet should execute without error") .Given(CharacterIsOnMap) .WhenAsync(DepositingItemToFamilyWarehouse) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyWithdrawPacketShouldExecuteWithoutError() { await new Spec("Family withdraw packet should execute without error") .Given(CharacterIsOnMap) .WhenAsync(WithdrawingItemFromFamilyWarehouse) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyStashEndPacketShouldExecuteWithoutError() { await new Spec("Family stash end packet should execute without error") .Given(CharacterIsOnMap) .WhenAsync(ClosingFamilyWarehouse) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task FamilyReposPacketShouldExecuteWithoutError() { await new Spec("Family repos packet should execute without error") .Given(CharacterIsOnMap) .WhenAsync(RearrangingFamilyWarehouseItems) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private async Task DepositingItemToWarehouse() { var handler = new DepositPacketHandler(WarehouseHub.Object); await handler.ExecuteAsync(new DepositPacket(), Session); } private async Task WithdrawingItemFromWarehouse() { var handler = new WithdrawPacketHandler(); await handler.ExecuteAsync(new WithdrawPacket(), Session); } private async Task ClosingWarehouse() { var handler = new StashEndPacketHandler(); await handler.ExecuteAsync(new StashEndPacket(), Session); } private async Task RearrangingWarehouseItems() { var handler = new ReposPacketHandler(); await handler.ExecuteAsync(new ReposPacket(), Session); } private async Task DepositingItemToFamilyWarehouse() { var handler = new FDepositPacketHandler(); await handler.ExecuteAsync(new FDepositPacket(), Session); } private async Task WithdrawingItemFromFamilyWarehouse() { var handler = new FWithdrawPacketHandler(); await handler.ExecuteAsync(new FWithdrawPacket(), Session); } private async Task ClosingFamilyWarehouse() { var handler = new FStashEndPackettHandler(); await handler.ExecuteAsync(new FStashEndPacket(), Session); } private async Task RearrangingFamilyWarehouseItems() { var handler = new FReposPacketHandler(); await handler.ExecuteAsync(new FReposPacket(), Session); } private void WarehouseHubShouldBeCalled() { WarehouseHub.Verify(x => x.AddWarehouseItemAsync(It.IsAny<NosCore.Data.WebApi.WareHouseDepositRequest>()), Times.Once); } private void NoPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } } } ================================================ FILE: test/NosCore.PacketHandlers.Tests/Warehouse/WithdrawPacketHandlerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.PacketHandlers.Warehouse; using NosCore.Packets.ClientPackets.Warehouse; using NosCore.Tests.Shared; using SpecLight; using System.Threading.Tasks; namespace NosCore.PacketHandlers.Tests.Warehouse { [TestClass] public class WithdrawPacketHandlerTests { private ClientSession Session = null!; private WithdrawPacketHandler Handler = null!; private IItemGenerationService ItemProvider = null!; [TestInitialize] public async Task SetupAsync() { await TestHelpers.ResetAsync(); Broadcaster.Reset(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Handler = new WithdrawPacketHandler(); ItemProvider = TestHelpers.Instance.GenerateItemProvider(); } [TestMethod] public async Task WithdrawPacketShouldExecuteWithoutError() { await new Spec("Withdraw packet should execute without error") .Given(CharacterIsOnMap) .WhenAsync(WithdrawingItemFromWarehouse) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task WithdrawFromEmptyWarehouseShouldNotThrow() { await new Spec("Withdraw from empty warehouse should not throw") .Given(CharacterIsOnMap) .WhenAsync(WithdrawingFromSlot0) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task WithdrawFromInvalidSlotShouldNotThrow() { await new Spec("Withdraw from invalid slot should not throw") .Given(CharacterIsOnMap) .WhenAsync(WithdrawingFromInvalidSlot) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task WithdrawWithFullInventoryShouldNotThrow() { await new Spec("Withdraw with full inventory should not throw") .Given(CharacterIsOnMap) .And(CharacterHasFullInventory) .WhenAsync(WithdrawingItemFromWarehouse) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } [TestMethod] public async Task WithdrawWithEmptyInventoryShouldNotThrow() { await new Spec("Withdraw with empty inventory should not throw") .Given(CharacterIsOnMap) .And(CharacterHasEmptyInventory) .WhenAsync(WithdrawingItemFromWarehouse) .Then(NoPacketShouldBeSent) .ExecuteAsync(); } private void CharacterIsOnMap() { Session.Character.MapInstance = TestHelpers.Instance.MapInstanceAccessorService.GetBaseMapById(1)!; } private void CharacterHasFullInventory() { Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemProvider.Create(1012, 999), 0)); Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(ItemProvider.Create(1012, 999), 0)); } private void CharacterHasEmptyInventory() { Session.Character.InventoryService.Clear(); } private async Task WithdrawingItemFromWarehouse() { await Handler.ExecuteAsync(new WithdrawPacket(), Session); } private async Task WithdrawingFromSlot0() { await Handler.ExecuteAsync(new WithdrawPacket { Slot = 0 }, Session); } private async Task WithdrawingFromInvalidSlot() { await Handler.ExecuteAsync(new WithdrawPacket { Slot = 999 }, Session); } private void NoPacketShouldBeSent() { Assert.AreEqual(0, Session.LastPackets.Count); } } } ================================================ FILE: test/NosCore.Parser.Tests/ActParserTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Tests { [TestClass] public class ActParserTests { private Mock<ILogger<ActParser>> _loggerMock = null!; private Mock<ILogLanguageLocalizer<LogLanguageKey>> _logLanguageMock = null!; private Mock<IDao<ActDto, byte>> _actDaoMock = null!; private Mock<IDao<ActPartDto, byte>> _actPartDaoMock = null!; private string _tempFolder = null!; private List<ActDto> _savedActs = null!; private List<ActPartDto> _savedActParts = null!; [TestInitialize] public void Setup() { _loggerMock = new Mock<ILogger<ActParser>>(); _logLanguageMock = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); _actDaoMock = new Mock<IDao<ActDto, byte>>(); _actPartDaoMock = new Mock<IDao<ActPartDto, byte>>(); _savedActs = []; _savedActParts = []; _actDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<ActDto>>())) .Callback<IEnumerable<ActDto>>(acts => _savedActs.AddRange(acts)) .ReturnsAsync(true); _actPartDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<ActPartDto>>())) .Callback<IEnumerable<ActPartDto>>(parts => _savedActParts.AddRange(parts)) .ReturnsAsync(true); _tempFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(_tempFolder); } [TestCleanup] public void Cleanup() { if (Directory.Exists(_tempFolder)) { Directory.Delete(_tempFolder, true); } } private void CreateTestFile(string content) { File.WriteAllText(Path.Combine(_tempFolder, "act_desc.dat"), content); } [TestMethod] public async Task ActParser_ParsesActLines() { var content = "A\t1\tzts1e\nA\t2\tzts2e\n~"; CreateTestFile(content); var parser = new ActParser(_actDaoMock.Object, _actPartDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.ImportActAsync(_tempFolder); Assert.AreEqual(2, _savedActs.Count); Assert.AreEqual(1, _savedActs[0].ActId); Assert.AreEqual("zts1e", _savedActs[0].TitleI18NKey); Assert.AreEqual(40, _savedActs[0].Scene); Assert.AreEqual(2, _savedActs[1].ActId); Assert.AreEqual("zts2e", _savedActs[1].TitleI18NKey); Assert.AreEqual(41, _savedActs[1].Scene); } [TestMethod] public async Task ActParser_ParsesDataLines() { var content = "Data 1 1 1 10\nData 2 1 2 6\nend\n~"; CreateTestFile(content); var parser = new ActParser(_actDaoMock.Object, _actPartDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.ImportActAsync(_tempFolder); Assert.AreEqual(2, _savedActParts.Count); Assert.AreEqual(1, _savedActParts[0].ActPartId); Assert.AreEqual(1, _savedActParts[0].ActId); Assert.AreEqual(1, _savedActParts[0].ActPartNumber); Assert.AreEqual(10, _savedActParts[0].MaxTs); Assert.AreEqual(2, _savedActParts[1].ActPartId); Assert.AreEqual(1, _savedActParts[1].ActId); Assert.AreEqual(2, _savedActParts[1].ActPartNumber); Assert.AreEqual(6, _savedActParts[1].MaxTs); } [TestMethod] public async Task ActParser_ParsesMixedContent() { var content = @"# Act Data #=================================== Data 1 1 1 10 Data 2 1 2 6 Data 7 2 1 3 end #==================================# # Title A 1 zts1e A 2 zts2e ~"; CreateTestFile(content); var parser = new ActParser(_actDaoMock.Object, _actPartDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.ImportActAsync(_tempFolder); Assert.AreEqual(2, _savedActs.Count); Assert.AreEqual(3, _savedActParts.Count); } [TestMethod] public async Task ActParser_IgnoresCommentLines() { var content = "# This is a comment\nA\t1\tzts1e\n# Another comment\n~"; CreateTestFile(content); var parser = new ActParser(_actDaoMock.Object, _actPartDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.ImportActAsync(_tempFolder); Assert.AreEqual(1, _savedActs.Count); Assert.AreEqual(0, _savedActParts.Count); } [TestMethod] public async Task ActParser_HandlesEmptyFile() { CreateTestFile(""); var parser = new ActParser(_actDaoMock.Object, _actPartDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.ImportActAsync(_tempFolder); Assert.AreEqual(0, _savedActs.Count); Assert.AreEqual(0, _savedActParts.Count); } [TestMethod] public async Task ActParser_SceneIsCalculatedFromActId() { var content = "A\t5\tzts5e\n~"; CreateTestFile(content); var parser = new ActParser(_actDaoMock.Object, _actPartDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.ImportActAsync(_tempFolder); Assert.AreEqual(1, _savedActs.Count); Assert.AreEqual(5, _savedActs[0].ActId); Assert.AreEqual(44, _savedActs[0].Scene); // 39 + 5 } } } ================================================ FILE: test/NosCore.Parser.Tests/CardParserTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging.Abstractions; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Tests { [TestClass] public class CardParserTests { private Mock<ILogLanguageLocalizer<LogLanguageKey>> _logLanguageMock = null!; private Mock<IDao<CardDto, short>> _cardDaoMock = null!; private Mock<IDao<BCardDto, short>> _bCardDaoMock = null!; private string _tempFolder = null!; private List<CardDto> _savedCards = null!; private List<BCardDto> _savedBCards = null!; [TestInitialize] public void Setup() { _logLanguageMock = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); _cardDaoMock = new Mock<IDao<CardDto, short>>(); _bCardDaoMock = new Mock<IDao<BCardDto, short>>(); _savedCards = []; _savedBCards = []; _cardDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<CardDto>>())) .Callback<IEnumerable<CardDto>>(cards => _savedCards.AddRange(cards)) .ReturnsAsync(true); _bCardDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<BCardDto>>())) .Callback<IEnumerable<BCardDto>>(cards => _savedBCards.AddRange(cards)) .ReturnsAsync(true); _tempFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(_tempFolder); } [TestCleanup] public void Cleanup() { if (Directory.Exists(_tempFolder)) { Directory.Delete(_tempFolder, true); } } private void CreateTestFile(string content) { File.WriteAllText(Path.Combine(_tempFolder, "Card.dat"), content); } private static string CreateCardData( short cardId = 1, string name = "TestCard", byte level = 1, int effectId = 0, byte buffType = 0, int duration = 0, int delay = 0, short timeoutBuff = 0, byte timeoutBuffChance = 0) { return $"\tVNUM\t{cardId}\r\n" + $"\tNAME\t{name}\r\n" + $"\tGROUP\t0\t{level}\t0\r\n" + $"\tSTYLE\t0\t{buffType}\t0\t0\r\n" + $"\tEFFECT\t{effectId}\t0\r\n" + $"\tTIME\t{duration}\t{delay}\r\n" + "\t1ST\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\r\n" + "\t2ST\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\r\n" + $"\tLAST\t{timeoutBuff}\t{timeoutBuffChance}\r\n" + "\tDESC\tTest Description\r\n" + "END"; } [TestMethod] public async Task CardParser_ParsesSingleCard() { var content = CreateCardData(cardId: 1, name: "Buff1", level: 5, duration: 100); CreateTestFile(content); var parser = new CardParser(_cardDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.InsertCardsAsync(_tempFolder); Assert.AreEqual(1, _savedCards.Count); Assert.AreEqual(1, _savedCards[0].CardId); Assert.AreEqual("Buff1", _savedCards[0].NameI18NKey); Assert.AreEqual(5, _savedCards[0].Level); Assert.AreEqual(100, _savedCards[0].Duration); } [TestMethod] public async Task CardParser_ParsesMultipleCards() { var content = CreateCardData(cardId: 1, name: "Buff1") + "\n#========================================================\n" + CreateCardData(cardId: 2, name: "Buff2") + "\n#========================================================\n" + CreateCardData(cardId: 3, name: "Buff3"); CreateTestFile(content); var parser = new CardParser(_cardDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.InsertCardsAsync(_tempFolder); Assert.AreEqual(3, _savedCards.Count); } [TestMethod] public async Task CardParser_DeduplicatesByCardId() { var content = CreateCardData(cardId: 1, name: "Buff1") + "\n#========================================================\n" + CreateCardData(cardId: 1, name: "Buff1Duplicate"); CreateTestFile(content); var parser = new CardParser(_cardDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.InsertCardsAsync(_tempFolder); Assert.AreEqual(1, _savedCards.Count); } [TestMethod] public async Task CardParser_ParsesDelayField() { var content = CreateCardData(cardId: 1, delay: 500); CreateTestFile(content); var parser = new CardParser(_cardDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.InsertCardsAsync(_tempFolder); Assert.AreEqual(1, _savedCards.Count); Assert.AreEqual(500, _savedCards[0].Delay); } [TestMethod] public async Task CardParser_HandlesEmptyFile() { CreateTestFile(""); var parser = new CardParser(_cardDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.InsertCardsAsync(_tempFolder); Assert.AreEqual(0, _savedCards.Count); } } } ================================================ FILE: test/NosCore.Parser.Tests/DatDocumentationGeneratorTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Parser.Parsers.Generic; namespace NosCore.Parser.Tests { // Lightweight sanity check for the .dat doc generator. Real parsers migrate to // the metadata-aware overloads incrementally; this test exercises the infra // with a toy DTO so the API + output shape stay verified without pulling in a // full filesystem + DAO stack. [TestClass] public class DatDocumentationGeneratorTests { private sealed class ToyDto { public short VNum { get; set; } public long Price { get; set; } public bool Flag9 { get; set; } public byte Computed { get; set; } } [TestMethod] public void GeneratedMarkdownIncludesShapeSectionTablesAndComputed() { var builder = FluentParserBuilder<ToyDto>.Create("anywhere/Item.dat", "END") .Field(x => x.VNum, "VNUM", 0, 2, s => System.Convert.ToInt16(s), description: "Item vnum") .Field(x => x.Price, "VNUM", 0, 3, s => System.Convert.ToInt64(s), description: "Shop sell price") .Field(x => x.Flag9, "FLAG", 0, 10, s => s == "1", description: "FLAG bit 9") .Field(x => x.Computed, _ => (byte)0, source: "FLAG[25] + DATA[0]", description: "Demo computed field") .Describe("FLAG", "25 boolean bits; each column is a single toggle.") .Doc("FLAG", 9, "Warehouseable", "Column the parser knows about but doesn't read."); var md = DatDocumentationGenerator.Generate(builder); StringAssert.Contains(md, "# Item.dat"); StringAssert.Contains(md, "\tVNUM\t{VNum}\t{Price}"); StringAssert.Contains(md, "{Flag9}"); StringAssert.Contains(md, "{Warehouseable}"); StringAssert.Contains(md, "## FLAG"); StringAssert.Contains(md, "25 boolean bits; each column"); StringAssert.Contains(md, "| 10 | Parsed | Flag9 | Boolean | FLAG bit 9 |"); StringAssert.Contains(md, "| 9 | NonParsed | Warehouseable | | Column the parser knows about but doesn't read. |"); StringAssert.Contains(md, "| 2 | Unknown |"); // column gap in FLAG StringAssert.Contains(md, "## Computed / multi-section fields"); StringAssert.Contains(md, "| Computed | Byte | FLAG[25] + DATA[0] | Demo computed field |"); } } } ================================================ FILE: test/NosCore.Parser.Tests/DatDocumentationSnapshotTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System; using System.IO; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers; using NosCore.Parser.Parsers.Generic; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging.Abstractions; namespace NosCore.Parser.Tests { // Generates the per-parser Markdown from its FluentParserBuilder metadata and // writes it under <repo>/documentation/dat/. One method per parser so test // names identify which doc was regenerated. [TestClass] public class DatDocumentationSnapshotTests { [TestMethod] public void Item() => RegenerateFor(new ItemParser( Mock<ItemDto, short>(), Mock<BCardDto, short>(), NullLoggerFactory.Instance, LogLang()).BuildParser(".")); [TestMethod] public void Card() => RegenerateFor(new CardParser( Mock<CardDto, short>(), Mock<BCardDto, short>(), NullLoggerFactory.Instance, LogLang()).BuildParser(".")); [TestMethod] public void Skill() => RegenerateFor(new SkillParser( Mock<BCardDto, short>(), Mock<ComboDto, int>(), Mock<SkillDto, short>(), NullLoggerFactory.Instance, LogLang()).BuildParser(".")); [TestMethod] public void NpcMonster() => RegenerateFor(new NpcMonsterParser( Mock<SkillDto, short>(), Mock<BCardDto, short>(), Mock<DropDto, short>(), Mock<NpcMonsterSkillDto, long>(), Mock<NpcMonsterDto, short>(), NullLoggerFactory.Instance, LogLang()) .BuildParser(".")); [TestMethod] public void Quest() => RegenerateFor(new QuestParser( Mock<QuestDto, short>(), Mock<QuestObjectiveDto, Guid>(), Mock<QuestRewardDto, short>(), Mock<QuestQuestRewardDto, Guid>(), NullLoggerFactory.Instance, LogLang()) .BuildParser(".")); private static void RegenerateFor<T>(FluentParserBuilder<T> builder) where T : new() { var md = DatDocumentationGenerator.Generate(builder); var path = DocumentationPaths.For(builder.FileName + ".md"); Directory.CreateDirectory(Path.GetDirectoryName(path)!); if (Environment.GetEnvironmentVariable("UPDATE_SNAPSHOTS") == "1") { File.WriteAllText(path, md); return; } var existing = File.Exists(path) ? File.ReadAllText(path) : string.Empty; Assert.AreEqual(Normalize(existing), Normalize(md), $"{builder.FileName}.md snapshot mismatch. Run with UPDATE_SNAPSHOTS=1 to regenerate."); } private static string Normalize(string text) => text.Replace("\r\n", "\n"); private static IDao<TDto, TKey> Mock<TDto, TKey>() where TDto : class => new Mock<IDao<TDto, TKey>>().Object; private static ILogLanguageLocalizer<LogLanguageKey> LogLang() => new Mock<ILogLanguageLocalizer<LogLanguageKey>>().Object; } internal static class DocumentationPaths { public static string For(string fileName) { var dir = new DirectoryInfo(Directory.GetCurrentDirectory()); while (dir != null && !File.Exists(Path.Combine(dir.FullName, "NosCore.sln"))) { dir = dir.Parent; } if (dir == null) { throw new DirectoryNotFoundException("Could not locate repo root (NosCore.sln)"); } return Path.Combine(dir.FullName, "documentation", "dat", fileName); } } } ================================================ FILE: test/NosCore.Parser.Tests/DropParserTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.Map; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Tests { [TestClass] public class DropParserTests { private Mock<IDao<DropDto, short>> _dropDaoMock = null!; private List<DropDto> _savedDrops = null!; [TestInitialize] public void Setup() { _dropDaoMock = new Mock<IDao<DropDto, short>>(); _savedDrops = []; _dropDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<DropDto>>())) .Callback<IEnumerable<DropDto>>(d => _savedDrops.AddRange(d)) .ReturnsAsync(true); } [TestMethod] public void GenerateDropDtoPropagatesAllFields() { var parser = new DropParser(_dropDaoMock.Object); var dto = parser.GenerateDropDto( vnum: 1012, amount: 3, monsterVNum: 42, dropChance: 1500, mapTypeId: (short)MapTypeType.Act1); Assert.AreEqual<short>(1012, dto.VNum); Assert.AreEqual(3, dto.Amount); Assert.AreEqual((short?)42, dto.MonsterVNum); Assert.AreEqual(1500, dto.DropChance); Assert.AreEqual((short?)MapTypeType.Act1, dto.MapTypeId); } [TestMethod] public void GenerateDropDtoAcceptsNullMonsterVNumForMapWideDrops() { var parser = new DropParser(_dropDaoMock.Object); var dto = parser.GenerateDropDto( vnum: 2282, amount: 1, monsterVNum: null, dropChance: 2500, mapTypeId: (short)MapTypeType.Act2); Assert.IsNull(dto.MonsterVNum); Assert.AreEqual<short>(2282, dto.VNum); } [TestMethod] public async Task InsertDropAsyncEmitsDropsForEveryMajorActMapType() { var parser = new DropParser(_dropDaoMock.Object); await parser.InsertDropAsync(); foreach (var mapType in new[] { MapTypeType.Act1, MapTypeType.Act2, MapTypeType.Act3, MapTypeType.Act32, MapTypeType.Act4, MapTypeType.Act42, MapTypeType.Act51, MapTypeType.Act52, MapTypeType.Act61A, MapTypeType.Act61D, MapTypeType.Act62, MapTypeType.Oasis, MapTypeType.Mine1, MapTypeType.Mine2, MapTypeType.MeadowOfMine, MapTypeType.SunnyPlain, MapTypeType.Fernon, MapTypeType.FernonF, MapTypeType.Cliff, MapTypeType.CometPlain, MapTypeType.LandOfTheDead, }) { Assert.IsTrue(_savedDrops.Any(d => d.MapTypeId == (short)mapType), $"No drops emitted for MapType {mapType}"); } } [TestMethod] public async Task InsertDropAsyncEmitsGoldDropOnEveryMajorAct() { var parser = new DropParser(_dropDaoMock.Object); await parser.InsertDropAsync(); const short goldVNum = 1012; foreach (var mapType in new[] { MapTypeType.Act1, MapTypeType.Act2, MapTypeType.Act3, MapTypeType.Act4, MapTypeType.Act51, MapTypeType.Act52, MapTypeType.Act61A, MapTypeType.Act61D, MapTypeType.Act62, }) { Assert.IsTrue(_savedDrops.Any(d => d.VNum == goldVNum && d.MapTypeId == (short)mapType), $"Gold (1012) should drop on {mapType}"); } } } } ================================================ FILE: test/NosCore.Parser.Tests/FluentParserBuilderTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations.I18N; using NosCore.Parser.Parsers.Generic; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging.Abstractions; using System; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; namespace NosCore.Parser.Tests { [TestClass] public class FluentParserBuilderTests { private Mock<ILogLanguageLocalizer<LogLanguageKey>> _logLanguageMock = null!; private string _tempFolder = null!; [TestInitialize] public void Setup() { _logLanguageMock = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); _tempFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(_tempFolder); } [TestCleanup] public void Cleanup() { if (Directory.Exists(_tempFolder)) { Directory.Delete(_tempFolder, true); } } private string CreateTestFile(string fileName, string content) { var filePath = Path.Combine(_tempFolder, fileName); File.WriteAllText(filePath, content); return filePath; } [TestMethod] public async Task FluentParser_WithExpressionExtractor_ParsesCorrectly() { var content = "VNUM\t1\t100\nNAME\tTestItem\nEND"; var filePath = CreateTestFile("test.dat", content); var parser = FluentParserBuilder<TestDto>.Create(filePath, "END", 0) .Field(x => x.Id, chunk => Convert.ToInt32(chunk["VNUM"][0][1])) .Field(x => x.Price, chunk => Convert.ToInt64(chunk["VNUM"][0][2])) .Field(x => x.Name, chunk => chunk["NAME"][0][1]) .Build(NullLoggerFactory.Instance, _logLanguageMock.Object); var results = await parser.GetDtosAsync(); Assert.AreEqual(1, results.Count); Assert.AreEqual(1, results[0].Id); Assert.AreEqual(100, results[0].Price); Assert.AreEqual("TestItem", results[0].Name); } [TestMethod] public async Task FluentParser_WithSimpleFieldMapping_ParsesCorrectly() { var content = "VNUM\t42\t999\nEND"; var filePath = CreateTestFile("test.dat", content); var parser = FluentParserBuilder<TestDto>.Create(filePath, "END", 0) .Field(x => x.Id, "VNUM", 0, 1) .Field(x => x.Price, "VNUM", 0, 2) .Build(NullLoggerFactory.Instance, _logLanguageMock.Object); var results = await parser.GetDtosAsync(); Assert.AreEqual(1, results.Count); Assert.AreEqual(42, results[0].Id); Assert.AreEqual(999, results[0].Price); } [TestMethod] public async Task FluentParser_WithCustomConverter_ParsesCorrectly() { var content = "DATA\thello_world\nEND"; var filePath = CreateTestFile("test.dat", content); var parser = FluentParserBuilder<TestDto>.Create(filePath, "END", 0) .Field(x => x.Name, "DATA", 0, 1, s => s.Replace("_", " ")) .Build(NullLoggerFactory.Instance, _logLanguageMock.Object); var results = await parser.GetDtosAsync(); Assert.AreEqual(1, results.Count); Assert.AreEqual("hello world", results[0].Name); } [TestMethod] public async Task FluentParser_WithCustomSplitter_ParsesCorrectly() { var content = "VNUM 1 100\nNAME Test Item\nEND"; var filePath = CreateTestFile("test.dat", content); var parser = FluentParserBuilder<TestDto>.Create(filePath, "END", 0) .WithSplitter(" ") .Field(x => x.Id, "VNUM", 0, 1) .Field(x => x.Price, "VNUM", 0, 2) .Build(NullLoggerFactory.Instance, _logLanguageMock.Object); var results = await parser.GetDtosAsync(); Assert.AreEqual(1, results.Count); Assert.AreEqual(1, results[0].Id); Assert.AreEqual(100, results[0].Price); } [TestMethod] public async Task FluentParser_WithBooleanField_ParsesCorrectly() { var content = "DATA\t1\nEND"; var filePath = CreateTestFile("test.dat", content); var parser = FluentParserBuilder<TestDtoWithBool>.Create(filePath, "END", 0) .Field(x => x.IsActive, "DATA", 0, 1) .Build(NullLoggerFactory.Instance, _logLanguageMock.Object); var results = await parser.GetDtosAsync(); Assert.AreEqual(1, results.Count); Assert.IsTrue(results[0].IsActive); } [TestMethod] public async Task FluentParser_WithEnumField_ParsesCorrectly() { var content = "DATA\t2\nEND"; var filePath = CreateTestFile("test.dat", content); var parser = FluentParserBuilder<TestDtoWithEnum>.Create(filePath, "END", 0) .Field(x => x.Status, "DATA", 0, 1) .Build(NullLoggerFactory.Instance, _logLanguageMock.Object); var results = await parser.GetDtosAsync(); Assert.AreEqual(1, results.Count); Assert.AreEqual(TestStatus.Completed, results[0].Status); } [TestMethod] public async Task FluentParser_ParsesMultipleRecords() { var content = "VNUM\t1\nEND\nVNUM\t2\nEND\nVNUM\t3\nEND"; var filePath = CreateTestFile("test.dat", content); var parser = FluentParserBuilder<TestDto>.Create(filePath, "END", 0) .Field(x => x.Id, "VNUM", 0, 1) .Build(NullLoggerFactory.Instance, _logLanguageMock.Object); var results = await parser.GetDtosAsync(); Assert.AreEqual(3, results.Count); } [TestMethod] public async Task FluentParser_WithMethodReference_ParsesCorrectly() { var content = "DATA\t10\t20\t30\nEND"; var filePath = CreateTestFile("test.dat", content); var parser = FluentParserBuilder<TestDto>.Create(filePath, "END", 0) .Field(x => x.Id, CalculateSum) .Build(NullLoggerFactory.Instance, _logLanguageMock.Object); var results = await parser.GetDtosAsync(); Assert.AreEqual(1, results.Count); Assert.AreEqual(60, results[0].Id); } private static object? CalculateSum(Dictionary<string, string[][]> chunk) { return Convert.ToInt32(chunk["DATA"][0][1]) + Convert.ToInt32(chunk["DATA"][0][2]) + Convert.ToInt32(chunk["DATA"][0][3]); } } public class TestDtoWithBool { public bool IsActive { get; set; } } public enum TestStatus { Pending = 0, InProgress = 1, Completed = 2 } public class TestDtoWithEnum { public TestStatus Status { get; set; } } } ================================================ FILE: test/NosCore.Parser.Tests/GenericParserTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Data.Enumerations.I18N; using NosCore.Parser.Parsers.Generic; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; namespace NosCore.Parser.Tests { [TestClass] public class GenericParserTests { private Mock<ILogger<GenericParser<TestDto>>> _loggerMock = null!; private Mock<ILogLanguageLocalizer<LogLanguageKey>> _logLanguageMock = null!; private string _tempFolder = null!; [TestInitialize] public void Setup() { _loggerMock = new Mock<ILogger<GenericParser<TestDto>>>(); _logLanguageMock = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); _tempFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(_tempFolder); } [TestCleanup] public void Cleanup() { if (Directory.Exists(_tempFolder)) { Directory.Delete(_tempFolder, true); } } private string CreateTestFile(string fileName, string content) { var filePath = Path.Combine(_tempFolder, fileName); File.WriteAllText(filePath, content); return filePath; } [TestMethod] public async Task GenericParser_ParsesSingleRecord() { var content = "VNUM\t1\t100\nNAME\tTestItem\nEND"; var filePath = CreateTestFile("test.dat", content); var actionList = new Dictionary<string, Func<Dictionary<string, string[][]>, object?>> { { nameof(TestDto.Id), chunk => Convert.ToInt32(chunk["VNUM"][0][1]) }, { nameof(TestDto.Price), chunk => Convert.ToInt64(chunk["VNUM"][0][2]) }, { nameof(TestDto.Name), chunk => chunk["NAME"][0][1] } }; var parser = new GenericParser<TestDto>(filePath, "END", 0, actionList, _loggerMock.Object, _logLanguageMock.Object); var results = await parser.GetDtosAsync(); Assert.AreEqual(1, results.Count); Assert.AreEqual(1, results[0].Id); Assert.AreEqual(100, results[0].Price); Assert.AreEqual("TestItem", results[0].Name); } [TestMethod] public async Task GenericParser_ParsesMultipleRecords() { var content = "VNUM\t1\t100\nNAME\tItem1\nEND\nVNUM\t2\t200\nNAME\tItem2\nEND\nVNUM\t3\t300\nNAME\tItem3\nEND"; var filePath = CreateTestFile("test.dat", content); var actionList = new Dictionary<string, Func<Dictionary<string, string[][]>, object?>> { { nameof(TestDto.Id), chunk => Convert.ToInt32(chunk["VNUM"][0][1]) }, { nameof(TestDto.Price), chunk => Convert.ToInt64(chunk["VNUM"][0][2]) }, { nameof(TestDto.Name), chunk => chunk["NAME"][0][1] } }; var parser = new GenericParser<TestDto>(filePath, "END", 0, actionList, _loggerMock.Object, _logLanguageMock.Object); var results = await parser.GetDtosAsync(); Assert.AreEqual(3, results.Count); } [TestMethod] public async Task GenericParser_HandlesEmptyFile() { var content = ""; var filePath = CreateTestFile("test.dat", content); var actionList = new Dictionary<string, Func<Dictionary<string, string[][]>, object?>> { { nameof(TestDto.Id), chunk => Convert.ToInt32(chunk["VNUM"][0][1]) } }; var parser = new GenericParser<TestDto>(filePath, "END", 0, actionList, _loggerMock.Object, _logLanguageMock.Object); var results = await parser.GetDtosAsync(); Assert.AreEqual(0, results.Count); } [TestMethod] public async Task GenericParser_HandlesMultipleLinesWithSameKey() { var content = "DATA\t1\t100\nDATA\t2\t200\nEND"; var filePath = CreateTestFile("test.dat", content); var actionList = new Dictionary<string, Func<Dictionary<string, string[][]>, object?>> { { nameof(TestDto.Id), chunk => Convert.ToInt32(chunk["DATA"][0][1]) }, { nameof(TestDto.Price), chunk => Convert.ToInt64(chunk["DATA"][1][2]) } }; var parser = new GenericParser<TestDto>(filePath, "END", 0, actionList, _loggerMock.Object, _logLanguageMock.Object); var results = await parser.GetDtosAsync(); Assert.AreEqual(1, results.Count); Assert.AreEqual(1, results[0].Id); Assert.AreEqual(200, results[0].Price); } [TestMethod] public async Task GenericParser_UsesCustomSplitter() { var content = "VNUM 1 100\nNAME TestItem\nEND"; var filePath = CreateTestFile("test.dat", content); var actionList = new Dictionary<string, Func<Dictionary<string, string[][]>, object?>> { { nameof(TestDto.Id), chunk => Convert.ToInt32(chunk["VNUM"][0][1]) }, { nameof(TestDto.Price), chunk => Convert.ToInt64(chunk["VNUM"][0][2]) }, { nameof(TestDto.Name), chunk => chunk["NAME"][0][1] } }; var parser = new GenericParser<TestDto>(filePath, "END", 0, actionList, _loggerMock.Object, _logLanguageMock.Object); var results = await parser.GetDtosAsync(" "); Assert.AreEqual(1, results.Count); Assert.AreEqual(1, results[0].Id); Assert.AreEqual(100, results[0].Price); Assert.AreEqual("TestItem", results[0].Name); } } public class TestDto { public int Id { get; set; } public long Price { get; set; } public string Name { get; set; } = string.Empty; } } ================================================ FILE: test/NosCore.Parser.Tests/ItemParserTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Items; using NosCore.Data.StaticEntities; using NosCore.Packets.Enumerations; using NosCore.Parser.Parsers; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging.Abstractions; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Tests { [TestClass] public class ItemParserTests { private Mock<ILogLanguageLocalizer<LogLanguageKey>> _logLanguageMock = null!; private Mock<IDao<ItemDto, short>> _itemDaoMock = null!; private Mock<IDao<BCardDto, short>> _bCardDaoMock = null!; private string _tempFolder = null!; private List<ItemDto> _savedItems = null!; private List<BCardDto> _savedBCards = null!; [TestInitialize] public void Setup() { _logLanguageMock = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); _itemDaoMock = new Mock<IDao<ItemDto, short>>(); _bCardDaoMock = new Mock<IDao<BCardDto, short>>(); _savedItems = []; _savedBCards = []; _itemDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<ItemDto>>())) .Callback<IEnumerable<ItemDto>>(items => _savedItems.AddRange(items)) .ReturnsAsync(true); _bCardDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<BCardDto>>())) .Callback<IEnumerable<BCardDto>>(cards => _savedBCards.AddRange(cards)) .ReturnsAsync(true); _tempFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(_tempFolder); } [TestCleanup] public void Cleanup() { if (Directory.Exists(_tempFolder)) { Directory.Delete(_tempFolder, true); } } private void CreateTestFile(string content) { File.WriteAllText(Path.Combine(_tempFolder, "Item.dat"), content); } private static string CreateItemData( short vnum = 1, long price = 100, string name = "TestItem", int indexType = 0, int indexSubType = 0, int indexItemType = 0, int equipmentSlot = -1, int morph = 0, int typeValue = 0, int typeClass = 0, string flags = "0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0", string data = "0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0", string buff = "0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0") { // Format: lines have a leading tab so keyword is at index 1 after splitting return $"\tVNUM\t{vnum}\t{price}\r\n" + $"\tNAME\t{name}\r\n" + $"\tINDEX\t{indexType}\t{indexSubType}\t{indexItemType}\t{equipmentSlot}\t{morph}\t0\t0\r\n" + $"\tTYPE\t{typeValue}\t{typeClass}\r\n" + $"\tFLAG\t{flags}\r\n" + $"\tDATA\t{data}\r\n" + $"\tBUFF\t{buff}\r\n" + "\tLINEDESC\t0\r\n" + "Test Description\r\n" + "END"; } [TestMethod] public async Task ItemParser_ParsesSingleItem() { var content = CreateItemData(vnum: 1, price: 500, name: "Sword"); CreateTestFile(content); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(1, _savedItems.Count); Assert.AreEqual(1, _savedItems[0].VNum); Assert.AreEqual(500, _savedItems[0].Price); Assert.AreEqual("Sword", _savedItems[0].NameI18NKey); } [TestMethod] public async Task ItemParser_ParsesMultipleItems() { var content = CreateItemData(vnum: 1, name: "Item1") + "\n#========================================================\n" + CreateItemData(vnum: 2, name: "Item2") + "\n#========================================================\n" + CreateItemData(vnum: 3, name: "Item3"); CreateTestFile(content); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(3, _savedItems.Count); } [TestMethod] public async Task ItemParser_DeduplicatesByVNum() { var content = CreateItemData(vnum: 1, name: "Item1") + "\n#========================================================\n" + CreateItemData(vnum: 1, name: "Item1Duplicate"); CreateTestFile(content); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(1, _savedItems.Count); } [TestMethod] public async Task ItemParser_ParsesWeaponType() { // Equipment type is determined by INDEX field // indexType=4 (Equipment), indexItemType=0 (Weapon subtype), equipmentSlot=0 (MainWeapon) var content = CreateItemData( vnum: 1, indexType: 4, indexSubType: 0, indexItemType: 0, equipmentSlot: 0, typeClass: 1 ); CreateTestFile(content); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(1, _savedItems.Count); Assert.AreEqual(ItemType.Weapon, _savedItems[0].ItemType); Assert.AreEqual(EquipmentType.MainWeapon, _savedItems[0].EquipmentSlot); } [TestMethod] public async Task ItemParser_ParsesArmorType() { // INDEX[0][2]=4 (Equipment pocket), INDEX[0][3]=1 (Armor suffix) → ItemType = "01" = Armor // Equipment slot at INDEX[0][5] = 1 (Armor) var content = CreateItemData( vnum: 100, indexType: 4, indexSubType: 1, // This is the itemType suffix (1 = Armor when combined with Equipment) indexItemType: 0, equipmentSlot: 1, typeClass: 1 ); CreateTestFile(content); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(1, _savedItems.Count); Assert.AreEqual(ItemType.Armor, _savedItems[0].ItemType); Assert.AreEqual(EquipmentType.Armor, _savedItems[0].EquipmentSlot); } [TestMethod] public async Task ItemParser_ParsesNonDroppableFlag() { // IsDroppable = FLAG[0][6] == "0", so FLAG[0][6] = "1" means NOT droppable // FLAG[0][6] is position 4 in the flags string (6 - 2 for "" and "FLAG") var content = CreateItemData( vnum: 1, flags: "0\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0" ); CreateTestFile(content); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(1, _savedItems.Count); Assert.IsFalse(_savedItems[0].IsDroppable); } [TestMethod] public async Task ItemParser_ParsesTradableItem() { var content = CreateItemData( vnum: 1, flags: "0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0" ); CreateTestFile(content); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(1, _savedItems.Count); Assert.IsTrue(_savedItems[0].IsDroppable); Assert.IsTrue(_savedItems[0].IsTradable); Assert.IsTrue(_savedItems[0].IsSoldable); } [TestMethod] public async Task ItemParser_ParsesBCards() { var content = CreateItemData( vnum: 1, buff: "0\t1\t10\t100\t50\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0" ); CreateTestFile(content); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(1, _savedItems.Count); Assert.IsTrue(_savedBCards.Count > 0); } [TestMethod] public async Task ItemParser_HandlesEmptyFile() { CreateTestFile(""); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(0, _savedItems.Count); } [TestMethod] public async Task ItemParser_ParsesHeroicFlag() { // IsHeroic is at FLAG[0][22], which is the 20th position in flags string (22 - 2 for "" and "FLAG") var content = CreateItemData( vnum: 1, flags: "0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0" ); CreateTestFile(content); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(1, _savedItems.Count); Assert.IsTrue(_savedItems[0].IsHeroic); } [TestMethod] public async Task ItemParser_ParsesConsumableItem() { var content = CreateItemData( vnum: 2000, indexType: 9, indexSubType: 0, indexItemType: 0, equipmentSlot: -1, data: "0\t0\t100\t0\t50\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0" ); CreateTestFile(content); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(1, _savedItems.Count); Assert.AreEqual(NoscorePocketType.Main, _savedItems[0].Type); } [TestMethod] public async Task ItemParser_WeaponLevelMinimumComesFromFirstDataField() { var content = CreateItemData( vnum: 1, indexType: 4, indexSubType: 0, indexItemType: 4, equipmentSlot: 0, typeClass: 1, data: "15\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0"); CreateTestFile(content); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(1, _savedItems.Count); Assert.AreEqual(ItemType.Weapon, _savedItems[0].ItemType); Assert.AreEqual(15, _savedItems[0].LevelMinimum); } [TestMethod] public async Task ItemParser_ArmorLevelMinimumComesFromFirstDataField() { var content = CreateItemData( vnum: 2, indexType: 4, indexSubType: 1, indexItemType: 0, equipmentSlot: 1, typeClass: 1, data: "42\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0"); CreateTestFile(content); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(1, _savedItems.Count); Assert.AreEqual(ItemType.Armor, _savedItems[0].ItemType); Assert.AreEqual(42, _savedItems[0].LevelMinimum); } [TestMethod] public async Task ItemParser_VNum5119OverridesEffectToSpeedBooster() { var content = CreateItemData(vnum: 5119); CreateTestFile(content); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(1, _savedItems.Count); Assert.AreEqual(ItemEffectType.SpeedBooster, _savedItems[0].Effect); } [TestMethod] public async Task ItemParser_AmuletVNumsOverrideEffectAndEffectValue() { var content = CreateItemData(vnum: 282) + "\n#========================================================\n" + CreateItemData(vnum: 180) + "\n#========================================================\n" + CreateItemData(vnum: 181); CreateTestFile(content); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(3, _savedItems.Count); var v282 = _savedItems.First(i => i.VNum == 282); var v180 = _savedItems.First(i => i.VNum == 180); var v181 = _savedItems.First(i => i.VNum == 181); Assert.AreEqual(ItemEffectType.RedAmulet, v282.Effect); Assert.AreEqual(3, v282.EffectValue); Assert.AreEqual(ItemEffectType.AttackAmulet, v180.Effect); Assert.AreEqual(ItemEffectType.DefenseAmulet, v181.Effect); } [TestMethod] public async Task ItemParser_VNumRange4101to4105OverridesEquipmentSlotToMainWeapon() { var content = CreateItemData(vnum: 4101, indexType: 4, equipmentSlot: 10) + "\n#========================================================\n" + CreateItemData(vnum: 4105, indexType: 4, equipmentSlot: 11); CreateTestFile(content); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(2, _savedItems.Count); foreach (var item in _savedItems) { Assert.AreEqual(EquipmentType.MainWeapon, item.EquipmentSlot); } } [TestMethod] public async Task ItemParser_ConsumableLevelMinimumFallbackIsZeroEvenWhenDataHasValue() { var content = CreateItemData( vnum: 3, indexType: 9, indexSubType: 0, indexItemType: 0, equipmentSlot: -1, data: "0\t0\t99\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0"); CreateTestFile(content); var parser = new ItemParser(_itemDaoMock.Object, _bCardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ParseAsync(_tempFolder); Assert.AreEqual(1, _savedItems.Count); Assert.AreEqual(0, _savedItems[0].LevelMinimum); } } } ================================================ FILE: test/NosCore.Parser.Tests/MapMonsterParserTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Tests { [TestClass] public class MapMonsterParserTests { private Mock<ILogger<MapMonsterParser>> _loggerMock = null!; private Mock<ILogLanguageLocalizer<LogLanguageKey>> _logLanguageMock = null!; private Mock<IDao<MapMonsterDto, int>> _mapMonsterDaoMock = null!; private Mock<IDao<NpcMonsterDto, short>> _npcMonsterDaoMock = null!; private List<MapMonsterDto> _savedMonsters = null!; [TestInitialize] public void Setup() { _loggerMock = new Mock<ILogger<MapMonsterParser>>(); _logLanguageMock = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); _mapMonsterDaoMock = new Mock<IDao<MapMonsterDto, int>>(); _npcMonsterDaoMock = new Mock<IDao<NpcMonsterDto, short>>(); _savedMonsters = []; _mapMonsterDaoMock .Setup(x => x.LoadAll()) .Returns(new List<MapMonsterDto>()); _mapMonsterDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<MapMonsterDto>>())) .Callback<IEnumerable<MapMonsterDto>>(monsters => _savedMonsters.AddRange(monsters)) .ReturnsAsync(true); _npcMonsterDaoMock .Setup(x => x.LoadAll()) .Returns(new List<NpcMonsterDto> { new() { NpcMonsterVNum = 1, CanWalk = true }, new() { NpcMonsterVNum = 2, CanWalk = true }, new() { NpcMonsterVNum = 100, CanWalk = true } }); } [TestMethod] public async Task MapMonsterParser_ParsesSingleMonster() { var packets = new List<string[]> { new[] { "at", "1", "1", "50", "50", "2", "0", "0", "0" }, new[] { "in", "3", "1", "1001", "100", "100", "2", "100", "0" } }; var parser = new MapMonsterParser(_mapMonsterDaoMock.Object, _npcMonsterDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertMapMonsterAsync(packets); Assert.AreEqual(1, _savedMonsters.Count); Assert.AreEqual(1, _savedMonsters[0].MapId); Assert.AreEqual(1, _savedMonsters[0].VNum); Assert.AreEqual(1001, _savedMonsters[0].MapMonsterId); Assert.AreEqual(100, _savedMonsters[0].MapX); Assert.AreEqual(100, _savedMonsters[0].MapY); } [TestMethod] public async Task MapMonsterParser_ParsesMultipleMonsters() { var packets = new List<string[]> { new[] { "at", "1", "1", "50", "50", "2", "0", "0", "0" }, new[] { "in", "3", "1", "1001", "100", "100", "2", "100", "0" }, new[] { "in", "3", "2", "1002", "110", "110", "3", "100", "0" } }; var parser = new MapMonsterParser(_mapMonsterDaoMock.Object, _npcMonsterDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertMapMonsterAsync(packets); Assert.AreEqual(2, _savedMonsters.Count); } [TestMethod] public async Task MapMonsterParser_SkipsDuplicateMapMonsterId() { var packets = new List<string[]> { new[] { "at", "1", "1", "50", "50", "2", "0", "0", "0" }, new[] { "in", "3", "1", "1001", "100", "100", "2", "100", "0" }, new[] { "in", "3", "1", "1001", "110", "110", "3", "100", "0" } }; var parser = new MapMonsterParser(_mapMonsterDaoMock.Object, _npcMonsterDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertMapMonsterAsync(packets); Assert.AreEqual(1, _savedMonsters.Count); } [TestMethod] public async Task MapMonsterParser_SkipsUnknownMonsterVNum() { var packets = new List<string[]> { new[] { "at", "1", "1", "50", "50", "2", "0", "0", "0" }, new[] { "in", "3", "999", "1001", "100", "100", "2", "100", "0" } }; var parser = new MapMonsterParser(_mapMonsterDaoMock.Object, _npcMonsterDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertMapMonsterAsync(packets); Assert.AreEqual(0, _savedMonsters.Count); } [TestMethod] public async Task MapMonsterParser_HandlesEmptyPacketList() { var packets = new List<string[]>(); var parser = new MapMonsterParser(_mapMonsterDaoMock.Object, _npcMonsterDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertMapMonsterAsync(packets); Assert.AreEqual(0, _savedMonsters.Count); } } } ================================================ FILE: test/NosCore.Parser.Tests/MapNpcParserTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Tests { [TestClass] public class MapNpcParserTests { private Mock<ILogger<MapNpcParser>> _loggerMock = null!; private Mock<ILogLanguageLocalizer<LogLanguageKey>> _logLanguageMock = null!; private Mock<IDao<MapNpcDto, int>> _mapNpcDaoMock = null!; private Mock<IDao<NpcMonsterDto, short>> _npcMonsterDaoMock = null!; private Mock<IDao<NpcTalkDto, short>> _npcTalkDaoMock = null!; private List<MapNpcDto> _savedNpcs = null!; [TestInitialize] public void Setup() { _loggerMock = new Mock<ILogger<MapNpcParser>>(); _logLanguageMock = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); _mapNpcDaoMock = new Mock<IDao<MapNpcDto, int>>(); _npcMonsterDaoMock = new Mock<IDao<NpcMonsterDto, short>>(); _npcTalkDaoMock = new Mock<IDao<NpcTalkDto, short>>(); _savedNpcs = []; _mapNpcDaoMock .Setup(x => x.LoadAll()) .Returns(new List<MapNpcDto>()); _mapNpcDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<MapNpcDto>>())) .Callback<IEnumerable<MapNpcDto>>(npcs => _savedNpcs.AddRange(npcs)) .ReturnsAsync(true); _npcMonsterDaoMock .Setup(x => x.LoadAll()) .Returns(new List<NpcMonsterDto> { new() { NpcMonsterVNum = 1, CanWalk = true }, new() { NpcMonsterVNum = 2, CanWalk = true }, new() { NpcMonsterVNum = 100, CanWalk = true } }); _npcTalkDaoMock .Setup(x => x.LoadAll()) .Returns(new List<NpcTalkDto> { new() { DialogId = 1 }, new() { DialogId = 2 } }); } [TestMethod] public async Task MapNpcParser_ParsesSingleNpc() { var packets = new List<string[]> { new[] { "at", "1", "1", "50", "50", "2", "0", "0", "0" }, new[] { "in", "2", "1", "100", "50", "60", "2", "100", "0", "1", "0", "0", "0", "1", "0" } }; var parser = new MapNpcParser(_mapNpcDaoMock.Object, _npcMonsterDaoMock.Object, _npcTalkDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertMapNpcsAsync(packets); Assert.AreEqual(1, _savedNpcs.Count); Assert.AreEqual(1, _savedNpcs[0].MapId); Assert.AreEqual(1, _savedNpcs[0].VNum); Assert.AreEqual(100, _savedNpcs[0].MapNpcId); Assert.AreEqual(50, _savedNpcs[0].MapX); Assert.AreEqual(60, _savedNpcs[0].MapY); } [TestMethod] public async Task MapNpcParser_ParsesMultipleNpcs() { var packets = new List<string[]> { new[] { "at", "1", "1", "50", "50", "2", "0", "0", "0" }, new[] { "in", "2", "1", "100", "50", "60", "2", "100", "0", "1", "0", "0", "0", "1", "0" }, new[] { "in", "2", "2", "101", "70", "80", "3", "100", "0", "2", "0", "0", "0", "1", "0" } }; var parser = new MapNpcParser(_mapNpcDaoMock.Object, _npcMonsterDaoMock.Object, _npcTalkDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertMapNpcsAsync(packets); Assert.AreEqual(2, _savedNpcs.Count); } [TestMethod] public async Task MapNpcParser_SkipsDuplicateMapNpcId() { var packets = new List<string[]> { new[] { "at", "1", "1", "50", "50", "2", "0", "0", "0" }, new[] { "in", "2", "1", "100", "50", "60", "2", "100", "0", "1", "0", "0", "0", "1", "0" }, new[] { "in", "2", "1", "100", "70", "80", "3", "100", "0", "2", "0", "0", "0", "1", "0" } }; var parser = new MapNpcParser(_mapNpcDaoMock.Object, _npcMonsterDaoMock.Object, _npcTalkDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertMapNpcsAsync(packets); Assert.AreEqual(1, _savedNpcs.Count); } [TestMethod] public async Task MapNpcParser_SkipsUnknownNpcVNum() { var packets = new List<string[]> { new[] { "at", "1", "1", "50", "50", "2", "0", "0", "0" }, new[] { "in", "2", "999", "100", "50", "60", "2", "100", "0", "1", "0", "0", "0", "1", "0" } }; var parser = new MapNpcParser(_mapNpcDaoMock.Object, _npcMonsterDaoMock.Object, _npcTalkDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertMapNpcsAsync(packets); Assert.AreEqual(0, _savedNpcs.Count); } [TestMethod] public async Task MapNpcParser_SetsDialogFromNpcTalk() { var packets = new List<string[]> { new[] { "at", "1", "1", "50", "50", "2", "0", "0", "0" }, new[] { "in", "2", "1", "100", "50", "60", "2", "100", "0", "1", "0", "0", "0", "1", "0" } }; var parser = new MapNpcParser(_mapNpcDaoMock.Object, _npcMonsterDaoMock.Object, _npcTalkDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertMapNpcsAsync(packets); Assert.AreEqual(1, _savedNpcs.Count); Assert.AreEqual((short)1, _savedNpcs[0].Dialog); } [TestMethod] public async Task MapNpcParser_HandlesEmptyPacketList() { var packets = new List<string[]>(); var parser = new MapNpcParser(_mapNpcDaoMock.Object, _npcMonsterDaoMock.Object, _npcTalkDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertMapNpcsAsync(packets); Assert.AreEqual(0, _savedNpcs.Count); } } } ================================================ FILE: test/NosCore.Parser.Tests/MapParserTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging.Abstractions; using System; using System.IO; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Tests { [TestClass] public class MapParserTests { private Mock<IDao<MapDto, short>> _daoMock = null!; private Mock<ILogLanguageLocalizer<LogLanguageKey>> _logLanguageMock = null!; private string _tempFolder = null!; [TestInitialize] public void Setup() { _logLanguageMock = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); _daoMock = new Mock<IDao<MapDto, short>>(); _tempFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(_tempFolder); } [TestCleanup] public void Cleanup() { if (Directory.Exists(_tempFolder)) { Directory.Delete(_tempFolder, true); } } private void WriteMapIdDat(string content) => File.WriteAllText(Path.Combine(_tempFolder, "MapIDData.dat"), content); [TestMethod] public async Task MapParser_ParsesSingleEntry() { WriteMapIdDat("1 1 0 0 nosvillage\r\nDATA 0\r\n"); var parser = new MapParser(_daoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); var result = await parser.ParseDatAsync(_tempFolder); Assert.AreEqual(1, result.Count); Assert.AreEqual(1, result[0].MapId); Assert.AreEqual("nosvillage", result[0].NameI18NKey); } [TestMethod] public async Task MapParser_ParsesMultipleEntries() { WriteMapIdDat( "1 1 0 0 nosvillage\r\nDATA 0\r\n" + "2 1 0 0 alveus\r\nDATA 0\r\n" + "145 1 0 0 oldnosville\r\nDATA 0\r\n"); var parser = new MapParser(_daoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); var result = await parser.ParseDatAsync(_tempFolder); Assert.AreEqual(3, result.Count); Assert.IsTrue(result.Any(m => m.MapId == 1 && m.NameI18NKey == "nosvillage")); Assert.IsTrue(result.Any(m => m.MapId == 2 && m.NameI18NKey == "alveus")); Assert.IsTrue(result.Any(m => m.MapId == 145 && m.NameI18NKey == "oldnosville")); } [TestMethod] public async Task MapParser_EmptyFileReturnsEmptyList() { WriteMapIdDat(""); var parser = new MapParser(_daoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); var result = await parser.ParseDatAsync(_tempFolder); Assert.AreEqual(0, result.Count); } } } ================================================ FILE: test/NosCore.Parser.Tests/NosCore.Parser.Tests.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net10.0</TargetFramework> <IsPackable>false</IsPackable> <NoWarn>MSTEST0001;MSTEST0037;MSTEST0044;NU1701</NoWarn> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <ItemGroup> <PackageReference Include="coverlet.msbuild"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Microsoft.NET.Test.Sdk" /> <PackageReference Include="MSTest.TestAdapter" /> <PackageReference Include="MSTest.TestFramework" /> <PackageReference Include="Moq" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\..\src\NosCore.Parser\NosCore.Parser.csproj" /> <ProjectReference Include="..\..\test\NosCore.Tests.Shared\NosCore.Tests.Shared.csproj" /> </ItemGroup> <ItemGroup> <PackageReference Include="NosCore.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> </Project> ================================================ FILE: test/NosCore.Parser.Tests/NpcMonsterParserTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging.Abstractions; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Tests { [TestClass] public class NpcMonsterParserTests { private Mock<ILogLanguageLocalizer<LogLanguageKey>> _logLanguageMock = null!; private Mock<IDao<SkillDto, short>> _skillDaoMock = null!; private Mock<IDao<BCardDto, short>> _bCardDaoMock = null!; private Mock<IDao<DropDto, short>> _dropDaoMock = null!; private Mock<IDao<NpcMonsterSkillDto, long>> _npcMonsterSkillDaoMock = null!; private Mock<IDao<NpcMonsterDto, short>> _npcMonsterDaoMock = null!; private string _tempFolder = null!; private List<NpcMonsterDto> _savedMonsters = null!; [TestInitialize] public void Setup() { _logLanguageMock = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); _skillDaoMock = new Mock<IDao<SkillDto, short>>(); _bCardDaoMock = new Mock<IDao<BCardDto, short>>(); _dropDaoMock = new Mock<IDao<DropDto, short>>(); _npcMonsterSkillDaoMock = new Mock<IDao<NpcMonsterSkillDto, long>>(); _npcMonsterDaoMock = new Mock<IDao<NpcMonsterDto, short>>(); _savedMonsters = []; _skillDaoMock.Setup(x => x.LoadAll()).Returns(new List<SkillDto>()); _dropDaoMock.Setup(x => x.LoadAll()).Returns(new List<DropDto>()); _npcMonsterDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<NpcMonsterDto>>())) .Callback<IEnumerable<NpcMonsterDto>>(m => _savedMonsters.AddRange(m)) .ReturnsAsync(true); _bCardDaoMock.Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<BCardDto>>())).ReturnsAsync(true); _dropDaoMock.Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<DropDto>>())).ReturnsAsync(true); _npcMonsterSkillDaoMock.Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<NpcMonsterSkillDto>>())).ReturnsAsync(true); _tempFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(_tempFolder); } [TestCleanup] public void Cleanup() { if (Directory.Exists(_tempFolder)) { Directory.Delete(_tempFolder, true); } } private static string BuildMonster(short vnum, string name, byte level, byte race = 0, byte raceType = 0, int hp = 0, int mp = 0, int xp = 0, int jxp = 0, byte armorLvl = 1, byte weaponLvl = 1, byte weaponType = 0) { var zeros50 = string.Join("\t", Enumerable.Repeat("0", 50)); var zeros20 = string.Join("\t", Enumerable.Repeat("0", 20)); var zeros60 = string.Join("\t", Enumerable.Repeat("0", 60)); var zeros15 = string.Join("\t", Enumerable.Repeat("0", 15)); var zeros32 = string.Join("\t", Enumerable.Repeat("0", 32)); return $"\tVNUM\t{vnum}\r\n" + $"\tNAME\t{name}\r\n" + $"\tLEVEL\t{level}\r\n" + $"\tRACE\t{race}\t{raceType}\r\n" + $"\tATTRIB\t0\t0\t0\t0\t0\t0\r\n" + $"\tHP/MP\t{hp}\t{mp}\r\n" + $"\tEXP\t{xp}\t{jxp}\r\n" + $"\tPREATT\t0\t0\t0\t0\t0\t0\r\n" + $"\tSETTING\t0\t0\t0\t0\t0\t0\r\n" + $"\tETC\t0\t0\t0\t0\t0\t0\t0\t0\r\n" + $"\tPETINFO\t0\t0\t0\t0\r\n" + $"\tEFF\t0\t0\t0\r\n" + $"\tZSKILL\t0\t0\t0\t0\t0\t0\r\n" + $"\tWINFO\t0\t0\t0\r\n" + $"\tWEAPON\t{weaponLvl}\t{weaponType}\t0\t0\t0\t0\t0\r\n" + $"\tAINFO\t0\t0\r\n" + $"\tARMOR\t{armorLvl}\t0\t0\t0\t0\r\n" + $"\tSKILL\t{zeros15}\r\n" + $"\tPARTNER\t{zeros20}\r\n" + $"\tBASIC\t{zeros50}\r\n" + $"\tCARD\t{zeros20}\r\n" + $"\tMODE\t{zeros32}\r\n" + $"\tITEM\t{zeros60}\r\n" + "#========================================================\r\n"; } [TestMethod] public async Task NpcMonsterParser_ParsesBasicVnumAndName() { File.WriteAllText(Path.Combine(_tempFolder, "monster.dat"), BuildMonster(1, "testmob", 1)); var parser = new NpcMonsterParser(_skillDaoMock.Object, _bCardDaoMock.Object, _dropDaoMock.Object, _npcMonsterSkillDaoMock.Object, _npcMonsterDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.InsertNpcMonstersAsync(_tempFolder); Assert.AreEqual(1, _savedMonsters.Count); Assert.AreEqual(1, _savedMonsters[0].NpcMonsterVNum); Assert.AreEqual("testmob", _savedMonsters[0].NameI18NKey); } [TestMethod] public async Task NpcMonsterParser_DeduplicatesByVNum() { File.WriteAllText(Path.Combine(_tempFolder, "monster.dat"), BuildMonster(5, "first", 1) + BuildMonster(5, "duplicate", 1)); var parser = new NpcMonsterParser(_skillDaoMock.Object, _bCardDaoMock.Object, _dropDaoMock.Object, _npcMonsterSkillDaoMock.Object, _npcMonsterDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.InsertNpcMonstersAsync(_tempFolder); Assert.AreEqual(1, _savedMonsters.Count); } [TestMethod] public async Task NpcMonsterParser_LevelFieldParsedCorrectly() { File.WriteAllText(Path.Combine(_tempFolder, "monster.dat"), BuildMonster(10, "leveltest", 42)); var parser = new NpcMonsterParser(_skillDaoMock.Object, _bCardDaoMock.Object, _dropDaoMock.Object, _npcMonsterSkillDaoMock.Object, _npcMonsterDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.InsertNpcMonstersAsync(_tempFolder); Assert.AreEqual(1, _savedMonsters.Count); Assert.AreEqual(42, _savedMonsters[0].Level); } [TestMethod] public async Task NpcMonsterParser_ArmorDefenceFieldsDerivedFromArmorLevel() { File.WriteAllText(Path.Combine(_tempFolder, "monster.dat"), BuildMonster(20, "armortest", 1, armorLvl: 5)); var parser = new NpcMonsterParser(_skillDaoMock.Object, _bCardDaoMock.Object, _dropDaoMock.Object, _npcMonsterSkillDaoMock.Object, _npcMonsterDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.InsertNpcMonstersAsync(_tempFolder); Assert.AreEqual(1, _savedMonsters.Count); Assert.AreEqual((5 - 1) * 2 + 18, _savedMonsters[0].CloseDefence); Assert.AreEqual((5 - 1) * 3 + 17, _savedMonsters[0].DistanceDefence); Assert.AreEqual((5 - 1) * 2 + 13, _savedMonsters[0].MagicDefence); Assert.AreEqual((5 - 1) * 5 + 31, _savedMonsters[0].DefenceDodge); } } } ================================================ FILE: test/NosCore.Parser.Tests/PortalParserTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Tests { [TestClass] public class PortalParserTests { private Mock<ILogger<PortalParser>> _loggerMock = null!; private Mock<ILogLanguageLocalizer<LogLanguageKey>> _logLanguageMock = null!; private Mock<IDao<PortalDto, int>> _portalDaoMock = null!; private Mock<IDao<MapDto, short>> _mapDaoMock = null!; private List<PortalDto> _savedPortals = null!; [TestInitialize] public void Setup() { _loggerMock = new Mock<ILogger<PortalParser>>(); _logLanguageMock = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); _portalDaoMock = new Mock<IDao<PortalDto, int>>(); _mapDaoMock = new Mock<IDao<MapDto, short>>(); _savedPortals = []; _portalDaoMock .Setup(x => x.LoadAll()) .Returns(new List<PortalDto>()); _portalDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<PortalDto>())) .Callback<PortalDto>(portal => _savedPortals.Add(portal)) .ReturnsAsync((PortalDto p) => p); _portalDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<PortalDto>>())) .Callback<IEnumerable<PortalDto>>(portals => _savedPortals.AddRange(portals)) .ReturnsAsync(true); _mapDaoMock .Setup(x => x.LoadAll()) .Returns(new List<MapDto> { new() { MapId = 1 }, new() { MapId = 2 }, new() { MapId = 3 }, new() { MapId = 150 }, new() { MapId = 98 }, new() { MapId = 20001 }, new() { MapId = 2586 }, new() { MapId = 145 }, new() { MapId = 2587 }, new() { MapId = 189 } }); } [TestMethod] public async Task PortalParser_ParsesPortalsBetweenMaps() { var packets = new List<string[]> { new[] { "at", "1", "1", "50", "50", "2", "0", "0", "0" }, new[] { "gp", "100", "100", "2", "0" }, new[] { "at", "1", "2", "50", "50", "2", "0", "0", "0" }, new[] { "gp", "100", "100", "1", "0" } }; var parser = new PortalParser(_loggerMock.Object, _mapDaoMock.Object, _portalDaoMock.Object, _logLanguageMock.Object); await parser.InsertPortalsAsync(packets); var portalCount = _savedPortals.Count(p => p.SourceMapId == 1 || p.SourceMapId == 2); Assert.IsTrue(portalCount >= 2); } [TestMethod] public async Task PortalParser_CreatesHardcodedPortals() { var packets = new List<string[]>(); var parser = new PortalParser(_loggerMock.Object, _mapDaoMock.Object, _portalDaoMock.Object, _logLanguageMock.Object); await parser.InsertPortalsAsync(packets); Assert.IsTrue(_savedPortals.Any(p => p.SourceMapId == 150)); Assert.IsTrue(_savedPortals.Any(p => p.SourceMapId == 20001)); Assert.IsTrue(_savedPortals.Any(p => p.SourceMapId == 2586)); Assert.IsTrue(_savedPortals.Any(p => p.SourceMapId == 2587)); } [TestMethod] public async Task PortalParser_SkipsPortalsToUnknownMaps() { var packets = new List<string[]> { new[] { "at", "1", "1", "50", "50", "2", "0", "0", "0" }, new[] { "gp", "100", "100", "999", "0" } }; var parser = new PortalParser(_loggerMock.Object, _mapDaoMock.Object, _portalDaoMock.Object, _logLanguageMock.Object); await parser.InsertPortalsAsync(packets); Assert.IsFalse(_savedPortals.Any(p => p.DestinationMapId == 999)); } [TestMethod] public async Task PortalParser_SkipsDuplicatePortals() { var packets = new List<string[]> { new[] { "at", "1", "1", "50", "50", "2", "0", "0", "0" }, new[] { "gp", "100", "100", "2", "0" }, new[] { "gp", "100", "100", "2", "0" } }; var parser = new PortalParser(_loggerMock.Object, _mapDaoMock.Object, _portalDaoMock.Object, _logLanguageMock.Object); await parser.InsertPortalsAsync(packets); var duplicatePortals = _savedPortals.Count(p => p.SourceMapId == 1 && p.SourceX == 100 && p.SourceY == 100 && p.DestinationMapId == 2); Assert.IsTrue(duplicatePortals <= 1); } } } ================================================ FILE: test/NosCore.Parser.Tests/QuestParserTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging.Abstractions; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Tests { [TestClass] public class QuestParserTests { private Mock<ILogLanguageLocalizer<LogLanguageKey>> _logLanguageMock = null!; private Mock<IDao<QuestDto, short>> _questDaoMock = null!; private Mock<IDao<QuestObjectiveDto, Guid>> _questObjectiveDaoMock = null!; private Mock<IDao<QuestRewardDto, short>> _questRewardDaoMock = null!; private Mock<IDao<QuestQuestRewardDto, Guid>> _questQuestRewardDaoMock = null!; private string _tempFolder = null!; private List<QuestDto> _savedQuests = null!; private List<QuestObjectiveDto> _savedObjectives = null!; private List<QuestQuestRewardDto> _savedQuestRewards = null!; [TestInitialize] public void Setup() { _logLanguageMock = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); _questDaoMock = new Mock<IDao<QuestDto, short>>(); _questObjectiveDaoMock = new Mock<IDao<QuestObjectiveDto, Guid>>(); _questRewardDaoMock = new Mock<IDao<QuestRewardDto, short>>(); _questQuestRewardDaoMock = new Mock<IDao<QuestQuestRewardDto, Guid>>(); _savedQuests = []; _savedObjectives = []; _savedQuestRewards = []; _questDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<QuestDto>>())) .Callback<IEnumerable<QuestDto>>(quests => _savedQuests.AddRange(quests)) .ReturnsAsync(true); _questObjectiveDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<QuestObjectiveDto>>())) .Callback<IEnumerable<QuestObjectiveDto>>(objectives => _savedObjectives.AddRange(objectives)) .ReturnsAsync(true); _questQuestRewardDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<QuestQuestRewardDto>>())) .Callback<IEnumerable<QuestQuestRewardDto>>(rewards => _savedQuestRewards.AddRange(rewards)) .ReturnsAsync(true); _questRewardDaoMock .Setup(x => x.LoadAll()) .Returns(new List<QuestRewardDto>()); _tempFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(_tempFolder); } [TestCleanup] public void Cleanup() { if (Directory.Exists(_tempFolder)) { Directory.Delete(_tempFolder, true); } } private void CreateTestFile(string content) { File.WriteAllText(Path.Combine(_tempFolder, "quest.dat"), content); } private static string CreateQuestData( short questId = 1, int questType = 1, bool autoFinish = false, bool isDaily = false, short? requiredQuestId = null, bool isSecondary = false, byte levelMin = 1, byte levelMax = 99, string title = "TestQuest", string desc = "TestDescription", short? targetX = null, short? targetY = null, short? targetMap = null, int? startDialogId = null, int? endDialogId = null, short? nextQuestId = null) { return $"BEGIN\r\n" + $"VNUM\t{questId}\t{questType}\t{(autoFinish ? "1" : "0")}\t{(isDaily ? "-1" : "0")}\t{requiredQuestId?.ToString() ?? "-1"}\t{(isSecondary ? "1" : "-1")}\r\n" + $"LEVEL\t{levelMin}\t{levelMax}\r\n" + $"TITLE\t{title}\r\n" + $"DESC\t{desc}\r\n" + $"TALK\t{startDialogId?.ToString() ?? "-1"}\t{endDialogId?.ToString() ?? "-1"}\t0\t0\r\n" + $"TARGET\t{targetX?.ToString() ?? "-1"}\t{targetY?.ToString() ?? "-1"}\t{targetMap?.ToString() ?? "-1"}\r\n" + $"DATA\t-1\t-1\t-1\t-1\r\n" + $"PRIZE\t-1\t-1\t-1\t-1\r\n" + $"LINK\t{nextQuestId?.ToString() ?? "-1"}\r\n" + "END"; } [TestMethod] public async Task QuestParser_ParsesSingleQuest() { var content = CreateQuestData(questId: 1, title: "FirstQuest", levelMin: 10, levelMax: 50); CreateTestFile(content); var parser = new QuestParser(_questDaoMock.Object, _questObjectiveDaoMock.Object, _questRewardDaoMock.Object, _questQuestRewardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ImportQuestsAsync(_tempFolder); Assert.AreEqual(1, _savedQuests.Count); Assert.AreEqual(1, _savedQuests[0].QuestId); Assert.AreEqual("FirstQuest", _savedQuests[0].TitleI18NKey); Assert.AreEqual(10, _savedQuests[0].LevelMin); Assert.AreEqual(50, _savedQuests[0].LevelMax); } [TestMethod] public async Task QuestParser_ParsesMultipleQuests() { var content = CreateQuestData(questId: 1, title: "Quest1") + "\n#=======\n" + CreateQuestData(questId: 2, title: "Quest2") + "\n#=======\n" + CreateQuestData(questId: 3, title: "Quest3"); CreateTestFile(content); var parser = new QuestParser(_questDaoMock.Object, _questObjectiveDaoMock.Object, _questRewardDaoMock.Object, _questQuestRewardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ImportQuestsAsync(_tempFolder); Assert.AreEqual(3, _savedQuests.Count); } [TestMethod] public async Task QuestParser_ParsesAutoFinishFlag() { var content = CreateQuestData(questId: 1, autoFinish: true); CreateTestFile(content); var parser = new QuestParser(_questDaoMock.Object, _questObjectiveDaoMock.Object, _questRewardDaoMock.Object, _questQuestRewardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ImportQuestsAsync(_tempFolder); Assert.AreEqual(1, _savedQuests.Count); Assert.IsTrue(_savedQuests[0].AutoFinish); } [TestMethod] public async Task QuestParser_ParsesDailyFlag() { var content = CreateQuestData(questId: 1, isDaily: true); CreateTestFile(content); var parser = new QuestParser(_questDaoMock.Object, _questObjectiveDaoMock.Object, _questRewardDaoMock.Object, _questQuestRewardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ImportQuestsAsync(_tempFolder); Assert.AreEqual(1, _savedQuests.Count); Assert.IsTrue(_savedQuests[0].IsDaily); } [TestMethod] public async Task QuestParser_ParsesNextQuestId() { var content = CreateQuestData(questId: 1, nextQuestId: 2); CreateTestFile(content); var parser = new QuestParser(_questDaoMock.Object, _questObjectiveDaoMock.Object, _questRewardDaoMock.Object, _questQuestRewardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ImportQuestsAsync(_tempFolder); Assert.AreEqual(1, _savedQuests.Count); Assert.AreEqual((short)2, _savedQuests[0].NextQuestId); } [TestMethod] public async Task QuestParser_HandlesEmptyFile() { CreateTestFile(""); var parser = new QuestParser(_questDaoMock.Object, _questObjectiveDaoMock.Object, _questRewardDaoMock.Object, _questQuestRewardDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ImportQuestsAsync(_tempFolder); Assert.AreEqual(0, _savedQuests.Count); } } } ================================================ FILE: test/NosCore.Parser.Tests/QuestPrizeParserTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Quest; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging.Abstractions; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Tests { [TestClass] public class QuestPrizeParserTests { private Mock<IDao<QuestRewardDto, short>> _daoMock = null!; private Mock<ILogLanguageLocalizer<LogLanguageKey>> _logLanguageMock = null!; private List<QuestRewardDto> _saved = null!; private string _tempFolder = null!; [TestInitialize] public void Setup() { _logLanguageMock = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); _daoMock = new Mock<IDao<QuestRewardDto, short>>(); _saved = []; _daoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<QuestRewardDto>>())) .Callback<IEnumerable<QuestRewardDto>>(r => _saved.AddRange(r)) .ReturnsAsync(true); _tempFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(_tempFolder); } [TestCleanup] public void Cleanup() { if (Directory.Exists(_tempFolder)) { Directory.Delete(_tempFolder, true); } } private void WriteFile(string content) => File.WriteAllText(Path.Combine(_tempFolder, "qstprize.dat"), content); private static string Entry(short id, byte rewardType, string dataLine) => $"VNUM\t{id}\t{rewardType}\r\nDATA\t{dataLine}\r\nEND\r\n"; [TestMethod] public async Task QuestPrizeParser_GoldRewardParsesAmountFromFirstDataField() { WriteFile(Entry(100, (byte)QuestRewardType.Gold, "500\t-1\t-1\t-1\t-1")); var parser = new QuestPrizeParser(_daoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ImportQuestPrizesAsync(_tempFolder); Assert.AreEqual(1, _saved.Count); Assert.AreEqual(100, _saved[0].QuestRewardId); Assert.AreEqual((byte)QuestRewardType.Gold, _saved[0].RewardType); Assert.AreEqual(0, _saved[0].Data); Assert.AreEqual(500, _saved[0].Amount); } [TestMethod] public async Task QuestPrizeParser_ExpRewardParsesAmountAndData() { WriteFile(Entry(200, (byte)QuestRewardType.Exp, "1000\t5000\t-1\t-1\t-1")); var parser = new QuestPrizeParser(_daoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ImportQuestPrizesAsync(_tempFolder); Assert.AreEqual(1, _saved.Count); Assert.AreEqual((byte)QuestRewardType.Exp, _saved[0].RewardType); Assert.AreEqual(5000, _saved[0].Data); Assert.AreEqual(1000, _saved[0].Amount); } [TestMethod] public async Task QuestPrizeParser_ExpRewardWithMinusOneDataYieldsZero() { WriteFile(Entry(201, (byte)QuestRewardType.Exp, "1000\t-1\t-1\t-1\t-1")); var parser = new QuestPrizeParser(_daoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ImportQuestPrizesAsync(_tempFolder); Assert.AreEqual(1, _saved.Count); Assert.AreEqual(0, _saved[0].Data); Assert.AreEqual(1000, _saved[0].Amount); } [TestMethod] public async Task QuestPrizeParser_WearItemRewardStoresVnumAndAmountOne() { WriteFile(Entry(300, (byte)QuestRewardType.WearItem, "2000\t-1\t-1\t-1\t-1")); var parser = new QuestPrizeParser(_daoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ImportQuestPrizesAsync(_tempFolder); Assert.AreEqual(1, _saved.Count); Assert.AreEqual(2000, _saved[0].Data); Assert.AreEqual(1, _saved[0].Amount); } [TestMethod] public async Task QuestPrizeParser_EtcMainItemUsesDataFieldFiveForAmount() { WriteFile(Entry(400, (byte)QuestRewardType.EtcMainItem, "1012\t-1\t-1\t-1\t10")); var parser = new QuestPrizeParser(_daoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ImportQuestPrizesAsync(_tempFolder); Assert.AreEqual(1, _saved.Count); Assert.AreEqual(1012, _saved[0].Data); Assert.AreEqual(10, _saved[0].Amount); } [TestMethod] public async Task QuestPrizeParser_EtcMainItemMinusOneAmountFallsBackToOne() { WriteFile(Entry(401, (byte)QuestRewardType.EtcMainItem, "1013\t-1\t-1\t-1\t-1")); var parser = new QuestPrizeParser(_daoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ImportQuestPrizesAsync(_tempFolder); Assert.AreEqual(1, _saved.Count); Assert.AreEqual(1013, _saved[0].Data); Assert.AreEqual(1, _saved[0].Amount); } [TestMethod] public async Task QuestPrizeParser_ParsesMultipleEntries() { WriteFile( Entry(1, (byte)QuestRewardType.Gold, "100\t-1\t-1\t-1\t-1") + Entry(2, (byte)QuestRewardType.Exp, "500\t1000\t-1\t-1\t-1") + Entry(3, (byte)QuestRewardType.WearItem, "2000\t-1\t-1\t-1\t-1")); var parser = new QuestPrizeParser(_daoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.ImportQuestPrizesAsync(_tempFolder); Assert.AreEqual(3, _saved.Count); Assert.IsTrue(_saved.Any(r => r.QuestRewardId == 1 && r.Amount == 100)); Assert.IsTrue(_saved.Any(r => r.QuestRewardId == 2 && r.Amount == 500 && r.Data == 1000)); Assert.IsTrue(_saved.Any(r => r.QuestRewardId == 3 && r.Data == 2000)); } } } ================================================ FILE: test/NosCore.Parser.Tests/ShopParserTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Tests { [TestClass] public class ShopParserTests { private Mock<ILogger<ShopParser>> _loggerMock = null!; private Mock<ILogLanguageLocalizer<LogLanguageKey>> _logLanguageMock = null!; private Mock<IDao<ShopDto, int>> _shopDaoMock = null!; private Mock<IDao<MapNpcDto, int>> _mapNpcDaoMock = null!; private List<ShopDto> _savedShops = null!; [TestInitialize] public void Setup() { _loggerMock = new Mock<ILogger<ShopParser>>(); _logLanguageMock = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); _shopDaoMock = new Mock<IDao<ShopDto, int>>(); _mapNpcDaoMock = new Mock<IDao<MapNpcDto, int>>(); _savedShops = []; _shopDaoMock .Setup(x => x.LoadAll()) .Returns(new List<ShopDto>()); _shopDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<ShopDto>>())) .Callback<IEnumerable<ShopDto>>(shops => _savedShops.AddRange(shops)) .ReturnsAsync(true); _mapNpcDaoMock .Setup(x => x.LoadAll()) .Returns(new List<MapNpcDto> { new() { MapNpcId = 100, VNum = 1 }, new() { MapNpcId = 101, VNum = 2 }, new() { MapNpcId = 102, VNum = 3 } }); } [TestMethod] public async Task ShopParser_ParsesSingleShop() { var packets = new List<string[]> { new[] { "shop", "2", "100", "0", "1", "0", "Shop", "Name" } }; var parser = new ShopParser(_shopDaoMock.Object, _mapNpcDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertShopsAsync(packets); Assert.AreEqual(1, _savedShops.Count); Assert.AreEqual(100, _savedShops[0].MapNpcId); Assert.AreEqual(1, _savedShops[0].MenuType); Assert.AreEqual(0, _savedShops[0].ShopType); } [TestMethod] public async Task ShopParser_ParsesMultipleShops() { var packets = new List<string[]> { new[] { "shop", "2", "100", "0", "1", "0", "Shop1" }, new[] { "shop", "2", "101", "0", "2", "1", "Shop2" } }; var parser = new ShopParser(_shopDaoMock.Object, _mapNpcDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertShopsAsync(packets); Assert.AreEqual(2, _savedShops.Count); } [TestMethod] public async Task ShopParser_SkipsDuplicateMapNpcId() { var packets = new List<string[]> { new[] { "shop", "2", "100", "0", "1", "0", "Shop1" }, new[] { "shop", "2", "100", "0", "2", "1", "Shop1Duplicate" } }; var parser = new ShopParser(_shopDaoMock.Object, _mapNpcDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertShopsAsync(packets); Assert.AreEqual(1, _savedShops.Count); } [TestMethod] public async Task ShopParser_SkipsUnknownNpcId() { var packets = new List<string[]> { new[] { "shop", "2", "999", "0", "1", "0", "UnknownShop" } }; var parser = new ShopParser(_shopDaoMock.Object, _mapNpcDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertShopsAsync(packets); Assert.AreEqual(0, _savedShops.Count); } [TestMethod] public async Task ShopParser_HandlesEmptyPacketList() { var packets = new List<string[]>(); var parser = new ShopParser(_shopDaoMock.Object, _mapNpcDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertShopsAsync(packets); Assert.AreEqual(0, _savedShops.Count); } [TestMethod] public async Task ShopParser_IgnoresNonShopPackets() { var packets = new List<string[]> { new[] { "at", "1", "1", "50", "50", "2", "0", "0", "0" }, new[] { "shop", "2", "100", "0", "1", "0", "Shop1" } }; var parser = new ShopParser(_shopDaoMock.Object, _mapNpcDaoMock.Object, _loggerMock.Object, _logLanguageMock.Object); await parser.InsertShopsAsync(packets); Assert.AreEqual(1, _savedShops.Count); } } } ================================================ FILE: test/NosCore.Parser.Tests/SkillParserTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Dao.Interfaces; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Parser.Parsers; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging.Abstractions; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace NosCore.Parser.Tests { [TestClass] public class SkillParserTests { private Mock<ILogLanguageLocalizer<LogLanguageKey>> _logLanguageMock = null!; private Mock<IDao<SkillDto, short>> _skillDaoMock = null!; private Mock<IDao<BCardDto, short>> _bCardDaoMock = null!; private Mock<IDao<ComboDto, int>> _comboDaoMock = null!; private string _tempFolder = null!; private List<SkillDto> _savedSkills = null!; private List<BCardDto> _savedBCards = null!; private List<ComboDto> _savedCombos = null!; [TestInitialize] public void Setup() { _logLanguageMock = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); _skillDaoMock = new Mock<IDao<SkillDto, short>>(); _bCardDaoMock = new Mock<IDao<BCardDto, short>>(); _comboDaoMock = new Mock<IDao<ComboDto, int>>(); _savedSkills = []; _savedBCards = []; _savedCombos = []; _skillDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<SkillDto>>())) .Callback<IEnumerable<SkillDto>>(skills => _savedSkills.AddRange(skills)) .ReturnsAsync(true); _bCardDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<BCardDto>>())) .Callback<IEnumerable<BCardDto>>(cards => _savedBCards.AddRange(cards)) .ReturnsAsync(true); _comboDaoMock .Setup(x => x.TryInsertOrUpdateAsync(It.IsAny<IEnumerable<ComboDto>>())) .Callback<IEnumerable<ComboDto>>(combos => _savedCombos.AddRange(combos)) .ReturnsAsync(true); _tempFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(_tempFolder); } [TestCleanup] public void Cleanup() { if (Directory.Exists(_tempFolder)) { Directory.Delete(_tempFolder, true); } } private void CreateTestFile(string content) { File.WriteAllText(Path.Combine(_tempFolder, "Skill.dat"), content); } private static string CreateSkillData( short skillVNum = 1, string name = "TestSkill", byte skillType = 0, short castId = 0, byte classType = 0, byte type = 0, byte element = 0, byte cpCost = 0, int price = 0, short castEffect = 0, short castAnimation = 0, short effect = 0, short attackAnimation = 0, byte targetType = 0, byte hitType = 0, byte range = 0, byte targetRange = 0, short upgradeSkill = 0, short upgradeType = 0, short castTime = 0, short cooldown = 0, short mpCost = 0, short itemVNum = 0, byte levelMinimum = 0) { return $"\tVNUM\t{skillVNum}\r\n" + $"\tNAME\t{name}\r\n" + $"\tTYPE\t{skillType}\t{castId}\t{classType}\t{type}\t0\t{element}\t0\r\n" + $"\tCOST\t{cpCost}\t{price}\t0\r\n" + $"\tLEVEL\t{levelMinimum}\t-1\t-1\t-1\t-1\r\n" + $"\tEFFECT\t0\t{castEffect}\t{castAnimation}\t{effect}\t{attackAnimation}\t0\t0\t0\t0\r\n" + $"\tTARGET\t{targetType}\t{hitType}\t{range}\t{targetRange}\t0\r\n" + $"\tDATA\t{upgradeSkill}\t{upgradeType}\t0\t0\t{castTime}\t{cooldown}\t0\t0\t{mpCost}\t0\t{itemVNum}\t0\t0\t0\t0\r\n" + "\tBASIC\t0\t0\t0\t0\t0\t0\r\n" + "\tBASIC\t1\t0\t0\t0\t0\t0\r\n" + "\tBASIC\t2\t0\t0\t0\t0\t0\r\n" + "\tBASIC\t3\t0\t0\t0\t0\t0\r\n" + "\tBASIC\t4\t0\t0\t0\t0\t0\r\n" + "\tFCOMBO\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\r\n" + "\tCELL\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\r\n" + "\tZ_DESC\t0\r\n" + "#========================================================="; } [TestMethod] public async Task SkillParser_ParsesSingleSkill() { var content = CreateSkillData(skillVNum: 1, name: "Fireball", mpCost: 50, cooldown: 10); CreateTestFile(content); var parser = new SkillParser(_bCardDaoMock.Object, _comboDaoMock.Object, _skillDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.InsertSkillsAsync(_tempFolder); Assert.AreEqual(1, _savedSkills.Count); Assert.AreEqual(1, _savedSkills[0].SkillVNum); Assert.AreEqual("Fireball", _savedSkills[0].NameI18NKey); Assert.AreEqual(50, _savedSkills[0].MpCost); Assert.AreEqual(10, _savedSkills[0].Cooldown); } [TestMethod] public async Task SkillParser_ParsesMultipleSkills() { var content = CreateSkillData(skillVNum: 1, name: "Skill1") + "\n" + CreateSkillData(skillVNum: 2, name: "Skill2") + "\n" + CreateSkillData(skillVNum: 3, name: "Skill3"); CreateTestFile(content); var parser = new SkillParser(_bCardDaoMock.Object, _comboDaoMock.Object, _skillDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.InsertSkillsAsync(_tempFolder); Assert.AreEqual(3, _savedSkills.Count); } [TestMethod] public async Task SkillParser_ParsesTargetFields() { var content = CreateSkillData(skillVNum: 1, targetType: 1, hitType: 2, range: 5, targetRange: 3); CreateTestFile(content); var parser = new SkillParser(_bCardDaoMock.Object, _comboDaoMock.Object, _skillDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.InsertSkillsAsync(_tempFolder); Assert.AreEqual(1, _savedSkills.Count); Assert.AreEqual(1, _savedSkills[0].TargetType); Assert.AreEqual(2, _savedSkills[0].HitType); Assert.AreEqual(5, _savedSkills[0].Range); Assert.AreEqual(3, _savedSkills[0].TargetRange); } [TestMethod] public async Task SkillParser_ParsesElementField() { var content = CreateSkillData(skillVNum: 1, element: 2); CreateTestFile(content); var parser = new SkillParser(_bCardDaoMock.Object, _comboDaoMock.Object, _skillDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.InsertSkillsAsync(_tempFolder); Assert.AreEqual(1, _savedSkills.Count); Assert.AreEqual(2, _savedSkills[0].Element); } [TestMethod] public async Task SkillParser_HandlesEmptyFile() { CreateTestFile(""); var parser = new SkillParser(_bCardDaoMock.Object, _comboDaoMock.Object, _skillDaoMock.Object, NullLoggerFactory.Instance, _logLanguageMock.Object); await parser.InsertSkillsAsync(_tempFolder); Assert.AreEqual(0, _savedSkills.Count); } } } ================================================ FILE: test/NosCore.Tests.Shared/AutoFixture/NosCoreFixture.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using AutoFixture; using AutoFixture.AutoMoq; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Options; using Moq; using NodaTime; using NodaTime.Testing; using NosCore.Core.Configuration; using NosCore.Core.I18N; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.I18N; using NosCore.Data.StaticEntities; using NosCore.Data.WebApi; using NosCore.Packets.ClientPackets.Bazaar; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; namespace NosCore.Tests.Shared.AutoFixture { public class NosCoreFixture : Fixture { public NosCoreFixture() { Customize(new AutoMoqCustomization { ConfigureMembers = true }); this.Inject<IClock>(new FakeClock(Instant.FromUtc(2021, 01, 01, 01, 01, 01))); var logLocalizer = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); logLocalizer.Setup(x => x[It.IsAny<LogLanguageKey>()]) .Returns((LogLanguageKey x) => new LocalizedString(x.ToString(), x.ToString(), false)); this.Inject(logLocalizer.Object); var gameLocalizer = new Mock<IGameLanguageLocalizer>(); gameLocalizer.Setup(x => x[It.IsAny<LanguageKey>(), It.IsAny<RegionType>()]) .Returns((LanguageKey k, RegionType r) => new LocalizedString($"{k}{r}", $"{k}{r}", false)); this.Inject(gameLocalizer.Object); this.Inject(Options.Create(new WorldConfiguration { BackpackSize = 2, MaxItemAmount = 999, MaxSpPoints = 10_000, MaxAdditionalSpPoints = 1_000_000, MaxGoldAmount = 999_999_999 })); Customize<ItemDto>(c => c .With(x => x.VNum, () => (short)(this.Create<int>() % 1000 + 1000)) .With(x => x.Type, NoscorePocketType.Main) .With(x => x.IsSoldable, () => true) .With(x => x.IsDroppable, () => true)); Customize<BazaarRequest>(c => c .With(x => x.Amount, 1) .With(x => x.Price, 1000) .With(x => x.Duration, 3600) .With(x => x.HasMedal, () => false) .With(x => x.IsPackage, () => false)); Customize<CRegPacket>(c => c .With(x => x.Type, 0) .With(x => x.Inventory, 1) .With(x => x.Slot, (short)0) .With(x => x.Amount, 1) .With(x => x.Price, 1000) .With(x => x.Durability, 1) .With(x => x.IsPackage, () => false) .With(x => x.Taxe, 0) .With(x => x.MedalUsed, 0)); Customize<ItemInstanceDto>(c => c .With(x => x.Amount, 1) .With(x => x.ItemVNum, (short)1012)); } } } ================================================ FILE: test/NosCore.Tests.Shared/BDD/SpecBase.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Buff; using NosCore.Data.Enumerations.Items; using NosCore.Data.StaticEntities; using NosCore.GameObject.Infastructure; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.ItemGenerationService.Item; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.UI; using NosCore.Tests.Shared.AutoFixture; using Microsoft.Extensions.Logging.Abstractions; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace NosCore.Tests.Shared.BDD { public abstract class SpecBase { protected NosCoreFixture Fixture { get; private set; } = null!; protected ClientSession Session { get; set; } = null!; protected ItemGenerationService ItemProvider { get; set; } = null!; protected List<ItemDto> DefaultItems { get; } = new() { new Item { Type = NoscorePocketType.Main, VNum = 1012, IsSoldable = true, IsDroppable = true }, new Item { Type = NoscorePocketType.Main, VNum = 1013 }, new Item { Type = NoscorePocketType.Equipment, VNum = 1, ItemType = ItemType.Weapon }, new Item { Type = NoscorePocketType.Equipment, VNum = 2, ItemType = ItemType.Weapon }, new Item { Type = NoscorePocketType.Equipment, VNum = 912, ItemType = ItemType.Specialist }, new Item { Type = NoscorePocketType.Equipment, VNum = 924, ItemType = ItemType.Fashion } }; [TestInitialize] public virtual async Task SetupAsync() { Broadcaster.Reset(); await TestHelpers.ResetAsync(); Fixture = new NosCoreFixture(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Session.Character.StaticBonusList = new List<StaticBonusDto>(); ItemProvider = new ItemGenerationService( DefaultItems, NullLoggerFactory.Instance, TestHelpers.Instance.LogLanguageLocalizer); } protected void CharacterHasGold(long gold) => Session.Character.Gold = gold; protected void CharacterHasItem(short vnum) => CharacterHasItem(vnum, 1); protected void CharacterHasItem(short vnum, short amount) { var item = ItemProvider.Create(vnum, amount); var pocketType = item.Item.Type; Session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(item, 0), pocketType, 0); } protected void CharacterHasMedalBonus(StaticBonusType bonusType) { Session.Character.StaticBonusList.Add(new StaticBonusDto { StaticBonusType = bonusType }); } protected void CharacterIsInShop() => Session.Character.InShop = true; protected void InventoryShouldBeEmpty() => Assert.AreEqual(0, Session.Character.InventoryService.Count); protected void InventoryShouldHaveCount(int count) => Assert.AreEqual(count, Session.Character.InventoryService.Count); protected void InventoryShouldContainItem(short vnum, short amount) { var item = Session.Character.InventoryService.FirstOrDefault(); Assert.IsNotNull(item.Value); Assert.AreEqual(vnum, item.Value.ItemInstance.ItemVNum); Assert.AreEqual(amount, item.Value.ItemInstance.Amount); } protected void GoldShouldBe(long expected) => Assert.AreEqual(expected, Session.Character.Gold); protected void NoPacketShouldBeSent() => Assert.IsNull(Session.LastPackets.FirstOrDefault()); protected T? GetLastPacket<T>() where T : class, IPacket => (T?)Session.LastPackets.FirstOrDefault(s => s is T); protected void ShouldReceiveMessage(Game18NConstString message) { var packet = GetLastPacket<MsgiPacket>(); Assert.IsNotNull(packet); Assert.AreEqual(message, packet.Message); } protected void ShouldReceiveMessage(Game18NConstString message, MessageType messageType) { var packet = GetLastPacket<MsgiPacket>(); Assert.IsNotNull(packet); Assert.AreEqual(message, packet.Message); Assert.AreEqual(messageType, packet.Type); } protected void ShouldReceiveModalMessage(Game18NConstString message) { var packet = GetLastPacket<ModaliPacket>(); Assert.IsNotNull(packet); Assert.AreEqual(message, packet.Message); } protected void ShouldReceiveModalMessage(Game18NConstString message, byte type, byte argumentType) { var packet = GetLastPacket<ModaliPacket>(); Assert.IsNotNull(packet); Assert.AreEqual(message, packet.Message); Assert.AreEqual(type, packet.Type); Assert.AreEqual(argumentType, packet.ArgumentType); } } } ================================================ FILE: test/NosCore.Tests.Shared/BDD/Steps/InventorySteps.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Enumerations; using NosCore.GameObject.Networking.ClientSession; using System.Linq; namespace NosCore.Tests.Shared.BDD.Steps { public static class InventorySteps { public static void AssertInventoryEmpty(this ClientSession session) { Assert.AreEqual(0, session.Character.InventoryService.Count); } public static void AssertInventoryCount(this ClientSession session, int expected) { Assert.AreEqual(expected, session.Character.InventoryService.Count); } public static void AssertInventoryContains(this ClientSession session, int vnum, int amount) { var item = session.Character.InventoryService.FirstOrDefault( i => i.Value.ItemInstance.ItemVNum == vnum); Assert.IsNotNull(item.Value, $"Expected item {vnum} not found in inventory"); Assert.AreEqual(amount, item.Value.ItemInstance.Amount); } public static void AssertInventoryItemAmount(this ClientSession session, int slot, int expectedAmount) { var item = session.Character.InventoryService.FirstOrDefault(); Assert.IsNotNull(item.Value, "No item found in inventory"); Assert.AreEqual(expectedAmount, item.Value.ItemInstance.Amount); } public static void AssertGold(this ClientSession session, long expected) { Assert.AreEqual(expected, session.Character.Gold); } public static void AssertGoldGreaterThan(this ClientSession session, long minimum) { Assert.IsTrue(session.Character.Gold > minimum, $"Expected gold > {minimum}, but was {session.Character.Gold}"); } public static void AssertInventorySlotEmpty(this ClientSession session, short slot, NoscorePocketType type) { Assert.IsNull(session.Character.InventoryService.LoadBySlotAndType(slot, type)); } } } ================================================ FILE: test/NosCore.Tests.Shared/BDD/Steps/PacketSteps.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.GameObject.Networking.ClientSession; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.Packets.ServerPackets.UI; using System; using System.Linq; using System.Threading.Tasks; namespace NosCore.Tests.Shared.BDD.Steps { public static class PacketSteps { public static async Task HandlePacketAsync<TPacket>(this ClientSession session, TPacket packet) where TPacket : class, IPacket { await session.HandlePacketsAsync(new IPacket[] { packet }); } public static TPacket? GetLastPacket<TPacket>(this ClientSession session) where TPacket : class, IPacket { return (TPacket?)session.LastPackets.FirstOrDefault(s => s is TPacket); } public static void AssertNoPacketSent(this ClientSession session) { Assert.IsNull(session.LastPackets.FirstOrDefault()); } public static void AssertReceivedMessage(this ClientSession session, Game18NConstString message) { var packet = session.GetLastPacket<MsgiPacket>(); Assert.IsNotNull(packet, "Expected MsgiPacket but none was sent"); Assert.AreEqual(message, packet.Message); } public static void AssertReceivedMessage(this ClientSession session, Game18NConstString message, MessageType type) { var packet = session.GetLastPacket<MsgiPacket>(); Assert.IsNotNull(packet, "Expected MsgiPacket but none was sent"); Assert.AreEqual(message, packet.Message); Assert.AreEqual(type, packet.Type); } public static void AssertReceivedModalMessage(this ClientSession session, Game18NConstString message) { var packet = session.GetLastPacket<ModaliPacket>(); Assert.IsNotNull(packet, "Expected ModaliPacket but none was sent"); Assert.AreEqual(message, packet.Message); } public static void AssertReceivedModalMessage(this ClientSession session, Game18NConstString message, int type, int argumentType) { var packet = session.GetLastPacket<ModaliPacket>(); Assert.IsNotNull(packet, "Expected ModaliPacket but none was sent"); Assert.AreEqual(message, packet.Message); Assert.AreEqual(type, packet.Type); Assert.AreEqual(argumentType, packet.ArgumentType); } public static void AssertReceivedPacket<TPacket>(this ClientSession session, Action<TPacket>? assertion = null) where TPacket : class, IPacket { var packet = session.GetLastPacket<TPacket>(); Assert.IsNotNull(packet, $"Expected {typeof(TPacket).Name} but none was sent"); assertion?.Invoke(packet); } } } ================================================ FILE: test/NosCore.Tests.Shared/BDD/Steps/SessionSteps.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using NosCore.Data.Dto; using NosCore.Data.Enumerations.Buff; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using System.Collections.Generic; namespace NosCore.Tests.Shared.BDD.Steps { public static class SessionSteps { public static void WithGold(this ClientSession session, long gold) { session.Character.Gold = gold; } public static void WithItem(this ClientSession session, IItemGenerationService itemProvider, short vnum, short amount = 1) { session.Character.InventoryService.AddItemToPocket( InventoryItemInstance.Create(itemProvider.Create(vnum, amount), 0)); } public static void WithMedalBonus(this ClientSession session, StaticBonusType bonusType) { session.Character.StaticBonusList ??= new List<StaticBonusDto>(); session.Character.StaticBonusList.Add(new StaticBonusDto { StaticBonusType = bonusType }); } public static void InShop(this ClientSession session) { session.Character.InShop = true; } public static void WithLevel(this ClientSession session, byte level) { session.Character.Level = level; } public static void WithJobLevel(this ClientSession session, byte jobLevel) { session.Character.JobLevel = jobLevel; } } } ================================================ FILE: test/NosCore.Tests.Shared/NosCore.Tests.Shared.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net10.0</TargetFramework> <IsPackable>false</IsPackable> <NoWarn>MSTEST0001;MSTEST0037;NU1701</NoWarn> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <ItemGroup> <PackageReference Include="Autofac.Extensions.DependencyInjection" /> <PackageReference Include="coverlet.msbuild"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Microsoft.EntityFrameworkCore" /> <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" /> <PackageReference Include="Microsoft.NET.Test.Sdk" /> <PackageReference Include="Moq" /> <PackageReference Include="SpecLight" /> <PackageReference Include="AutoFixture" /> <PackageReference Include="AutoFixture.AutoMoq" /> <PackageReference Include="MSTest.TestAdapter" /> <PackageReference Include="MSTest.TestFramework" /> <PackageReference Include="NodaTime.Testing" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\..\src\NosCore.Database\NosCore.Database.csproj" /> <ProjectReference Include="..\..\src\NosCore.PacketHandlers\NosCore.PacketHandlers.csproj" /> </ItemGroup> <ItemGroup> <PackageReference Include="NosCore.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> </Project> ================================================ FILE: test/NosCore.Tests.Shared/TestHelpers.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Options; using Moq; using NodaTime; using NodaTime.Testing; using NosCore.Algorithm.DignityService; using NosCore.Algorithm.ExperienceService; using NosCore.Algorithm.HeroExperienceService; using NosCore.Algorithm.HpService; using NosCore.Algorithm.JobExperienceService; using NosCore.Algorithm.MpService; using NosCore.Algorithm.ReputationService; using NosCore.Algorithm.SpeedService; using NosCore.Core.Configuration; using NosCore.Core.Encryption; using NosCore.Core.I18N; using NosCore.Core.Services.IdService; using NosCore.Dao; using NosCore.Dao.Interfaces; using NosCore.Data.Dto; using NosCore.Data.Enumerations; using NosCore.Data.Enumerations.Character; using NosCore.Data.Enumerations.I18N; using NosCore.Data.Enumerations.Items; using NosCore.Data.Enumerations.Map; using NosCore.Data.StaticEntities; using NosCore.Data.WebApi; using NosCore.Database; using NosCore.Database.Entities; using NosCore.GameObject.Map; using NosCore.GameObject.Services.MinilandService; using NosCore.GameObject.Ecs.Extensions; using NosCore.GameObject.Infastructure; using NosCore.GameObject.InterChannelCommunication.Hubs.BazaarHub; using NosCore.GameObject.InterChannelCommunication.Hubs.BlacklistHub; using NosCore.GameObject.InterChannelCommunication.Hubs.ChannelHub; using NosCore.GameObject.InterChannelCommunication.Hubs.FriendHub; using NosCore.GameObject.InterChannelCommunication.Hubs.PubSub; using NosCore.GameObject.Networking; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.CharacterService; using NosCore.GameObject.Services.ExchangeService; using NosCore.GameObject.Services.InventoryService; using NosCore.GameObject.Services.ItemGenerationService; using NosCore.GameObject.Services.MapChangeService; using NosCore.GameObject.Services.MapInstanceAccessService; using NosCore.GameObject.Services.MapInstanceGenerationService; using NosCore.GameObject.Services.MapItemGenerationService; using NosCore.GameObject.Services.SpeedCalculationService; using NosCore.GameObject.Services.TransformationService; using NosCore.GameObject.Services.QuestService; using NosCore.GameObject.Services.BattleService; using NosCore.GameObject.Ecs.Interfaces; using NosCore.Networking; using NosCore.Networking.Encoding; using NosCore.Networking.SessionGroup; using NosCore.Networking.SessionRef; using NosCore.PacketHandlers.Bazaar; using NosCore.PacketHandlers.CharacterScreen; using NosCore.PacketHandlers.Friend; using NosCore.PacketHandlers.Inventory; using NosCore.Packets.ClientPackets.Drops; using NosCore.Packets.ClientPackets.Inventory; using NosCore.Packets.Enumerations; using NosCore.Packets.Interfaces; using NosCore.PathFinder.Heuristic; using NosCore.PathFinder.Interfaces; using NosCore.Shared.Enumerations; using NosCore.Shared.I18N; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Character = NosCore.Database.Entities.Character; using InventoryItemInstance = NosCore.Database.Entities.InventoryItemInstance; using Item = NosCore.GameObject.Services.ItemGenerationService.Item.Item; using ItemInstance = NosCore.Database.Entities.ItemInstance; using Map = NosCore.GameObject.Map.Map; using MapMonster = NosCore.Database.Entities.MapMonster; using MapNpc = NosCore.Database.Entities.MapNpc; using Miniland = NosCore.Database.Entities.Miniland; using Portal = NosCore.Database.Entities.Portal; using ShopItem = NosCore.Database.Entities.ShopItem; namespace NosCore.Tests.Shared { public class TestHelpers { private static Lazy<TestHelpers> Lazy = new(() => new TestHelpers()); private IDao<InventoryItemInstanceDto, Guid> InventoryItemInstanceDao = null!; private IDao<IItemInstanceDto?, Guid> ItemInstanceDao = null!; private IDao<MapMonsterDto, int> MapMonsterDao = null!; private IDao<MapNpcDto, int> MapNpcDao = null!; private IDao<PortalDto, int> PortalDao = null!; private IDao<ShopItemDto, int> ShopItemDao = null!; private IDao<StaticBonusDto, long> StaticBonusDao = null!; private int LastId = 100; public Mock<IBlacklistHub> BlacklistHttpClient = new(); public Mock<IChannelHub> ChannelHttpClient = new(); public Mock<IPubSubHub> PubSubHub = new(); public Mock<IFriendHub> FriendHttpClient = new(); public NosCore.GameObject.Services.BroadcastService.SessionRegistry SessionRegistry = new(NullLogger<NosCore.GameObject.Services.BroadcastService.SessionRegistry>.Instance); public FakeClock Clock = new(Instant.FromUtc(2021, 01, 01, 01, 01, 01)); public ISessionGroupFactory SessionGroupFactory { get; private set; } = null!; private TestHelpers() { var sessionGroupFactoryMock = new Mock<ISessionGroupFactory>(); sessionGroupFactoryMock.Setup(x => x.Create()).Returns(new Mock<ISessionGroup>().Object); SessionGroupFactory = sessionGroupFactoryMock.Object; Broadcaster.Initialize(sessionGroupFactoryMock.Object); BlacklistHttpClient.Setup(s => s.GetBlacklistedAsync(It.IsAny<long>())) .ReturnsAsync(new List<CharacterRelationStatus>()); FriendHttpClient.Setup(s => s.GetFriendsAsync(It.IsAny<long>())) .ReturnsAsync(new List<CharacterRelationStatus>()); InitDatabase(); var mock = new Mock<ILogLanguageLocalizer<LogLanguageKey>>(); mock.Setup(x => x[It.IsAny<LogLanguageKey>()]) .Returns((LogLanguageKey x) => new LocalizedString(x.ToString(), x.ToString(), false)); LogLanguageLocalizer = mock.Object; var mock2 = new Mock<IGameLanguageLocalizer>(); mock2.Setup(x => x[It.IsAny<LanguageKey>(), It.IsAny<RegionType>()]) .Returns((LogLanguageKey x, RegionType reg) => new LocalizedString($"{x}{reg}", $"{x}{reg}", false)); GameLanguageLocalizer = mock2.Object; } public static TestHelpers Instance => Lazy.Value; public IDao<AccountDto, long> AccountDao { get; private set; } = null!; public IDao<MateDto, long> MateDao { get; private set; } = null!; public IDao<CharacterRelationDto, Guid> CharacterRelationDao { get; set; } = null!; public IDao<CharacterDto, long> CharacterDao { get; private set; } = null!; public IDao<MinilandDto, Guid> MinilandDao { get; private set; } = null!; public IGameLanguageLocalizer GameLanguageLocalizer { get; private set; } = null!; public ILogLanguageLocalizer<LogLanguageKey> LogLanguageLocalizer { get; private set; } = null!; public IDao<MinilandObjectDto, Guid> MinilandObjectDao { get; private set; } = null!; public IMapItemGenerationService? MapItemProvider { get; set; } public Guid MinilandId { get; set; } = Guid.NewGuid(); public IOptions<WorldConfiguration> WorldConfiguration { get; } = Options.Create(new WorldConfiguration { BackpackSize = 2, MaxItemAmount = 999, MaxSpPoints = 10_000, MaxAdditionalSpPoints = 1_000_000, MaxGoldAmount = 999_999_999 }); public List<ItemDto> ItemList { get; } = new() { new Item {Type = NoscorePocketType.Main, VNum = 1012, IsDroppable = true}, new Item {Type = NoscorePocketType.Main, VNum = 1013}, new Item {Type = NoscorePocketType.Equipment, VNum = 1, ItemType = ItemType.Weapon}, new Item { Type = NoscorePocketType.Equipment, VNum = 2, EquipmentSlot = EquipmentType.Fairy, Element = ElementType.Water }, new Item { Type = NoscorePocketType.Equipment, VNum = 912, ItemType = ItemType.Specialist, ReputationMinimum = 2, Element = ElementType.Fire }, new Item {Type = NoscorePocketType.Equipment, VNum = 924, ItemType = ItemType.Fashion}, new Item { Type = NoscorePocketType.Main, VNum = 1078, ItemType = ItemType.Special, Effect = ItemEffectType.DroppedSpRecharger, EffectValue = 10_000, WaitDelay = 5_000 } }; public MapInstanceGeneratorService MapInstanceGeneratorService { get; set; } = null!; public MapInstanceAccessorService MapInstanceAccessorService { get; set; } = null!; public MapChangeService MapChangeService { get; set; } = null!; public IHeuristic DistanceCalculator { get; set; } = new OctileDistanceHeuristic(); public Mock<IChannelHub> ChannelHub = new Mock<IChannelHub>(); private async Task GenerateMapInstanceProviderAsync() { MapItemProvider = new MapItemGenerationService(new IdService<GameObject.Ecs.MapItemComponentBundle>(1)); var map = new Map { MapId = 0, NameI18NKey = "testMap", Data = new byte[] { 8, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; var mapShop = new Map { MapId = 1, NameI18NKey = "shopMap", ShopAllowed = true, Data = new byte[] { 8, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; var miniland = new Map { MapId = 20001, NameI18NKey = "miniland", ShopAllowed = true, Data = new byte[] { 8, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; var npc = new MapNpcDto(); await MapNpcDao.TryInsertOrUpdateAsync(npc); var mapInstanceRegistry = new MapInstanceRegistry(); MapInstanceAccessorService = new MapInstanceAccessorService(mapInstanceRegistry); var minilandServiceMock = new Mock<IMinilandService>(); minilandServiceMock.Setup(s => s.GetMinilandPortals(It.IsAny<long>())).Returns(new List<GameObject.Map.Portal>()); MapChangeService = new MapChangeService(new Mock<IExperienceService>().Object, new Mock<IJobExperienceService>().Object, new Mock<IHeroExperienceService>().Object, MapInstanceAccessorService, Instance.Clock, Instance.LogLanguageLocalizer, minilandServiceMock.Object, NullLogger<MapChangeService>.Instance, Instance.LogLanguageLocalizer, Instance.GameLanguageLocalizer, SessionRegistry, new Mock<Wolverine.IMessageBus>().Object); var mapChangeService = MapChangeService; var instanceGeneratorService = new MapInstanceGeneratorService(new List<MapDto> { map, mapShop, miniland }, new List<NpcMonsterDto>(), new List<NpcTalkDto>(), new List<ShopDto>(), MapItemProvider, MapNpcDao, MapMonsterDao, PortalDao, ShopItemDao, NullLoggerFactory.Instance, mapInstanceRegistry, MapInstanceAccessorService, Instance.Clock, Instance.LogLanguageLocalizer, mapChangeService, SessionGroupFactory, SessionRegistry, GenerateItemProvider(), Instance.DistanceCalculator, new Mock<NosCore.GameObject.Services.BattleService.IMonsterAi>().Object, new Mock<NosCore.GameObject.Services.BattleService.IBuffService>().Object, new Mock<NosCore.GameObject.Services.BattleService.IRegenerationService>().Object, new Mock<NosCore.GameObject.Services.BattleService.IBattleService>().Object); await instanceGeneratorService.InitializeAsync(); await instanceGeneratorService.AddMapInstanceAsync(new MapInstance(miniland, MinilandId, false, MapInstanceType.NormalInstance, MapItemProvider, NullLogger<MapInstance>.Instance, Clock, mapChangeService, SessionGroupFactory, SessionRegistry, Instance.DistanceCalculator)); MapInstanceGeneratorService = instanceGeneratorService; } public IItemGenerationService GenerateItemProvider() { return new ItemGenerationService(ItemList, NullLoggerFactory.Instance, Instance.LogLanguageLocalizer); } public void InitDatabase() { var optionsBuilder = new DbContextOptionsBuilder<NosCoreContext>().UseInMemoryDatabase( Guid.NewGuid().ToString()); DbContext ContextBuilder() => new NosCoreContext(optionsBuilder.Options); CharacterRelationDao = new Dao<Database.Entities.CharacterRelation, CharacterRelationDto, Guid>(NullLogger<Dao<Database.Entities.CharacterRelation, CharacterRelationDto, Guid>>.Instance, ContextBuilder); AccountDao = new Dao<Account, AccountDto, long>(NullLogger<Dao<Account, AccountDto, long>>.Instance, ContextBuilder); MateDao = new Dao<Mate, MateDto, long>(NullLogger<Dao<Mate, MateDto, long>>.Instance, ContextBuilder); PortalDao = new Dao<Portal, PortalDto, int>(NullLogger<Dao<Portal, PortalDto, int>>.Instance, ContextBuilder); MapMonsterDao = new Dao<MapMonster, MapMonsterDto, int>(NullLogger<Dao<MapMonster, MapMonsterDto, int>>.Instance, ContextBuilder); MapNpcDao = new Dao<MapNpc, MapNpcDto, int>(NullLogger<Dao<MapNpc, MapNpcDto, int>>.Instance, ContextBuilder); MinilandDao = new Dao<Miniland, MinilandDto, Guid>(NullLogger<Dao<Miniland, MinilandDto, Guid>>.Instance, ContextBuilder); MinilandObjectDao = new Dao<MinilandObject, MinilandObjectDto, Guid>(NullLogger<Dao<MinilandObject, MinilandObjectDto, Guid>>.Instance, ContextBuilder); ShopItemDao = new Dao<ShopItem, ShopItemDto, int>(NullLogger<Dao<ShopItem, ShopItemDto, int>>.Instance, ContextBuilder); CharacterDao = new Dao<Character, CharacterDto, long>(NullLogger<Dao<Character, CharacterDto, long>>.Instance, ContextBuilder); ItemInstanceDao = new Dao<ItemInstance, IItemInstanceDto?, Guid>(NullLogger<Dao<ItemInstance, IItemInstanceDto?, Guid>>.Instance, ContextBuilder); InventoryItemInstanceDao = new Dao<InventoryItemInstance, InventoryItemInstanceDto, Guid>(NullLogger<Dao<InventoryItemInstance, InventoryItemInstanceDto, Guid>>.Instance, ContextBuilder); StaticBonusDao = new Dao<StaticBonus, StaticBonusDto, long>(NullLogger<Dao<StaticBonus, StaticBonusDto, long>>.Instance, ContextBuilder); TypeAdapterConfig.GlobalSettings.AllowImplicitSourceInheritance = false; TypeAdapterConfig.GlobalSettings.ForDestinationType<IPacket>().Ignore(s => s.ValidationResult); } public async Task<ClientSession> GenerateSessionAsync(List<IPacketHandler>? packetHandlers = null) { LastId++; var acc = new AccountDto { AccountId = LastId, Name = "AccountTest" + LastId, Password = new Sha512Hasher().Hash("test") }; acc = await AccountDao.TryInsertOrUpdateAsync(acc); var sessionRefHolder = new SessionRefHolder(); var handlers = packetHandlers ?? new List<IPacketHandler> { new CharNewPacketHandler(CharacterDao, new Mock<IItemGenerationService>().Object, new Mock<IDao<QuicklistEntryDto, Guid>>().Object, new Mock<IDao<IItemInstanceDto?, Guid>>().Object, new Mock<IDao<InventoryItemInstanceDto, Guid>>().Object, new HpService(), new MpService(), WorldConfiguration, new Mock<IDao<CharacterSkillDto, Guid>>().Object, ItemList, NullLoggerFactory.Instance), new BlInsPackettHandler(BlacklistHttpClient.Object, NullLogger<BlInsPackettHandler>.Instance, Instance.LogLanguageLocalizer), new UseItemPacketHandler(new Mock<Wolverine.IMessageBus>().Object), new FinsPacketHandler(FriendHttpClient.Object, ChannelHttpClient.Object, TestHelpers.Instance.PubSubHub.Object, Instance.SessionRegistry), new SelectPacketHandler(CharacterDao, NullLogger<SelectPacketHandler>.Instance, NullLoggerFactory.Instance, new Mock<IItemGenerationService>().Object, MapInstanceAccessorService, ItemInstanceDao, InventoryItemInstanceDao, StaticBonusDao, new Mock<IDao<QuicklistEntryDto, Guid>>().Object, new Mock<IDao<TitleDto, Guid>>().Object, new Mock<IDao<CharacterQuestDto, Guid>>().Object, new Mock<IDao<CharacterQuestObjectiveDto, Guid>>().Object, new Mock<IDao<RespawnDto, long>>().Object, new Mock<IDao<ScriptDto, Guid>>().Object, new List<QuestDto>(), new List<QuestObjectiveDto>(),WorldConfiguration, Instance.LogLanguageLocalizer, Instance.PubSubHub.Object, Instance.Clock, ItemList, new HpService(), new MpService(), new SpeedService(), SessionGroupFactory, new CharacterInitializationService(), new Mock<Wolverine.IMessageBus>().Object), new CSkillPacketHandler(Instance.Clock), new CBuyPacketHandler(new Mock<IBazaarHub>().Object, new Mock<IItemGenerationService>().Object, NullLogger<CBuyPacketHandler>.Instance, ItemInstanceDao, Instance.LogLanguageLocalizer), new CRegPacketHandler(WorldConfiguration, new Mock<IBazaarHub>().Object, ItemInstanceDao, InventoryItemInstanceDao), new CScalcPacketHandler(WorldConfiguration, new Mock<IBazaarHub>().Object, new Mock<IItemGenerationService>().Object, NullLogger<CScalcPacketHandler>.Instance, ItemInstanceDao, Instance.LogLanguageLocalizer) }; var packetHandlerRegistry = new NosCore.GameObject.Services.PacketHandlerService.PacketHandlerRegistry(handlers); var session = new ClientSession( NullLogger<ClientSession>.Instance, packetHandlerRegistry, new Mock<ILogLanguageLocalizer<NosCore.Networking.Resource.LogLanguageKey>>().Object, Instance.LogLanguageLocalizer, TestHelpers.Instance.PubSubHub.Object, new Mock<IEncoder>().Object, new WorldPacketHandlingStrategy(NullLogger<WorldPacketHandlingStrategy>.Instance, Instance.LogLanguageLocalizer, sessionRefHolder), new List<ISessionDisconnectHandler>(), Instance.SessionRegistry, new Mock<NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub.IAuthHub>().Object, Instance.GameLanguageLocalizer) { SessionId = LastId }; var characterDto = new CharacterDto { CharacterId = LastId, Name = "TestExistingCharacter" + LastId, Slot = 1, AccountId = acc.AccountId, MapId = 1, State = CharacterState.Active, Level = 1, JobLevel = 1, Hp = 100, Mp = 100, Class = CharacterClassType.Adventurer, Gender = GenderType.Male, HairStyle = HairStyleType.HairStyleA, HairColor = HairColorType.Black }; await CharacterDao.TryInsertOrUpdateAsync(characterDto); var mockChannel = new Mock<IChannel>(); mockChannel.Setup(s => s.Id).Returns(Guid.NewGuid().ToString()); session.RegisterChannel(mockChannel.Object); session.InitializeAccount(acc); var mapInstance = MapInstanceAccessorService.GetBaseMapById(0)!; var hpService = new HpService(); var mpService = new MpService(); var maxHp = (int)hpService.GetHp(characterDto.Class, characterDto.Level); var maxMp = (int)mpService.GetMp(characterDto.Class, characterDto.Level); var playerEntity = mapInstance.EcsWorld.CreatePlayer( (int)characterDto.CharacterId, characterDto.CharacterId, acc.AccountId, characterDto.Name ?? string.Empty, mapInstance.MapInstanceId, characterDto.MapX, characterDto.MapY, 2, characterDto.Hp, maxHp, characterDto.Mp, maxMp, characterDto.Level, characterDto.LevelXp, characterDto.JobLevel, characterDto.JobLevelXp, characterDto.HeroLevel, characterDto.HeroXp, characterDto.Gold, characterDto.Reput, (short)characterDto.Dignity, (short)characterDto.Compliment, characterDto.Gender, characterDto.HairStyle, characterDto.HairColor, characterDto.Class, 0, 10, acc.Authority, acc.Authority >= AuthorityType.GameMaster, WorldConfiguration.Value.ServerId); var now = Instance.Clock.GetCurrentInstant(); var group = new GameObject.Services.GroupService.Group(NosCore.Data.Enumerations.Group.GroupType.Group, SessionGroupFactory); var inventoryService = new InventoryService(ItemList, WorldConfiguration, NullLogger<InventoryService>.Instance); var playerStateComponent = new GameObject.Ecs.Components.PlayerStateComponent( characterDto, acc, null, false, false, false, false, true, now, now, 0 ); mapInstance.EcsWorld.AddComponent(playerEntity, playerStateComponent); mapInstance.EcsWorld.AddComponent(playerEntity, new GameObject.Ecs.Components.PlayerNetworkComponent(session, session.Channel)); mapInstance.EcsWorld.AddComponent(playerEntity, new GameObject.Ecs.Components.PlayerContextComponent(mapInstance, group, null)); mapInstance.EcsWorld.AddComponent(playerEntity, new GameObject.Ecs.Components.PlayerInventoryComponent( inventoryService, new ConcurrentDictionary<short, NosCore.GameObject.Services.BattleService.CharacterSkill>(), new ConcurrentDictionary<Guid, NosCore.GameObject.Services.QuestService.CharacterQuest>(), new List<QuicklistEntryDto>(), new List<StaticBonusDto>(), new List<TitleDto>(), new List<RespawnDto>())); mapInstance.EcsWorld.AddComponent(playerEntity, new GameObject.Ecs.Components.PlayerSocialComponent( new ConcurrentDictionary<long, long>(), null)); mapInstance.EcsWorld.AddComponent(playerEntity, new GameObject.Ecs.Components.PlayerRequestsComponent( new Dictionary<Type, System.Reactive.Subjects.Subject<RequestData>> { { typeof(NpcDialogRequestSubject), new System.Reactive.Subjects.Subject<RequestData>() } })); session.SetPlayerEntity(playerEntity, mapInstance.EcsWorld); var character = session.Character; group.JoinGroup(character); session.Account = acc; return session; } public static async Task ResetAsync() { Lazy = new Lazy<TestHelpers>(() => new TestHelpers()); Instance.InitDatabase(); await Instance.GenerateMapInstanceProviderAsync(); } } } ================================================ FILE: test/NosCore.Tests.Shared/tools/coverage.opencover.xml ================================================ <?xml version="1.0" encoding="utf-8"?> <CoverageSession> <Summary numSequencePoints="22441" visitedSequencePoints="136" numBranchPoints="1738" visitedBranchPoints="54" sequenceCoverage="0.6" branchCoverage="3.1" maxCyclomaticComplexity="1252" minCyclomaticComplexity="1" visitedClasses="6" numClasses="332" visitedMethods="14" numMethods="587" /> <Modules> <Module hash="02CC847B-7016-41AF-882B-14BA79C18DF3"> <ModulePath>NosCore.Core.dll</ModulePath> <ModuleTime>2020-12-29T09:41:25</ModuleTime> <ModuleName>NosCore.Core</ModuleName> <Files> <File uid="1" fullPath="C:\dev\NosCore\src\NosCore.Core\AuthorizeRoleAttribute.cs" /> <File uid="2" fullPath="C:\dev\NosCore\src\NosCore.Core\Channel.cs" /> <File uid="3" fullPath="C:\dev\NosCore\src\NosCore.Core\ChannelInfo.cs" /> <File uid="4" fullPath="C:\dev\NosCore\src\NosCore.Core\ConfigureJwtBearerOptions.cs" /> <File uid="5" fullPath="C:\dev\NosCore\src\NosCore.Core\RegionTypeMapping.cs" /> <File uid="6" fullPath="C:\dev\NosCore\src\NosCore.Core\SystemTime.cs" /> <File uid="7" fullPath="C:\dev\NosCore\src\NosCore.Core\Networking\MasterClientListSingleton.cs" /> <File uid="8" fullPath="C:\dev\NosCore\src\NosCore.Core\Networking\NetworkClient.cs" /> <File uid="9" fullPath="C:\dev\NosCore\src\NosCore.Core\Networking\SessionFactory.cs" /> <File uid="10" fullPath="C:\dev\NosCore\src\NosCore.Core\I18N\GameLanguage.cs" /> <File uid="11" fullPath="C:\dev\NosCore\src\NosCore.Core\I18N\LogLanguage.cs" /> <File uid="12" fullPath="C:\dev\NosCore\src\NosCore.Core\HttpClients\MasterServerHttpClient.cs" /> <File uid="13" fullPath="C:\dev\NosCore\src\NosCore.Core\HttpClients\IncommingMailHttpClients\IncommingMailHttpClient.cs" /> <File uid="14" fullPath="C:\dev\NosCore\src\NosCore.Core\HttpClients\ConnectedAccountHttpClients\ConnectedAccountHttpClient.cs" /> <File uid="15" fullPath="C:\dev\NosCore\src\NosCore.Core\HttpClients\ChannelHttpClients\ChannelHttpClient.cs" /> <File uid="16" fullPath="C:\dev\NosCore\src\NosCore.Core\HttpClients\AuthHttpClients\AuthHttpClient.cs" /> <File uid="17" fullPath="C:\dev\NosCore\src\NosCore.Core\Extensions\RegionTypeExtension.cs" /> <File uid="18" fullPath="C:\dev\NosCore\src\NosCore.Core\Extensions\TypeExtension.cs" /> <File uid="19" fullPath="C:\dev\NosCore\src\NosCore.Core\Encryption\BcryptEncryption.cs" /> <File uid="20" fullPath="C:\dev\NosCore\src\NosCore.Core\Encryption\LoginDecoder.cs" /> <File uid="21" fullPath="C:\dev\NosCore\src\NosCore.Core\Encryption\LoginEncoder.cs" /> <File uid="22" fullPath="C:\dev\NosCore\src\NosCore.Core\Encryption\Pbkdf2Hasher.cs" /> <File uid="23" fullPath="C:\dev\NosCore\src\NosCore.Core\Encryption\Sha512Hasher.cs" /> <File uid="24" fullPath="C:\dev\NosCore\src\NosCore.Core\Encryption\WorldDecoder.cs" /> <File uid="25" fullPath="C:\dev\NosCore\src\NosCore.Core\Encryption\WorldEncoder.cs" /> <File uid="26" fullPath="C:\dev\NosCore\src\NosCore.Core\Controllers\AuthController.cs" /> <File uid="27" fullPath="C:\dev\NosCore\src\NosCore.Core\Controllers\ChannelController.cs" /> <File uid="28" fullPath="C:\dev\NosCore\src\NosCore.Core\Configuration\LoginConfiguration.cs" /> <File uid="29" fullPath="C:\dev\NosCore\src\NosCore.Core\Configuration\WorldConfiguration.cs" /> </Files> <Classes> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Core.AuthorizeRoleAttribute</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.AuthorizeRoleAttribute::.ctor(NosCore.Shared.Enumerations.AuthorityType)</Name> <FileRef uid="1" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="1" /> <SequencePoint vc="0" uspid="30" ordinal="1" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="1" /> <SequencePoint vc="0" uspid="31" ordinal="2" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="1" /> <SequencePoint vc="0" uspid="32" ordinal="3" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="1" /> <SequencePoint vc="0" uspid="33" ordinal="4" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="1" /> <SequencePoint vc="0" uspid="34" ordinal="5" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="1" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="34" bec="0" bev="0" fileid="1" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.Core.Channel</FullName> <Methods> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="True" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Core.Channel::get_ClientName()</Name> <FileRef uid="2" /> <SequencePoints> <SequencePoint vc="0" uspid="34" ordinal="0" sl="34" sc="1" el="34" ec="2" bec="2" bev="0" fileid="2" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="34" ordinal="0" path="0" offset="11" offsetend="13" sl="34" fileid="2" /> <BranchPoint vc="0" uspid="34" ordinal="1" path="1" offset="11" offsetend="21" sl="34" fileid="2" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="34" ec="1" el="34" bec="0" bev="0" fileid="2" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="True" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Channel::set_ClientName(System.String)</Name> <FileRef uid="2" /> <SequencePoints> <SequencePoint vc="0" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="2" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="35" ec="1" el="35" bec="0" bev="0" fileid="2" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Channel::.ctor()</Name> <FileRef uid="2" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="2" /> <SequencePoint vc="0" uspid="52" ordinal="1" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="2" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="29" ec="1" el="52" bec="0" bev="0" fileid="2" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Core.ChannelInfo</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.ChannelInfo::.ctor()</Name> <FileRef uid="3" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="3" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="30" bec="0" bev="0" fileid="3" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="28" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.Core.ConfigureJwtBearerOptions</FullName> <Methods> <Method cyclomaticComplexity="4" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="20" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="4" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.ConfigureJwtBearerOptions::Configure(System.String,Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions)</Name> <FileRef uid="4" /> <SequencePoints> <SequencePoint vc="0" uspid="23" ordinal="0" sl="23" sc="1" el="23" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="24" ordinal="1" sl="24" sc="1" el="24" ec="2" bec="2" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="25" ordinal="2" sl="25" sc="1" el="25" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="26" ordinal="3" sl="26" sc="1" el="26" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="29" ordinal="4" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="30" ordinal="5" sl="30" sc="1" el="30" ec="2" bec="2" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="31" ordinal="6" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="32" ordinal="7" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="33" ordinal="8" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="34" ordinal="9" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="35" ordinal="10" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="36" ordinal="11" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="37" ordinal="12" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="38" ordinal="13" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="39" ordinal="14" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="40" ordinal="15" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="41" ordinal="16" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="42" ordinal="17" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="43" ordinal="18" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="44" ordinal="19" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="4" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="24" ordinal="0" path="0" offset="7" offsetend="9" sl="24" fileid="4" /> <BranchPoint vc="0" uspid="24" ordinal="1" path="1" offset="7" offsetend="21" sl="24" fileid="4" /> <BranchPoint vc="0" uspid="30" ordinal="2" path="0" offset="78" offsetend="80" sl="30" fileid="4" /> <BranchPoint vc="0" uspid="30" ordinal="3" path="1" offset="78" offsetend="173" sl="30" fileid="4" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="23" ec="1" el="44" bec="0" bev="0" fileid="4" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.ConfigureJwtBearerOptions::Configure(Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions)</Name> <FileRef uid="4" /> <SequencePoints> <SequencePoint vc="0" uspid="47" ordinal="0" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="48" ordinal="1" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="49" ordinal="2" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="4" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="47" ec="1" el="49" bec="0" bev="0" fileid="4" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.ConfigureJwtBearerOptions::.ctor(Microsoft.Extensions.Options.IOptions`1<NosCore.Shared.Configuration.WebApiConfiguration>,NosCore.Shared.Authentication.IHasher)</Name> <FileRef uid="4" /> <SequencePoints> <SequencePoint vc="0" uspid="16" ordinal="0" sl="16" sc="1" el="16" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="17" ordinal="1" sl="17" sc="1" el="17" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="18" ordinal="2" sl="18" sc="1" el="18" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="19" ordinal="3" sl="19" sc="1" el="19" ec="2" bec="0" bev="0" fileid="4" /> <SequencePoint vc="0" uspid="20" ordinal="4" sl="20" sc="1" el="20" ec="2" bec="0" bev="0" fileid="4" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="16" ec="1" el="20" bec="0" bev="0" fileid="4" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Core.RegionTypeMapping</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.RegionTypeMapping::.ctor(System.Int32,NosCore.Shared.Enumerations.RegionType)</Name> <FileRef uid="5" /> <SequencePoints> <SequencePoint vc="0" uspid="26" ordinal="0" sl="26" sc="1" el="26" ec="2" bec="0" bev="0" fileid="5" /> <SequencePoint vc="0" uspid="27" ordinal="1" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="5" /> <SequencePoint vc="0" uspid="28" ordinal="2" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="5" /> <SequencePoint vc="0" uspid="29" ordinal="3" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="5" /> <SequencePoint vc="0" uspid="30" ordinal="4" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="5" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="26" ec="1" el="30" bec="0" bev="0" fileid="5" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.Core.SystemTime</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.SystemTime::Freeze()</Name> <FileRef uid="6" /> <SequencePoints> <SequencePoint vc="0" uspid="31" ordinal="0" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="6" /> <SequencePoint vc="0" uspid="32" ordinal="1" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="6" /> <SequencePoint vc="0" uspid="33" ordinal="2" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="6" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="31" ec="1" el="33" bec="0" bev="0" fileid="6" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.SystemTime::Freeze(System.DateTime)</Name> <FileRef uid="6" /> <SequencePoints> <SequencePoint vc="0" uspid="36" ordinal="0" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="6" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="6" /> <SequencePoint vc="0" uspid="38" ordinal="2" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="6" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="36" ec="1" el="38" bec="0" bev="0" fileid="6" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.SystemTime::.cctor()</Name> <FileRef uid="6" /> <SequencePoints> <SequencePoint vc="0" uspid="27" ordinal="0" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="6" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="27" ec="1" el="27" bec="0" bev="0" fileid="6" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Core.Networking.MasterClientListSingleton</FullName> <Methods> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="True" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>NosCore.Core.Networking.MasterClientListSingleton NosCore.Core.Networking.MasterClientListSingleton::get_Instance()</Name> <FileRef uid="7" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="2" bev="0" fileid="7" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="32" ordinal="0" path="0" offset="6" offsetend="8" sl="32" fileid="7" /> <BranchPoint vc="0" uspid="32" ordinal="1" path="1" offset="6" offsetend="20" sl="32" fileid="7" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="32" bec="0" bev="0" fileid="7" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Networking.MasterClientListSingleton::.ctor()</Name> <FileRef uid="7" /> <SequencePoints> <SequencePoint vc="0" uspid="28" ordinal="0" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="7" /> <SequencePoint vc="0" uspid="29" ordinal="1" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="7" /> <SequencePoint vc="0" uspid="30" ordinal="2" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="7" /> <SequencePoint vc="0" uspid="34" ordinal="3" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="7" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="28" ec="1" el="34" bec="0" bev="0" fileid="7" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="16" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="4" /> <FullName>NosCore.Core.Networking.NetworkClient</FullName> <Methods> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Core.Networking.NetworkClient::DisconnectAsync()</Name> <FileRef uid="8" /> <SequencePoints> <SequencePoint vc="0" uspid="55" ordinal="0" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="8" /> <SequencePoint vc="0" uspid="56" ordinal="1" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="8" /> <SequencePoint vc="0" uspid="57" ordinal="2" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="8" /> <SequencePoint vc="0" uspid="58" ordinal="3" sl="58" sc="1" el="58" ec="2" bec="2" bev="0" fileid="8" /> <SequencePoint vc="0" uspid="59" ordinal="4" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="8" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="58" ordinal="0" path="0" offset="37" offsetend="39" sl="58" fileid="8" /> <BranchPoint vc="0" uspid="58" ordinal="1" path="1" offset="37" offsetend="52" sl="58" fileid="8" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="55" ec="1" el="59" bec="0" bev="0" fileid="8" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Core.Networking.NetworkClient::SendPacketAsync(NosCore.Packets.Interfaces.IPacket)</Name> <FileRef uid="8" /> <SequencePoints> <SequencePoint vc="0" uspid="62" ordinal="0" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="8" /> <SequencePoint vc="0" uspid="63" ordinal="1" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="8" /> <SequencePoint vc="0" uspid="64" ordinal="2" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="8" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="62" ec="1" el="64" bec="0" bev="0" fileid="8" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Networking.NetworkClient::RegisterChannel(DotNetty.Transport.Channels.IChannel)</Name> <FileRef uid="8" /> <SequencePoints> <SequencePoint vc="0" uspid="85" ordinal="0" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="8" /> <SequencePoint vc="0" uspid="86" ordinal="1" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="8" /> <SequencePoint vc="0" uspid="87" ordinal="2" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="8" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="85" ec="1" el="87" bec="0" bev="0" fileid="8" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Networking.NetworkClient::.ctor(Serilog.ILogger)</Name> <FileRef uid="8" /> <SequencePoints> <SequencePoint vc="0" uspid="39" ordinal="0" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="8" /> <SequencePoint vc="0" uspid="40" ordinal="1" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="8" /> <SequencePoint vc="0" uspid="41" ordinal="2" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="8" /> <SequencePoint vc="0" uspid="42" ordinal="3" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="8" /> <SequencePoint vc="0" uspid="43" ordinal="4" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="8" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="39" ec="1" el="43" bec="0" bev="0" fileid="8" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="12" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="4" /> <FullName>NosCore.Core.Networking.SessionFactory</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="True" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>NosCore.Core.Networking.SessionFactory NosCore.Core.Networking.SessionFactory::get_Instance()</Name> <FileRef uid="9" /> <SequencePoints> <SequencePoint vc="0" uspid="37" ordinal="0" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="9" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="37" ec="1" el="37" bec="0" bev="0" fileid="9" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int32 NosCore.Core.Networking.SessionFactory::GenerateSessionId()</Name> <FileRef uid="9" /> <SequencePoints> <SequencePoint vc="0" uspid="45" ordinal="0" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="9" /> <SequencePoint vc="0" uspid="46" ordinal="1" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="9" /> <SequencePoint vc="0" uspid="47" ordinal="2" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="9" /> <SequencePoint vc="0" uspid="48" ordinal="3" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="9" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="45" ec="1" el="48" bec="0" bev="0" fileid="9" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Networking.SessionFactory::.ctor()</Name> <FileRef uid="9" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="9" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="9" /> <SequencePoint vc="0" uspid="32" ordinal="2" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="9" /> <SequencePoint vc="0" uspid="33" ordinal="3" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="9" /> <SequencePoint vc="0" uspid="34" ordinal="4" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="9" /> <SequencePoint vc="0" uspid="35" ordinal="5" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="9" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="30" ec="1" el="35" bec="0" bev="0" fileid="9" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Networking.SessionFactory::.cctor()</Name> <FileRef uid="9" /> <SequencePoints> <SequencePoint vc="0" uspid="27" ordinal="0" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="9" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="27" ec="1" el="27" bec="0" bev="0" fileid="9" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="16" visitedSequencePoints="16" numBranchPoints="8" visitedBranchPoints="6" sequenceCoverage="100" branchCoverage="75" maxCyclomaticComplexity="6" minCyclomaticComplexity="1" visitedClasses="1" numClasses="1" visitedMethods="3" numMethods="3" /> <FullName>NosCore.Core.I18N.GameLanguage</FullName> <Methods> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="100" branchCoverage="100" isConstructor="False" isGetter="True" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="1" numBranchPoints="2" visitedBranchPoints="2" sequenceCoverage="100" branchCoverage="100" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="1" numMethods="1" /> <MetadataToken /> <Name>NosCore.Core.I18N.GameLanguage NosCore.Core.I18N.GameLanguage::get_Instance()</Name> <FileRef uid="10" /> <SequencePoints> <SequencePoint vc="1107" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="2" bev="2" fileid="10" /> </SequencePoints> <BranchPoints> <BranchPoint vc="1" uspid="40" ordinal="0" path="0" offset="6" offsetend="8" sl="40" fileid="10" /> <BranchPoint vc="1107" uspid="40" ordinal="1" path="1" offset="6" offsetend="20" sl="40" fileid="10" /> </BranchPoints> <MethodPoint vc="1" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="40" ec="1" el="40" bec="0" bev="0" fileid="10" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="100" branchCoverage="66.66" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="8" numBranchPoints="6" visitedBranchPoints="4" sequenceCoverage="100" branchCoverage="66.66" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="1" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Core.I18N.GameLanguage::GetMessageFromKey(NosCore.Data.Enumerations.I18N.LanguageKey,NosCore.Shared.Enumerations.RegionType)</Name> <FileRef uid="10" /> <SequencePoints> <SequencePoint vc="1107" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="10" /> <SequencePoint vc="1107" uspid="44" ordinal="1" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="10" /> <SequencePoint vc="1107" uspid="45" ordinal="2" sl="45" sc="1" el="45" ec="2" bec="4" bev="2" fileid="10" /> <SequencePoint vc="1107" uspid="46" ordinal="3" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="10" /> <SequencePoint vc="1107" uspid="47" ordinal="4" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="10" /> <SequencePoint vc="1107" uspid="48" ordinal="5" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="10" /> <SequencePoint vc="1107" uspid="50" ordinal="6" sl="50" sc="1" el="50" ec="2" bec="2" bev="2" fileid="10" /> <SequencePoint vc="1107" uspid="51" ordinal="7" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="10" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="45" ordinal="0" path="0" offset="26" offsetend="28" sl="45" fileid="10" /> <BranchPoint vc="1107" uspid="45" ordinal="1" path="1" offset="26" offsetend="35" sl="45" fileid="10" /> <BranchPoint vc="0" uspid="45" ordinal="2" path="0" offset="85" offsetend="87" sl="45" fileid="10" /> <BranchPoint vc="1107" uspid="45" ordinal="3" path="1" offset="85" offsetend="91" sl="45" fileid="10" /> <BranchPoint vc="166" uspid="50" ordinal="4" path="0" offset="116" offsetend="118" sl="50" fileid="10" /> <BranchPoint vc="941" uspid="50" ordinal="5" path="1" offset="116" offsetend="136" sl="50" fileid="10" /> </BranchPoints> <MethodPoint vc="8" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="43" ec="1" el="51" bec="0" bev="0" fileid="10" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="100" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="7" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="100" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="1" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.I18N.GameLanguage::.ctor()</Name> <FileRef uid="10" /> <SequencePoints> <SequencePoint vc="1" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="10" /> <SequencePoint vc="1" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="10" /> <SequencePoint vc="1" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="10" /> <SequencePoint vc="1" uspid="35" ordinal="3" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="10" /> <SequencePoint vc="1" uspid="36" ordinal="4" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="10" /> <SequencePoint vc="1" uspid="37" ordinal="5" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="10" /> <SequencePoint vc="1" uspid="38" ordinal="6" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="10" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="7" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="32" ec="1" el="38" bec="0" bev="0" fileid="10" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="23" visitedSequencePoints="12" numBranchPoints="12" visitedBranchPoints="3" sequenceCoverage="52.17" branchCoverage="25" maxCyclomaticComplexity="8" minCyclomaticComplexity="1" visitedClasses="1" numClasses="1" visitedMethods="4" numMethods="6" /> <FullName>NosCore.Core.I18N.LogLanguage</FullName> <Methods> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="100" branchCoverage="100" isConstructor="False" isGetter="True" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="1" numBranchPoints="2" visitedBranchPoints="2" sequenceCoverage="100" branchCoverage="100" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="1" numMethods="1" /> <MetadataToken /> <Name>NosCore.Core.I18N.LogLanguage NosCore.Core.I18N.LogLanguage::get_Instance()</Name> <FileRef uid="11" /> <SequencePoints> <SequencePoint vc="9" uspid="45" ordinal="0" sl="45" sc="1" el="45" ec="2" bec="2" bev="2" fileid="11" /> </SequencePoints> <BranchPoints> <BranchPoint vc="1" uspid="45" ordinal="0" path="0" offset="6" offsetend="8" sl="45" fileid="11" /> <BranchPoint vc="9" uspid="45" ordinal="1" path="1" offset="6" offsetend="20" sl="45" fileid="11" /> </BranchPoints> <MethodPoint vc="1" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="45" ec="1" el="45" bec="0" bev="0" fileid="11" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Core.I18N.LogLanguage::GetMessageFromKey(NosCore.Data.Enumerations.I18N.LogLanguageKey)</Name> <FileRef uid="11" /> <SequencePoints> <SequencePoint vc="0" uspid="48" ordinal="0" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="11" /> <SequencePoint vc="0" uspid="49" ordinal="1" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="11" /> <SequencePoint vc="0" uspid="50" ordinal="2" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="11" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="48" ec="1" el="50" bec="0" bev="0" fileid="11" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Core.I18N.LogLanguage::GetMessageFromKey(NosCore.Data.Enumerations.I18N.LogLanguageKey,System.String)</Name> <FileRef uid="11" /> <SequencePoints> <SequencePoint vc="0" uspid="53" ordinal="0" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="11" /> <SequencePoint vc="0" uspid="54" ordinal="1" sl="54" sc="1" el="54" ec="2" bec="2" bev="0" fileid="11" /> <SequencePoint vc="0" uspid="55" ordinal="2" sl="55" sc="1" el="55" ec="2" bec="4" bev="0" fileid="11" /> <SequencePoint vc="0" uspid="56" ordinal="3" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="11" /> <SequencePoint vc="0" uspid="57" ordinal="4" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="11" /> <SequencePoint vc="0" uspid="58" ordinal="5" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="11" /> <SequencePoint vc="0" uspid="60" ordinal="6" sl="60" sc="1" el="60" ec="2" bec="2" bev="0" fileid="11" /> <SequencePoint vc="0" uspid="61" ordinal="7" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="11" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="54" ordinal="0" path="0" offset="2" offsetend="4" sl="54" fileid="11" /> <BranchPoint vc="0" uspid="54" ordinal="1" path="1" offset="2" offsetend="11" sl="54" fileid="11" /> <BranchPoint vc="0" uspid="55" ordinal="2" path="0" offset="24" offsetend="26" sl="55" fileid="11" /> <BranchPoint vc="0" uspid="55" ordinal="3" path="1" offset="24" offsetend="33" sl="55" fileid="11" /> <BranchPoint vc="0" uspid="55" ordinal="4" path="0" offset="79" offsetend="81" sl="55" fileid="11" /> <BranchPoint vc="0" uspid="55" ordinal="5" path="1" offset="79" offsetend="85" sl="55" fileid="11" /> <BranchPoint vc="0" uspid="60" ordinal="6" path="0" offset="110" offsetend="112" sl="60" fileid="11" /> <BranchPoint vc="0" uspid="60" ordinal="7" path="1" offset="110" offsetend="130" sl="60" fileid="11" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="53" ec="1" el="61" bec="0" bev="0" fileid="11" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="100" branchCoverage="50" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="3" numBranchPoints="2" visitedBranchPoints="1" sequenceCoverage="100" branchCoverage="50" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="1" numMethods="1" /> <MetadataToken /> <Name>System.Resources.ResourceSet NosCore.Core.I18N.LogLanguage::GetRessourceSet(System.String)</Name> <FileRef uid="11" /> <SequencePoints> <SequencePoint vc="9" uspid="64" ordinal="0" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="11" /> <SequencePoint vc="9" uspid="65" ordinal="1" sl="65" sc="1" el="65" ec="2" bec="2" bev="1" fileid="11" /> <SequencePoint vc="9" uspid="66" ordinal="2" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="11" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="65" ordinal="0" path="0" offset="8" offsetend="10" sl="65" fileid="11" /> <BranchPoint vc="9" uspid="65" ordinal="1" path="1" offset="8" offsetend="17" sl="65" fileid="11" /> </BranchPoints> <MethodPoint vc="3" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="64" ec="1" el="66" bec="0" bev="0" fileid="11" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="100" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="7" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="100" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="1" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.I18N.LogLanguage::.ctor()</Name> <FileRef uid="11" /> <SequencePoints> <SequencePoint vc="1" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="11" /> <SequencePoint vc="1" uspid="36" ordinal="1" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="11" /> <SequencePoint vc="1" uspid="37" ordinal="2" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="11" /> <SequencePoint vc="1" uspid="38" ordinal="3" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="11" /> <SequencePoint vc="1" uspid="39" ordinal="4" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="11" /> <SequencePoint vc="1" uspid="40" ordinal="5" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="11" /> <SequencePoint vc="1" uspid="41" ordinal="6" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="11" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="7" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="35" ec="1" el="41" bec="0" bev="0" fileid="11" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="100" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="1" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="100" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="1" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.I18N.LogLanguage::.cctor()</Name> <FileRef uid="11" /> <SequencePoints> <SequencePoint vc="1" uspid="31" ordinal="0" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="11" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="1" uspid="0" p8:type="SequencePoint" ordinal="5" offset="5" sc="0" sl="31" ec="1" el="31" bec="0" bev="0" fileid="11" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="14" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.Core.HttpClients.MasterServerHttpClient</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Net.Http.HttpClient NosCore.Core.HttpClients.MasterServerHttpClient::CreateClient()</Name> <FileRef uid="12" /> <SequencePoints> <SequencePoint vc="0" uspid="53" ordinal="0" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="12" /> <SequencePoint vc="0" uspid="54" ordinal="1" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="12" /> <SequencePoint vc="0" uspid="55" ordinal="2" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="12" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="53" ec="1" el="55" bec="0" bev="0" fileid="12" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task`1<T> NosCore.Core.HttpClients.MasterServerHttpClient::GetAsync()</Name> <FileRef uid="12" /> <SequencePoints> <SequencePoint vc="0" uspid="133" ordinal="0" sl="133" sc="1" el="133" ec="2" bec="0" bev="0" fileid="12" /> <SequencePoint vc="0" uspid="134" ordinal="1" sl="134" sc="1" el="134" ec="2" bec="0" bev="0" fileid="12" /> <SequencePoint vc="0" uspid="135" ordinal="2" sl="135" sc="1" el="135" ec="2" bec="0" bev="0" fileid="12" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="133" ec="1" el="135" bec="0" bev="0" fileid="12" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.HttpClients.MasterServerHttpClient::.ctor(System.Net.Http.IHttpClientFactory,NosCore.Core.Channel,NosCore.Core.HttpClients.ChannelHttpClients.IChannelHub)</Name> <FileRef uid="12" /> <SequencePoints> <SequencePoint vc="0" uspid="39" ordinal="0" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="12" /> <SequencePoint vc="0" uspid="40" ordinal="1" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="12" /> <SequencePoint vc="0" uspid="41" ordinal="2" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="12" /> <SequencePoint vc="0" uspid="42" ordinal="3" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="12" /> <SequencePoint vc="0" uspid="43" ordinal="4" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="12" /> <SequencePoint vc="0" uspid="44" ordinal="5" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="12" /> <SequencePoint vc="0" uspid="45" ordinal="6" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="12" /> <SequencePoint vc="0" uspid="48" ordinal="7" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="12" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="39" ec="1" el="48" bec="0" bev="0" fileid="12" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Core.HttpClients.IncommingMailHttpClients.IncommingMailHttpClient</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Core.HttpClients.IncommingMailHttpClients.IncommingMailHttpClient::OpenIncommingMailAsync(System.Int32,NosCore.Data.WebApi.MailData)</Name> <FileRef uid="13" /> <SequencePoints> <SequencePoint vc="0" uspid="64" ordinal="0" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="13" /> <SequencePoint vc="0" uspid="65" ordinal="1" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="13" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="64" ec="1" el="65" bec="0" bev="0" fileid="13" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.HttpClients.IncommingMailHttpClients.IncommingMailHttpClient::.ctor(System.Net.Http.IHttpClientFactory,NosCore.Core.Channel,NosCore.Core.HttpClients.ChannelHttpClients.IChannelHub)</Name> <FileRef uid="13" /> <SequencePoints> <SequencePoint vc="0" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="13" /> <SequencePoint vc="0" uspid="36" ordinal="1" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="13" /> <SequencePoint vc="0" uspid="37" ordinal="2" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="13" /> <SequencePoint vc="0" uspid="38" ordinal="3" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="13" /> <SequencePoint vc="0" uspid="39" ordinal="4" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="13" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="35" ec="1" el="39" bec="0" bev="0" fileid="13" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Core.HttpClients.ConnectedAccountHttpClients.ConnectedAccountHttpClient</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Core.HttpClients.ConnectedAccountHttpClients.ConnectedAccountHttpClient::DisconnectAsync(System.Int64)</Name> <FileRef uid="14" /> <SequencePoints> <SequencePoint vc="0" uspid="48" ordinal="0" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="14" /> <SequencePoint vc="0" uspid="49" ordinal="1" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="14" /> <SequencePoint vc="0" uspid="50" ordinal="2" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="14" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="48" ec="1" el="50" bec="0" bev="0" fileid="14" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.HttpClients.ConnectedAccountHttpClients.ConnectedAccountHttpClient::.ctor(System.Net.Http.IHttpClientFactory,NosCore.Core.Channel,NosCore.Core.HttpClients.ChannelHttpClients.IChannelHub)</Name> <FileRef uid="14" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="14" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="14" /> <SequencePoint vc="0" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="14" /> <SequencePoint vc="0" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="14" /> <SequencePoint vc="0" uspid="44" ordinal="4" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="14" /> <SequencePoint vc="0" uspid="45" ordinal="5" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="14" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="40" ec="1" el="45" bec="0" bev="0" fileid="14" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Core.HttpClients.ChannelHttpClients.ChannelHttpClient</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.HttpClients.ChannelHttpClients.ChannelHttpClient::.ctor(System.Net.Http.IHttpClientFactory,NosCore.Core.Channel,Serilog.ILogger)</Name> <FileRef uid="15" /> <SequencePoints> <SequencePoint vc="0" uspid="47" ordinal="0" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="15" /> <SequencePoint vc="0" uspid="48" ordinal="1" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="15" /> <SequencePoint vc="0" uspid="49" ordinal="2" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="15" /> <SequencePoint vc="0" uspid="50" ordinal="3" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="15" /> <SequencePoint vc="0" uspid="51" ordinal="4" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="15" /> <SequencePoint vc="0" uspid="52" ordinal="5" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="15" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="47" ec="1" el="52" bec="0" bev="0" fileid="15" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Core.HttpClients.AuthHttpClients.AuthHttpClient</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.HttpClients.AuthHttpClients.AuthHttpClient::.ctor(System.Net.Http.IHttpClientFactory,NosCore.Core.Channel,NosCore.Core.HttpClients.ChannelHttpClients.IChannelHub)</Name> <FileRef uid="16" /> <SequencePoints> <SequencePoint vc="0" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="16" /> <SequencePoint vc="0" uspid="36" ordinal="1" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="16" /> <SequencePoint vc="0" uspid="37" ordinal="2" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="16" /> <SequencePoint vc="0" uspid="38" ordinal="3" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="16" /> <SequencePoint vc="0" uspid="39" ordinal="4" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="16" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="35" ec="1" el="39" bec="0" bev="0" fileid="16" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="15" visitedSequencePoints="0" numBranchPoints="14" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="14" minCyclomaticComplexity="14" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Core.Extensions.RegionTypeExtension</FullName> <Methods> <Method cyclomaticComplexity="14" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="15" visitedSequencePoints="0" numBranchPoints="14" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="14" minCyclomaticComplexity="14" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Text.Encoding NosCore.Core.Extensions.RegionTypeExtension::GetEncoding(NosCore.Shared.Enumerations.RegionType)</Name> <FileRef uid="17" /> <SequencePoints> <SequencePoint vc="0" uspid="28" ordinal="0" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="17" /> <SequencePoint vc="0" uspid="29" ordinal="1" sl="29" sc="1" el="29" ec="2" bec="12" bev="0" fileid="17" /> <SequencePoint vc="0" uspid="30" ordinal="2" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="17" /> <SequencePoint vc="0" uspid="31" ordinal="3" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="17" /> <SequencePoint vc="0" uspid="32" ordinal="4" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="17" /> <SequencePoint vc="0" uspid="33" ordinal="5" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="17" /> <SequencePoint vc="0" uspid="34" ordinal="6" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="17" /> <SequencePoint vc="0" uspid="35" ordinal="7" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="17" /> <SequencePoint vc="0" uspid="36" ordinal="8" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="17" /> <SequencePoint vc="0" uspid="37" ordinal="9" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="17" /> <SequencePoint vc="0" uspid="38" ordinal="10" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="17" /> <SequencePoint vc="0" uspid="39" ordinal="11" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="17" /> <SequencePoint vc="0" uspid="40" ordinal="12" sl="40" sc="1" el="40" ec="2" bec="2" bev="0" fileid="17" /> <SequencePoint vc="0" uspid="41" ordinal="13" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="17" /> <SequencePoint vc="0" uspid="42" ordinal="14" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="17" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="29" ordinal="0" path="0" offset="2" offsetend="4" sl="29" fileid="17" /> <BranchPoint vc="0" uspid="29" ordinal="1" path="1" offset="2" offsetend="5" sl="29" fileid="17" /> <BranchPoint vc="0" uspid="29" ordinal="8" path="6" offset="6" offsetend="52" sl="29" fileid="17" /> <BranchPoint vc="0" uspid="29" ordinal="3" path="1" offset="6" offsetend="73" sl="29" fileid="17" /> <BranchPoint vc="0" uspid="29" ordinal="5" path="3" offset="6" offsetend="94" sl="29" fileid="17" /> <BranchPoint vc="0" uspid="29" ordinal="4" path="2" offset="6" offsetend="112" sl="29" fileid="17" /> <BranchPoint vc="0" uspid="29" ordinal="6" path="4" offset="6" offsetend="130" sl="29" fileid="17" /> <BranchPoint vc="0" uspid="29" ordinal="7" path="5" offset="6" offsetend="148" sl="29" fileid="17" /> <BranchPoint vc="0" uspid="29" ordinal="10" path="8" offset="6" offsetend="166" sl="29" fileid="17" /> <BranchPoint vc="0" uspid="29" ordinal="11" path="9" offset="6" offsetend="184" sl="29" fileid="17" /> <BranchPoint vc="0" uspid="29" ordinal="9" path="7" offset="6" offsetend="202" sl="29" fileid="17" /> <BranchPoint vc="0" uspid="29" ordinal="2" path="0" offset="6" offsetend="220" sl="29" fileid="17" /> <BranchPoint vc="0" uspid="40" ordinal="12" path="0" offset="229" offsetend="231" sl="40" fileid="17" /> <BranchPoint vc="0" uspid="40" ordinal="13" path="1" offset="229" offsetend="232" sl="40" fileid="17" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="28" ec="1" el="42" bec="0" bev="0" fileid="17" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="44" visitedSequencePoints="0" numBranchPoints="14" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="12" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="5" /> <FullName>NosCore.Core.Extensions.TypeExtension</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Func`1<TBase> NosCore.Core.Extensions.TypeExtension::GetConstructorDelegate(System.Type)</Name> <FileRef uid="18" /> <SequencePoints> <SequencePoint vc="0" uspid="33" ordinal="0" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="34" ordinal="1" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="35" ordinal="2" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="18" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="33" ec="1" el="35" bec="0" bev="0" fileid="18" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Func`1<System.Object> NosCore.Core.Extensions.TypeExtension::GetConstructorDelegate(System.Type)</Name> <FileRef uid="18" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="18" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="38" ec="1" el="40" bec="0" bev="0" fileid="18" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="12" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="28" visitedSequencePoints="0" numBranchPoints="12" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="12" minCyclomaticComplexity="12" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Delegate NosCore.Core.Extensions.TypeExtension::GetConstructorDelegate(System.Type,System.Type)</Name> <FileRef uid="18" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="44" ordinal="1" sl="44" sc="1" el="44" ec="2" bec="2" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="45" ordinal="2" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="46" ordinal="3" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="49" ordinal="4" sl="49" sc="1" el="49" ec="2" bec="2" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="50" ordinal="5" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="51" ordinal="6" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="54" ordinal="7" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="55" ordinal="8" sl="55" sc="1" el="55" ec="2" bec="2" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="56" ordinal="9" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="58" ordinal="10" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="59" ordinal="11" sl="59" sc="1" el="59" ec="2" bec="2" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="60" ordinal="12" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="61" ordinal="13" sl="61" sc="1" el="61" ec="2" bec="2" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="62" ordinal="14" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="63" ordinal="15" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="64" ordinal="16" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="67" ordinal="17" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="70" ordinal="18" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="71" ordinal="19" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="72" ordinal="20" sl="72" sc="1" el="72" ec="2" bec="2" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="73" ordinal="21" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="74" ordinal="22" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="75" ordinal="23" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="77" ordinal="24" sl="77" sc="1" el="77" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="78" ordinal="25" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="79" ordinal="26" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="80" ordinal="27" sl="80" sc="1" el="80" ec="2" bec="0" bev="0" fileid="18" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="44" ordinal="0" path="0" offset="12" offsetend="14" sl="44" fileid="18" /> <BranchPoint vc="0" uspid="44" ordinal="1" path="1" offset="12" offsetend="26" sl="44" fileid="18" /> <BranchPoint vc="0" uspid="49" ordinal="2" path="0" offset="37" offsetend="39" sl="49" fileid="18" /> <BranchPoint vc="0" uspid="49" ordinal="3" path="1" offset="37" offsetend="51" sl="49" fileid="18" /> <BranchPoint vc="0" uspid="55" ordinal="4" path="0" offset="62" offsetend="64" sl="55" fileid="18" /> <BranchPoint vc="0" uspid="55" ordinal="5" path="1" offset="62" offsetend="71" sl="55" fileid="18" /> <BranchPoint vc="0" uspid="59" ordinal="6" path="0" offset="107" offsetend="109" sl="59" fileid="18" /> <BranchPoint vc="0" uspid="61" ordinal="8" path="0" offset="119" offsetend="121" sl="61" fileid="18" /> <BranchPoint vc="0" uspid="61" ordinal="9" path="1" offset="119" offsetend="149" sl="61" fileid="18" /> <BranchPoint vc="0" uspid="59" ordinal="7" path="1" offset="107" offsetend="176" sl="59" fileid="18" /> <BranchPoint vc="0" uspid="72" ordinal="11" path="1" offset="248" offsetend="214" sl="72" fileid="18" /> <BranchPoint vc="0" uspid="72" ordinal="10" path="0" offset="248" offsetend="250" sl="72" fileid="18" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="43" ec="1" el="80" bec="0" bev="0" fileid="18" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>T NosCore.Core.Extensions.TypeExtension::CreateInstance(System.Type)</Name> <FileRef uid="18" /> <SequencePoints> <SequencePoint vc="0" uspid="83" ordinal="0" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="84" ordinal="1" sl="84" sc="1" el="84" ec="2" bec="2" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="85" ordinal="2" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="86" ordinal="3" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="89" ordinal="4" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="90" ordinal="5" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="92" ordinal="6" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="93" ordinal="7" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="18" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="84" ordinal="0" path="0" offset="16" offsetend="18" sl="84" fileid="18" /> <BranchPoint vc="0" uspid="84" ordinal="1" path="1" offset="16" offsetend="33" sl="84" fileid="18" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="83" ec="1" el="93" bec="0" bev="0" fileid="18" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Extensions.TypeExtension::.cctor()</Name> <FileRef uid="18" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="18" /> <SequencePoint vc="0" uspid="30" ordinal="1" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="18" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="29" ec="1" el="30" bec="0" bev="0" fileid="18" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Core.Encryption.BcryptHasher</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Core.Encryption.BcryptHasher::Hash(System.String,System.String)</Name> <FileRef uid="19" /> <SequencePoints> <SequencePoint vc="0" uspid="28" ordinal="0" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="19" /> <SequencePoint vc="0" uspid="29" ordinal="1" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="19" /> <SequencePoint vc="0" uspid="30" ordinal="2" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="19" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="28" ec="1" el="30" bec="0" bev="0" fileid="19" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Core.Encryption.BcryptHasher::Hash(System.String)</Name> <FileRef uid="19" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="19" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="32" ec="1" el="32" bec="0" bev="0" fileid="19" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="42" visitedSequencePoints="0" numBranchPoints="16" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="16" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Core.Encryption.LoginDecoder</FullName> <Methods> <Method cyclomaticComplexity="16" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="37" visitedSequencePoints="0" numBranchPoints="16" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="16" minCyclomaticComplexity="16" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Encryption.LoginDecoder::Decode(DotNetty.Transport.Channels.IChannelHandlerContext,DotNetty.Buffers.IByteBuffer,System.Collections.Generic.List`1<System.Object>)</Name> <FileRef uid="20" /> <SequencePoints> <SequencePoint vc="0" uspid="47" ordinal="0" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="48" ordinal="1" sl="48" sc="1" el="48" ec="2" bec="2" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="49" ordinal="2" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="50" ordinal="3" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="53" ordinal="4" sl="53" sc="1" el="53" ec="2" bec="2" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="54" ordinal="5" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="55" ordinal="6" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="59" ordinal="7" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="60" ordinal="8" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="61" ordinal="9" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="62" ordinal="10" sl="62" sc="1" el="62" ec="2" bec="2" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="63" ordinal="11" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="64" ordinal="12" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="65" ordinal="13" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="66" ordinal="14" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="67" ordinal="15" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="68" ordinal="16" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="70" ordinal="17" sl="70" sc="1" el="70" ec="2" bec="2" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="72" ordinal="18" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="73" ordinal="19" sl="73" sc="1" el="73" ec="2" bec="2" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="74" ordinal="20" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="75" ordinal="21" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="77" ordinal="22" sl="77" sc="1" el="77" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="78" ordinal="23" sl="78" sc="1" el="78" ec="2" bec="2" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="79" ordinal="24" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="80" ordinal="25" sl="80" sc="1" el="80" ec="2" bec="2" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="81" ordinal="26" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="82" ordinal="27" sl="82" sc="1" el="82" ec="2" bec="2" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="83" ordinal="28" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="84" ordinal="29" sl="84" sc="1" el="84" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="85" ordinal="30" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="86" ordinal="31" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="88" ordinal="32" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="90" ordinal="33" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="91" ordinal="34" sl="91" sc="1" el="91" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="92" ordinal="35" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="93" ordinal="36" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="20" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="48" ordinal="0" path="0" offset="7" offsetend="9" sl="48" fileid="20" /> <BranchPoint vc="0" uspid="48" ordinal="1" path="1" offset="7" offsetend="21" sl="48" fileid="20" /> <BranchPoint vc="0" uspid="53" ordinal="2" path="0" offset="27" offsetend="29" sl="53" fileid="20" /> <BranchPoint vc="0" uspid="53" ordinal="3" path="1" offset="27" offsetend="41" sl="53" fileid="20" /> <BranchPoint vc="0" uspid="62" ordinal="4" path="0" offset="94" offsetend="96" sl="62" fileid="20" /> <BranchPoint vc="0" uspid="62" ordinal="5" path="1" offset="94" offsetend="175" sl="62" fileid="20" /> <BranchPoint vc="0" uspid="70" ordinal="9" path="1" offset="297" offsetend="215" sl="70" fileid="20" /> <BranchPoint vc="0" uspid="73" ordinal="6" path="0" offset="233" offsetend="235" sl="73" fileid="20" /> <BranchPoint vc="0" uspid="73" ordinal="7" path="1" offset="233" offsetend="259" sl="73" fileid="20" /> <BranchPoint vc="0" uspid="70" ordinal="8" path="0" offset="297" offsetend="299" sl="70" fileid="20" /> <BranchPoint vc="0" uspid="78" ordinal="10" path="0" offset="329" offsetend="331" sl="78" fileid="20" /> <BranchPoint vc="0" uspid="80" ordinal="13" path="1" offset="333" offsetend="337" sl="80" fileid="20" /> <BranchPoint vc="0" uspid="80" ordinal="12" path="0" offset="333" offsetend="355" sl="80" fileid="20" /> <BranchPoint vc="0" uspid="78" ordinal="11" path="1" offset="329" offsetend="358" sl="78" fileid="20" /> <BranchPoint vc="0" uspid="82" ordinal="14" path="0" offset="372" offsetend="374" sl="82" fileid="20" /> <BranchPoint vc="0" uspid="82" ordinal="15" path="1" offset="372" offsetend="402" sl="82" fileid="20" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="47" ec="1" el="93" bec="0" bev="0" fileid="20" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Encryption.LoginDecoder::.ctor(Serilog.ILogger,NosCore.Packets.Interfaces.IDeserializer)</Name> <FileRef uid="20" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="20" /> <SequencePoint vc="0" uspid="44" ordinal="4" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="20" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="40" ec="1" el="44" bec="0" bev="0" fileid="20" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="28" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Core.Encryption.LoginEncoder</FullName> <Methods> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="23" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Encryption.LoginEncoder::Encode(DotNetty.Transport.Channels.IChannelHandlerContext,System.Collections.Generic.IEnumerable`1<NosCore.Packets.Interfaces.IPacket>,System.Collections.Generic.List`1<System.Object>)</Name> <FileRef uid="21" /> <SequencePoints> <SequencePoint vc="0" uspid="49" ordinal="0" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="50" ordinal="1" sl="50" sc="1" el="50" ec="2" bec="2" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="51" ordinal="2" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="52" ordinal="3" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="56" ordinal="4" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="57" ordinal="5" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="58" ordinal="6" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="59" ordinal="7" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="60" ordinal="8" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="61" ordinal="9" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="62" ordinal="10" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="63" ordinal="11" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="64" ordinal="12" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="65" ordinal="13" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="66" ordinal="14" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="67" ordinal="15" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="68" ordinal="16" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="69" ordinal="17" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="71" ordinal="18" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="73" ordinal="19" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="74" ordinal="20" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="75" ordinal="21" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="76" ordinal="22" sl="76" sc="1" el="76" ec="2" bec="0" bev="0" fileid="21" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="50" ordinal="0" path="0" offset="27" offsetend="29" sl="50" fileid="21" /> <BranchPoint vc="0" uspid="50" ordinal="1" path="1" offset="27" offsetend="41" sl="50" fileid="21" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="49" ec="1" el="76" bec="0" bev="0" fileid="21" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Encryption.LoginEncoder::.ctor(Serilog.ILogger,NosCore.Packets.Interfaces.ISerializer)</Name> <FileRef uid="21" /> <SequencePoints> <SequencePoint vc="0" uspid="41" ordinal="0" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="42" ordinal="1" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="43" ordinal="2" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="44" ordinal="3" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="21" /> <SequencePoint vc="0" uspid="45" ordinal="4" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="21" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="41" ec="1" el="45" bec="0" bev="0" fileid="21" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="10" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Core.Encryption.Pbkdf2Hasher</FullName> <Methods> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Core.Encryption.Pbkdf2Hasher::Hash(System.String,System.String)</Name> <FileRef uid="22" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="22" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="2" bev="0" fileid="22" /> <SequencePoint vc="0" uspid="35" ordinal="2" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="22" /> <SequencePoint vc="0" uspid="36" ordinal="3" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="22" /> <SequencePoint vc="0" uspid="37" ordinal="4" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="22" /> <SequencePoint vc="0" uspid="38" ordinal="5" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="22" /> <SequencePoint vc="0" uspid="39" ordinal="6" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="22" /> <SequencePoint vc="0" uspid="40" ordinal="7" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="22" /> <SequencePoint vc="0" uspid="41" ordinal="8" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="22" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="33" ordinal="0" path="0" offset="8" offsetend="10" sl="33" fileid="22" /> <BranchPoint vc="0" uspid="33" ordinal="1" path="1" offset="8" offsetend="16" sl="33" fileid="22" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="41" bec="0" bev="0" fileid="22" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Core.Encryption.Pbkdf2Hasher::Hash(System.String)</Name> <FileRef uid="22" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="22" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="43" ec="1" el="43" bec="0" bev="0" fileid="22" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Core.Encryption.Sha512Hasher</FullName> <Methods> <Method cyclomaticComplexity="4" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="4" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Core.Encryption.Sha512Hasher::Hash(System.String,System.String)</Name> <FileRef uid="23" /> <SequencePoints> <SequencePoint vc="0" uspid="31" ordinal="0" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="23" /> <SequencePoint vc="0" uspid="32" ordinal="1" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="23" /> <SequencePoint vc="0" uspid="33" ordinal="2" sl="33" sc="1" el="33" ec="2" bec="4" bev="0" fileid="23" /> <SequencePoint vc="0" uspid="34" ordinal="3" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="23" /> <SequencePoint vc="0" uspid="35" ordinal="4" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="23" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="33" ordinal="0" path="0" offset="15" offsetend="17" sl="33" fileid="23" /> <BranchPoint vc="0" uspid="33" ordinal="2" path="0" offset="20" offsetend="22" sl="33" fileid="23" /> <BranchPoint vc="0" uspid="33" ordinal="1" path="1" offset="15" offsetend="28" sl="33" fileid="23" /> <BranchPoint vc="0" uspid="33" ordinal="3" path="1" offset="20" offsetend="28" sl="33" fileid="23" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="31" ec="1" el="35" bec="0" bev="0" fileid="23" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Core.Encryption.Sha512Hasher::Hash(System.String)</Name> <FileRef uid="23" /> <SequencePoints> <SequencePoint vc="0" uspid="37" ordinal="0" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="23" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="37" ec="1" el="37" bec="0" bev="0" fileid="23" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="188" visitedSequencePoints="0" numBranchPoints="57" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="23" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="4" /> <FullName>NosCore.Core.Encryption.WorldDecoder</FullName> <Methods> <Method cyclomaticComplexity="20" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="45" visitedSequencePoints="0" numBranchPoints="20" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="20" minCyclomaticComplexity="20" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Core.Encryption.WorldDecoder::DecryptPrivate(System.String)</Name> <FileRef uid="24" /> <SequencePoints> <SequencePoint vc="0" uspid="52" ordinal="0" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="53" ordinal="1" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="54" ordinal="2" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="56" ordinal="3" sl="56" sc="1" el="56" ec="2" bec="2" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="57" ordinal="4" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="58" ordinal="5" sl="58" sc="1" el="58" ec="2" bec="2" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="59" ordinal="6" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="60" ordinal="7" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="62" ordinal="8" sl="62" sc="1" el="62" ec="2" bec="2" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="63" ordinal="9" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="64" ordinal="10" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="67" ordinal="11" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="68" ordinal="12" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="69" ordinal="13" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="71" ordinal="14" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="73" ordinal="15" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="74" ordinal="16" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="75" ordinal="17" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="76" ordinal="18" sl="76" sc="1" el="76" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="77" ordinal="19" sl="77" sc="1" el="77" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="79" ordinal="20" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="80" ordinal="21" sl="80" sc="1" el="80" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="81" ordinal="22" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="83" ordinal="23" sl="83" sc="1" el="83" ec="2" bec="2" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="84" ordinal="24" sl="84" sc="1" el="84" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="85" ordinal="25" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="86" ordinal="26" sl="86" sc="1" el="86" ec="2" bec="2" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="88" ordinal="27" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="89" ordinal="28" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="91" ordinal="29" sl="91" sc="1" el="91" ec="2" bec="2" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="93" ordinal="30" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="95" ordinal="31" sl="95" sc="1" el="95" ec="2" bec="4" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="96" ordinal="32" sl="96" sc="1" el="96" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="97" ordinal="33" sl="97" sc="1" el="97" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="98" ordinal="34" sl="98" sc="1" el="98" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="99" ordinal="35" sl="99" sc="1" el="99" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="101" ordinal="36" sl="101" sc="1" el="101" ec="2" bec="4" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="102" ordinal="37" sl="102" sc="1" el="102" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="103" ordinal="38" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="104" ordinal="39" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="105" ordinal="40" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="106" ordinal="41" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="107" ordinal="42" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="109" ordinal="43" sl="109" sc="1" el="109" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="110" ordinal="44" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="24" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="56" ordinal="19" path="1" offset="357" offsetend="33" sl="56" fileid="24" /> <BranchPoint vc="0" uspid="58" ordinal="0" path="0" offset="50" offsetend="52" sl="58" fileid="24" /> <BranchPoint vc="0" uspid="62" ordinal="3" path="1" offset="131" offsetend="67" sl="62" fileid="24" /> <BranchPoint vc="0" uspid="62" ordinal="2" path="0" offset="131" offsetend="133" sl="62" fileid="24" /> <BranchPoint vc="0" uspid="58" ordinal="1" path="1" offset="50" offsetend="139" sl="58" fileid="24" /> <BranchPoint vc="0" uspid="83" ordinal="17" path="1" offset="333" offsetend="164" sl="83" fileid="24" /> <BranchPoint vc="0" uspid="86" ordinal="4" path="0" offset="176" offsetend="178" sl="86" fileid="24" /> <BranchPoint vc="0" uspid="86" ordinal="5" path="1" offset="176" offsetend="181" sl="86" fileid="24" /> <BranchPoint vc="0" uspid="91" ordinal="6" path="0" offset="213" offsetend="215" sl="91" fileid="24" /> <BranchPoint vc="0" uspid="91" ordinal="7" path="1" offset="213" offsetend="218" sl="91" fileid="24" /> <BranchPoint vc="0" uspid="95" ordinal="8" path="0" offset="236" offsetend="238" sl="95" fileid="24" /> <BranchPoint vc="0" uspid="95" ordinal="9" path="1" offset="236" offsetend="249" sl="95" fileid="24" /> <BranchPoint vc="0" uspid="95" ordinal="10" path="0" offset="254" offsetend="256" sl="95" fileid="24" /> <BranchPoint vc="0" uspid="95" ordinal="11" path="1" offset="254" offsetend="278" sl="95" fileid="24" /> <BranchPoint vc="0" uspid="101" ordinal="12" path="0" offset="280" offsetend="282" sl="101" fileid="24" /> <BranchPoint vc="0" uspid="101" ordinal="13" path="1" offset="280" offsetend="293" sl="101" fileid="24" /> <BranchPoint vc="0" uspid="101" ordinal="14" path="0" offset="298" offsetend="300" sl="101" fileid="24" /> <BranchPoint vc="0" uspid="101" ordinal="15" path="1" offset="298" offsetend="316" sl="101" fileid="24" /> <BranchPoint vc="0" uspid="83" ordinal="16" path="0" offset="333" offsetend="338" sl="83" fileid="24" /> <BranchPoint vc="0" uspid="56" ordinal="18" path="0" offset="357" offsetend="362" sl="56" fileid="24" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="52" ec="1" el="110" bec="0" bev="0" fileid="24" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="14" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="41" visitedSequencePoints="0" numBranchPoints="14" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="14" minCyclomaticComplexity="14" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Core.Encryption.WorldDecoder::DecryptCustomParameter(System.Byte[],System.Byte[]&)</Name> <FileRef uid="24" /> <SequencePoints> <SequencePoint vc="0" uspid="113" ordinal="0" sl="113" sc="1" el="113" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="114" ordinal="1" sl="114" sc="1" el="114" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="116" ordinal="2" sl="116" sc="1" el="116" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="117" ordinal="3" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="118" ordinal="4" sl="118" sc="1" el="118" ec="2" bec="2" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="119" ordinal="5" sl="119" sc="1" el="119" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="120" ordinal="6" sl="120" sc="1" el="120" ec="2" bec="2" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="121" ordinal="7" sl="121" sc="1" el="121" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="122" ordinal="8" sl="122" sc="1" el="122" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="123" ordinal="9" sl="123" sc="1" el="123" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="126" ordinal="10" sl="126" sc="1" el="126" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="127" ordinal="11" sl="127" sc="1" el="127" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="128" ordinal="12" sl="128" sc="1" el="128" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="129" ordinal="13" sl="129" sc="1" el="129" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="130" ordinal="14" sl="130" sc="1" el="130" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="132" ordinal="15" sl="132" sc="1" el="132" ec="2" bec="5" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="136" ordinal="16" sl="136" sc="1" el="136" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="137" ordinal="17" sl="137" sc="1" el="137" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="140" ordinal="18" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="141" ordinal="19" sl="141" sc="1" el="141" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="144" ordinal="20" sl="144" sc="1" el="144" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="145" ordinal="21" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="148" ordinal="22" sl="148" sc="1" el="148" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="149" ordinal="23" sl="149" sc="1" el="149" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="150" ordinal="24" sl="150" sc="1" el="150" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="153" ordinal="25" sl="153" sc="1" el="153" ec="2" bec="5" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="158" ordinal="26" sl="158" sc="1" el="158" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="159" ordinal="27" sl="159" sc="1" el="159" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="162" ordinal="28" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="163" ordinal="29" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="166" ordinal="30" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="167" ordinal="31" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="170" ordinal="32" sl="170" sc="1" el="170" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="171" ordinal="33" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="172" ordinal="34" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="174" ordinal="35" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="176" ordinal="36" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="178" ordinal="37" sl="178" sc="1" el="178" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="179" ordinal="38" sl="179" sc="1" el="179" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="180" ordinal="39" sl="180" sc="1" el="180" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="182" ordinal="40" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="24" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="118" ordinal="13" path="1" offset="291" offsetend="22" sl="118" fileid="24" /> <BranchPoint vc="0" uspid="120" ordinal="0" path="0" offset="39" offsetend="41" sl="120" fileid="24" /> <BranchPoint vc="0" uspid="120" ordinal="1" path="1" offset="39" offsetend="71" sl="120" fileid="24" /> <BranchPoint vc="0" uspid="132" ordinal="3" path="1" offset="115" offsetend="138" sl="132" fileid="24" /> <BranchPoint vc="0" uspid="132" ordinal="4" path="2" offset="115" offsetend="138" sl="132" fileid="24" /> <BranchPoint vc="0" uspid="132" ordinal="5" path="3" offset="115" offsetend="149" sl="132" fileid="24" /> <BranchPoint vc="0" uspid="132" ordinal="6" path="4" offset="115" offsetend="160" sl="132" fileid="24" /> <BranchPoint vc="0" uspid="132" ordinal="2" path="0" offset="115" offsetend="171" sl="132" fileid="24" /> <BranchPoint vc="0" uspid="153" ordinal="8" path="1" offset="200" offsetend="223" sl="153" fileid="24" /> <BranchPoint vc="0" uspid="153" ordinal="9" path="2" offset="200" offsetend="223" sl="153" fileid="24" /> <BranchPoint vc="0" uspid="153" ordinal="10" path="3" offset="200" offsetend="234" sl="153" fileid="24" /> <BranchPoint vc="0" uspid="153" ordinal="11" path="4" offset="200" offsetend="245" sl="153" fileid="24" /> <BranchPoint vc="0" uspid="153" ordinal="7" path="0" offset="200" offsetend="256" sl="153" fileid="24" /> <BranchPoint vc="0" uspid="118" ordinal="12" path="0" offset="291" offsetend="296" sl="118" fileid="24" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="113" ec="1" el="182" bec="0" bev="0" fileid="24" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="23" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="97" visitedSequencePoints="0" numBranchPoints="23" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="23" minCyclomaticComplexity="23" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Encryption.WorldDecoder::Decode(DotNetty.Transport.Channels.IChannelHandlerContext,DotNetty.Buffers.IByteBuffer,System.Collections.Generic.List`1<System.Object>)</Name> <FileRef uid="24" /> <SequencePoints> <SequencePoint vc="0" uspid="185" ordinal="0" sl="185" sc="1" el="185" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="186" ordinal="1" sl="186" sc="1" el="186" ec="2" bec="4" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="187" ordinal="2" sl="187" sc="1" el="187" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="188" ordinal="3" sl="188" sc="1" el="188" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="191" ordinal="4" sl="191" sc="1" el="191" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="192" ordinal="5" sl="192" sc="1" el="192" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="193" ordinal="6" sl="193" sc="1" el="193" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="194" ordinal="7" sl="194" sc="1" el="194" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="195" ordinal="8" sl="195" sc="1" el="195" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="196" ordinal="9" sl="196" sc="1" el="196" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="197" ordinal="10" sl="197" sc="1" el="197" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="198" ordinal="11" sl="198" sc="1" el="198" ec="2" bec="2" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="199" ordinal="12" sl="199" sc="1" el="199" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="200" ordinal="13" sl="200" sc="1" el="200" ec="2" bec="2" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="201" ordinal="14" sl="201" sc="1" el="201" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="202" ordinal="15" sl="202" sc="1" el="202" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="205" ordinal="16" sl="205" sc="1" el="205" ec="2" bec="2" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="206" ordinal="17" sl="206" sc="1" el="206" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="207" ordinal="18" sl="207" sc="1" el="207" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="208" ordinal="19" sl="208" sc="1" el="208" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="211" ordinal="20" sl="211" sc="1" el="211" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="212" ordinal="21" sl="212" sc="1" el="212" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="213" ordinal="22" sl="213" sc="1" el="213" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="214" ordinal="23" sl="214" sc="1" el="214" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="215" ordinal="24" sl="215" sc="1" el="215" ec="2" bec="2" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="216" ordinal="25" sl="216" sc="1" el="216" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="217" ordinal="26" sl="217" sc="1" el="217" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="218" ordinal="27" sl="218" sc="1" el="218" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="220" ordinal="28" sl="220" sc="1" el="220" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="221" ordinal="29" sl="221" sc="1" el="221" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="223" ordinal="30" sl="223" sc="1" el="223" ec="2" bec="2" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="224" ordinal="31" sl="224" sc="1" el="224" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="225" ordinal="32" sl="225" sc="1" el="225" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="226" ordinal="33" sl="226" sc="1" el="226" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="227" ordinal="34" sl="227" sc="1" el="227" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="228" ordinal="35" sl="228" sc="1" el="228" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="230" ordinal="36" sl="230" sc="1" el="230" ec="2" bec="5" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="233" ordinal="37" sl="233" sc="1" el="233" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="234" ordinal="38" sl="234" sc="1" el="234" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="235" ordinal="39" sl="235" sc="1" el="235" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="236" ordinal="40" sl="236" sc="1" el="236" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="237" ordinal="41" sl="237" sc="1" el="237" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="238" ordinal="42" sl="238" sc="1" el="238" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="241" ordinal="43" sl="241" sc="1" el="241" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="242" ordinal="44" sl="242" sc="1" el="242" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="243" ordinal="45" sl="243" sc="1" el="243" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="244" ordinal="46" sl="244" sc="1" el="244" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="245" ordinal="47" sl="245" sc="1" el="245" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="246" ordinal="48" sl="246" sc="1" el="246" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="249" ordinal="49" sl="249" sc="1" el="249" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="250" ordinal="50" sl="250" sc="1" el="250" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="251" ordinal="51" sl="251" sc="1" el="251" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="252" ordinal="52" sl="252" sc="1" el="252" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="253" ordinal="53" sl="253" sc="1" el="253" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="254" ordinal="54" sl="254" sc="1" el="254" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="257" ordinal="55" sl="257" sc="1" el="257" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="258" ordinal="56" sl="258" sc="1" el="258" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="259" ordinal="57" sl="259" sc="1" el="259" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="260" ordinal="58" sl="260" sc="1" el="260" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="261" ordinal="59" sl="261" sc="1" el="261" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="262" ordinal="60" sl="262" sc="1" el="262" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="265" ordinal="61" sl="265" sc="1" el="265" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="266" ordinal="62" sl="266" sc="1" el="266" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="269" ordinal="63" sl="269" sc="1" el="269" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="270" ordinal="64" sl="270" sc="1" el="270" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="271" ordinal="65" sl="271" sc="1" el="271" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="272" ordinal="66" sl="272" sc="1" el="272" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="273" ordinal="67" sl="273" sc="1" el="273" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="274" ordinal="68" sl="274" sc="1" el="274" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="275" ordinal="69" sl="275" sc="1" el="275" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="276" ordinal="70" sl="276" sc="1" el="276" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="277" ordinal="71" sl="277" sc="1" el="277" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="278" ordinal="72" sl="278" sc="1" el="278" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="279" ordinal="73" sl="279" sc="1" el="279" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="280" ordinal="74" sl="280" sc="1" el="280" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="281" ordinal="75" sl="281" sc="1" el="281" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="282" ordinal="76" sl="282" sc="1" el="282" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="283" ordinal="77" sl="283" sc="1" el="283" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="284" ordinal="78" sl="284" sc="1" el="284" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="285" ordinal="79" sl="285" sc="1" el="285" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="286" ordinal="80" sl="286" sc="1" el="286" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="287" ordinal="81" sl="287" sc="1" el="287" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="288" ordinal="82" sl="288" sc="1" el="288" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="289" ordinal="83" sl="289" sc="1" el="289" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="290" ordinal="84" sl="290" sc="1" el="290" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="291" ordinal="85" sl="291" sc="1" el="291" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="292" ordinal="86" sl="292" sc="1" el="292" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="293" ordinal="87" sl="293" sc="1" el="293" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="294" ordinal="88" sl="294" sc="1" el="294" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="295" ordinal="89" sl="295" sc="1" el="295" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="296" ordinal="90" sl="296" sc="1" el="296" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="297" ordinal="91" sl="297" sc="1" el="297" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="299" ordinal="92" sl="299" sc="1" el="299" ec="2" bec="2" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="300" ordinal="93" sl="300" sc="1" el="300" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="301" ordinal="94" sl="301" sc="1" el="301" ec="2" bec="2" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="302" ordinal="95" sl="302" sc="1" el="302" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="303" ordinal="96" sl="303" sc="1" el="303" ec="2" bec="0" bev="0" fileid="24" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="186" ordinal="0" path="0" offset="2" offsetend="4" sl="186" fileid="24" /> <BranchPoint vc="0" uspid="186" ordinal="1" path="1" offset="2" offsetend="10" sl="186" fileid="24" /> <BranchPoint vc="0" uspid="186" ordinal="2" path="0" offset="15" offsetend="17" sl="186" fileid="24" /> <BranchPoint vc="0" uspid="186" ordinal="3" path="1" offset="15" offsetend="29" sl="186" fileid="24" /> <BranchPoint vc="0" uspid="198" ordinal="4" path="0" offset="155" offsetend="160" sl="198" fileid="24" /> <BranchPoint vc="0" uspid="200" ordinal="6" path="0" offset="200" offsetend="202" sl="200" fileid="24" /> <BranchPoint vc="0" uspid="200" ordinal="7" path="1" offset="200" offsetend="214" sl="200" fileid="24" /> <BranchPoint vc="0" uspid="205" ordinal="8" path="0" offset="239" offsetend="241" sl="205" fileid="24" /> <BranchPoint vc="0" uspid="205" ordinal="9" path="1" offset="239" offsetend="271" sl="205" fileid="24" /> <BranchPoint vc="0" uspid="215" ordinal="10" path="0" offset="363" offsetend="365" sl="215" fileid="24" /> <BranchPoint vc="0" uspid="215" ordinal="11" path="1" offset="363" offsetend="369" sl="215" fileid="24" /> <BranchPoint vc="0" uspid="198" ordinal="5" path="1" offset="155" offsetend="374" sl="198" fileid="24" /> <BranchPoint vc="0" uspid="223" ordinal="12" path="0" offset="379" offsetend="384" sl="223" fileid="24" /> <BranchPoint vc="0" uspid="230" ordinal="15" path="1" offset="450" offsetend="476" sl="230" fileid="24" /> <BranchPoint vc="0" uspid="230" ordinal="16" path="2" offset="450" offsetend="575" sl="230" fileid="24" /> <BranchPoint vc="0" uspid="230" ordinal="17" path="3" offset="450" offsetend="674" sl="230" fileid="24" /> <BranchPoint vc="0" uspid="230" ordinal="18" path="4" offset="450" offsetend="770" sl="230" fileid="24" /> <BranchPoint vc="0" uspid="230" ordinal="14" path="0" offset="450" offsetend="866" sl="230" fileid="24" /> <BranchPoint vc="0" uspid="223" ordinal="13" path="1" offset="379" offsetend="917" sl="223" fileid="24" /> <BranchPoint vc="0" uspid="299" ordinal="19" path="0" offset="930" offsetend="932" sl="299" fileid="24" /> <BranchPoint vc="0" uspid="301" ordinal="22" path="1" offset="934" offsetend="938" sl="301" fileid="24" /> <BranchPoint vc="0" uspid="301" ordinal="21" path="0" offset="934" offsetend="946" sl="301" fileid="24" /> <BranchPoint vc="0" uspid="299" ordinal="20" path="1" offset="930" offsetend="947" sl="299" fileid="24" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="185" ec="1" el="303" bec="0" bev="0" fileid="24" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Encryption.WorldDecoder::.ctor(NosCore.Packets.Interfaces.IDeserializer,Serilog.ILogger)</Name> <FileRef uid="24" /> <SequencePoints> <SequencePoint vc="0" uspid="45" ordinal="0" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="46" ordinal="1" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="47" ordinal="2" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="48" ordinal="3" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="24" /> <SequencePoint vc="0" uspid="49" ordinal="4" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="24" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="45" ec="1" el="49" bec="0" bev="0" fileid="24" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="32" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Core.Encryption.WorldEncoder</FullName> <Methods> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="28" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Encryption.WorldEncoder::Encode(DotNetty.Transport.Channels.IChannelHandlerContext,System.Collections.Generic.IEnumerable`1<NosCore.Packets.Interfaces.IPacket>,System.Collections.Generic.List`1<System.Object>)</Name> <FileRef uid="25" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="44" ordinal="1" sl="44" sc="1" el="44" ec="2" bec="2" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="45" ordinal="2" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="46" ordinal="3" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="49" ordinal="4" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="50" ordinal="5" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="51" ordinal="6" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="52" ordinal="7" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="53" ordinal="8" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="54" ordinal="9" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="55" ordinal="10" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="56" ordinal="11" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="57" ordinal="12" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="58" ordinal="13" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="59" ordinal="14" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="60" ordinal="15" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="61" ordinal="16" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="62" ordinal="17" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="63" ordinal="18" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="64" ordinal="19" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="65" ordinal="20" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="66" ordinal="21" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="67" ordinal="22" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="68" ordinal="23" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="69" ordinal="24" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="70" ordinal="25" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="71" ordinal="26" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="72" ordinal="27" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="25" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="44" ordinal="0" path="0" offset="27" offsetend="29" sl="44" fileid="25" /> <BranchPoint vc="0" uspid="44" ordinal="1" path="1" offset="27" offsetend="41" sl="44" fileid="25" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="43" ec="1" el="72" bec="0" bev="0" fileid="25" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Encryption.WorldEncoder::.ctor(NosCore.Packets.Interfaces.ISerializer)</Name> <FileRef uid="25" /> <SequencePoints> <SequencePoint vc="0" uspid="36" ordinal="0" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="38" ordinal="2" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="25" /> <SequencePoint vc="0" uspid="39" ordinal="3" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="25" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="36" ec="1" el="39" bec="0" bev="0" fileid="25" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="51" visitedSequencePoints="0" numBranchPoints="20" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="14" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="5" /> <FullName>NosCore.Core.Controllers.AuthController</FullName> <Methods> <Method cyclomaticComplexity="4" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="4" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>Microsoft.AspNetCore.Mvc.IActionResult NosCore.Core.Controllers.AuthController::GetAuthCode(NosCore.Core.Controllers.ApiPlatformGameAccount)</Name> <FileRef uid="26" /> <SequencePoints> <SequencePoint vc="0" uspid="123" ordinal="0" sl="123" sc="1" el="123" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="124" ordinal="1" sl="124" sc="1" el="124" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="125" ordinal="2" sl="125" sc="1" el="125" ec="2" bec="4" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="126" ordinal="3" sl="126" sc="1" el="126" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="127" ordinal="4" sl="127" sc="1" el="127" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="128" ordinal="5" sl="128" sc="1" el="128" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="131" ordinal="6" sl="131" sc="1" el="131" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="132" ordinal="7" sl="132" sc="1" el="132" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="133" ordinal="8" sl="133" sc="1" el="133" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="135" ordinal="9" sl="135" sc="1" el="135" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="136" ordinal="10" sl="136" sc="1" el="136" ec="2" bec="0" bev="0" fileid="26" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="125" ordinal="0" path="0" offset="32" offsetend="34" sl="125" fileid="26" /> <BranchPoint vc="0" uspid="125" ordinal="1" path="1" offset="32" offsetend="37" sl="125" fileid="26" /> <BranchPoint vc="0" uspid="125" ordinal="2" path="0" offset="65" offsetend="67" sl="125" fileid="26" /> <BranchPoint vc="0" uspid="125" ordinal="3" path="1" offset="65" offsetend="90" sl="125" fileid="26" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="123" ec="1" el="136" bec="0" bev="0" fileid="26" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>Microsoft.AspNetCore.Mvc.IActionResult NosCore.Core.Controllers.AuthController::SetExpectingConnection(NosCore.Data.WebApi.AuthIntent)</Name> <FileRef uid="26" /> <SequencePoints> <SequencePoint vc="0" uspid="141" ordinal="0" sl="141" sc="1" el="141" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="142" ordinal="1" sl="142" sc="1" el="142" ec="2" bec="2" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="143" ordinal="2" sl="143" sc="1" el="143" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="144" ordinal="3" sl="144" sc="1" el="144" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="147" ordinal="4" sl="147" sc="1" el="147" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="148" ordinal="5" sl="148" sc="1" el="148" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="149" ordinal="6" sl="149" sc="1" el="149" ec="2" bec="0" bev="0" fileid="26" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="142" ordinal="0" path="0" offset="25" offsetend="27" sl="142" fileid="26" /> <BranchPoint vc="0" uspid="142" ordinal="1" path="1" offset="25" offsetend="49" sl="142" fileid="26" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="141" ec="1" el="149" bec="0" bev="0" fileid="26" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="14" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="19" visitedSequencePoints="0" numBranchPoints="14" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="14" minCyclomaticComplexity="14" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>Microsoft.AspNetCore.Mvc.IActionResult NosCore.Core.Controllers.AuthController::GetExpectingConnection(System.String,System.String,System.Int64)</Name> <FileRef uid="26" /> <SequencePoints> <SequencePoint vc="0" uspid="153" ordinal="0" sl="153" sc="1" el="153" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="154" ordinal="1" sl="154" sc="1" el="154" ec="2" bec="2" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="155" ordinal="2" sl="155" sc="1" el="155" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="156" ordinal="3" sl="156" sc="1" el="156" ec="2" bec="4" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="157" ordinal="4" sl="157" sc="1" el="157" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="158" ordinal="5" sl="158" sc="1" el="158" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="160" ordinal="6" sl="160" sc="1" el="160" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="161" ordinal="7" sl="161" sc="1" el="161" ec="2" bec="2" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="162" ordinal="8" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="163" ordinal="9" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="165" ordinal="10" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="166" ordinal="11" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="167" ordinal="12" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="170" ordinal="13" sl="170" sc="1" el="170" ec="2" bec="6" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="171" ordinal="14" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="172" ordinal="15" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="173" ordinal="16" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="176" ordinal="17" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="177" ordinal="18" sl="177" sc="1" el="177" ec="2" bec="0" bev="0" fileid="26" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="154" ordinal="0" path="0" offset="27" offsetend="32" sl="154" fileid="26" /> <BranchPoint vc="0" uspid="156" ordinal="2" path="0" offset="34" offsetend="36" sl="156" fileid="26" /> <BranchPoint vc="0" uspid="156" ordinal="3" path="1" offset="34" offsetend="49" sl="156" fileid="26" /> <BranchPoint vc="0" uspid="156" ordinal="4" path="0" offset="54" offsetend="56" sl="156" fileid="26" /> <BranchPoint vc="0" uspid="156" ordinal="5" path="1" offset="54" offsetend="71" sl="156" fileid="26" /> <BranchPoint vc="0" uspid="161" ordinal="6" path="0" offset="101" offsetend="103" sl="161" fileid="26" /> <BranchPoint vc="0" uspid="161" ordinal="7" path="1" offset="101" offsetend="118" sl="161" fileid="26" /> <BranchPoint vc="0" uspid="154" ordinal="1" path="1" offset="27" offsetend="181" sl="154" fileid="26" /> <BranchPoint vc="0" uspid="170" ordinal="8" path="0" offset="182" offsetend="184" sl="170" fileid="26" /> <BranchPoint vc="0" uspid="170" ordinal="10" path="0" offset="200" offsetend="202" sl="170" fileid="26" /> <BranchPoint vc="0" uspid="170" ordinal="11" path="1" offset="200" offsetend="228" sl="170" fileid="26" /> <BranchPoint vc="0" uspid="170" ordinal="9" path="1" offset="182" offsetend="231" sl="170" fileid="26" /> <BranchPoint vc="0" uspid="170" ordinal="12" path="0" offset="236" offsetend="238" sl="170" fileid="26" /> <BranchPoint vc="0" uspid="170" ordinal="13" path="1" offset="236" offsetend="255" sl="170" fileid="26" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="153" ec="1" el="177" bec="0" bev="0" fileid="26" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Core.Controllers.AuthController::HexStringToString(System.String)</Name> <FileRef uid="26" /> <SequencePoints> <SequencePoint vc="0" uspid="193" ordinal="0" sl="193" sc="1" el="193" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="194" ordinal="1" sl="194" sc="1" el="194" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="195" ordinal="2" sl="195" sc="1" el="195" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="196" ordinal="3" sl="196" sc="1" el="196" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="197" ordinal="4" sl="197" sc="1" el="197" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="198" ordinal="5" sl="198" sc="1" el="198" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="199" ordinal="6" sl="199" sc="1" el="199" ec="2" bec="0" bev="0" fileid="26" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="193" ec="1" el="199" bec="0" bev="0" fileid="26" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Controllers.AuthController::.ctor(Microsoft.Extensions.Options.IOptions`1<NosCore.Shared.Configuration.WebApiConfiguration>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.AccountDto,System.Int64>,Serilog.ILogger,NosCore.Shared.Authentication.IHasher)</Name> <FileRef uid="26" /> <SequencePoints> <SequencePoint vc="0" uspid="56" ordinal="0" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="57" ordinal="1" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="58" ordinal="2" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="59" ordinal="3" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="60" ordinal="4" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="61" ordinal="5" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="62" ordinal="6" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="26" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="56" ec="1" el="62" bec="0" bev="0" fileid="26" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Core.Controllers.ApiSession</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Controllers.ApiSession::.ctor()</Name> <FileRef uid="26" /> <SequencePoints> <SequencePoint vc="0" uspid="206" ordinal="0" sl="206" sc="1" el="206" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="208" ordinal="1" sl="208" sc="1" el="208" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="210" ordinal="2" sl="210" sc="1" el="210" ec="2" bec="0" bev="0" fileid="26" /> <SequencePoint vc="0" uspid="212" ordinal="3" sl="212" sc="1" el="212" ec="2" bec="0" bev="0" fileid="26" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="206" ec="1" el="212" bec="0" bev="0" fileid="26" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="86" visitedSequencePoints="0" numBranchPoints="20" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="6" /> <FullName>NosCore.Core.Controllers.ChannelController</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="19" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Core.Controllers.ChannelController::GenerateToken()</Name> <FileRef uid="27" /> <SequencePoints> <SequencePoint vc="0" uspid="62" ordinal="0" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="63" ordinal="1" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="64" ordinal="2" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="65" ordinal="3" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="66" ordinal="4" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="67" ordinal="5" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="68" ordinal="6" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="70" ordinal="7" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="71" ordinal="8" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="72" ordinal="9" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="73" ordinal="10" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="74" ordinal="11" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="75" ordinal="12" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="76" ordinal="13" sl="76" sc="1" el="76" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="77" ordinal="14" sl="77" sc="1" el="77" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="78" ordinal="15" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="79" ordinal="16" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="80" ordinal="17" sl="80" sc="1" el="80" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="81" ordinal="18" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="27" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="62" ec="1" el="81" bec="0" bev="0" fileid="27" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="33" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>Microsoft.AspNetCore.Mvc.IActionResult NosCore.Core.Controllers.ChannelController::Connect(NosCore.Core.Channel)</Name> <FileRef uid="27" /> <SequencePoints> <SequencePoint vc="0" uspid="86" ordinal="0" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="87" ordinal="1" sl="87" sc="1" el="87" ec="2" bec="2" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="88" ordinal="2" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="89" ordinal="3" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="92" ordinal="4" sl="92" sc="1" el="92" ec="2" bec="2" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="93" ordinal="5" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="94" ordinal="6" sl="94" sc="1" el="94" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="95" ordinal="7" sl="95" sc="1" el="95" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="98" ordinal="8" sl="98" sc="1" el="98" ec="2" bec="2" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="99" ordinal="9" sl="99" sc="1" el="99" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="100" ordinal="10" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="101" ordinal="11" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="104" ordinal="12" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="105" ordinal="13" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="106" ordinal="14" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="108" ordinal="15" sl="108" sc="1" el="108" ec="2" bec="2" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="109" ordinal="16" sl="109" sc="1" el="109" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="110" ordinal="17" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="111" ordinal="18" sl="111" sc="1" el="111" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="112" ordinal="19" sl="112" sc="1" el="112" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="113" ordinal="20" sl="113" sc="1" el="113" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="114" ordinal="21" sl="114" sc="1" el="114" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="115" ordinal="22" sl="115" sc="1" el="115" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="116" ordinal="23" sl="116" sc="1" el="116" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="117" ordinal="24" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="118" ordinal="25" sl="118" sc="1" el="118" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="119" ordinal="26" sl="119" sc="1" el="119" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="120" ordinal="27" sl="120" sc="1" el="120" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="121" ordinal="28" sl="121" sc="1" el="121" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="123" ordinal="29" sl="123" sc="1" el="123" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="124" ordinal="30" sl="124" sc="1" el="124" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="127" ordinal="31" sl="127" sc="1" el="127" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="128" ordinal="32" sl="128" sc="1" el="128" ec="2" bec="0" bev="0" fileid="27" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="87" ordinal="0" path="0" offset="7" offsetend="9" sl="87" fileid="27" /> <BranchPoint vc="0" uspid="87" ordinal="1" path="1" offset="7" offsetend="21" sl="87" fileid="27" /> <BranchPoint vc="0" uspid="92" ordinal="2" path="0" offset="37" offsetend="39" sl="92" fileid="27" /> <BranchPoint vc="0" uspid="92" ordinal="3" path="1" offset="37" offsetend="94" sl="92" fileid="27" /> <BranchPoint vc="0" uspid="98" ordinal="4" path="0" offset="130" offsetend="132" sl="98" fileid="27" /> <BranchPoint vc="0" uspid="98" ordinal="5" path="1" offset="130" offsetend="181" sl="98" fileid="27" /> <BranchPoint vc="0" uspid="108" ordinal="6" path="0" offset="318" offsetend="320" sl="108" fileid="27" /> <BranchPoint vc="0" uspid="108" ordinal="7" path="1" offset="318" offsetend="332" sl="108" fileid="27" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="86" ec="1" el="128" bec="0" bev="0" fileid="27" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="10" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>Microsoft.AspNetCore.Mvc.IActionResult NosCore.Core.Controllers.ChannelController::UpdateToken(NosCore.Core.Channel)</Name> <FileRef uid="27" /> <SequencePoints> <SequencePoint vc="0" uspid="132" ordinal="0" sl="132" sc="1" el="132" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="133" ordinal="1" sl="133" sc="1" el="133" ec="2" bec="2" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="134" ordinal="2" sl="134" sc="1" el="134" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="135" ordinal="3" sl="135" sc="1" el="135" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="138" ordinal="4" sl="138" sc="1" el="138" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="139" ordinal="5" sl="139" sc="1" el="139" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="140" ordinal="6" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="141" ordinal="7" sl="141" sc="1" el="141" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="142" ordinal="8" sl="142" sc="1" el="142" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="143" ordinal="9" sl="143" sc="1" el="143" ec="2" bec="0" bev="0" fileid="27" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="133" ordinal="0" path="0" offset="25" offsetend="27" sl="133" fileid="27" /> <BranchPoint vc="0" uspid="133" ordinal="1" path="1" offset="25" offsetend="39" sl="133" fileid="27" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="132" ec="1" el="143" bec="0" bev="0" fileid="27" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Collections.Generic.List`1<NosCore.Core.ChannelInfo> NosCore.Core.Controllers.ChannelController::GetChannels(System.Nullable`1<System.Int64>)</Name> <FileRef uid="27" /> <SequencePoints> <SequencePoint vc="0" uspid="150" ordinal="0" sl="150" sc="1" el="150" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="151" ordinal="1" sl="151" sc="1" el="151" ec="2" bec="2" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="152" ordinal="2" sl="152" sc="1" el="152" ec="2" bec="0" bev="0" fileid="27" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="151" ordinal="0" path="0" offset="25" offsetend="27" sl="151" fileid="27" /> <BranchPoint vc="0" uspid="151" ordinal="1" path="1" offset="25" offsetend="39" sl="151" fileid="27" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="150" ec="1" el="152" bec="0" bev="0" fileid="27" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="15" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Net.HttpStatusCode NosCore.Core.Controllers.ChannelController::PingUpdate(System.Int32,Json.Patch.JsonPatch)</Name> <FileRef uid="27" /> <SequencePoints> <SequencePoint vc="0" uspid="156" ordinal="0" sl="156" sc="1" el="156" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="157" ordinal="1" sl="157" sc="1" el="157" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="158" ordinal="2" sl="158" sc="1" el="158" ec="2" bec="2" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="159" ordinal="3" sl="159" sc="1" el="159" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="160" ordinal="4" sl="160" sc="1" el="160" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="163" ordinal="5" sl="163" sc="1" el="163" ec="2" bec="4" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="164" ordinal="6" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="165" ordinal="7" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="166" ordinal="8" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="167" ordinal="9" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="168" ordinal="10" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="171" ordinal="11" sl="171" sc="1" el="171" ec="2" bec="2" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="172" ordinal="12" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="173" ordinal="13" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="174" ordinal="14" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="27" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="158" ordinal="0" path="0" offset="55" offsetend="57" sl="158" fileid="27" /> <BranchPoint vc="0" uspid="158" ordinal="1" path="1" offset="55" offsetend="70" sl="158" fileid="27" /> <BranchPoint vc="0" uspid="163" ordinal="2" path="0" offset="109" offsetend="111" sl="163" fileid="27" /> <BranchPoint vc="0" uspid="163" ordinal="3" path="1" offset="109" offsetend="121" sl="163" fileid="27" /> <BranchPoint vc="0" uspid="163" ordinal="4" path="0" offset="126" offsetend="128" sl="163" fileid="27" /> <BranchPoint vc="0" uspid="163" ordinal="5" path="1" offset="126" offsetend="206" sl="163" fileid="27" /> <BranchPoint vc="0" uspid="171" ordinal="6" path="0" offset="207" offsetend="209" sl="171" fileid="27" /> <BranchPoint vc="0" uspid="171" ordinal="7" path="1" offset="207" offsetend="212" sl="171" fileid="27" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="156" ec="1" el="174" bec="0" bev="0" fileid="27" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Controllers.ChannelController::.ctor(Microsoft.Extensions.Options.IOptions`1<NosCore.Shared.Configuration.WebApiConfiguration>,Serilog.ILogger,NosCore.Shared.Authentication.IHasher)</Name> <FileRef uid="27" /> <SequencePoints> <SequencePoint vc="0" uspid="54" ordinal="0" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="55" ordinal="1" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="56" ordinal="2" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="57" ordinal="3" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="58" ordinal="4" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="27" /> <SequencePoint vc="0" uspid="59" ordinal="5" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="27" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="5" offset="5" sc="0" sl="54" ec="1" el="59" bec="0" bev="0" fileid="27" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Core.Configuration.LoginConfiguration</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Configuration.LoginConfiguration::.ctor()</Name> <FileRef uid="28" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="28" /> <SequencePoint vc="0" uspid="32" ordinal="1" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="28" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="32" bec="0" bev="0" fileid="28" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="5" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="100" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="1" numClasses="1" visitedMethods="1" numMethods="1" /> <FullName>NosCore.Core.Configuration.WorldConfiguration</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="100" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="5" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="100" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="1" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Configuration.WorldConfiguration::.ctor()</Name> <FileRef uid="29" /> <SequencePoints> <SequencePoint vc="3" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="29" /> <SequencePoint vc="3" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="29" /> <SequencePoint vc="3" uspid="36" ordinal="2" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="29" /> <SequencePoint vc="3" uspid="57" ordinal="3" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="29" /> <SequencePoint vc="3" uspid="73" ordinal="4" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="29" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="5" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="73" bec="0" bev="0" fileid="29" xmlns:p8="xsi" /> </Method> </Methods> </Class> </Classes> </Module> <Module hash="5FAD31A0-E834-46A0-9BF5-F42FFD2A62E5"> <ModulePath>NosCore.Core.Tests.dll</ModulePath> <ModuleTime>2020-12-29T09:41:25</ModuleTime> <ModuleName>NosCore.Core.Tests</ModuleName> <Files> <File uid="30" fullPath="C:\Users\Erwan\.nuget\packages\microsoft.net.test.sdk\16.8.3\build\netcoreapp2.1\Microsoft.NET.Test.Sdk.Program.cs" /> <File uid="31" fullPath="C:\dev\NosCore\test\NosCore.Core.Tests\LogLanguageTests.cs" /> </Files> <Classes> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>AutoGeneratedProgram</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void AutoGeneratedProgram::Main(System.String[])</Name> <FileRef uid="30" /> <SequencePoints> <SequencePoint vc="0" uspid="4" ordinal="0" sl="4" sc="1" el="4" ec="2" bec="0" bev="0" fileid="30" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="4" ec="1" el="4" bec="0" bev="0" fileid="30" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="146" visitedSequencePoints="90" numBranchPoints="76" visitedBranchPoints="45" sequenceCoverage="61.64" branchCoverage="59.21" maxCyclomaticComplexity="26" minCyclomaticComplexity="6" visitedClasses="1" numClasses="1" visitedMethods="4" numMethods="5" /> <FullName>NosCore.Core.Tests.LogLanguageTests</FullName> <Methods> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="23" visitedSequencePoints="0" numBranchPoints="10" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Tests.LogLanguageTests::CheckEveryLanguageValueSet(NosCore.Shared.Enumerations.RegionType)</Name> <FileRef uid="31" /> <SequencePoints> <SequencePoint vc="0" uspid="85" ordinal="0" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="86" ordinal="1" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="87" ordinal="2" sl="87" sc="1" el="87" ec="2" bec="2" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="88" ordinal="3" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="89" ordinal="4" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="90" ordinal="5" sl="90" sc="1" el="90" ec="2" bec="2" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="91" ordinal="6" sl="91" sc="1" el="91" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="92" ordinal="7" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="93" ordinal="8" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="94" ordinal="9" sl="94" sc="1" el="94" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="96" ordinal="10" sl="96" sc="1" el="96" ec="2" bec="2" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="97" ordinal="11" sl="97" sc="1" el="97" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="98" ordinal="12" sl="98" sc="1" el="98" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="99" ordinal="13" sl="99" sc="1" el="99" ec="2" bec="2" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="100" ordinal="14" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="101" ordinal="15" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="102" ordinal="16" sl="102" sc="1" el="102" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="103" ordinal="17" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="106" ordinal="18" sl="106" sc="1" el="106" ec="2" bec="2" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="107" ordinal="19" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="108" ordinal="20" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="109" ordinal="21" sl="109" sc="1" el="109" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="110" ordinal="22" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="31" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="87" ordinal="3" path="1" offset="121" offsetend="33" sl="87" fileid="31" /> <BranchPoint vc="0" uspid="90" ordinal="0" path="0" offset="79" offsetend="81" sl="90" fileid="31" /> <BranchPoint vc="0" uspid="90" ordinal="1" path="1" offset="79" offsetend="112" sl="90" fileid="31" /> <BranchPoint vc="0" uspid="87" ordinal="2" path="0" offset="121" offsetend="123" sl="87" fileid="31" /> <BranchPoint vc="0" uspid="96" ordinal="7" path="1" offset="254" offsetend="148" sl="96" fileid="31" /> <BranchPoint vc="0" uspid="99" ordinal="4" path="0" offset="213" offsetend="215" sl="99" fileid="31" /> <BranchPoint vc="0" uspid="99" ordinal="5" path="1" offset="213" offsetend="246" sl="99" fileid="31" /> <BranchPoint vc="0" uspid="96" ordinal="6" path="0" offset="254" offsetend="256" sl="96" fileid="31" /> <BranchPoint vc="0" uspid="106" ordinal="8" path="0" offset="293" offsetend="295" sl="106" fileid="31" /> <BranchPoint vc="0" uspid="106" ordinal="9" path="1" offset="293" offsetend="309" sl="106" fileid="31" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="85" ec="1" el="110" bec="0" bev="0" fileid="31" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="24" nPathComplexity="0" sequenceCoverage="74.57" branchCoverage="70.83" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="59" visitedSequencePoints="44" numBranchPoints="24" visitedBranchPoints="17" sequenceCoverage="74.57" branchCoverage="70.83" maxCyclomaticComplexity="24" minCyclomaticComplexity="24" visitedClasses="0" numClasses="0" visitedMethods="1" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Tests.LogLanguageTests::CheckLanguageUsage()</Name> <FileRef uid="31" /> <SequencePoints> <SequencePoint vc="1" uspid="114" ordinal="0" sl="114" sc="1" el="114" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="1" uspid="115" ordinal="1" sl="115" sc="1" el="115" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="1" uspid="116" ordinal="2" sl="116" sc="1" el="116" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="1" uspid="117" ordinal="3" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="1" uspid="118" ordinal="4" sl="118" sc="1" el="118" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="1451" uspid="119" ordinal="5" sl="119" sc="1" el="119" ec="2" bec="2" bev="2" fileid="31" /> <SequencePoint vc="724" uspid="120" ordinal="6" sl="120" sc="1" el="120" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="724" uspid="121" ordinal="7" sl="121" sc="1" el="121" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="724" uspid="122" ordinal="8" sl="122" sc="1" el="122" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="724" uspid="123" ordinal="9" sl="123" sc="1" el="123" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="3098" uspid="124" ordinal="10" sl="124" sc="1" el="124" ec="2" bec="2" bev="2" fileid="31" /> <SequencePoint vc="463" uspid="125" ordinal="11" sl="125" sc="1" el="125" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="463" uspid="126" ordinal="12" sl="126" sc="1" el="126" ec="2" bec="4" bev="2" fileid="31" /> <SequencePoint vc="0" uspid="127" ordinal="13" sl="127" sc="1" el="127" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="128" ordinal="14" sl="128" sc="1" el="128" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="463" uspid="131" ordinal="15" sl="131" sc="1" el="131" ec="2" bec="2" bev="2" fileid="31" /> <SequencePoint vc="195" uspid="132" ordinal="16" sl="132" sc="1" el="132" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="195" uspid="133" ordinal="17" sl="133" sc="1" el="133" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="195" uspid="134" ordinal="18" sl="134" sc="1" el="134" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="268" uspid="136" ordinal="19" sl="136" sc="1" el="136" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="268" uspid="137" ordinal="20" sl="137" sc="1" el="137" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="268" uspid="138" ordinal="21" sl="138" sc="1" el="138" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="463" uspid="139" ordinal="22" sl="139" sc="1" el="139" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="724" uspid="140" ordinal="23" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="249" uspid="142" ordinal="24" sl="142" sc="1" el="142" ec="2" bec="2" bev="2" fileid="31" /> <SequencePoint vc="123" uspid="143" ordinal="25" sl="143" sc="1" el="143" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="123" uspid="144" ordinal="26" sl="144" sc="1" el="144" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="123" uspid="145" ordinal="27" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="123" uspid="146" ordinal="28" sl="146" sc="1" el="146" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="123" uspid="147" ordinal="29" sl="147" sc="1" el="147" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="123" uspid="148" ordinal="30" sl="148" sc="1" el="148" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="123" uspid="150" ordinal="31" sl="150" sc="1" el="150" ec="2" bec="4" bev="2" fileid="31" /> <SequencePoint vc="0" uspid="151" ordinal="32" sl="151" sc="1" el="151" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="152" ordinal="33" sl="152" sc="1" el="152" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="153" ordinal="34" sl="153" sc="1" el="153" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="123" uspid="154" ordinal="35" sl="154" sc="1" el="154" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="289" uspid="156" ordinal="36" sl="156" sc="1" el="156" ec="2" bec="2" bev="2" fileid="31" /> <SequencePoint vc="143" uspid="157" ordinal="37" sl="157" sc="1" el="157" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="143" uspid="158" ordinal="38" sl="158" sc="1" el="158" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="143" uspid="159" ordinal="39" sl="159" sc="1" el="159" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="143" uspid="161" ordinal="40" sl="161" sc="1" el="161" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="143" uspid="162" ordinal="41" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="143" uspid="163" ordinal="42" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="143" uspid="164" ordinal="43" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="143" uspid="167" ordinal="44" sl="167" sc="1" el="167" ec="2" bec="4" bev="2" fileid="31" /> <SequencePoint vc="0" uspid="168" ordinal="45" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="169" ordinal="46" sl="169" sc="1" el="169" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="170" ordinal="47" sl="170" sc="1" el="170" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="143" uspid="171" ordinal="48" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="172" ordinal="49" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="173" ordinal="50" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="174" ordinal="51" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="175" ordinal="52" sl="175" sc="1" el="175" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="143" uspid="176" ordinal="53" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="1" uspid="178" ordinal="54" sl="178" sc="1" el="178" ec="2" bec="2" bev="1" fileid="31" /> <SequencePoint vc="0" uspid="179" ordinal="55" sl="179" sc="1" el="179" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="180" ordinal="56" sl="180" sc="1" el="180" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="181" ordinal="57" sl="181" sc="1" el="181" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="1" uspid="182" ordinal="58" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="31" /> </SequencePoints> <BranchPoints> <BranchPoint vc="724" uspid="119" ordinal="9" path="1" offset="261" offsetend="51" sl="119" fileid="31" /> <BranchPoint vc="463" uspid="124" ordinal="7" path="1" offset="223" offsetend="102" sl="124" fileid="31" /> <BranchPoint vc="0" uspid="126" ordinal="0" path="0" offset="119" offsetend="121" sl="126" fileid="31" /> <BranchPoint vc="463" uspid="126" ordinal="1" path="1" offset="119" offsetend="124" sl="126" fileid="31" /> <BranchPoint vc="0" uspid="126" ordinal="2" path="0" offset="138" offsetend="140" sl="126" fileid="31" /> <BranchPoint vc="463" uspid="126" ordinal="3" path="1" offset="138" offsetend="143" sl="126" fileid="31" /> <BranchPoint vc="195" uspid="131" ordinal="4" path="0" offset="160" offsetend="162" sl="131" fileid="31" /> <BranchPoint vc="268" uspid="131" ordinal="5" path="1" offset="160" offsetend="198" sl="131" fileid="31" /> <BranchPoint vc="724" uspid="124" ordinal="6" path="0" offset="223" offsetend="225" sl="124" fileid="31" /> <BranchPoint vc="1" uspid="119" ordinal="8" path="0" offset="261" offsetend="266" sl="119" fileid="31" /> <BranchPoint vc="123" uspid="142" ordinal="15" path="1" offset="458" offsetend="297" sl="142" fileid="31" /> <BranchPoint vc="0" uspid="150" ordinal="10" path="0" offset="393" offsetend="395" sl="150" fileid="31" /> <BranchPoint vc="123" uspid="150" ordinal="11" path="1" offset="393" offsetend="402" sl="150" fileid="31" /> <BranchPoint vc="0" uspid="150" ordinal="12" path="0" offset="407" offsetend="409" sl="150" fileid="31" /> <BranchPoint vc="123" uspid="150" ordinal="13" path="1" offset="407" offsetend="445" sl="150" fileid="31" /> <BranchPoint vc="1" uspid="142" ordinal="14" path="0" offset="458" offsetend="463" sl="142" fileid="31" /> <BranchPoint vc="143" uspid="156" ordinal="21" path="1" offset="673" offsetend="494" sl="156" fileid="31" /> <BranchPoint vc="0" uspid="167" ordinal="16" path="0" offset="591" offsetend="593" sl="167" fileid="31" /> <BranchPoint vc="143" uspid="167" ordinal="17" path="1" offset="591" offsetend="600" sl="167" fileid="31" /> <BranchPoint vc="0" uspid="167" ordinal="18" path="0" offset="605" offsetend="607" sl="167" fileid="31" /> <BranchPoint vc="143" uspid="167" ordinal="19" path="1" offset="605" offsetend="643" sl="167" fileid="31" /> <BranchPoint vc="1" uspid="156" ordinal="20" path="0" offset="673" offsetend="678" sl="156" fileid="31" /> <BranchPoint vc="0" uspid="178" ordinal="22" path="0" offset="691" offsetend="693" sl="178" fileid="31" /> <BranchPoint vc="1" uspid="178" ordinal="23" path="1" offset="691" offsetend="707" sl="178" fileid="31" /> </BranchPoints> <MethodPoint vc="44" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="114" ec="1" el="182" bec="0" bev="0" fileid="31" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="60" branchCoverage="80" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="20" visitedSequencePoints="12" numBranchPoints="10" visitedBranchPoints="8" sequenceCoverage="60" branchCoverage="80" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="1" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Tests.LogLanguageTests::CheckParametersLanguages(NosCore.Shared.Enumerations.RegionType)</Name> <FileRef uid="31" /> <SequencePoints> <SequencePoint vc="9" uspid="195" ordinal="0" sl="195" sc="1" el="195" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="9" uspid="196" ordinal="1" sl="196" sc="1" el="196" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="2241" uspid="197" ordinal="2" sl="197" sc="1" el="197" ec="2" bec="2" bev="2" fileid="31" /> <SequencePoint vc="1107" uspid="198" ordinal="3" sl="198" sc="1" el="198" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="1107" uspid="199" ordinal="4" sl="199" sc="1" el="199" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="1107" uspid="200" ordinal="5" sl="200" sc="1" el="200" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="1107" uspid="201" ordinal="6" sl="201" sc="1" el="201" ec="2" bec="2" bev="2" fileid="31" /> <SequencePoint vc="1107" uspid="202" ordinal="7" sl="202" sc="1" el="202" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="1107" uspid="203" ordinal="8" sl="203" sc="1" el="203" ec="2" bec="4" bev="3" fileid="31" /> <SequencePoint vc="0" uspid="204" ordinal="9" sl="204" sc="1" el="204" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="205" ordinal="10" sl="205" sc="1" el="205" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="206" ordinal="11" sl="206" sc="1" el="206" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="207" ordinal="12" sl="207" sc="1" el="207" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="208" ordinal="13" sl="208" sc="1" el="208" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="1107" uspid="209" ordinal="14" sl="209" sc="1" el="209" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="9" uspid="211" ordinal="15" sl="211" sc="1" el="211" ec="2" bec="2" bev="1" fileid="31" /> <SequencePoint vc="0" uspid="212" ordinal="16" sl="212" sc="1" el="212" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="213" ordinal="17" sl="213" sc="1" el="213" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="214" ordinal="18" sl="214" sc="1" el="214" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="9" uspid="215" ordinal="19" sl="215" sc="1" el="215" ec="2" bec="0" bev="0" fileid="31" /> </SequencePoints> <BranchPoints> <BranchPoint vc="1107" uspid="197" ordinal="7" path="1" offset="212" offsetend="34" sl="197" fileid="31" /> <BranchPoint vc="207" uspid="201" ordinal="0" path="0" offset="100" offsetend="102" sl="201" fileid="31" /> <BranchPoint vc="900" uspid="201" ordinal="1" path="1" offset="100" offsetend="126" sl="201" fileid="31" /> <BranchPoint vc="941" uspid="203" ordinal="2" path="0" offset="146" offsetend="148" sl="203" fileid="31" /> <BranchPoint vc="166" uspid="203" ordinal="3" path="1" offset="146" offsetend="159" sl="203" fileid="31" /> <BranchPoint vc="0" uspid="203" ordinal="4" path="0" offset="164" offsetend="166" sl="203" fileid="31" /> <BranchPoint vc="1107" uspid="203" ordinal="5" path="1" offset="164" offsetend="205" sl="203" fileid="31" /> <BranchPoint vc="9" uspid="197" ordinal="6" path="0" offset="212" offsetend="217" sl="197" fileid="31" /> <BranchPoint vc="0" uspid="211" ordinal="8" path="0" offset="253" offsetend="255" sl="211" fileid="31" /> <BranchPoint vc="9" uspid="211" ordinal="9" path="1" offset="253" offsetend="269" sl="211" fileid="31" /> </BranchPoints> <MethodPoint vc="12" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="195" ec="1" el="215" bec="0" bev="0" fileid="31" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="50" branchCoverage="66.66" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="14" visitedSequencePoints="7" numBranchPoints="6" visitedBranchPoints="4" sequenceCoverage="50" branchCoverage="66.66" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="1" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Tests.LogLanguageTests::CheckEveryLanguageAreUsefull(NosCore.Shared.Enumerations.RegionType)</Name> <FileRef uid="31" /> <SequencePoints> <SequencePoint vc="9" uspid="228" ordinal="0" sl="228" sc="1" el="228" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="9" uspid="229" ordinal="1" sl="229" sc="1" el="229" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="9" uspid="230" ordinal="2" sl="230" sc="1" el="230" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="9" uspid="231" ordinal="3" sl="231" sc="1" el="231" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="9" uspid="232" ordinal="4" sl="232" sc="1" el="232" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="233" ordinal="5" sl="233" sc="1" el="233" ec="2" bec="4" bev="3" fileid="31" /> <SequencePoint vc="0" uspid="234" ordinal="6" sl="234" sc="1" el="234" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="235" ordinal="7" sl="235" sc="1" el="235" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="236" ordinal="8" sl="236" sc="1" el="236" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="9" uspid="238" ordinal="9" sl="238" sc="1" el="238" ec="2" bec="2" bev="1" fileid="31" /> <SequencePoint vc="0" uspid="239" ordinal="10" sl="239" sc="1" el="239" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="240" ordinal="11" sl="240" sc="1" el="240" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="241" ordinal="12" sl="241" sc="1" el="241" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="9" uspid="242" ordinal="13" sl="242" sc="1" el="242" ec="2" bec="0" bev="0" fileid="31" /> </SequencePoints> <BranchPoints> <BranchPoint vc="9" uspid="233" ordinal="0" path="0" offset="219" offsetend="221" sl="233" fileid="31" /> <BranchPoint vc="9" uspid="233" ordinal="1" path="1" offset="219" offsetend="243" sl="233" fileid="31" /> <BranchPoint vc="0" uspid="233" ordinal="3" path="1" offset="301" offsetend="256" sl="233" fileid="31" /> <BranchPoint vc="9" uspid="233" ordinal="2" path="0" offset="301" offsetend="303" sl="233" fileid="31" /> <BranchPoint vc="0" uspid="238" ordinal="4" path="0" offset="334" offsetend="336" sl="238" fileid="31" /> <BranchPoint vc="9" uspid="238" ordinal="5" path="1" offset="334" offsetend="350" sl="238" fileid="31" /> </BranchPoints> <MethodPoint vc="7" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="228" ec="1" el="242" bec="0" bev="0" fileid="31" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="26" nPathComplexity="0" sequenceCoverage="90" branchCoverage="61.53" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="30" visitedSequencePoints="27" numBranchPoints="26" visitedBranchPoints="16" sequenceCoverage="90" branchCoverage="61.53" maxCyclomaticComplexity="26" minCyclomaticComplexity="26" visitedClasses="0" numClasses="0" visitedMethods="1" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Core.Tests.LogLanguageTests::.ctor()</Name> <FileRef uid="31" /> <SequencePoints> <SequencePoint vc="19" uspid="39" ordinal="0" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="19" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="19" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="19" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="19" uspid="45" ordinal="4" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="19" uspid="46" ordinal="5" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="27569" uspid="47" ordinal="6" sl="47" sc="1" el="47" ec="2" bec="2" bev="2" fileid="31" /> <SequencePoint vc="13756" uspid="48" ordinal="7" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="13756" uspid="49" ordinal="8" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="13756" uspid="50" ordinal="9" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="13756" uspid="51" ordinal="10" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="13756" uspid="52" ordinal="11" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="13756" uspid="53" ordinal="12" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="42294" uspid="54" ordinal="13" sl="54" sc="1" el="54" ec="2" bec="2" bev="2" fileid="31" /> <SequencePoint vc="513" uspid="55" ordinal="14" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="513" uspid="56" ordinal="15" sl="56" sc="1" el="56" ec="2" bec="8" bev="4" fileid="31" /> <SequencePoint vc="513" uspid="57" ordinal="16" sl="57" sc="1" el="57" ec="2" bec="10" bev="5" fileid="31" /> <SequencePoint vc="513" uspid="58" ordinal="17" sl="58" sc="1" el="58" ec="2" bec="2" bev="2" fileid="31" /> <SequencePoint vc="76" uspid="59" ordinal="18" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="76" uspid="60" ordinal="19" sl="60" sc="1" el="60" ec="2" bec="2" bev="1" fileid="31" /> <SequencePoint vc="0" uspid="61" ordinal="20" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="62" ordinal="21" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="0" uspid="63" ordinal="22" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="76" uspid="64" ordinal="23" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="437" uspid="66" ordinal="24" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="437" uspid="67" ordinal="25" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="437" uspid="68" ordinal="26" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="513" uspid="69" ordinal="27" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="13756" uspid="70" ordinal="28" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="31" /> <SequencePoint vc="19" uspid="71" ordinal="29" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="31" /> </SequencePoints> <BranchPoints> <BranchPoint vc="13756" uspid="47" ordinal="25" path="1" offset="494" offsetend="62" sl="47" fileid="31" /> <BranchPoint vc="513" uspid="54" ordinal="23" path="1" offset="456" offsetend="117" sl="54" fileid="31" /> <BranchPoint vc="0" uspid="56" ordinal="0" path="0" offset="134" offsetend="136" sl="56" fileid="31" /> <BranchPoint vc="513" uspid="56" ordinal="1" path="1" offset="134" offsetend="148" sl="56" fileid="31" /> <BranchPoint vc="0" uspid="56" ordinal="2" path="0" offset="156" offsetend="158" sl="56" fileid="31" /> <BranchPoint vc="513" uspid="56" ordinal="3" path="1" offset="156" offsetend="171" sl="56" fileid="31" /> <BranchPoint vc="0" uspid="56" ordinal="4" path="0" offset="177" offsetend="179" sl="56" fileid="31" /> <BranchPoint vc="513" uspid="56" ordinal="5" path="1" offset="177" offsetend="192" sl="56" fileid="31" /> <BranchPoint vc="0" uspid="56" ordinal="6" path="0" offset="234" offsetend="236" sl="56" fileid="31" /> <BranchPoint vc="513" uspid="56" ordinal="7" path="1" offset="234" offsetend="249" sl="56" fileid="31" /> <BranchPoint vc="0" uspid="57" ordinal="8" path="0" offset="277" offsetend="279" sl="57" fileid="31" /> <BranchPoint vc="513" uspid="57" ordinal="9" path="1" offset="277" offsetend="282" sl="57" fileid="31" /> <BranchPoint vc="0" uspid="57" ordinal="10" path="0" offset="290" offsetend="292" sl="57" fileid="31" /> <BranchPoint vc="513" uspid="57" ordinal="11" path="1" offset="290" offsetend="296" sl="57" fileid="31" /> <BranchPoint vc="0" uspid="57" ordinal="12" path="0" offset="302" offsetend="304" sl="57" fileid="31" /> <BranchPoint vc="513" uspid="57" ordinal="13" path="1" offset="302" offsetend="308" sl="57" fileid="31" /> <BranchPoint vc="0" uspid="57" ordinal="14" path="0" offset="345" offsetend="347" sl="57" fileid="31" /> <BranchPoint vc="513" uspid="57" ordinal="15" path="1" offset="345" offsetend="351" sl="57" fileid="31" /> <BranchPoint vc="0" uspid="57" ordinal="16" path="0" offset="357" offsetend="359" sl="57" fileid="31" /> <BranchPoint vc="513" uspid="57" ordinal="17" path="1" offset="357" offsetend="365" sl="57" fileid="31" /> <BranchPoint vc="76" uspid="58" ordinal="18" path="0" offset="384" offsetend="386" sl="58" fileid="31" /> <BranchPoint vc="0" uspid="60" ordinal="20" path="0" offset="411" offsetend="413" sl="60" fileid="31" /> <BranchPoint vc="76" uspid="60" ordinal="21" path="1" offset="411" offsetend="427" sl="60" fileid="31" /> <BranchPoint vc="437" uspid="58" ordinal="19" path="1" offset="384" offsetend="430" sl="58" fileid="31" /> <BranchPoint vc="13756" uspid="54" ordinal="22" path="0" offset="456" offsetend="461" sl="54" fileid="31" /> <BranchPoint vc="19" uspid="47" ordinal="24" path="0" offset="494" offsetend="499" sl="47" fileid="31" /> </BranchPoints> <MethodPoint vc="27" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="39" ec="1" el="71" bec="0" bev="0" fileid="31" xmlns:p8="xsi" /> </Method> </Methods> </Class> </Classes> </Module> <Module hash="73723006-FC35-4C9E-A1AA-36C4300395D0"> <ModulePath>NosCore.Data.dll</ModulePath> <ModuleTime>2020-12-29T09:41:25</ModuleTime> <ModuleName>NosCore.Data</ModuleName> <Files> <File uid="32" fullPath="C:\dev\NosCore\src\NosCore.Data\WebApi\AuthIntent.cs" /> <File uid="33" fullPath="C:\dev\NosCore\src\NosCore.Data\WebApi\MailData.cs" /> <File uid="34" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\StaticEntities\ActDto.generated.cs" /> <File uid="35" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\StaticEntities\CardDto.generated.cs" /> <File uid="36" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\StaticEntities\ItemDto.generated.cs" /> <File uid="37" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\StaticEntities\MapDto.generated.cs" /> <File uid="38" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\StaticEntities\NpcMonsterDto.generated.cs" /> <File uid="39" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\StaticEntities\NpcTalkDto.generated.cs" /> <File uid="40" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\StaticEntities\QuestDto.generated.cs" /> <File uid="41" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\StaticEntities\RespawnMapTypeDto.generated.cs" /> <File uid="42" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\StaticEntities\ScriptDto.generated.cs" /> <File uid="43" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\StaticEntities\SkillDto.generated.cs" /> <File uid="44" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\Entities\AccountDto.generated.cs" /> <File uid="45" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\Entities\CharacterDto.generated.cs" /> <File uid="46" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\Entities\FamilyCharacterDto.generated.cs" /> <File uid="47" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\Entities\FamilyDto.generated.cs" /> <File uid="48" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\Entities\FamilyLogDto.generated.cs" /> <File uid="49" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\Entities\MateDto.generated.cs" /> <File uid="50" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\Entities\MinilandDto.generated.cs" /> <File uid="51" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\Entities\ScriptedInstanceDto.generated.cs" /> <File uid="52" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\I18NFromAttribute.cs" /> <File uid="53" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\I18NString.cs" /> <File uid="54" fullPath="C:\dev\NosCore\src\NosCore.Data\Dto\StaticDtoExtension.cs" /> <File uid="55" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\ChangeChannelPacket.cs" /> <File uid="56" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\ChangeClassPacket.cs" /> <File uid="57" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\ClearInventoryPacket.cs" /> <File uid="58" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\CommandPacketHeaderAttribute.cs" /> <File uid="59" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\CreateItemPacket.cs" /> <File uid="60" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\EffectCommandPacket.cs" /> <File uid="61" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\EntryPointPacket.cs" /> <File uid="62" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\FlPacket.cs" /> <File uid="63" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\GiftPacket.cs" /> <File uid="64" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\HelpPacket.cs" /> <File uid="65" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\InvisibleCommandPacket.cs" /> <File uid="66" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\KickPacket.cs" /> <File uid="67" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\PositionPacket.cs" /> <File uid="68" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\SetGoldCommandPacket.cs" /> <File uid="69" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\SetHeroLevelCommandPacket.cs" /> <File uid="70" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\SetJobLevelCommandPacket.cs" /> <File uid="71" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\SetLevelCommandPacket.cs" /> <File uid="72" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\SetMaintenancePacket.cs" /> <File uid="73" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\SetReputationPacket.cs" /> <File uid="74" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\ShoutPacket.cs" /> <File uid="75" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\SizePacket.cs" /> <File uid="76" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\SpeedPacket.cs" /> <File uid="77" fullPath="C:\dev\NosCore\src\NosCore.Data\CommandPackets\TeleportPacket.cs" /> </Files> <Classes> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.WebApi.AuthIntent</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.WebApi.AuthIntent::.ctor()</Name> <FileRef uid="32" /> <SequencePoints> <SequencePoint vc="0" uspid="25" ordinal="0" sl="25" sc="1" el="25" ec="2" bec="0" bev="0" fileid="32" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="25" ec="1" el="25" bec="0" bev="0" fileid="32" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="66" visitedSequencePoints="0" numBranchPoints="17" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="13" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.Data.WebApi.MailData</FullName> <Methods> <Method cyclomaticComplexity="4" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="33" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="4" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>NosCore.Packets.ServerPackets.Parcel.PostPacket NosCore.Data.WebApi.MailData::GeneratePostMessage(System.Int32)</Name> <FileRef uid="33" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="4" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="44" ordinal="4" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="45" ordinal="5" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="46" ordinal="6" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="47" ordinal="7" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="48" ordinal="8" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="49" ordinal="9" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="50" ordinal="10" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="51" ordinal="11" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="52" ordinal="12" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="53" ordinal="13" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="54" ordinal="14" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="55" ordinal="15" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="56" ordinal="16" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="57" ordinal="17" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="58" ordinal="18" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="59" ordinal="19" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="60" ordinal="20" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="61" ordinal="21" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="62" ordinal="22" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="63" ordinal="23" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="64" ordinal="24" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="65" ordinal="25" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="66" ordinal="26" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="67" ordinal="27" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="68" ordinal="28" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="69" ordinal="29" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="70" ordinal="30" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="71" ordinal="31" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="72" ordinal="32" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="33" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="41" ordinal="0" path="0" offset="97" offsetend="99" sl="41" fileid="33" /> <BranchPoint vc="0" uspid="41" ordinal="1" path="1" offset="97" offsetend="102" sl="41" fileid="33" /> <BranchPoint vc="0" uspid="41" ordinal="2" path="0" offset="188" offsetend="190" sl="41" fileid="33" /> <BranchPoint vc="0" uspid="41" ordinal="3" path="1" offset="188" offsetend="194" sl="41" fileid="33" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="40" ec="1" el="72" bec="0" bev="0" fileid="33" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="13" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="32" visitedSequencePoints="0" numBranchPoints="13" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="13" minCyclomaticComplexity="13" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>NosCore.Packets.Interfaces.IPacket NosCore.Data.WebApi.MailData::GeneratePost(System.Byte)</Name> <FileRef uid="33" /> <SequencePoints> <SequencePoint vc="0" uspid="75" ordinal="0" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="76" ordinal="1" sl="76" sc="1" el="76" ec="2" bec="5" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="80" ordinal="2" sl="80" sc="1" el="80" ec="2" bec="6" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="81" ordinal="3" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="82" ordinal="4" sl="82" sc="1" el="82" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="83" ordinal="5" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="84" ordinal="6" sl="84" sc="1" el="84" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="85" ordinal="7" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="86" ordinal="8" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="87" ordinal="9" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="88" ordinal="10" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="89" ordinal="11" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="90" ordinal="12" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="91" ordinal="13" sl="91" sc="1" el="91" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="92" ordinal="14" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="93" ordinal="15" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="94" ordinal="16" sl="94" sc="1" el="94" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="95" ordinal="17" sl="95" sc="1" el="95" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="98" ordinal="18" sl="98" sc="1" el="98" ec="2" bec="2" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="99" ordinal="19" sl="99" sc="1" el="99" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="100" ordinal="20" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="101" ordinal="21" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="102" ordinal="22" sl="102" sc="1" el="102" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="103" ordinal="23" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="104" ordinal="24" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="105" ordinal="25" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="106" ordinal="26" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="107" ordinal="27" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="108" ordinal="28" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="109" ordinal="29" sl="109" sc="1" el="109" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="111" ordinal="30" sl="111" sc="1" el="111" ec="2" bec="0" bev="0" fileid="33" /> <SequencePoint vc="0" uspid="113" ordinal="31" sl="113" sc="1" el="113" ec="2" bec="0" bev="0" fileid="33" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="76" ordinal="1" path="1" offset="6" offsetend="32" sl="76" fileid="33" /> <BranchPoint vc="0" uspid="76" ordinal="4" path="4" offset="6" offsetend="32" sl="76" fileid="33" /> <BranchPoint vc="0" uspid="80" ordinal="5" path="0" offset="38" offsetend="43" sl="80" fileid="33" /> <BranchPoint vc="0" uspid="80" ordinal="7" path="0" offset="58" offsetend="60" sl="80" fileid="33" /> <BranchPoint vc="0" uspid="80" ordinal="8" path="1" offset="58" offsetend="63" sl="80" fileid="33" /> <BranchPoint vc="0" uspid="80" ordinal="9" path="0" offset="112" offsetend="114" sl="80" fileid="33" /> <BranchPoint vc="0" uspid="80" ordinal="10" path="1" offset="112" offsetend="117" sl="80" fileid="33" /> <BranchPoint vc="0" uspid="80" ordinal="6" path="1" offset="38" offsetend="238" sl="80" fileid="33" /> <BranchPoint vc="0" uspid="76" ordinal="2" path="2" offset="6" offsetend="245" sl="76" fileid="33" /> <BranchPoint vc="0" uspid="76" ordinal="3" path="3" offset="6" offsetend="245" sl="76" fileid="33" /> <BranchPoint vc="0" uspid="98" ordinal="11" path="0" offset="340" offsetend="342" sl="98" fileid="33" /> <BranchPoint vc="0" uspid="98" ordinal="12" path="1" offset="340" offsetend="350" sl="98" fileid="33" /> <BranchPoint vc="0" uspid="76" ordinal="0" path="0" offset="6" offsetend="401" sl="76" fileid="33" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="75" ec="1" el="113" bec="0" bev="0" fileid="33" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.WebApi.MailData::.ctor()</Name> <FileRef uid="33" /> <SequencePoints> <SequencePoint vc="0" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="33" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="35" ec="1" el="35" bec="0" bev="0" fileid="33" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.StaticEntities.ActDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.StaticEntities.ActDto::.ctor()</Name> <FileRef uid="34" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="34" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="40" ec="1" el="40" bec="0" bev="0" fileid="34" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.StaticEntities.CardDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.StaticEntities.CardDto::.ctor()</Name> <FileRef uid="35" /> <SequencePoints> <SequencePoint vc="0" uspid="46" ordinal="0" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="35" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="46" ec="1" el="46" bec="0" bev="0" fileid="35" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="1" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="100" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="1" numClasses="1" visitedMethods="1" numMethods="1" /> <FullName>NosCore.Data.StaticEntities.ItemDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="100" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="1" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="100" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="1" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.StaticEntities.ItemDto::.ctor()</Name> <FileRef uid="36" /> <SequencePoints> <SequencePoint vc="21" uspid="172" ordinal="0" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="36" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="1" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="172" ec="1" el="172" bec="0" bev="0" fileid="36" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.StaticEntities.MapDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.StaticEntities.MapDto::.ctor()</Name> <FileRef uid="37" /> <SequencePoints> <SequencePoint vc="0" uspid="53" ordinal="0" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="37" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="53" ec="1" el="53" bec="0" bev="0" fileid="37" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.StaticEntities.NpcMonsterDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.StaticEntities.NpcMonsterDto::.ctor()</Name> <FileRef uid="38" /> <SequencePoints> <SequencePoint vc="0" uspid="108" ordinal="0" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="38" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="108" ec="1" el="108" bec="0" bev="0" fileid="38" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.StaticEntities.NpcTalkDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.StaticEntities.NpcTalkDto::.ctor()</Name> <FileRef uid="39" /> <SequencePoints> <SequencePoint vc="0" uspid="41" ordinal="0" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="39" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="41" ec="1" el="41" bec="0" bev="0" fileid="39" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.StaticEntities.QuestDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.StaticEntities.QuestDto::.ctor()</Name> <FileRef uid="40" /> <SequencePoints> <SequencePoint vc="0" uspid="75" ordinal="0" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="40" /> <SequencePoint vc="0" uspid="80" ordinal="1" sl="80" sc="1" el="80" ec="2" bec="0" bev="0" fileid="40" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="75" ec="1" el="80" bec="0" bev="0" fileid="40" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.StaticEntities.RespawnMapTypeDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.StaticEntities.RespawnMapTypeDto::.ctor()</Name> <FileRef uid="41" /> <SequencePoints> <SequencePoint vc="0" uspid="49" ordinal="0" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="41" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="49" ec="1" el="49" bec="0" bev="0" fileid="41" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.StaticEntities.ScriptDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.StaticEntities.ScriptDto::.ctor()</Name> <FileRef uid="42" /> <SequencePoints> <SequencePoint vc="0" uspid="46" ordinal="0" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="42" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="46" ec="1" el="46" bec="0" bev="0" fileid="42" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.StaticEntities.SkillDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.StaticEntities.SkillDto::.ctor()</Name> <FileRef uid="43" /> <SequencePoints> <SequencePoint vc="0" uspid="81" ordinal="0" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="43" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="81" ec="1" el="81" bec="0" bev="0" fileid="43" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.Dto.AccountDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.Dto.AccountDto::.ctor()</Name> <FileRef uid="44" /> <SequencePoints> <SequencePoint vc="0" uspid="44" ordinal="0" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="44" /> <SequencePoint vc="0" uspid="49" ordinal="1" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="44" /> <SequencePoint vc="0" uspid="52" ordinal="2" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="44" /> <SequencePoint vc="0" uspid="55" ordinal="3" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="44" /> <SequencePoint vc="0" uspid="60" ordinal="4" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="44" /> <SequencePoint vc="0" uspid="63" ordinal="5" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="44" /> <SequencePoint vc="0" uspid="72" ordinal="6" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="44" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="44" ec="1" el="72" bec="0" bev="0" fileid="44" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.Dto.CharacterDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.Dto.CharacterDto::.ctor()</Name> <FileRef uid="45" /> <SequencePoints> <SequencePoint vc="0" uspid="59" ordinal="0" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="45" /> <SequencePoint vc="0" uspid="153" ordinal="1" sl="153" sc="1" el="153" ec="2" bec="0" bev="0" fileid="45" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="59" ec="1" el="153" bec="0" bev="0" fileid="45" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.Dto.FamilyCharacterDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.Dto.FamilyCharacterDto::.ctor()</Name> <FileRef uid="46" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="46" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="43" ec="1" el="43" bec="0" bev="0" fileid="46" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.Dto.FamilyDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.Dto.FamilyDto::.ctor()</Name> <FileRef uid="47" /> <SequencePoints> <SequencePoint vc="0" uspid="52" ordinal="0" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="47" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="52" ec="1" el="52" bec="0" bev="0" fileid="47" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.Dto.FamilyLogDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.Dto.FamilyLogDto::.ctor()</Name> <FileRef uid="48" /> <SequencePoints> <SequencePoint vc="0" uspid="41" ordinal="0" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="48" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="41" ec="1" el="41" bec="0" bev="0" fileid="48" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.Dto.MateDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.Dto.MateDto::.ctor()</Name> <FileRef uid="49" /> <SequencePoints> <SequencePoint vc="0" uspid="72" ordinal="0" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="49" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="72" ec="1" el="72" bec="0" bev="0" fileid="49" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.Dto.MinilandDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.Dto.MinilandDto::.ctor()</Name> <FileRef uid="50" /> <SequencePoints> <SequencePoint vc="0" uspid="37" ordinal="0" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="50" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="37" ec="1" el="37" bec="0" bev="0" fileid="50" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.Dto.ScriptedInstanceDto</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.Dto.ScriptedInstanceDto::.ctor()</Name> <FileRef uid="51" /> <SequencePoints> <SequencePoint vc="0" uspid="45" ordinal="0" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="51" /> <SequencePoint vc="0" uspid="48" ordinal="1" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="51" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="45" ec="1" el="48" bec="0" bev="0" fileid="51" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.Dto.I18NFromAttribute</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.Dto.I18NFromAttribute::.ctor(System.Type)</Name> <FileRef uid="52" /> <SequencePoints> <SequencePoint vc="0" uspid="26" ordinal="0" sl="26" sc="1" el="26" ec="2" bec="0" bev="0" fileid="52" /> <SequencePoint vc="0" uspid="27" ordinal="1" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="52" /> <SequencePoint vc="0" uspid="28" ordinal="2" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="52" /> <SequencePoint vc="0" uspid="29" ordinal="3" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="52" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="26" ec="1" el="29" bec="0" bev="0" fileid="52" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="12" visitedSequencePoints="12" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="100" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="1" numClasses="1" visitedMethods="1" numMethods="1" /> <FullName>NosCore.Data.Dto.I18NString</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="100" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="12" visitedSequencePoints="12" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="100" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="1" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.Dto.I18NString::.ctor()</Name> <FileRef uid="53" /> <SequencePoints> <SequencePoint vc="21" uspid="27" ordinal="0" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="53" /> <SequencePoint vc="21" uspid="28" ordinal="1" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="53" /> <SequencePoint vc="21" uspid="29" ordinal="2" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="53" /> <SequencePoint vc="21" uspid="30" ordinal="3" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="53" /> <SequencePoint vc="21" uspid="31" ordinal="4" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="53" /> <SequencePoint vc="21" uspid="32" ordinal="5" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="53" /> <SequencePoint vc="21" uspid="33" ordinal="6" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="53" /> <SequencePoint vc="21" uspid="34" ordinal="7" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="53" /> <SequencePoint vc="21" uspid="35" ordinal="8" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="53" /> <SequencePoint vc="21" uspid="36" ordinal="9" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="53" /> <SequencePoint vc="21" uspid="37" ordinal="10" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="53" /> <SequencePoint vc="21" uspid="38" ordinal="11" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="53" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="12" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="27" ec="1" el="38" bec="0" bev="0" fileid="53" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="33" visitedSequencePoints="0" numBranchPoints="16" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="12" minCyclomaticComplexity="4" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Data.Dto.StaticDtoExtension</FullName> <Methods> <Method cyclomaticComplexity="4" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="15" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="4" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Collections.Generic.IDictionary`2<System.Reflection.PropertyInfo,System.Tuple`2<System.Reflection.PropertyInfo,System.Type>> NosCore.Data.Dto.StaticDtoExtension::GetI18NProperties(System.Type)</Name> <FileRef uid="54" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="35" ordinal="3" sl="35" sc="1" el="35" ec="2" bec="2" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="36" ordinal="4" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="37" ordinal="5" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="38" ordinal="6" sl="38" sc="1" el="38" ec="2" bec="2" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="39" ordinal="7" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="40" ordinal="8" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="42" ordinal="9" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="43" ordinal="10" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="44" ordinal="11" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="45" ordinal="12" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="47" ordinal="13" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="48" ordinal="14" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="54" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="35" ordinal="3" path="1" offset="159" offsetend="60" sl="35" fileid="54" /> <BranchPoint vc="0" uspid="38" ordinal="0" path="0" offset="111" offsetend="113" sl="38" fileid="54" /> <BranchPoint vc="0" uspid="38" ordinal="1" path="1" offset="111" offsetend="116" sl="38" fileid="54" /> <BranchPoint vc="0" uspid="35" ordinal="2" path="0" offset="159" offsetend="161" sl="35" fileid="54" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="48" bec="0" bev="0" fileid="54" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="12" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="18" visitedSequencePoints="0" numBranchPoints="12" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="12" minCyclomaticComplexity="12" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.Dto.StaticDtoExtension::InjectI18N(NosCore.Data.Dto.IStaticDto,System.Collections.Generic.IDictionary`2<System.Reflection.PropertyInfo,System.Tuple`2<System.Reflection.PropertyInfo,System.Type>>,System.Collections.Generic.IDictionary`2<System.Type,System.Collections.Generic.Dictionary`2<System.String,System.Collections.Generic.Dictionary`2<NosCore.Shared.Enumerations.RegionType,NosCore.Data.Dto.II18NDto>>>,System.Array,FastMember.TypeAccessor)</Name> <FileRef uid="54" /> <SequencePoints> <SequencePoint vc="0" uspid="54" ordinal="0" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="55" ordinal="1" sl="55" sc="1" el="55" ec="2" bec="2" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="56" ordinal="2" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="57" ordinal="3" sl="57" sc="1" el="57" ec="2" bec="4" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="58" ordinal="4" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="59" ordinal="5" sl="59" sc="1" el="59" ec="2" bec="2" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="60" ordinal="6" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="61" ordinal="7" sl="61" sc="1" el="61" ec="2" bec="2" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="62" ordinal="8" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="63" ordinal="9" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="66" ordinal="10" sl="66" sc="1" el="66" ec="2" bec="2" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="67" ordinal="11" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="68" ordinal="12" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="69" ordinal="13" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="70" ordinal="14" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="72" ordinal="15" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="73" ordinal="16" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="54" /> <SequencePoint vc="0" uspid="74" ordinal="17" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="54" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="55" ordinal="11" path="1" offset="300" offsetend="14" sl="55" fileid="54" /> <BranchPoint vc="0" uspid="57" ordinal="0" path="0" offset="48" offsetend="50" sl="57" fileid="54" /> <BranchPoint vc="0" uspid="57" ordinal="1" path="1" offset="48" offsetend="54" sl="57" fileid="54" /> <BranchPoint vc="0" uspid="57" ordinal="2" path="0" offset="60" offsetend="62" sl="57" fileid="54" /> <BranchPoint vc="0" uspid="57" ordinal="3" path="1" offset="60" offsetend="68" sl="57" fileid="54" /> <BranchPoint vc="0" uspid="59" ordinal="9" path="1" offset="242" offsetend="89" sl="59" fileid="54" /> <BranchPoint vc="0" uspid="61" ordinal="4" path="0" offset="130" offsetend="132" sl="61" fileid="54" /> <BranchPoint vc="0" uspid="61" ordinal="5" path="1" offset="130" offsetend="135" sl="61" fileid="54" /> <BranchPoint vc="0" uspid="66" ordinal="6" path="0" offset="175" offsetend="177" sl="66" fileid="54" /> <BranchPoint vc="0" uspid="66" ordinal="7" path="1" offset="175" offsetend="234" sl="66" fileid="54" /> <BranchPoint vc="0" uspid="59" ordinal="8" path="0" offset="242" offsetend="247" sl="59" fileid="54" /> <BranchPoint vc="0" uspid="55" ordinal="10" path="0" offset="300" offsetend="305" sl="55" fileid="54" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="54" ec="1" el="74" bec="0" bev="0" fileid="54" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.ChangeChannelPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.ChangeChannelPacket::Help()</Name> <FileRef uid="55" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="55" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="55" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="55" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="34" bec="0" bev="0" fileid="55" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.ChangeClassPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.ChangeClassPacket::Help()</Name> <FileRef uid="56" /> <SequencePoints> <SequencePoint vc="0" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="56" /> <SequencePoint vc="0" uspid="36" ordinal="1" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="56" /> <SequencePoint vc="0" uspid="37" ordinal="2" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="56" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="35" ec="1" el="37" bec="0" bev="0" fileid="56" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.ClearInventoryPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.ClearInventoryPacket::Help()</Name> <FileRef uid="57" /> <SequencePoints> <SequencePoint vc="0" uspid="28" ordinal="0" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="57" /> <SequencePoint vc="0" uspid="29" ordinal="1" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="57" /> <SequencePoint vc="0" uspid="30" ordinal="2" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="57" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="28" ec="1" el="30" bec="0" bev="0" fileid="57" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.CommandPacketHeaderAttribute</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.CommandPackets.CommandPacketHeaderAttribute::.ctor(System.String,NosCore.Shared.Enumerations.AuthorityType)</Name> <FileRef uid="58" /> <SequencePoints> <SequencePoint vc="0" uspid="28" ordinal="0" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="58" /> <SequencePoint vc="0" uspid="29" ordinal="1" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="58" /> <SequencePoint vc="0" uspid="30" ordinal="2" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="58" /> <SequencePoint vc="0" uspid="31" ordinal="3" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="58" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="28" ec="1" el="31" bec="0" bev="0" fileid="58" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.CreateItemPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.CreateItemPacket::Help()</Name> <FileRef uid="59" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="59" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="59" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="59" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="38" ec="1" el="40" bec="0" bev="0" fileid="59" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.EffectCommandPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.EffectCommandPacket::Help()</Name> <FileRef uid="60" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="60" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="60" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="60" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="34" bec="0" bev="0" fileid="60" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.EntryPointPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Data.CommandPackets.EntryPointPacket::.ctor()</Name> <FileRef uid="61" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="61" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="61" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="33" bec="0" bev="0" fileid="61" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.FlPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.FlPacket::Help()</Name> <FileRef uid="62" /> <SequencePoints> <SequencePoint vc="0" uspid="19" ordinal="0" sl="19" sc="1" el="19" ec="2" bec="0" bev="0" fileid="62" /> <SequencePoint vc="0" uspid="20" ordinal="1" sl="20" sc="1" el="20" ec="2" bec="0" bev="0" fileid="62" /> <SequencePoint vc="0" uspid="21" ordinal="2" sl="21" sc="1" el="21" ec="2" bec="0" bev="0" fileid="62" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="19" ec="1" el="21" bec="0" bev="0" fileid="62" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.GiftPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.GiftPacket::Help()</Name> <FileRef uid="63" /> <SequencePoints> <SequencePoint vc="0" uspid="44" ordinal="0" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="63" /> <SequencePoint vc="0" uspid="45" ordinal="1" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="63" /> <SequencePoint vc="0" uspid="46" ordinal="2" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="63" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="44" ec="1" el="46" bec="0" bev="0" fileid="63" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.HelpPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.HelpPacket::Help()</Name> <FileRef uid="64" /> <SequencePoints> <SequencePoint vc="0" uspid="28" ordinal="0" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="64" /> <SequencePoint vc="0" uspid="29" ordinal="1" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="64" /> <SequencePoint vc="0" uspid="30" ordinal="2" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="64" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="28" ec="1" el="30" bec="0" bev="0" fileid="64" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.InvisibleCommandPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.InvisibleCommandPacket::Help()</Name> <FileRef uid="65" /> <SequencePoints> <SequencePoint vc="0" uspid="28" ordinal="0" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="65" /> <SequencePoint vc="0" uspid="29" ordinal="1" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="65" /> <SequencePoint vc="0" uspid="30" ordinal="2" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="65" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="28" ec="1" el="30" bec="0" bev="0" fileid="65" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.KickPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.KickPacket::Help()</Name> <FileRef uid="66" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="66" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="66" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="66" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="34" bec="0" bev="0" fileid="66" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.PositionPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.PositionPacket::Help()</Name> <FileRef uid="67" /> <SequencePoints> <SequencePoint vc="0" uspid="28" ordinal="0" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="67" /> <SequencePoint vc="0" uspid="29" ordinal="1" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="67" /> <SequencePoint vc="0" uspid="30" ordinal="2" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="67" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="28" ec="1" el="30" bec="0" bev="0" fileid="67" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.SetGoldCommandPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.SetGoldCommandPacket::Help()</Name> <FileRef uid="68" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="68" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="68" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="68" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="38" ec="1" el="40" bec="0" bev="0" fileid="68" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.SetHeroLevelCommandPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.SetHeroLevelCommandPacket::Help()</Name> <FileRef uid="69" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="69" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="69" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="69" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="38" ec="1" el="40" bec="0" bev="0" fileid="69" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.SetJobLevelCommandPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.SetJobLevelCommandPacket::Help()</Name> <FileRef uid="70" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="70" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="70" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="70" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="38" ec="1" el="40" bec="0" bev="0" fileid="70" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.SetLevelCommandPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.SetLevelCommandPacket::Help()</Name> <FileRef uid="71" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="71" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="71" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="71" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="38" ec="1" el="40" bec="0" bev="0" fileid="71" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.SetMaintenancePacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.SetMaintenancePacket::Help()</Name> <FileRef uid="72" /> <SequencePoints> <SequencePoint vc="0" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="72" /> <SequencePoint vc="0" uspid="36" ordinal="1" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="72" /> <SequencePoint vc="0" uspid="37" ordinal="2" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="72" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="35" ec="1" el="37" bec="0" bev="0" fileid="72" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.SetReputationPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.SetReputationPacket::Help()</Name> <FileRef uid="73" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="73" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="73" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="73" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="38" ec="1" el="40" bec="0" bev="0" fileid="73" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.ShoutPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.ShoutPacket::Help()</Name> <FileRef uid="74" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="74" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="74" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="74" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="34" bec="0" bev="0" fileid="74" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.SizePacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.SizePacket::Help()</Name> <FileRef uid="75" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="75" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="75" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="75" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="38" ec="1" el="40" bec="0" bev="0" fileid="75" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.SpeedPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.SpeedPacket::Help()</Name> <FileRef uid="76" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="76" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="76" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="76" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="34" bec="0" bev="0" fileid="76" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Data.CommandPackets.TeleportPacket</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Data.CommandPackets.TeleportPacket::Help()</Name> <FileRef uid="77" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="77" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="77" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="77" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="38" ec="1" el="40" bec="0" bev="0" fileid="77" xmlns:p8="xsi" /> </Method> </Methods> </Class> </Classes> </Module> <Module hash="7492FC3C-E8D9-461B-9D3B-C0083C144811"> <ModulePath>NosCore.Database.dll</ModulePath> <ModuleTime>2020-12-29T09:41:25</ModuleTime> <ModuleName>NosCore.Database</ModuleName> <Files> <File uid="78" fullPath="C:\dev\NosCore\src\NosCore.Database\DesignTimeDbContextFactory.cs" /> <File uid="79" fullPath="C:\dev\NosCore\src\NosCore.Database\NosCoreContext.cs" /> <File uid="80" fullPath="C:\dev\NosCore\src\NosCore.Database\Migrations\20200601012847_Aphrodite1.cs" /> <File uid="81" fullPath="C:\dev\NosCore\src\NosCore.Database\Migrations\20200601012847_Aphrodite1.Designer.cs" /> <File uid="82" fullPath="C:\dev\NosCore\src\NosCore.Database\Migrations\20201121044105_Aphrodite2.cs" /> <File uid="83" fullPath="C:\dev\NosCore\src\NosCore.Database\Migrations\20201121044105_Aphrodite2.Designer.cs" /> <File uid="84" fullPath="C:\dev\NosCore\src\NosCore.Database\Migrations\20201128030127_Aphrodite3.cs" /> <File uid="85" fullPath="C:\dev\NosCore\src\NosCore.Database\Migrations\20201128030127_Aphrodite3.Designer.cs" /> <File uid="86" fullPath="C:\dev\NosCore\src\NosCore.Database\Migrations\NosCoreContextModelSnapshot.cs" /> <File uid="87" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Account.cs" /> <File uid="88" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Act.cs" /> <File uid="89" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\ActPart.cs" /> <File uid="90" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\AuditLog.cs" /> <File uid="91" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\BazaarItem.cs" /> <File uid="92" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Card.cs" /> <File uid="93" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Character.cs" /> <File uid="94" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\CharacterActPart.cs" /> <File uid="95" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\CharacterQuest.cs" /> <File uid="96" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\CharacterRelation.cs" /> <File uid="97" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Characterskill.cs" /> <File uid="98" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Combo.cs" /> <File uid="99" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Drop.cs" /> <File uid="100" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\EquipmentOption.cs" /> <File uid="101" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Family.cs" /> <File uid="102" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\FamilyCharacter.cs" /> <File uid="103" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\FamilyLog.cs" /> <File uid="104" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\I18NActDesc.cs" /> <File uid="105" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\I18NBCard.cs" /> <File uid="106" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\I18NCard.cs" /> <File uid="107" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\I18NItem.cs" /> <File uid="108" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\I18NMapIdData.cs" /> <File uid="109" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\I18NMapPointData.cs" /> <File uid="110" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\I18NNpcMonster.cs" /> <File uid="111" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\I18NNpcMonsterTalk.cs" /> <File uid="112" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\I18NQuest.cs" /> <File uid="113" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\I18NSkill.cs" /> <File uid="114" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\InventoryItemInstance.cs" /> <File uid="115" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Item.cs" /> <File uid="116" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\ItemInstance.cs" /> <File uid="117" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Mail.cs" /> <File uid="118" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Map.cs" /> <File uid="119" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\MapMonster.cs" /> <File uid="120" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\MapNpc.cs" /> <File uid="121" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\MapType.cs" /> <File uid="122" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\MapTypeMap.cs" /> <File uid="123" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Mate.cs" /> <File uid="124" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Miniland.cs" /> <File uid="125" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\NpcMonster.cs" /> <File uid="126" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\NpcMonsterskill.cs" /> <File uid="127" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\NpcTalk.cs" /> <File uid="128" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\PenaltyLog.cs" /> <File uid="129" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Portal.cs" /> <File uid="130" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Quest.cs" /> <File uid="131" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\QuestObjective.cs" /> <File uid="132" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\QuestQuestReward.cs" /> <File uid="133" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\QuestReward.cs" /> <File uid="134" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\QuicklistEntry.cs" /> <File uid="135" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Recipe.cs" /> <File uid="136" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\RecipeItem.cs" /> <File uid="137" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Respawn.cs" /> <File uid="138" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\RespawnMapType.cs" /> <File uid="139" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\RollGeneratedItem.cs" /> <File uid="140" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Script.cs" /> <File uid="141" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\ScriptedInstance.cs" /> <File uid="142" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Shop.cs" /> <File uid="143" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\ShopItem.cs" /> <File uid="144" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Shopskill.cs" /> <File uid="145" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Skill.cs" /> <File uid="146" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\StaticBonus.cs" /> <File uid="147" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\StaticBuff.cs" /> <File uid="148" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Teleporter.cs" /> <File uid="149" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Title.cs" /> <File uid="150" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Warehouse.cs" /> <File uid="151" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\WarehouseItem.cs" /> <File uid="152" fullPath="C:\dev\NosCore\src\NosCore.Database\Entities\Base\I18NStringAttribute.cs" /> </Files> <Classes> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.DesignTimeDbContextFactory</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>NosCore.Database.NosCoreContext NosCore.Database.DesignTimeDbContextFactory::CreateDbContext(System.String[])</Name> <FileRef uid="78" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="78" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="78" /> <SequencePoint vc="0" uspid="32" ordinal="2" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="78" /> <SequencePoint vc="0" uspid="33" ordinal="3" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="78" /> <SequencePoint vc="0" uspid="34" ordinal="4" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="78" /> <SequencePoint vc="0" uspid="35" ordinal="5" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="78" /> <SequencePoint vc="0" uspid="36" ordinal="6" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="78" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="36" bec="0" bev="0" fileid="78" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="460" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Database.NosCoreContext</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="457" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.NosCoreContext::OnModelCreating(Microsoft.EntityFrameworkCore.ModelBuilder)</Name> <FileRef uid="79" /> <SequencePoints> <SequencePoint vc="0" uspid="156" ordinal="0" sl="156" sc="1" el="156" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="158" ordinal="1" sl="158" sc="1" el="158" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="161" ordinal="2" sl="161" sc="1" el="161" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="162" ordinal="3" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="163" ordinal="4" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="164" ordinal="5" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="165" ordinal="6" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="166" ordinal="7" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="168" ordinal="8" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="169" ordinal="9" sl="169" sc="1" el="169" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="170" ordinal="10" sl="170" sc="1" el="170" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="172" ordinal="11" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="173" ordinal="12" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="174" ordinal="13" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="176" ordinal="14" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="177" ordinal="15" sl="177" sc="1" el="177" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="178" ordinal="16" sl="178" sc="1" el="178" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="180" ordinal="17" sl="180" sc="1" el="180" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="181" ordinal="18" sl="181" sc="1" el="181" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="182" ordinal="19" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="184" ordinal="20" sl="184" sc="1" el="184" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="185" ordinal="21" sl="185" sc="1" el="185" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="186" ordinal="22" sl="186" sc="1" el="186" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="188" ordinal="23" sl="188" sc="1" el="188" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="189" ordinal="24" sl="189" sc="1" el="189" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="190" ordinal="25" sl="190" sc="1" el="190" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="192" ordinal="26" sl="192" sc="1" el="192" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="193" ordinal="27" sl="193" sc="1" el="193" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="194" ordinal="28" sl="194" sc="1" el="194" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="196" ordinal="29" sl="196" sc="1" el="196" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="197" ordinal="30" sl="197" sc="1" el="197" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="198" ordinal="31" sl="198" sc="1" el="198" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="200" ordinal="32" sl="200" sc="1" el="200" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="201" ordinal="33" sl="201" sc="1" el="201" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="202" ordinal="34" sl="202" sc="1" el="202" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="204" ordinal="35" sl="204" sc="1" el="204" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="205" ordinal="36" sl="205" sc="1" el="205" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="206" ordinal="37" sl="206" sc="1" el="206" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="208" ordinal="38" sl="208" sc="1" el="208" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="209" ordinal="39" sl="209" sc="1" el="209" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="210" ordinal="40" sl="210" sc="1" el="210" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="212" ordinal="41" sl="212" sc="1" el="212" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="213" ordinal="42" sl="213" sc="1" el="213" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="214" ordinal="43" sl="214" sc="1" el="214" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="216" ordinal="44" sl="216" sc="1" el="216" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="217" ordinal="45" sl="217" sc="1" el="217" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="218" ordinal="46" sl="218" sc="1" el="218" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="220" ordinal="47" sl="220" sc="1" el="220" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="221" ordinal="48" sl="221" sc="1" el="221" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="222" ordinal="49" sl="222" sc="1" el="222" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="224" ordinal="50" sl="224" sc="1" el="224" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="225" ordinal="51" sl="225" sc="1" el="225" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="226" ordinal="52" sl="226" sc="1" el="226" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="228" ordinal="53" sl="228" sc="1" el="228" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="229" ordinal="54" sl="229" sc="1" el="229" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="230" ordinal="55" sl="230" sc="1" el="230" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="231" ordinal="56" sl="231" sc="1" el="231" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="233" ordinal="57" sl="233" sc="1" el="233" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="234" ordinal="58" sl="234" sc="1" el="234" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="235" ordinal="59" sl="235" sc="1" el="235" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="236" ordinal="60" sl="236" sc="1" el="236" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="238" ordinal="61" sl="238" sc="1" el="238" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="239" ordinal="62" sl="239" sc="1" el="239" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="240" ordinal="63" sl="240" sc="1" el="240" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="242" ordinal="64" sl="242" sc="1" el="242" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="243" ordinal="65" sl="243" sc="1" el="243" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="244" ordinal="66" sl="244" sc="1" el="244" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="245" ordinal="67" sl="245" sc="1" el="245" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="247" ordinal="68" sl="247" sc="1" el="247" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="248" ordinal="69" sl="248" sc="1" el="248" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="249" ordinal="70" sl="249" sc="1" el="249" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="250" ordinal="71" sl="250" sc="1" el="250" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="251" ordinal="72" sl="251" sc="1" el="251" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="253" ordinal="73" sl="253" sc="1" el="253" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="254" ordinal="74" sl="254" sc="1" el="254" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="255" ordinal="75" sl="255" sc="1" el="255" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="257" ordinal="76" sl="257" sc="1" el="257" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="258" ordinal="77" sl="258" sc="1" el="258" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="259" ordinal="78" sl="259" sc="1" el="259" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="260" ordinal="79" sl="260" sc="1" el="260" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="261" ordinal="80" sl="261" sc="1" el="261" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="263" ordinal="81" sl="263" sc="1" el="263" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="264" ordinal="82" sl="264" sc="1" el="264" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="265" ordinal="83" sl="265" sc="1" el="265" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="266" ordinal="84" sl="266" sc="1" el="266" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="267" ordinal="85" sl="267" sc="1" el="267" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="269" ordinal="86" sl="269" sc="1" el="269" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="270" ordinal="87" sl="270" sc="1" el="270" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="271" ordinal="88" sl="271" sc="1" el="271" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="272" ordinal="89" sl="272" sc="1" el="272" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="273" ordinal="90" sl="273" sc="1" el="273" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="275" ordinal="91" sl="275" sc="1" el="275" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="276" ordinal="92" sl="276" sc="1" el="276" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="277" ordinal="93" sl="277" sc="1" el="277" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="278" ordinal="94" sl="278" sc="1" el="278" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="279" ordinal="95" sl="279" sc="1" el="279" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="281" ordinal="96" sl="281" sc="1" el="281" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="282" ordinal="97" sl="282" sc="1" el="282" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="283" ordinal="98" sl="283" sc="1" el="283" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="284" ordinal="99" sl="284" sc="1" el="284" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="285" ordinal="100" sl="285" sc="1" el="285" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="287" ordinal="101" sl="287" sc="1" el="287" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="288" ordinal="102" sl="288" sc="1" el="288" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="289" ordinal="103" sl="289" sc="1" el="289" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="290" ordinal="104" sl="290" sc="1" el="290" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="291" ordinal="105" sl="291" sc="1" el="291" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="293" ordinal="106" sl="293" sc="1" el="293" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="294" ordinal="107" sl="294" sc="1" el="294" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="295" ordinal="108" sl="295" sc="1" el="295" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="296" ordinal="109" sl="296" sc="1" el="296" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="297" ordinal="110" sl="297" sc="1" el="297" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="299" ordinal="111" sl="299" sc="1" el="299" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="300" ordinal="112" sl="300" sc="1" el="300" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="301" ordinal="113" sl="301" sc="1" el="301" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="302" ordinal="114" sl="302" sc="1" el="302" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="303" ordinal="115" sl="303" sc="1" el="303" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="305" ordinal="116" sl="305" sc="1" el="305" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="306" ordinal="117" sl="306" sc="1" el="306" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="307" ordinal="118" sl="307" sc="1" el="307" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="308" ordinal="119" sl="308" sc="1" el="308" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="309" ordinal="120" sl="309" sc="1" el="309" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="311" ordinal="121" sl="311" sc="1" el="311" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="312" ordinal="122" sl="312" sc="1" el="312" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="313" ordinal="123" sl="313" sc="1" el="313" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="314" ordinal="124" sl="314" sc="1" el="314" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="315" ordinal="125" sl="315" sc="1" el="315" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="317" ordinal="126" sl="317" sc="1" el="317" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="318" ordinal="127" sl="318" sc="1" el="318" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="319" ordinal="128" sl="319" sc="1" el="319" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="320" ordinal="129" sl="320" sc="1" el="320" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="321" ordinal="130" sl="321" sc="1" el="321" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="323" ordinal="131" sl="323" sc="1" el="323" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="324" ordinal="132" sl="324" sc="1" el="324" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="325" ordinal="133" sl="325" sc="1" el="325" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="326" ordinal="134" sl="326" sc="1" el="326" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="327" ordinal="135" sl="327" sc="1" el="327" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="329" ordinal="136" sl="329" sc="1" el="329" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="330" ordinal="137" sl="330" sc="1" el="330" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="331" ordinal="138" sl="331" sc="1" el="331" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="332" ordinal="139" sl="332" sc="1" el="332" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="333" ordinal="140" sl="333" sc="1" el="333" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="335" ordinal="141" sl="335" sc="1" el="335" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="336" ordinal="142" sl="336" sc="1" el="336" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="337" ordinal="143" sl="337" sc="1" el="337" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="338" ordinal="144" sl="338" sc="1" el="338" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="340" ordinal="145" sl="340" sc="1" el="340" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="341" ordinal="146" sl="341" sc="1" el="341" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="342" ordinal="147" sl="342" sc="1" el="342" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="343" ordinal="148" sl="343" sc="1" el="343" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="344" ordinal="149" sl="344" sc="1" el="344" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="345" ordinal="150" sl="345" sc="1" el="345" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="347" ordinal="151" sl="347" sc="1" el="347" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="348" ordinal="152" sl="348" sc="1" el="348" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="349" ordinal="153" sl="349" sc="1" el="349" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="350" ordinal="154" sl="350" sc="1" el="350" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="351" ordinal="155" sl="351" sc="1" el="351" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="353" ordinal="156" sl="353" sc="1" el="353" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="354" ordinal="157" sl="354" sc="1" el="354" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="355" ordinal="158" sl="355" sc="1" el="355" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="356" ordinal="159" sl="356" sc="1" el="356" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="357" ordinal="160" sl="357" sc="1" el="357" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="359" ordinal="161" sl="359" sc="1" el="359" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="360" ordinal="162" sl="360" sc="1" el="360" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="361" ordinal="163" sl="361" sc="1" el="361" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="362" ordinal="164" sl="362" sc="1" el="362" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="363" ordinal="165" sl="363" sc="1" el="363" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="365" ordinal="166" sl="365" sc="1" el="365" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="366" ordinal="167" sl="366" sc="1" el="366" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="367" ordinal="168" sl="367" sc="1" el="367" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="368" ordinal="169" sl="368" sc="1" el="368" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="369" ordinal="170" sl="369" sc="1" el="369" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="371" ordinal="171" sl="371" sc="1" el="371" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="372" ordinal="172" sl="372" sc="1" el="372" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="373" ordinal="173" sl="373" sc="1" el="373" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="374" ordinal="174" sl="374" sc="1" el="374" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="375" ordinal="175" sl="375" sc="1" el="375" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="377" ordinal="176" sl="377" sc="1" el="377" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="378" ordinal="177" sl="378" sc="1" el="378" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="379" ordinal="178" sl="379" sc="1" el="379" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="380" ordinal="179" sl="380" sc="1" el="380" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="381" ordinal="180" sl="381" sc="1" el="381" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="383" ordinal="181" sl="383" sc="1" el="383" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="384" ordinal="182" sl="384" sc="1" el="384" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="385" ordinal="183" sl="385" sc="1" el="385" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="386" ordinal="184" sl="386" sc="1" el="386" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="387" ordinal="185" sl="387" sc="1" el="387" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="389" ordinal="186" sl="389" sc="1" el="389" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="390" ordinal="187" sl="390" sc="1" el="390" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="391" ordinal="188" sl="391" sc="1" el="391" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="392" ordinal="189" sl="392" sc="1" el="392" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="393" ordinal="190" sl="393" sc="1" el="393" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="395" ordinal="191" sl="395" sc="1" el="395" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="396" ordinal="192" sl="396" sc="1" el="396" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="397" ordinal="193" sl="397" sc="1" el="397" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="398" ordinal="194" sl="398" sc="1" el="398" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="399" ordinal="195" sl="399" sc="1" el="399" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="401" ordinal="196" sl="401" sc="1" el="401" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="402" ordinal="197" sl="402" sc="1" el="402" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="403" ordinal="198" sl="403" sc="1" el="403" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="404" ordinal="199" sl="404" sc="1" el="404" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="405" ordinal="200" sl="405" sc="1" el="405" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="407" ordinal="201" sl="407" sc="1" el="407" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="408" ordinal="202" sl="408" sc="1" el="408" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="409" ordinal="203" sl="409" sc="1" el="409" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="410" ordinal="204" sl="410" sc="1" el="410" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="411" ordinal="205" sl="411" sc="1" el="411" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="413" ordinal="206" sl="413" sc="1" el="413" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="414" ordinal="207" sl="414" sc="1" el="414" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="415" ordinal="208" sl="415" sc="1" el="415" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="416" ordinal="209" sl="416" sc="1" el="416" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="418" ordinal="210" sl="418" sc="1" el="418" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="419" ordinal="211" sl="419" sc="1" el="419" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="420" ordinal="212" sl="420" sc="1" el="420" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="421" ordinal="213" sl="421" sc="1" el="421" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="423" ordinal="214" sl="423" sc="1" el="423" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="424" ordinal="215" sl="424" sc="1" el="424" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="425" ordinal="216" sl="425" sc="1" el="425" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="426" ordinal="217" sl="426" sc="1" el="426" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="428" ordinal="218" sl="428" sc="1" el="428" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="429" ordinal="219" sl="429" sc="1" el="429" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="430" ordinal="220" sl="430" sc="1" el="430" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="431" ordinal="221" sl="431" sc="1" el="431" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="433" ordinal="222" sl="433" sc="1" el="433" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="434" ordinal="223" sl="434" sc="1" el="434" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="435" ordinal="224" sl="435" sc="1" el="435" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="436" ordinal="225" sl="436" sc="1" el="436" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="437" ordinal="226" sl="437" sc="1" el="437" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="439" ordinal="227" sl="439" sc="1" el="439" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="440" ordinal="228" sl="440" sc="1" el="440" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="441" ordinal="229" sl="441" sc="1" el="441" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="442" ordinal="230" sl="442" sc="1" el="442" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="443" ordinal="231" sl="443" sc="1" el="443" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="445" ordinal="232" sl="445" sc="1" el="445" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="446" ordinal="233" sl="446" sc="1" el="446" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="447" ordinal="234" sl="447" sc="1" el="447" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="448" ordinal="235" sl="448" sc="1" el="448" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="449" ordinal="236" sl="449" sc="1" el="449" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="451" ordinal="237" sl="451" sc="1" el="451" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="452" ordinal="238" sl="452" sc="1" el="452" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="453" ordinal="239" sl="453" sc="1" el="453" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="454" ordinal="240" sl="454" sc="1" el="454" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="456" ordinal="241" sl="456" sc="1" el="456" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="457" ordinal="242" sl="457" sc="1" el="457" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="458" ordinal="243" sl="458" sc="1" el="458" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="459" ordinal="244" sl="459" sc="1" el="459" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="461" ordinal="245" sl="461" sc="1" el="461" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="462" ordinal="246" sl="462" sc="1" el="462" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="463" ordinal="247" sl="463" sc="1" el="463" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="464" ordinal="248" sl="464" sc="1" el="464" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="465" ordinal="249" sl="465" sc="1" el="465" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="467" ordinal="250" sl="467" sc="1" el="467" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="468" ordinal="251" sl="468" sc="1" el="468" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="469" ordinal="252" sl="469" sc="1" el="469" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="470" ordinal="253" sl="470" sc="1" el="470" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="471" ordinal="254" sl="471" sc="1" el="471" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="473" ordinal="255" sl="473" sc="1" el="473" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="474" ordinal="256" sl="474" sc="1" el="474" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="475" ordinal="257" sl="475" sc="1" el="475" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="476" ordinal="258" sl="476" sc="1" el="476" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="477" ordinal="259" sl="477" sc="1" el="477" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="479" ordinal="260" sl="479" sc="1" el="479" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="480" ordinal="261" sl="480" sc="1" el="480" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="481" ordinal="262" sl="481" sc="1" el="481" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="482" ordinal="263" sl="482" sc="1" el="482" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="483" ordinal="264" sl="483" sc="1" el="483" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="485" ordinal="265" sl="485" sc="1" el="485" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="486" ordinal="266" sl="486" sc="1" el="486" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="487" ordinal="267" sl="487" sc="1" el="487" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="488" ordinal="268" sl="488" sc="1" el="488" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="489" ordinal="269" sl="489" sc="1" el="489" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="491" ordinal="270" sl="491" sc="1" el="491" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="492" ordinal="271" sl="492" sc="1" el="492" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="493" ordinal="272" sl="493" sc="1" el="493" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="494" ordinal="273" sl="494" sc="1" el="494" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="496" ordinal="274" sl="496" sc="1" el="496" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="497" ordinal="275" sl="497" sc="1" el="497" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="498" ordinal="276" sl="498" sc="1" el="498" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="499" ordinal="277" sl="499" sc="1" el="499" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="500" ordinal="278" sl="500" sc="1" el="500" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="502" ordinal="279" sl="502" sc="1" el="502" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="503" ordinal="280" sl="503" sc="1" el="503" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="504" ordinal="281" sl="504" sc="1" el="504" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="505" ordinal="282" sl="505" sc="1" el="505" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="506" ordinal="283" sl="506" sc="1" el="506" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="508" ordinal="284" sl="508" sc="1" el="508" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="509" ordinal="285" sl="509" sc="1" el="509" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="510" ordinal="286" sl="510" sc="1" el="510" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="511" ordinal="287" sl="511" sc="1" el="511" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="512" ordinal="288" sl="512" sc="1" el="512" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="514" ordinal="289" sl="514" sc="1" el="514" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="515" ordinal="290" sl="515" sc="1" el="515" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="516" ordinal="291" sl="516" sc="1" el="516" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="517" ordinal="292" sl="517" sc="1" el="517" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="519" ordinal="293" sl="519" sc="1" el="519" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="520" ordinal="294" sl="520" sc="1" el="520" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="521" ordinal="295" sl="521" sc="1" el="521" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="522" ordinal="296" sl="522" sc="1" el="522" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="523" ordinal="297" sl="523" sc="1" el="523" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="525" ordinal="298" sl="525" sc="1" el="525" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="526" ordinal="299" sl="526" sc="1" el="526" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="527" ordinal="300" sl="527" sc="1" el="527" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="528" ordinal="301" sl="528" sc="1" el="528" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="529" ordinal="302" sl="529" sc="1" el="529" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="531" ordinal="303" sl="531" sc="1" el="531" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="532" ordinal="304" sl="532" sc="1" el="532" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="533" ordinal="305" sl="533" sc="1" el="533" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="534" ordinal="306" sl="534" sc="1" el="534" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="535" ordinal="307" sl="535" sc="1" el="535" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="537" ordinal="308" sl="537" sc="1" el="537" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="538" ordinal="309" sl="538" sc="1" el="538" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="539" ordinal="310" sl="539" sc="1" el="539" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="540" ordinal="311" sl="540" sc="1" el="540" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="542" ordinal="312" sl="542" sc="1" el="542" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="543" ordinal="313" sl="543" sc="1" el="543" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="544" ordinal="314" sl="544" sc="1" el="544" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="545" ordinal="315" sl="545" sc="1" el="545" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="546" ordinal="316" sl="546" sc="1" el="546" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="548" ordinal="317" sl="548" sc="1" el="548" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="549" ordinal="318" sl="549" sc="1" el="549" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="550" ordinal="319" sl="550" sc="1" el="550" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="551" ordinal="320" sl="551" sc="1" el="551" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="552" ordinal="321" sl="552" sc="1" el="552" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="554" ordinal="322" sl="554" sc="1" el="554" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="555" ordinal="323" sl="555" sc="1" el="555" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="556" ordinal="324" sl="556" sc="1" el="556" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="557" ordinal="325" sl="557" sc="1" el="557" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="558" ordinal="326" sl="558" sc="1" el="558" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="560" ordinal="327" sl="560" sc="1" el="560" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="561" ordinal="328" sl="561" sc="1" el="561" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="562" ordinal="329" sl="562" sc="1" el="562" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="563" ordinal="330" sl="563" sc="1" el="563" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="564" ordinal="331" sl="564" sc="1" el="564" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="566" ordinal="332" sl="566" sc="1" el="566" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="567" ordinal="333" sl="567" sc="1" el="567" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="568" ordinal="334" sl="568" sc="1" el="568" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="569" ordinal="335" sl="569" sc="1" el="569" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="570" ordinal="336" sl="570" sc="1" el="570" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="572" ordinal="337" sl="572" sc="1" el="572" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="573" ordinal="338" sl="573" sc="1" el="573" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="574" ordinal="339" sl="574" sc="1" el="574" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="575" ordinal="340" sl="575" sc="1" el="575" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="577" ordinal="341" sl="577" sc="1" el="577" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="578" ordinal="342" sl="578" sc="1" el="578" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="579" ordinal="343" sl="579" sc="1" el="579" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="580" ordinal="344" sl="580" sc="1" el="580" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="582" ordinal="345" sl="582" sc="1" el="582" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="583" ordinal="346" sl="583" sc="1" el="583" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="584" ordinal="347" sl="584" sc="1" el="584" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="585" ordinal="348" sl="585" sc="1" el="585" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="587" ordinal="349" sl="587" sc="1" el="587" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="588" ordinal="350" sl="588" sc="1" el="588" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="589" ordinal="351" sl="589" sc="1" el="589" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="590" ordinal="352" sl="590" sc="1" el="590" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="591" ordinal="353" sl="591" sc="1" el="591" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="593" ordinal="354" sl="593" sc="1" el="593" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="594" ordinal="355" sl="594" sc="1" el="594" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="595" ordinal="356" sl="595" sc="1" el="595" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="596" ordinal="357" sl="596" sc="1" el="596" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="597" ordinal="358" sl="597" sc="1" el="597" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="599" ordinal="359" sl="599" sc="1" el="599" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="600" ordinal="360" sl="600" sc="1" el="600" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="601" ordinal="361" sl="601" sc="1" el="601" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="602" ordinal="362" sl="602" sc="1" el="602" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="603" ordinal="363" sl="603" sc="1" el="603" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="605" ordinal="364" sl="605" sc="1" el="605" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="606" ordinal="365" sl="606" sc="1" el="606" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="607" ordinal="366" sl="607" sc="1" el="607" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="608" ordinal="367" sl="608" sc="1" el="608" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="609" ordinal="368" sl="609" sc="1" el="609" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="611" ordinal="369" sl="611" sc="1" el="611" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="612" ordinal="370" sl="612" sc="1" el="612" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="613" ordinal="371" sl="613" sc="1" el="613" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="614" ordinal="372" sl="614" sc="1" el="614" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="615" ordinal="373" sl="615" sc="1" el="615" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="617" ordinal="374" sl="617" sc="1" el="617" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="618" ordinal="375" sl="618" sc="1" el="618" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="619" ordinal="376" sl="619" sc="1" el="619" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="620" ordinal="377" sl="620" sc="1" el="620" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="621" ordinal="378" sl="621" sc="1" el="621" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="623" ordinal="379" sl="623" sc="1" el="623" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="624" ordinal="380" sl="624" sc="1" el="624" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="625" ordinal="381" sl="625" sc="1" el="625" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="626" ordinal="382" sl="626" sc="1" el="626" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="627" ordinal="383" sl="627" sc="1" el="627" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="629" ordinal="384" sl="629" sc="1" el="629" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="630" ordinal="385" sl="630" sc="1" el="630" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="631" ordinal="386" sl="631" sc="1" el="631" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="632" ordinal="387" sl="632" sc="1" el="632" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="633" ordinal="388" sl="633" sc="1" el="633" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="635" ordinal="389" sl="635" sc="1" el="635" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="636" ordinal="390" sl="636" sc="1" el="636" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="637" ordinal="391" sl="637" sc="1" el="637" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="638" ordinal="392" sl="638" sc="1" el="638" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="640" ordinal="393" sl="640" sc="1" el="640" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="641" ordinal="394" sl="641" sc="1" el="641" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="642" ordinal="395" sl="642" sc="1" el="642" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="643" ordinal="396" sl="643" sc="1" el="643" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="645" ordinal="397" sl="645" sc="1" el="645" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="646" ordinal="398" sl="646" sc="1" el="646" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="647" ordinal="399" sl="647" sc="1" el="647" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="648" ordinal="400" sl="648" sc="1" el="648" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="650" ordinal="401" sl="650" sc="1" el="650" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="651" ordinal="402" sl="651" sc="1" el="651" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="652" ordinal="403" sl="652" sc="1" el="652" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="653" ordinal="404" sl="653" sc="1" el="653" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="654" ordinal="405" sl="654" sc="1" el="654" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="656" ordinal="406" sl="656" sc="1" el="656" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="657" ordinal="407" sl="657" sc="1" el="657" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="658" ordinal="408" sl="658" sc="1" el="658" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="659" ordinal="409" sl="659" sc="1" el="659" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="660" ordinal="410" sl="660" sc="1" el="660" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="662" ordinal="411" sl="662" sc="1" el="662" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="663" ordinal="412" sl="663" sc="1" el="663" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="664" ordinal="413" sl="664" sc="1" el="664" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="665" ordinal="414" sl="665" sc="1" el="665" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="666" ordinal="415" sl="666" sc="1" el="666" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="668" ordinal="416" sl="668" sc="1" el="668" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="669" ordinal="417" sl="669" sc="1" el="669" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="670" ordinal="418" sl="670" sc="1" el="670" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="671" ordinal="419" sl="671" sc="1" el="671" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="672" ordinal="420" sl="672" sc="1" el="672" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="674" ordinal="421" sl="674" sc="1" el="674" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="675" ordinal="422" sl="675" sc="1" el="675" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="676" ordinal="423" sl="676" sc="1" el="676" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="677" ordinal="424" sl="677" sc="1" el="677" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="678" ordinal="425" sl="678" sc="1" el="678" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="680" ordinal="426" sl="680" sc="1" el="680" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="681" ordinal="427" sl="681" sc="1" el="681" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="682" ordinal="428" sl="682" sc="1" el="682" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="683" ordinal="429" sl="683" sc="1" el="683" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="684" ordinal="430" sl="684" sc="1" el="684" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="686" ordinal="431" sl="686" sc="1" el="686" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="687" ordinal="432" sl="687" sc="1" el="687" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="688" ordinal="433" sl="688" sc="1" el="688" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="689" ordinal="434" sl="689" sc="1" el="689" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="690" ordinal="435" sl="690" sc="1" el="690" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="692" ordinal="436" sl="692" sc="1" el="692" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="693" ordinal="437" sl="693" sc="1" el="693" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="694" ordinal="438" sl="694" sc="1" el="694" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="695" ordinal="439" sl="695" sc="1" el="695" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="696" ordinal="440" sl="696" sc="1" el="696" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="698" ordinal="441" sl="698" sc="1" el="698" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="699" ordinal="442" sl="699" sc="1" el="699" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="700" ordinal="443" sl="700" sc="1" el="700" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="701" ordinal="444" sl="701" sc="1" el="701" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="702" ordinal="445" sl="702" sc="1" el="702" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="704" ordinal="446" sl="704" sc="1" el="704" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="705" ordinal="447" sl="705" sc="1" el="705" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="706" ordinal="448" sl="706" sc="1" el="706" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="707" ordinal="449" sl="707" sc="1" el="707" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="708" ordinal="450" sl="708" sc="1" el="708" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="710" ordinal="451" sl="710" sc="1" el="710" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="711" ordinal="452" sl="711" sc="1" el="711" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="712" ordinal="453" sl="712" sc="1" el="712" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="713" ordinal="454" sl="713" sc="1" el="713" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="714" ordinal="455" sl="714" sc="1" el="714" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="715" ordinal="456" sl="715" sc="1" el="715" ec="2" bec="0" bev="0" fileid="79" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="156" ec="1" el="715" bec="0" bev="0" fileid="79" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.NosCoreContext::.ctor(Microsoft.EntityFrameworkCore.DbContextOptions)</Name> <FileRef uid="79" /> <SequencePoints> <SequencePoint vc="0" uspid="28" ordinal="0" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="29" ordinal="1" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="79" /> <SequencePoint vc="0" uspid="30" ordinal="2" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="79" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="28" ec="1" el="30" bec="0" bev="0" fileid="79" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2325" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Database.Migrations.Aphrodite1</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2189" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Migrations.Aphrodite1::Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)</Name> <FileRef uid="80" /> <SequencePoints> <SequencePoint vc="0" uspid="10" ordinal="0" sl="10" sc="1" el="10" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="11" ordinal="1" sl="11" sc="1" el="11" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="12" ordinal="2" sl="12" sc="1" el="12" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="13" ordinal="3" sl="13" sc="1" el="13" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="14" ordinal="4" sl="14" sc="1" el="14" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="15" ordinal="5" sl="15" sc="1" el="15" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="16" ordinal="6" sl="16" sc="1" el="16" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="17" ordinal="7" sl="17" sc="1" el="17" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="18" ordinal="8" sl="18" sc="1" el="18" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="19" ordinal="9" sl="19" sc="1" el="19" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="20" ordinal="10" sl="20" sc="1" el="20" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="21" ordinal="11" sl="21" sc="1" el="21" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="22" ordinal="12" sl="22" sc="1" el="22" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="23" ordinal="13" sl="23" sc="1" el="23" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="24" ordinal="14" sl="24" sc="1" el="24" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="25" ordinal="15" sl="25" sc="1" el="25" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="26" ordinal="16" sl="26" sc="1" el="26" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="27" ordinal="17" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="28" ordinal="18" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="29" ordinal="19" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="30" ordinal="20" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="31" ordinal="21" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="32" ordinal="22" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="34" ordinal="23" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="35" ordinal="24" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="36" ordinal="25" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="37" ordinal="26" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="38" ordinal="27" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="39" ordinal="28" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="40" ordinal="29" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="41" ordinal="30" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="42" ordinal="31" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="43" ordinal="32" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="44" ordinal="33" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="45" ordinal="34" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="47" ordinal="35" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="48" ordinal="36" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="49" ordinal="37" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="50" ordinal="38" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="51" ordinal="39" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="52" ordinal="40" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="53" ordinal="41" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="54" ordinal="42" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="55" ordinal="43" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="56" ordinal="44" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="57" ordinal="45" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="58" ordinal="46" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="59" ordinal="47" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="60" ordinal="48" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="61" ordinal="49" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="63" ordinal="50" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="64" ordinal="51" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="65" ordinal="52" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="66" ordinal="53" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="67" ordinal="54" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="68" ordinal="55" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="69" ordinal="56" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="70" ordinal="57" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="71" ordinal="58" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="72" ordinal="59" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="73" ordinal="60" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="74" ordinal="61" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="75" ordinal="62" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="76" ordinal="63" sl="76" sc="1" el="76" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="77" ordinal="64" sl="77" sc="1" el="77" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="78" ordinal="65" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="79" ordinal="66" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="80" ordinal="67" sl="80" sc="1" el="80" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="81" ordinal="68" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="83" ordinal="69" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="84" ordinal="70" sl="84" sc="1" el="84" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="85" ordinal="71" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="86" ordinal="72" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="87" ordinal="73" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="88" ordinal="74" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="89" ordinal="75" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="90" ordinal="76" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="91" ordinal="77" sl="91" sc="1" el="91" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="92" ordinal="78" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="93" ordinal="79" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="94" ordinal="80" sl="94" sc="1" el="94" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="95" ordinal="81" sl="95" sc="1" el="95" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="96" ordinal="82" sl="96" sc="1" el="96" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="97" ordinal="83" sl="97" sc="1" el="97" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="98" ordinal="84" sl="98" sc="1" el="98" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="99" ordinal="85" sl="99" sc="1" el="99" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="100" ordinal="86" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="101" ordinal="87" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="102" ordinal="88" sl="102" sc="1" el="102" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="103" ordinal="89" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="104" ordinal="90" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="105" ordinal="91" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="106" ordinal="92" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="107" ordinal="93" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="108" ordinal="94" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="110" ordinal="95" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="111" ordinal="96" sl="111" sc="1" el="111" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="112" ordinal="97" sl="112" sc="1" el="112" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="113" ordinal="98" sl="113" sc="1" el="113" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="114" ordinal="99" sl="114" sc="1" el="114" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="115" ordinal="100" sl="115" sc="1" el="115" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="116" ordinal="101" sl="116" sc="1" el="116" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="117" ordinal="102" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="118" ordinal="103" sl="118" sc="1" el="118" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="119" ordinal="104" sl="119" sc="1" el="119" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="120" ordinal="105" sl="120" sc="1" el="120" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="121" ordinal="106" sl="121" sc="1" el="121" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="122" ordinal="107" sl="122" sc="1" el="122" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="123" ordinal="108" sl="123" sc="1" el="123" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="125" ordinal="109" sl="125" sc="1" el="125" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="126" ordinal="110" sl="126" sc="1" el="126" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="127" ordinal="111" sl="127" sc="1" el="127" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="128" ordinal="112" sl="128" sc="1" el="128" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="129" ordinal="113" sl="129" sc="1" el="129" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="130" ordinal="114" sl="130" sc="1" el="130" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="131" ordinal="115" sl="131" sc="1" el="131" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="132" ordinal="116" sl="132" sc="1" el="132" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="133" ordinal="117" sl="133" sc="1" el="133" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="134" ordinal="118" sl="134" sc="1" el="134" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="135" ordinal="119" sl="135" sc="1" el="135" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="136" ordinal="120" sl="136" sc="1" el="136" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="137" ordinal="121" sl="137" sc="1" el="137" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="138" ordinal="122" sl="138" sc="1" el="138" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="140" ordinal="123" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="141" ordinal="124" sl="141" sc="1" el="141" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="142" ordinal="125" sl="142" sc="1" el="142" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="143" ordinal="126" sl="143" sc="1" el="143" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="144" ordinal="127" sl="144" sc="1" el="144" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="145" ordinal="128" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="146" ordinal="129" sl="146" sc="1" el="146" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="147" ordinal="130" sl="147" sc="1" el="147" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="148" ordinal="131" sl="148" sc="1" el="148" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="149" ordinal="132" sl="149" sc="1" el="149" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="150" ordinal="133" sl="150" sc="1" el="150" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="151" ordinal="134" sl="151" sc="1" el="151" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="152" ordinal="135" sl="152" sc="1" el="152" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="153" ordinal="136" sl="153" sc="1" el="153" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="155" ordinal="137" sl="155" sc="1" el="155" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="156" ordinal="138" sl="156" sc="1" el="156" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="157" ordinal="139" sl="157" sc="1" el="157" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="158" ordinal="140" sl="158" sc="1" el="158" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="159" ordinal="141" sl="159" sc="1" el="159" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="160" ordinal="142" sl="160" sc="1" el="160" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="161" ordinal="143" sl="161" sc="1" el="161" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="162" ordinal="144" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="163" ordinal="145" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="164" ordinal="146" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="165" ordinal="147" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="166" ordinal="148" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="167" ordinal="149" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="168" ordinal="150" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="170" ordinal="151" sl="170" sc="1" el="170" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="171" ordinal="152" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="172" ordinal="153" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="173" ordinal="154" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="174" ordinal="155" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="175" ordinal="156" sl="175" sc="1" el="175" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="176" ordinal="157" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="177" ordinal="158" sl="177" sc="1" el="177" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="178" ordinal="159" sl="178" sc="1" el="178" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="179" ordinal="160" sl="179" sc="1" el="179" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="180" ordinal="161" sl="180" sc="1" el="180" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="181" ordinal="162" sl="181" sc="1" el="181" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="182" ordinal="163" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="183" ordinal="164" sl="183" sc="1" el="183" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="185" ordinal="165" sl="185" sc="1" el="185" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="186" ordinal="166" sl="186" sc="1" el="186" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="187" ordinal="167" sl="187" sc="1" el="187" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="188" ordinal="168" sl="188" sc="1" el="188" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="189" ordinal="169" sl="189" sc="1" el="189" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="190" ordinal="170" sl="190" sc="1" el="190" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="191" ordinal="171" sl="191" sc="1" el="191" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="192" ordinal="172" sl="192" sc="1" el="192" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="193" ordinal="173" sl="193" sc="1" el="193" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="194" ordinal="174" sl="194" sc="1" el="194" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="195" ordinal="175" sl="195" sc="1" el="195" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="196" ordinal="176" sl="196" sc="1" el="196" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="197" ordinal="177" sl="197" sc="1" el="197" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="198" ordinal="178" sl="198" sc="1" el="198" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="200" ordinal="179" sl="200" sc="1" el="200" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="201" ordinal="180" sl="201" sc="1" el="201" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="202" ordinal="181" sl="202" sc="1" el="202" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="203" ordinal="182" sl="203" sc="1" el="203" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="204" ordinal="183" sl="204" sc="1" el="204" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="205" ordinal="184" sl="205" sc="1" el="205" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="206" ordinal="185" sl="206" sc="1" el="206" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="207" ordinal="186" sl="207" sc="1" el="207" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="208" ordinal="187" sl="208" sc="1" el="208" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="209" ordinal="188" sl="209" sc="1" el="209" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="210" ordinal="189" sl="210" sc="1" el="210" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="211" ordinal="190" sl="211" sc="1" el="211" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="212" ordinal="191" sl="212" sc="1" el="212" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="213" ordinal="192" sl="213" sc="1" el="213" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="215" ordinal="193" sl="215" sc="1" el="215" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="216" ordinal="194" sl="216" sc="1" el="216" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="217" ordinal="195" sl="217" sc="1" el="217" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="218" ordinal="196" sl="218" sc="1" el="218" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="219" ordinal="197" sl="219" sc="1" el="219" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="220" ordinal="198" sl="220" sc="1" el="220" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="221" ordinal="199" sl="221" sc="1" el="221" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="222" ordinal="200" sl="222" sc="1" el="222" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="223" ordinal="201" sl="223" sc="1" el="223" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="224" ordinal="202" sl="224" sc="1" el="224" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="225" ordinal="203" sl="225" sc="1" el="225" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="226" ordinal="204" sl="226" sc="1" el="226" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="227" ordinal="205" sl="227" sc="1" el="227" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="228" ordinal="206" sl="228" sc="1" el="228" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="230" ordinal="207" sl="230" sc="1" el="230" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="231" ordinal="208" sl="231" sc="1" el="231" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="232" ordinal="209" sl="232" sc="1" el="232" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="233" ordinal="210" sl="233" sc="1" el="233" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="234" ordinal="211" sl="234" sc="1" el="234" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="235" ordinal="212" sl="235" sc="1" el="235" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="236" ordinal="213" sl="236" sc="1" el="236" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="237" ordinal="214" sl="237" sc="1" el="237" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="238" ordinal="215" sl="238" sc="1" el="238" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="239" ordinal="216" sl="239" sc="1" el="239" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="240" ordinal="217" sl="240" sc="1" el="240" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="241" ordinal="218" sl="241" sc="1" el="241" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="242" ordinal="219" sl="242" sc="1" el="242" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="243" ordinal="220" sl="243" sc="1" el="243" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="245" ordinal="221" sl="245" sc="1" el="245" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="246" ordinal="222" sl="246" sc="1" el="246" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="247" ordinal="223" sl="247" sc="1" el="247" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="248" ordinal="224" sl="248" sc="1" el="248" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="249" ordinal="225" sl="249" sc="1" el="249" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="250" ordinal="226" sl="250" sc="1" el="250" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="251" ordinal="227" sl="251" sc="1" el="251" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="252" ordinal="228" sl="252" sc="1" el="252" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="253" ordinal="229" sl="253" sc="1" el="253" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="254" ordinal="230" sl="254" sc="1" el="254" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="255" ordinal="231" sl="255" sc="1" el="255" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="256" ordinal="232" sl="256" sc="1" el="256" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="257" ordinal="233" sl="257" sc="1" el="257" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="258" ordinal="234" sl="258" sc="1" el="258" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="260" ordinal="235" sl="260" sc="1" el="260" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="261" ordinal="236" sl="261" sc="1" el="261" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="262" ordinal="237" sl="262" sc="1" el="262" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="263" ordinal="238" sl="263" sc="1" el="263" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="264" ordinal="239" sl="264" sc="1" el="264" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="265" ordinal="240" sl="265" sc="1" el="265" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="266" ordinal="241" sl="266" sc="1" el="266" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="267" ordinal="242" sl="267" sc="1" el="267" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="268" ordinal="243" sl="268" sc="1" el="268" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="269" ordinal="244" sl="269" sc="1" el="269" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="270" ordinal="245" sl="270" sc="1" el="270" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="271" ordinal="246" sl="271" sc="1" el="271" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="272" ordinal="247" sl="272" sc="1" el="272" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="273" ordinal="248" sl="273" sc="1" el="273" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="274" ordinal="249" sl="274" sc="1" el="274" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="275" ordinal="250" sl="275" sc="1" el="275" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="276" ordinal="251" sl="276" sc="1" el="276" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="277" ordinal="252" sl="277" sc="1" el="277" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="278" ordinal="253" sl="278" sc="1" el="278" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="279" ordinal="254" sl="279" sc="1" el="279" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="280" ordinal="255" sl="280" sc="1" el="280" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="281" ordinal="256" sl="281" sc="1" el="281" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="282" ordinal="257" sl="282" sc="1" el="282" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="283" ordinal="258" sl="283" sc="1" el="283" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="284" ordinal="259" sl="284" sc="1" el="284" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="285" ordinal="260" sl="285" sc="1" el="285" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="286" ordinal="261" sl="286" sc="1" el="286" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="287" ordinal="262" sl="287" sc="1" el="287" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="288" ordinal="263" sl="288" sc="1" el="288" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="289" ordinal="264" sl="289" sc="1" el="289" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="290" ordinal="265" sl="290" sc="1" el="290" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="291" ordinal="266" sl="291" sc="1" el="291" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="292" ordinal="267" sl="292" sc="1" el="292" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="293" ordinal="268" sl="293" sc="1" el="293" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="294" ordinal="269" sl="294" sc="1" el="294" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="295" ordinal="270" sl="295" sc="1" el="295" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="296" ordinal="271" sl="296" sc="1" el="296" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="297" ordinal="272" sl="297" sc="1" el="297" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="298" ordinal="273" sl="298" sc="1" el="298" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="299" ordinal="274" sl="299" sc="1" el="299" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="300" ordinal="275" sl="300" sc="1" el="300" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="301" ordinal="276" sl="301" sc="1" el="301" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="302" ordinal="277" sl="302" sc="1" el="302" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="303" ordinal="278" sl="303" sc="1" el="303" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="304" ordinal="279" sl="304" sc="1" el="304" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="305" ordinal="280" sl="305" sc="1" el="305" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="306" ordinal="281" sl="306" sc="1" el="306" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="307" ordinal="282" sl="307" sc="1" el="307" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="308" ordinal="283" sl="308" sc="1" el="308" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="309" ordinal="284" sl="309" sc="1" el="309" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="310" ordinal="285" sl="310" sc="1" el="310" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="311" ordinal="286" sl="311" sc="1" el="311" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="312" ordinal="287" sl="312" sc="1" el="312" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="313" ordinal="288" sl="313" sc="1" el="313" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="314" ordinal="289" sl="314" sc="1" el="314" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="315" ordinal="290" sl="315" sc="1" el="315" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="316" ordinal="291" sl="316" sc="1" el="316" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="317" ordinal="292" sl="317" sc="1" el="317" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="318" ordinal="293" sl="318" sc="1" el="318" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="319" ordinal="294" sl="319" sc="1" el="319" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="320" ordinal="295" sl="320" sc="1" el="320" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="321" ordinal="296" sl="321" sc="1" el="321" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="322" ordinal="297" sl="322" sc="1" el="322" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="323" ordinal="298" sl="323" sc="1" el="323" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="324" ordinal="299" sl="324" sc="1" el="324" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="325" ordinal="300" sl="325" sc="1" el="325" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="326" ordinal="301" sl="326" sc="1" el="326" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="327" ordinal="302" sl="327" sc="1" el="327" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="328" ordinal="303" sl="328" sc="1" el="328" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="329" ordinal="304" sl="329" sc="1" el="329" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="330" ordinal="305" sl="330" sc="1" el="330" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="331" ordinal="306" sl="331" sc="1" el="331" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="332" ordinal="307" sl="332" sc="1" el="332" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="333" ordinal="308" sl="333" sc="1" el="333" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="334" ordinal="309" sl="334" sc="1" el="334" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="335" ordinal="310" sl="335" sc="1" el="335" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="336" ordinal="311" sl="336" sc="1" el="336" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="337" ordinal="312" sl="337" sc="1" el="337" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="338" ordinal="313" sl="338" sc="1" el="338" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="339" ordinal="314" sl="339" sc="1" el="339" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="340" ordinal="315" sl="340" sc="1" el="340" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="341" ordinal="316" sl="341" sc="1" el="341" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="342" ordinal="317" sl="342" sc="1" el="342" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="343" ordinal="318" sl="343" sc="1" el="343" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="344" ordinal="319" sl="344" sc="1" el="344" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="345" ordinal="320" sl="345" sc="1" el="345" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="346" ordinal="321" sl="346" sc="1" el="346" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="347" ordinal="322" sl="347" sc="1" el="347" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="349" ordinal="323" sl="349" sc="1" el="349" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="350" ordinal="324" sl="350" sc="1" el="350" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="351" ordinal="325" sl="351" sc="1" el="351" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="352" ordinal="326" sl="352" sc="1" el="352" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="353" ordinal="327" sl="353" sc="1" el="353" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="354" ordinal="328" sl="354" sc="1" el="354" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="355" ordinal="329" sl="355" sc="1" el="355" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="356" ordinal="330" sl="356" sc="1" el="356" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="357" ordinal="331" sl="357" sc="1" el="357" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="358" ordinal="332" sl="358" sc="1" el="358" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="359" ordinal="333" sl="359" sc="1" el="359" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="360" ordinal="334" sl="360" sc="1" el="360" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="361" ordinal="335" sl="361" sc="1" el="361" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="362" ordinal="336" sl="362" sc="1" el="362" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="364" ordinal="337" sl="364" sc="1" el="364" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="365" ordinal="338" sl="365" sc="1" el="365" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="366" ordinal="339" sl="366" sc="1" el="366" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="367" ordinal="340" sl="367" sc="1" el="367" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="368" ordinal="341" sl="368" sc="1" el="368" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="369" ordinal="342" sl="369" sc="1" el="369" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="370" ordinal="343" sl="370" sc="1" el="370" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="371" ordinal="344" sl="371" sc="1" el="371" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="372" ordinal="345" sl="372" sc="1" el="372" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="373" ordinal="346" sl="373" sc="1" el="373" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="374" ordinal="347" sl="374" sc="1" el="374" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="375" ordinal="348" sl="375" sc="1" el="375" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="376" ordinal="349" sl="376" sc="1" el="376" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="377" ordinal="350" sl="377" sc="1" el="377" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="378" ordinal="351" sl="378" sc="1" el="378" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="379" ordinal="352" sl="379" sc="1" el="379" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="380" ordinal="353" sl="380" sc="1" el="380" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="381" ordinal="354" sl="381" sc="1" el="381" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="382" ordinal="355" sl="382" sc="1" el="382" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="383" ordinal="356" sl="383" sc="1" el="383" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="384" ordinal="357" sl="384" sc="1" el="384" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="385" ordinal="358" sl="385" sc="1" el="385" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="386" ordinal="359" sl="386" sc="1" el="386" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="387" ordinal="360" sl="387" sc="1" el="387" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="388" ordinal="361" sl="388" sc="1" el="388" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="389" ordinal="362" sl="389" sc="1" el="389" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="390" ordinal="363" sl="390" sc="1" el="390" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="391" ordinal="364" sl="391" sc="1" el="391" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="392" ordinal="365" sl="392" sc="1" el="392" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="393" ordinal="366" sl="393" sc="1" el="393" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="394" ordinal="367" sl="394" sc="1" el="394" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="395" ordinal="368" sl="395" sc="1" el="395" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="396" ordinal="369" sl="396" sc="1" el="396" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="397" ordinal="370" sl="397" sc="1" el="397" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="398" ordinal="371" sl="398" sc="1" el="398" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="399" ordinal="372" sl="399" sc="1" el="399" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="400" ordinal="373" sl="400" sc="1" el="400" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="401" ordinal="374" sl="401" sc="1" el="401" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="402" ordinal="375" sl="402" sc="1" el="402" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="403" ordinal="376" sl="403" sc="1" el="403" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="404" ordinal="377" sl="404" sc="1" el="404" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="405" ordinal="378" sl="405" sc="1" el="405" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="406" ordinal="379" sl="406" sc="1" el="406" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="407" ordinal="380" sl="407" sc="1" el="407" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="408" ordinal="381" sl="408" sc="1" el="408" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="409" ordinal="382" sl="409" sc="1" el="409" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="410" ordinal="383" sl="410" sc="1" el="410" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="411" ordinal="384" sl="411" sc="1" el="411" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="412" ordinal="385" sl="412" sc="1" el="412" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="413" ordinal="386" sl="413" sc="1" el="413" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="414" ordinal="387" sl="414" sc="1" el="414" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="415" ordinal="388" sl="415" sc="1" el="415" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="416" ordinal="389" sl="416" sc="1" el="416" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="417" ordinal="390" sl="417" sc="1" el="417" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="419" ordinal="391" sl="419" sc="1" el="419" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="420" ordinal="392" sl="420" sc="1" el="420" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="421" ordinal="393" sl="421" sc="1" el="421" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="422" ordinal="394" sl="422" sc="1" el="422" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="423" ordinal="395" sl="423" sc="1" el="423" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="424" ordinal="396" sl="424" sc="1" el="424" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="425" ordinal="397" sl="425" sc="1" el="425" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="426" ordinal="398" sl="426" sc="1" el="426" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="427" ordinal="399" sl="427" sc="1" el="427" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="428" ordinal="400" sl="428" sc="1" el="428" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="429" ordinal="401" sl="429" sc="1" el="429" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="430" ordinal="402" sl="430" sc="1" el="430" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="432" ordinal="403" sl="432" sc="1" el="432" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="433" ordinal="404" sl="433" sc="1" el="433" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="434" ordinal="405" sl="434" sc="1" el="434" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="435" ordinal="406" sl="435" sc="1" el="435" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="436" ordinal="407" sl="436" sc="1" el="436" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="437" ordinal="408" sl="437" sc="1" el="437" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="438" ordinal="409" sl="438" sc="1" el="438" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="439" ordinal="410" sl="439" sc="1" el="439" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="440" ordinal="411" sl="440" sc="1" el="440" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="441" ordinal="412" sl="441" sc="1" el="441" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="442" ordinal="413" sl="442" sc="1" el="442" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="443" ordinal="414" sl="443" sc="1" el="443" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="444" ordinal="415" sl="444" sc="1" el="444" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="445" ordinal="416" sl="445" sc="1" el="445" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="446" ordinal="417" sl="446" sc="1" el="446" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="447" ordinal="418" sl="447" sc="1" el="447" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="448" ordinal="419" sl="448" sc="1" el="448" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="449" ordinal="420" sl="449" sc="1" el="449" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="450" ordinal="421" sl="450" sc="1" el="450" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="451" ordinal="422" sl="451" sc="1" el="451" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="452" ordinal="423" sl="452" sc="1" el="452" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="453" ordinal="424" sl="453" sc="1" el="453" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="454" ordinal="425" sl="454" sc="1" el="454" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="455" ordinal="426" sl="455" sc="1" el="455" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="456" ordinal="427" sl="456" sc="1" el="456" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="457" ordinal="428" sl="457" sc="1" el="457" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="459" ordinal="429" sl="459" sc="1" el="459" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="460" ordinal="430" sl="460" sc="1" el="460" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="461" ordinal="431" sl="461" sc="1" el="461" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="462" ordinal="432" sl="462" sc="1" el="462" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="463" ordinal="433" sl="463" sc="1" el="463" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="464" ordinal="434" sl="464" sc="1" el="464" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="465" ordinal="435" sl="465" sc="1" el="465" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="466" ordinal="436" sl="466" sc="1" el="466" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="467" ordinal="437" sl="467" sc="1" el="467" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="468" ordinal="438" sl="468" sc="1" el="468" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="469" ordinal="439" sl="469" sc="1" el="469" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="470" ordinal="440" sl="470" sc="1" el="470" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="471" ordinal="441" sl="471" sc="1" el="471" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="472" ordinal="442" sl="472" sc="1" el="472" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="473" ordinal="443" sl="473" sc="1" el="473" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="474" ordinal="444" sl="474" sc="1" el="474" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="475" ordinal="445" sl="475" sc="1" el="475" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="477" ordinal="446" sl="477" sc="1" el="477" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="478" ordinal="447" sl="478" sc="1" el="478" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="479" ordinal="448" sl="479" sc="1" el="479" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="480" ordinal="449" sl="480" sc="1" el="480" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="481" ordinal="450" sl="481" sc="1" el="481" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="482" ordinal="451" sl="482" sc="1" el="482" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="483" ordinal="452" sl="483" sc="1" el="483" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="484" ordinal="453" sl="484" sc="1" el="484" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="485" ordinal="454" sl="485" sc="1" el="485" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="486" ordinal="455" sl="486" sc="1" el="486" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="487" ordinal="456" sl="487" sc="1" el="487" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="488" ordinal="457" sl="488" sc="1" el="488" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="489" ordinal="458" sl="489" sc="1" el="489" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="490" ordinal="459" sl="490" sc="1" el="490" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="491" ordinal="460" sl="491" sc="1" el="491" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="492" ordinal="461" sl="492" sc="1" el="492" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="493" ordinal="462" sl="493" sc="1" el="493" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="495" ordinal="463" sl="495" sc="1" el="495" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="496" ordinal="464" sl="496" sc="1" el="496" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="497" ordinal="465" sl="497" sc="1" el="497" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="498" ordinal="466" sl="498" sc="1" el="498" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="499" ordinal="467" sl="499" sc="1" el="499" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="500" ordinal="468" sl="500" sc="1" el="500" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="501" ordinal="469" sl="501" sc="1" el="501" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="502" ordinal="470" sl="502" sc="1" el="502" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="503" ordinal="471" sl="503" sc="1" el="503" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="504" ordinal="472" sl="504" sc="1" el="504" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="505" ordinal="473" sl="505" sc="1" el="505" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="506" ordinal="474" sl="506" sc="1" el="506" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="507" ordinal="475" sl="507" sc="1" el="507" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="508" ordinal="476" sl="508" sc="1" el="508" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="509" ordinal="477" sl="509" sc="1" el="509" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="510" ordinal="478" sl="510" sc="1" el="510" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="511" ordinal="479" sl="511" sc="1" el="511" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="512" ordinal="480" sl="512" sc="1" el="512" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="513" ordinal="481" sl="513" sc="1" el="513" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="514" ordinal="482" sl="514" sc="1" el="514" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="515" ordinal="483" sl="515" sc="1" el="515" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="516" ordinal="484" sl="516" sc="1" el="516" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="517" ordinal="485" sl="517" sc="1" el="517" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="518" ordinal="486" sl="518" sc="1" el="518" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="519" ordinal="487" sl="519" sc="1" el="519" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="520" ordinal="488" sl="520" sc="1" el="520" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="521" ordinal="489" sl="521" sc="1" el="521" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="522" ordinal="490" sl="522" sc="1" el="522" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="523" ordinal="491" sl="523" sc="1" el="523" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="524" ordinal="492" sl="524" sc="1" el="524" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="525" ordinal="493" sl="525" sc="1" el="525" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="526" ordinal="494" sl="526" sc="1" el="526" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="527" ordinal="495" sl="527" sc="1" el="527" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="528" ordinal="496" sl="528" sc="1" el="528" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="529" ordinal="497" sl="529" sc="1" el="529" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="530" ordinal="498" sl="530" sc="1" el="530" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="531" ordinal="499" sl="531" sc="1" el="531" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="532" ordinal="500" sl="532" sc="1" el="532" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="533" ordinal="501" sl="533" sc="1" el="533" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="535" ordinal="502" sl="535" sc="1" el="535" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="536" ordinal="503" sl="536" sc="1" el="536" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="537" ordinal="504" sl="537" sc="1" el="537" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="538" ordinal="505" sl="538" sc="1" el="538" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="539" ordinal="506" sl="539" sc="1" el="539" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="540" ordinal="507" sl="540" sc="1" el="540" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="541" ordinal="508" sl="541" sc="1" el="541" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="542" ordinal="509" sl="542" sc="1" el="542" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="543" ordinal="510" sl="543" sc="1" el="543" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="544" ordinal="511" sl="544" sc="1" el="544" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="545" ordinal="512" sl="545" sc="1" el="545" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="546" ordinal="513" sl="546" sc="1" el="546" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="547" ordinal="514" sl="547" sc="1" el="547" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="548" ordinal="515" sl="548" sc="1" el="548" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="549" ordinal="516" sl="549" sc="1" el="549" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="550" ordinal="517" sl="550" sc="1" el="550" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="551" ordinal="518" sl="551" sc="1" el="551" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="552" ordinal="519" sl="552" sc="1" el="552" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="553" ordinal="520" sl="553" sc="1" el="553" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="554" ordinal="521" sl="554" sc="1" el="554" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="555" ordinal="522" sl="555" sc="1" el="555" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="556" ordinal="523" sl="556" sc="1" el="556" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="557" ordinal="524" sl="557" sc="1" el="557" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="559" ordinal="525" sl="559" sc="1" el="559" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="560" ordinal="526" sl="560" sc="1" el="560" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="561" ordinal="527" sl="561" sc="1" el="561" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="562" ordinal="528" sl="562" sc="1" el="562" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="563" ordinal="529" sl="563" sc="1" el="563" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="564" ordinal="530" sl="564" sc="1" el="564" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="565" ordinal="531" sl="565" sc="1" el="565" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="566" ordinal="532" sl="566" sc="1" el="566" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="567" ordinal="533" sl="567" sc="1" el="567" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="568" ordinal="534" sl="568" sc="1" el="568" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="569" ordinal="535" sl="569" sc="1" el="569" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="570" ordinal="536" sl="570" sc="1" el="570" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="571" ordinal="537" sl="571" sc="1" el="571" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="572" ordinal="538" sl="572" sc="1" el="572" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="573" ordinal="539" sl="573" sc="1" el="573" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="574" ordinal="540" sl="574" sc="1" el="574" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="575" ordinal="541" sl="575" sc="1" el="575" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="576" ordinal="542" sl="576" sc="1" el="576" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="577" ordinal="543" sl="577" sc="1" el="577" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="579" ordinal="544" sl="579" sc="1" el="579" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="580" ordinal="545" sl="580" sc="1" el="580" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="581" ordinal="546" sl="581" sc="1" el="581" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="582" ordinal="547" sl="582" sc="1" el="582" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="583" ordinal="548" sl="583" sc="1" el="583" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="584" ordinal="549" sl="584" sc="1" el="584" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="585" ordinal="550" sl="585" sc="1" el="585" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="586" ordinal="551" sl="586" sc="1" el="586" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="587" ordinal="552" sl="587" sc="1" el="587" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="588" ordinal="553" sl="588" sc="1" el="588" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="589" ordinal="554" sl="589" sc="1" el="589" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="590" ordinal="555" sl="590" sc="1" el="590" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="591" ordinal="556" sl="591" sc="1" el="591" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="592" ordinal="557" sl="592" sc="1" el="592" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="593" ordinal="558" sl="593" sc="1" el="593" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="594" ordinal="559" sl="594" sc="1" el="594" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="595" ordinal="560" sl="595" sc="1" el="595" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="596" ordinal="561" sl="596" sc="1" el="596" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="597" ordinal="562" sl="597" sc="1" el="597" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="598" ordinal="563" sl="598" sc="1" el="598" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="599" ordinal="564" sl="599" sc="1" el="599" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="601" ordinal="565" sl="601" sc="1" el="601" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="602" ordinal="566" sl="602" sc="1" el="602" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="603" ordinal="567" sl="603" sc="1" el="603" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="604" ordinal="568" sl="604" sc="1" el="604" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="605" ordinal="569" sl="605" sc="1" el="605" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="606" ordinal="570" sl="606" sc="1" el="606" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="607" ordinal="571" sl="607" sc="1" el="607" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="608" ordinal="572" sl="608" sc="1" el="608" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="609" ordinal="573" sl="609" sc="1" el="609" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="610" ordinal="574" sl="610" sc="1" el="610" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="611" ordinal="575" sl="611" sc="1" el="611" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="612" ordinal="576" sl="612" sc="1" el="612" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="613" ordinal="577" sl="613" sc="1" el="613" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="614" ordinal="578" sl="614" sc="1" el="614" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="615" ordinal="579" sl="615" sc="1" el="615" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="616" ordinal="580" sl="616" sc="1" el="616" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="617" ordinal="581" sl="617" sc="1" el="617" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="618" ordinal="582" sl="618" sc="1" el="618" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="619" ordinal="583" sl="619" sc="1" el="619" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="620" ordinal="584" sl="620" sc="1" el="620" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="621" ordinal="585" sl="621" sc="1" el="621" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="622" ordinal="586" sl="622" sc="1" el="622" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="623" ordinal="587" sl="623" sc="1" el="623" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="624" ordinal="588" sl="624" sc="1" el="624" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="625" ordinal="589" sl="625" sc="1" el="625" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="626" ordinal="590" sl="626" sc="1" el="626" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="627" ordinal="591" sl="627" sc="1" el="627" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="628" ordinal="592" sl="628" sc="1" el="628" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="629" ordinal="593" sl="629" sc="1" el="629" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="630" ordinal="594" sl="630" sc="1" el="630" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="631" ordinal="595" sl="631" sc="1" el="631" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="632" ordinal="596" sl="632" sc="1" el="632" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="633" ordinal="597" sl="633" sc="1" el="633" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="635" ordinal="598" sl="635" sc="1" el="635" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="636" ordinal="599" sl="636" sc="1" el="636" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="637" ordinal="600" sl="637" sc="1" el="637" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="638" ordinal="601" sl="638" sc="1" el="638" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="639" ordinal="602" sl="639" sc="1" el="639" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="640" ordinal="603" sl="640" sc="1" el="640" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="641" ordinal="604" sl="641" sc="1" el="641" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="642" ordinal="605" sl="642" sc="1" el="642" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="643" ordinal="606" sl="643" sc="1" el="643" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="644" ordinal="607" sl="644" sc="1" el="644" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="645" ordinal="608" sl="645" sc="1" el="645" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="646" ordinal="609" sl="646" sc="1" el="646" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="647" ordinal="610" sl="647" sc="1" el="647" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="648" ordinal="611" sl="648" sc="1" el="648" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="649" ordinal="612" sl="649" sc="1" el="649" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="650" ordinal="613" sl="650" sc="1" el="650" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="651" ordinal="614" sl="651" sc="1" el="651" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="652" ordinal="615" sl="652" sc="1" el="652" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="653" ordinal="616" sl="653" sc="1" el="653" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="654" ordinal="617" sl="654" sc="1" el="654" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="655" ordinal="618" sl="655" sc="1" el="655" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="656" ordinal="619" sl="656" sc="1" el="656" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="657" ordinal="620" sl="657" sc="1" el="657" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="658" ordinal="621" sl="658" sc="1" el="658" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="659" ordinal="622" sl="659" sc="1" el="659" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="660" ordinal="623" sl="660" sc="1" el="660" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="661" ordinal="624" sl="661" sc="1" el="661" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="662" ordinal="625" sl="662" sc="1" el="662" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="663" ordinal="626" sl="663" sc="1" el="663" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="664" ordinal="627" sl="664" sc="1" el="664" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="665" ordinal="628" sl="665" sc="1" el="665" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="667" ordinal="629" sl="667" sc="1" el="667" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="668" ordinal="630" sl="668" sc="1" el="668" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="669" ordinal="631" sl="669" sc="1" el="669" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="670" ordinal="632" sl="670" sc="1" el="670" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="671" ordinal="633" sl="671" sc="1" el="671" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="672" ordinal="634" sl="672" sc="1" el="672" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="673" ordinal="635" sl="673" sc="1" el="673" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="674" ordinal="636" sl="674" sc="1" el="674" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="675" ordinal="637" sl="675" sc="1" el="675" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="676" ordinal="638" sl="676" sc="1" el="676" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="677" ordinal="639" sl="677" sc="1" el="677" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="678" ordinal="640" sl="678" sc="1" el="678" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="679" ordinal="641" sl="679" sc="1" el="679" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="680" ordinal="642" sl="680" sc="1" el="680" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="681" ordinal="643" sl="681" sc="1" el="681" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="682" ordinal="644" sl="682" sc="1" el="682" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="683" ordinal="645" sl="683" sc="1" el="683" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="684" ordinal="646" sl="684" sc="1" el="684" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="685" ordinal="647" sl="685" sc="1" el="685" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="686" ordinal="648" sl="686" sc="1" el="686" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="688" ordinal="649" sl="688" sc="1" el="688" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="689" ordinal="650" sl="689" sc="1" el="689" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="690" ordinal="651" sl="690" sc="1" el="690" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="691" ordinal="652" sl="691" sc="1" el="691" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="692" ordinal="653" sl="692" sc="1" el="692" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="693" ordinal="654" sl="693" sc="1" el="693" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="694" ordinal="655" sl="694" sc="1" el="694" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="695" ordinal="656" sl="695" sc="1" el="695" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="696" ordinal="657" sl="696" sc="1" el="696" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="697" ordinal="658" sl="697" sc="1" el="697" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="698" ordinal="659" sl="698" sc="1" el="698" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="699" ordinal="660" sl="699" sc="1" el="699" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="700" ordinal="661" sl="700" sc="1" el="700" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="701" ordinal="662" sl="701" sc="1" el="701" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="702" ordinal="663" sl="702" sc="1" el="702" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="703" ordinal="664" sl="703" sc="1" el="703" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="704" ordinal="665" sl="704" sc="1" el="704" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="705" ordinal="666" sl="705" sc="1" el="705" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="706" ordinal="667" sl="706" sc="1" el="706" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="707" ordinal="668" sl="707" sc="1" el="707" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="708" ordinal="669" sl="708" sc="1" el="708" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="709" ordinal="670" sl="709" sc="1" el="709" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="710" ordinal="671" sl="710" sc="1" el="710" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="712" ordinal="672" sl="712" sc="1" el="712" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="713" ordinal="673" sl="713" sc="1" el="713" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="714" ordinal="674" sl="714" sc="1" el="714" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="715" ordinal="675" sl="715" sc="1" el="715" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="716" ordinal="676" sl="716" sc="1" el="716" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="717" ordinal="677" sl="717" sc="1" el="717" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="718" ordinal="678" sl="718" sc="1" el="718" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="719" ordinal="679" sl="719" sc="1" el="719" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="720" ordinal="680" sl="720" sc="1" el="720" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="721" ordinal="681" sl="721" sc="1" el="721" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="722" ordinal="682" sl="722" sc="1" el="722" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="723" ordinal="683" sl="723" sc="1" el="723" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="724" ordinal="684" sl="724" sc="1" el="724" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="725" ordinal="685" sl="725" sc="1" el="725" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="726" ordinal="686" sl="726" sc="1" el="726" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="727" ordinal="687" sl="727" sc="1" el="727" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="728" ordinal="688" sl="728" sc="1" el="728" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="729" ordinal="689" sl="729" sc="1" el="729" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="730" ordinal="690" sl="730" sc="1" el="730" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="731" ordinal="691" sl="731" sc="1" el="731" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="732" ordinal="692" sl="732" sc="1" el="732" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="733" ordinal="693" sl="733" sc="1" el="733" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="734" ordinal="694" sl="734" sc="1" el="734" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="735" ordinal="695" sl="735" sc="1" el="735" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="736" ordinal="696" sl="736" sc="1" el="736" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="737" ordinal="697" sl="737" sc="1" el="737" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="738" ordinal="698" sl="738" sc="1" el="738" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="739" ordinal="699" sl="739" sc="1" el="739" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="740" ordinal="700" sl="740" sc="1" el="740" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="742" ordinal="701" sl="742" sc="1" el="742" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="743" ordinal="702" sl="743" sc="1" el="743" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="744" ordinal="703" sl="744" sc="1" el="744" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="745" ordinal="704" sl="745" sc="1" el="745" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="746" ordinal="705" sl="746" sc="1" el="746" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="747" ordinal="706" sl="747" sc="1" el="747" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="748" ordinal="707" sl="748" sc="1" el="748" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="749" ordinal="708" sl="749" sc="1" el="749" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="750" ordinal="709" sl="750" sc="1" el="750" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="751" ordinal="710" sl="751" sc="1" el="751" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="752" ordinal="711" sl="752" sc="1" el="752" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="753" ordinal="712" sl="753" sc="1" el="753" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="754" ordinal="713" sl="754" sc="1" el="754" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="755" ordinal="714" sl="755" sc="1" el="755" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="756" ordinal="715" sl="756" sc="1" el="756" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="757" ordinal="716" sl="757" sc="1" el="757" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="758" ordinal="717" sl="758" sc="1" el="758" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="759" ordinal="718" sl="759" sc="1" el="759" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="760" ordinal="719" sl="760" sc="1" el="760" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="761" ordinal="720" sl="761" sc="1" el="761" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="762" ordinal="721" sl="762" sc="1" el="762" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="763" ordinal="722" sl="763" sc="1" el="763" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="764" ordinal="723" sl="764" sc="1" el="764" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="765" ordinal="724" sl="765" sc="1" el="765" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="766" ordinal="725" sl="766" sc="1" el="766" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="767" ordinal="726" sl="767" sc="1" el="767" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="768" ordinal="727" sl="768" sc="1" el="768" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="769" ordinal="728" sl="769" sc="1" el="769" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="770" ordinal="729" sl="770" sc="1" el="770" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="771" ordinal="730" sl="771" sc="1" el="771" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="772" ordinal="731" sl="772" sc="1" el="772" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="773" ordinal="732" sl="773" sc="1" el="773" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="774" ordinal="733" sl="774" sc="1" el="774" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="775" ordinal="734" sl="775" sc="1" el="775" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="776" ordinal="735" sl="776" sc="1" el="776" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="777" ordinal="736" sl="777" sc="1" el="777" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="778" ordinal="737" sl="778" sc="1" el="778" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="779" ordinal="738" sl="779" sc="1" el="779" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="780" ordinal="739" sl="780" sc="1" el="780" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="782" ordinal="740" sl="782" sc="1" el="782" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="783" ordinal="741" sl="783" sc="1" el="783" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="784" ordinal="742" sl="784" sc="1" el="784" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="785" ordinal="743" sl="785" sc="1" el="785" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="786" ordinal="744" sl="786" sc="1" el="786" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="787" ordinal="745" sl="787" sc="1" el="787" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="788" ordinal="746" sl="788" sc="1" el="788" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="789" ordinal="747" sl="789" sc="1" el="789" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="790" ordinal="748" sl="790" sc="1" el="790" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="791" ordinal="749" sl="791" sc="1" el="791" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="792" ordinal="750" sl="792" sc="1" el="792" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="793" ordinal="751" sl="793" sc="1" el="793" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="794" ordinal="752" sl="794" sc="1" el="794" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="795" ordinal="753" sl="795" sc="1" el="795" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="796" ordinal="754" sl="796" sc="1" el="796" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="797" ordinal="755" sl="797" sc="1" el="797" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="798" ordinal="756" sl="798" sc="1" el="798" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="799" ordinal="757" sl="799" sc="1" el="799" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="800" ordinal="758" sl="800" sc="1" el="800" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="801" ordinal="759" sl="801" sc="1" el="801" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="802" ordinal="760" sl="802" sc="1" el="802" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="804" ordinal="761" sl="804" sc="1" el="804" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="805" ordinal="762" sl="805" sc="1" el="805" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="806" ordinal="763" sl="806" sc="1" el="806" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="807" ordinal="764" sl="807" sc="1" el="807" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="808" ordinal="765" sl="808" sc="1" el="808" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="809" ordinal="766" sl="809" sc="1" el="809" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="810" ordinal="767" sl="810" sc="1" el="810" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="811" ordinal="768" sl="811" sc="1" el="811" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="812" ordinal="769" sl="812" sc="1" el="812" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="813" ordinal="770" sl="813" sc="1" el="813" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="814" ordinal="771" sl="814" sc="1" el="814" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="815" ordinal="772" sl="815" sc="1" el="815" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="816" ordinal="773" sl="816" sc="1" el="816" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="817" ordinal="774" sl="817" sc="1" el="817" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="818" ordinal="775" sl="818" sc="1" el="818" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="819" ordinal="776" sl="819" sc="1" el="819" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="820" ordinal="777" sl="820" sc="1" el="820" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="821" ordinal="778" sl="821" sc="1" el="821" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="822" ordinal="779" sl="822" sc="1" el="822" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="823" ordinal="780" sl="823" sc="1" el="823" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="824" ordinal="781" sl="824" sc="1" el="824" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="825" ordinal="782" sl="825" sc="1" el="825" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="826" ordinal="783" sl="826" sc="1" el="826" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="827" ordinal="784" sl="827" sc="1" el="827" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="829" ordinal="785" sl="829" sc="1" el="829" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="830" ordinal="786" sl="830" sc="1" el="830" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="831" ordinal="787" sl="831" sc="1" el="831" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="832" ordinal="788" sl="832" sc="1" el="832" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="833" ordinal="789" sl="833" sc="1" el="833" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="834" ordinal="790" sl="834" sc="1" el="834" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="835" ordinal="791" sl="835" sc="1" el="835" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="836" ordinal="792" sl="836" sc="1" el="836" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="837" ordinal="793" sl="837" sc="1" el="837" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="838" ordinal="794" sl="838" sc="1" el="838" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="839" ordinal="795" sl="839" sc="1" el="839" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="840" ordinal="796" sl="840" sc="1" el="840" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="841" ordinal="797" sl="841" sc="1" el="841" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="842" ordinal="798" sl="842" sc="1" el="842" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="843" ordinal="799" sl="843" sc="1" el="843" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="844" ordinal="800" sl="844" sc="1" el="844" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="845" ordinal="801" sl="845" sc="1" el="845" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="846" ordinal="802" sl="846" sc="1" el="846" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="847" ordinal="803" sl="847" sc="1" el="847" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="848" ordinal="804" sl="848" sc="1" el="848" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="849" ordinal="805" sl="849" sc="1" el="849" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="850" ordinal="806" sl="850" sc="1" el="850" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="851" ordinal="807" sl="851" sc="1" el="851" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="852" ordinal="808" sl="852" sc="1" el="852" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="853" ordinal="809" sl="853" sc="1" el="853" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="854" ordinal="810" sl="854" sc="1" el="854" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="855" ordinal="811" sl="855" sc="1" el="855" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="856" ordinal="812" sl="856" sc="1" el="856" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="857" ordinal="813" sl="857" sc="1" el="857" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="858" ordinal="814" sl="858" sc="1" el="858" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="859" ordinal="815" sl="859" sc="1" el="859" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="860" ordinal="816" sl="860" sc="1" el="860" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="861" ordinal="817" sl="861" sc="1" el="861" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="862" ordinal="818" sl="862" sc="1" el="862" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="863" ordinal="819" sl="863" sc="1" el="863" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="864" ordinal="820" sl="864" sc="1" el="864" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="865" ordinal="821" sl="865" sc="1" el="865" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="866" ordinal="822" sl="866" sc="1" el="866" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="867" ordinal="823" sl="867" sc="1" el="867" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="868" ordinal="824" sl="868" sc="1" el="868" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="869" ordinal="825" sl="869" sc="1" el="869" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="870" ordinal="826" sl="870" sc="1" el="870" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="871" ordinal="827" sl="871" sc="1" el="871" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="872" ordinal="828" sl="872" sc="1" el="872" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="873" ordinal="829" sl="873" sc="1" el="873" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="874" ordinal="830" sl="874" sc="1" el="874" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="875" ordinal="831" sl="875" sc="1" el="875" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="876" ordinal="832" sl="876" sc="1" el="876" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="877" ordinal="833" sl="877" sc="1" el="877" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="878" ordinal="834" sl="878" sc="1" el="878" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="879" ordinal="835" sl="879" sc="1" el="879" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="880" ordinal="836" sl="880" sc="1" el="880" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="881" ordinal="837" sl="881" sc="1" el="881" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="882" ordinal="838" sl="882" sc="1" el="882" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="883" ordinal="839" sl="883" sc="1" el="883" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="884" ordinal="840" sl="884" sc="1" el="884" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="885" ordinal="841" sl="885" sc="1" el="885" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="886" ordinal="842" sl="886" sc="1" el="886" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="887" ordinal="843" sl="887" sc="1" el="887" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="888" ordinal="844" sl="888" sc="1" el="888" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="889" ordinal="845" sl="889" sc="1" el="889" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="890" ordinal="846" sl="890" sc="1" el="890" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="891" ordinal="847" sl="891" sc="1" el="891" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="892" ordinal="848" sl="892" sc="1" el="892" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="893" ordinal="849" sl="893" sc="1" el="893" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="894" ordinal="850" sl="894" sc="1" el="894" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="895" ordinal="851" sl="895" sc="1" el="895" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="896" ordinal="852" sl="896" sc="1" el="896" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="897" ordinal="853" sl="897" sc="1" el="897" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="898" ordinal="854" sl="898" sc="1" el="898" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="899" ordinal="855" sl="899" sc="1" el="899" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="900" ordinal="856" sl="900" sc="1" el="900" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="901" ordinal="857" sl="901" sc="1" el="901" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="902" ordinal="858" sl="902" sc="1" el="902" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="903" ordinal="859" sl="903" sc="1" el="903" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="904" ordinal="860" sl="904" sc="1" el="904" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="905" ordinal="861" sl="905" sc="1" el="905" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="906" ordinal="862" sl="906" sc="1" el="906" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="907" ordinal="863" sl="907" sc="1" el="907" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="908" ordinal="864" sl="908" sc="1" el="908" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="909" ordinal="865" sl="909" sc="1" el="909" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="910" ordinal="866" sl="910" sc="1" el="910" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="911" ordinal="867" sl="911" sc="1" el="911" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="913" ordinal="868" sl="913" sc="1" el="913" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="914" ordinal="869" sl="914" sc="1" el="914" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="915" ordinal="870" sl="915" sc="1" el="915" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="916" ordinal="871" sl="916" sc="1" el="916" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="917" ordinal="872" sl="917" sc="1" el="917" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="918" ordinal="873" sl="918" sc="1" el="918" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="919" ordinal="874" sl="919" sc="1" el="919" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="920" ordinal="875" sl="920" sc="1" el="920" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="921" ordinal="876" sl="921" sc="1" el="921" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="922" ordinal="877" sl="922" sc="1" el="922" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="923" ordinal="878" sl="923" sc="1" el="923" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="924" ordinal="879" sl="924" sc="1" el="924" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="925" ordinal="880" sl="925" sc="1" el="925" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="926" ordinal="881" sl="926" sc="1" el="926" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="927" ordinal="882" sl="927" sc="1" el="927" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="928" ordinal="883" sl="928" sc="1" el="928" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="929" ordinal="884" sl="929" sc="1" el="929" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="930" ordinal="885" sl="930" sc="1" el="930" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="931" ordinal="886" sl="931" sc="1" el="931" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="932" ordinal="887" sl="932" sc="1" el="932" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="933" ordinal="888" sl="933" sc="1" el="933" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="934" ordinal="889" sl="934" sc="1" el="934" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="935" ordinal="890" sl="935" sc="1" el="935" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="936" ordinal="891" sl="936" sc="1" el="936" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="937" ordinal="892" sl="937" sc="1" el="937" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="938" ordinal="893" sl="938" sc="1" el="938" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="939" ordinal="894" sl="939" sc="1" el="939" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="940" ordinal="895" sl="940" sc="1" el="940" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="941" ordinal="896" sl="941" sc="1" el="941" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="942" ordinal="897" sl="942" sc="1" el="942" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="943" ordinal="898" sl="943" sc="1" el="943" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="944" ordinal="899" sl="944" sc="1" el="944" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="945" ordinal="900" sl="945" sc="1" el="945" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="946" ordinal="901" sl="946" sc="1" el="946" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="947" ordinal="902" sl="947" sc="1" el="947" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="948" ordinal="903" sl="948" sc="1" el="948" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="949" ordinal="904" sl="949" sc="1" el="949" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="950" ordinal="905" sl="950" sc="1" el="950" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="951" ordinal="906" sl="951" sc="1" el="951" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="952" ordinal="907" sl="952" sc="1" el="952" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="953" ordinal="908" sl="953" sc="1" el="953" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="954" ordinal="909" sl="954" sc="1" el="954" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="955" ordinal="910" sl="955" sc="1" el="955" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="956" ordinal="911" sl="956" sc="1" el="956" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="957" ordinal="912" sl="957" sc="1" el="957" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="958" ordinal="913" sl="958" sc="1" el="958" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="959" ordinal="914" sl="959" sc="1" el="959" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="961" ordinal="915" sl="961" sc="1" el="961" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="962" ordinal="916" sl="962" sc="1" el="962" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="963" ordinal="917" sl="963" sc="1" el="963" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="964" ordinal="918" sl="964" sc="1" el="964" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="965" ordinal="919" sl="965" sc="1" el="965" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="966" ordinal="920" sl="966" sc="1" el="966" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="967" ordinal="921" sl="967" sc="1" el="967" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="968" ordinal="922" sl="968" sc="1" el="968" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="969" ordinal="923" sl="969" sc="1" el="969" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="970" ordinal="924" sl="970" sc="1" el="970" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="971" ordinal="925" sl="971" sc="1" el="971" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="972" ordinal="926" sl="972" sc="1" el="972" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="973" ordinal="927" sl="973" sc="1" el="973" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="974" ordinal="928" sl="974" sc="1" el="974" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="975" ordinal="929" sl="975" sc="1" el="975" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="976" ordinal="930" sl="976" sc="1" el="976" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="977" ordinal="931" sl="977" sc="1" el="977" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="978" ordinal="932" sl="978" sc="1" el="978" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="979" ordinal="933" sl="979" sc="1" el="979" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="980" ordinal="934" sl="980" sc="1" el="980" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="981" ordinal="935" sl="981" sc="1" el="981" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="983" ordinal="936" sl="983" sc="1" el="983" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="984" ordinal="937" sl="984" sc="1" el="984" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="985" ordinal="938" sl="985" sc="1" el="985" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="986" ordinal="939" sl="986" sc="1" el="986" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="987" ordinal="940" sl="987" sc="1" el="987" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="988" ordinal="941" sl="988" sc="1" el="988" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="989" ordinal="942" sl="989" sc="1" el="989" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="990" ordinal="943" sl="990" sc="1" el="990" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="991" ordinal="944" sl="991" sc="1" el="991" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="992" ordinal="945" sl="992" sc="1" el="992" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="993" ordinal="946" sl="993" sc="1" el="993" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="994" ordinal="947" sl="994" sc="1" el="994" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="995" ordinal="948" sl="995" sc="1" el="995" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="996" ordinal="949" sl="996" sc="1" el="996" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="997" ordinal="950" sl="997" sc="1" el="997" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="998" ordinal="951" sl="998" sc="1" el="998" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="999" ordinal="952" sl="999" sc="1" el="999" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1000" ordinal="953" sl="1000" sc="1" el="1000" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1001" ordinal="954" sl="1001" sc="1" el="1001" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1002" ordinal="955" sl="1002" sc="1" el="1002" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1003" ordinal="956" sl="1003" sc="1" el="1003" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1004" ordinal="957" sl="1004" sc="1" el="1004" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1005" ordinal="958" sl="1005" sc="1" el="1005" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1006" ordinal="959" sl="1006" sc="1" el="1006" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1007" ordinal="960" sl="1007" sc="1" el="1007" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1008" ordinal="961" sl="1008" sc="1" el="1008" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1010" ordinal="962" sl="1010" sc="1" el="1010" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1011" ordinal="963" sl="1011" sc="1" el="1011" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1012" ordinal="964" sl="1012" sc="1" el="1012" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1013" ordinal="965" sl="1013" sc="1" el="1013" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1014" ordinal="966" sl="1014" sc="1" el="1014" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1015" ordinal="967" sl="1015" sc="1" el="1015" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1016" ordinal="968" sl="1016" sc="1" el="1016" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1017" ordinal="969" sl="1017" sc="1" el="1017" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1018" ordinal="970" sl="1018" sc="1" el="1018" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1019" ordinal="971" sl="1019" sc="1" el="1019" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1020" ordinal="972" sl="1020" sc="1" el="1020" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1021" ordinal="973" sl="1021" sc="1" el="1021" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1022" ordinal="974" sl="1022" sc="1" el="1022" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1023" ordinal="975" sl="1023" sc="1" el="1023" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1024" ordinal="976" sl="1024" sc="1" el="1024" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1025" ordinal="977" sl="1025" sc="1" el="1025" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1026" ordinal="978" sl="1026" sc="1" el="1026" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1027" ordinal="979" sl="1027" sc="1" el="1027" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1028" ordinal="980" sl="1028" sc="1" el="1028" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1029" ordinal="981" sl="1029" sc="1" el="1029" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1030" ordinal="982" sl="1030" sc="1" el="1030" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1031" ordinal="983" sl="1031" sc="1" el="1031" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1032" ordinal="984" sl="1032" sc="1" el="1032" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1033" ordinal="985" sl="1033" sc="1" el="1033" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1034" ordinal="986" sl="1034" sc="1" el="1034" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1035" ordinal="987" sl="1035" sc="1" el="1035" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1037" ordinal="988" sl="1037" sc="1" el="1037" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1038" ordinal="989" sl="1038" sc="1" el="1038" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1039" ordinal="990" sl="1039" sc="1" el="1039" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1040" ordinal="991" sl="1040" sc="1" el="1040" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1041" ordinal="992" sl="1041" sc="1" el="1041" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1042" ordinal="993" sl="1042" sc="1" el="1042" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1043" ordinal="994" sl="1043" sc="1" el="1043" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1044" ordinal="995" sl="1044" sc="1" el="1044" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1045" ordinal="996" sl="1045" sc="1" el="1045" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1046" ordinal="997" sl="1046" sc="1" el="1046" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1047" ordinal="998" sl="1047" sc="1" el="1047" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1048" ordinal="999" sl="1048" sc="1" el="1048" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1049" ordinal="1000" sl="1049" sc="1" el="1049" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1050" ordinal="1001" sl="1050" sc="1" el="1050" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1051" ordinal="1002" sl="1051" sc="1" el="1051" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1052" ordinal="1003" sl="1052" sc="1" el="1052" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1053" ordinal="1004" sl="1053" sc="1" el="1053" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1054" ordinal="1005" sl="1054" sc="1" el="1054" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1055" ordinal="1006" sl="1055" sc="1" el="1055" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1056" ordinal="1007" sl="1056" sc="1" el="1056" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1057" ordinal="1008" sl="1057" sc="1" el="1057" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1058" ordinal="1009" sl="1058" sc="1" el="1058" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1059" ordinal="1010" sl="1059" sc="1" el="1059" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1060" ordinal="1011" sl="1060" sc="1" el="1060" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1061" ordinal="1012" sl="1061" sc="1" el="1061" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1062" ordinal="1013" sl="1062" sc="1" el="1062" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1064" ordinal="1014" sl="1064" sc="1" el="1064" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1065" ordinal="1015" sl="1065" sc="1" el="1065" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1066" ordinal="1016" sl="1066" sc="1" el="1066" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1067" ordinal="1017" sl="1067" sc="1" el="1067" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1068" ordinal="1018" sl="1068" sc="1" el="1068" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1069" ordinal="1019" sl="1069" sc="1" el="1069" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1070" ordinal="1020" sl="1070" sc="1" el="1070" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1071" ordinal="1021" sl="1071" sc="1" el="1071" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1072" ordinal="1022" sl="1072" sc="1" el="1072" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1073" ordinal="1023" sl="1073" sc="1" el="1073" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1074" ordinal="1024" sl="1074" sc="1" el="1074" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1075" ordinal="1025" sl="1075" sc="1" el="1075" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1076" ordinal="1026" sl="1076" sc="1" el="1076" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1077" ordinal="1027" sl="1077" sc="1" el="1077" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1078" ordinal="1028" sl="1078" sc="1" el="1078" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1079" ordinal="1029" sl="1079" sc="1" el="1079" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1080" ordinal="1030" sl="1080" sc="1" el="1080" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1081" ordinal="1031" sl="1081" sc="1" el="1081" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1082" ordinal="1032" sl="1082" sc="1" el="1082" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1083" ordinal="1033" sl="1083" sc="1" el="1083" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1085" ordinal="1034" sl="1085" sc="1" el="1085" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1086" ordinal="1035" sl="1086" sc="1" el="1086" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1087" ordinal="1036" sl="1087" sc="1" el="1087" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1088" ordinal="1037" sl="1088" sc="1" el="1088" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1089" ordinal="1038" sl="1089" sc="1" el="1089" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1090" ordinal="1039" sl="1090" sc="1" el="1090" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1091" ordinal="1040" sl="1091" sc="1" el="1091" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1092" ordinal="1041" sl="1092" sc="1" el="1092" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1093" ordinal="1042" sl="1093" sc="1" el="1093" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1094" ordinal="1043" sl="1094" sc="1" el="1094" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1095" ordinal="1044" sl="1095" sc="1" el="1095" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1096" ordinal="1045" sl="1096" sc="1" el="1096" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1097" ordinal="1046" sl="1097" sc="1" el="1097" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1098" ordinal="1047" sl="1098" sc="1" el="1098" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1099" ordinal="1048" sl="1099" sc="1" el="1099" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1100" ordinal="1049" sl="1100" sc="1" el="1100" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1101" ordinal="1050" sl="1101" sc="1" el="1101" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1102" ordinal="1051" sl="1102" sc="1" el="1102" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1103" ordinal="1052" sl="1103" sc="1" el="1103" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1104" ordinal="1053" sl="1104" sc="1" el="1104" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1105" ordinal="1054" sl="1105" sc="1" el="1105" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1106" ordinal="1055" sl="1106" sc="1" el="1106" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1107" ordinal="1056" sl="1107" sc="1" el="1107" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1108" ordinal="1057" sl="1108" sc="1" el="1108" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1109" ordinal="1058" sl="1109" sc="1" el="1109" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1110" ordinal="1059" sl="1110" sc="1" el="1110" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1111" ordinal="1060" sl="1111" sc="1" el="1111" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1112" ordinal="1061" sl="1112" sc="1" el="1112" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1113" ordinal="1062" sl="1113" sc="1" el="1113" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1115" ordinal="1063" sl="1115" sc="1" el="1115" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1116" ordinal="1064" sl="1116" sc="1" el="1116" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1117" ordinal="1065" sl="1117" sc="1" el="1117" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1118" ordinal="1066" sl="1118" sc="1" el="1118" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1119" ordinal="1067" sl="1119" sc="1" el="1119" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1120" ordinal="1068" sl="1120" sc="1" el="1120" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1121" ordinal="1069" sl="1121" sc="1" el="1121" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1122" ordinal="1070" sl="1122" sc="1" el="1122" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1123" ordinal="1071" sl="1123" sc="1" el="1123" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1124" ordinal="1072" sl="1124" sc="1" el="1124" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1125" ordinal="1073" sl="1125" sc="1" el="1125" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1126" ordinal="1074" sl="1126" sc="1" el="1126" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1127" ordinal="1075" sl="1127" sc="1" el="1127" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1128" ordinal="1076" sl="1128" sc="1" el="1128" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1129" ordinal="1077" sl="1129" sc="1" el="1129" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1130" ordinal="1078" sl="1130" sc="1" el="1130" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1131" ordinal="1079" sl="1131" sc="1" el="1131" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1132" ordinal="1080" sl="1132" sc="1" el="1132" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1133" ordinal="1081" sl="1133" sc="1" el="1133" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1134" ordinal="1082" sl="1134" sc="1" el="1134" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1135" ordinal="1083" sl="1135" sc="1" el="1135" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1136" ordinal="1084" sl="1136" sc="1" el="1136" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1137" ordinal="1085" sl="1137" sc="1" el="1137" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1138" ordinal="1086" sl="1138" sc="1" el="1138" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1140" ordinal="1087" sl="1140" sc="1" el="1140" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1141" ordinal="1088" sl="1141" sc="1" el="1141" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1142" ordinal="1089" sl="1142" sc="1" el="1142" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1143" ordinal="1090" sl="1143" sc="1" el="1143" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1144" ordinal="1091" sl="1144" sc="1" el="1144" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1145" ordinal="1092" sl="1145" sc="1" el="1145" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1146" ordinal="1093" sl="1146" sc="1" el="1146" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1147" ordinal="1094" sl="1147" sc="1" el="1147" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1148" ordinal="1095" sl="1148" sc="1" el="1148" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1149" ordinal="1096" sl="1149" sc="1" el="1149" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1150" ordinal="1097" sl="1150" sc="1" el="1150" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1151" ordinal="1098" sl="1151" sc="1" el="1151" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1152" ordinal="1099" sl="1152" sc="1" el="1152" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1153" ordinal="1100" sl="1153" sc="1" el="1153" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1154" ordinal="1101" sl="1154" sc="1" el="1154" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1155" ordinal="1102" sl="1155" sc="1" el="1155" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1156" ordinal="1103" sl="1156" sc="1" el="1156" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1157" ordinal="1104" sl="1157" sc="1" el="1157" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1158" ordinal="1105" sl="1158" sc="1" el="1158" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1159" ordinal="1106" sl="1159" sc="1" el="1159" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1160" ordinal="1107" sl="1160" sc="1" el="1160" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1161" ordinal="1108" sl="1161" sc="1" el="1161" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1162" ordinal="1109" sl="1162" sc="1" el="1162" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1163" ordinal="1110" sl="1163" sc="1" el="1163" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1164" ordinal="1111" sl="1164" sc="1" el="1164" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1166" ordinal="1112" sl="1166" sc="1" el="1166" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1167" ordinal="1113" sl="1167" sc="1" el="1167" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1168" ordinal="1114" sl="1168" sc="1" el="1168" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1169" ordinal="1115" sl="1169" sc="1" el="1169" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1170" ordinal="1116" sl="1170" sc="1" el="1170" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1171" ordinal="1117" sl="1171" sc="1" el="1171" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1172" ordinal="1118" sl="1172" sc="1" el="1172" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1173" ordinal="1119" sl="1173" sc="1" el="1173" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1174" ordinal="1120" sl="1174" sc="1" el="1174" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1175" ordinal="1121" sl="1175" sc="1" el="1175" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1176" ordinal="1122" sl="1176" sc="1" el="1176" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1177" ordinal="1123" sl="1177" sc="1" el="1177" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1178" ordinal="1124" sl="1178" sc="1" el="1178" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1179" ordinal="1125" sl="1179" sc="1" el="1179" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1180" ordinal="1126" sl="1180" sc="1" el="1180" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1181" ordinal="1127" sl="1181" sc="1" el="1181" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1182" ordinal="1128" sl="1182" sc="1" el="1182" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1183" ordinal="1129" sl="1183" sc="1" el="1183" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1184" ordinal="1130" sl="1184" sc="1" el="1184" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1185" ordinal="1131" sl="1185" sc="1" el="1185" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1186" ordinal="1132" sl="1186" sc="1" el="1186" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1187" ordinal="1133" sl="1187" sc="1" el="1187" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1188" ordinal="1134" sl="1188" sc="1" el="1188" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1189" ordinal="1135" sl="1189" sc="1" el="1189" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1190" ordinal="1136" sl="1190" sc="1" el="1190" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1192" ordinal="1137" sl="1192" sc="1" el="1192" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1193" ordinal="1138" sl="1193" sc="1" el="1193" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1194" ordinal="1139" sl="1194" sc="1" el="1194" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1195" ordinal="1140" sl="1195" sc="1" el="1195" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1196" ordinal="1141" sl="1196" sc="1" el="1196" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1197" ordinal="1142" sl="1197" sc="1" el="1197" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1198" ordinal="1143" sl="1198" sc="1" el="1198" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1199" ordinal="1144" sl="1199" sc="1" el="1199" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1200" ordinal="1145" sl="1200" sc="1" el="1200" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1201" ordinal="1146" sl="1201" sc="1" el="1201" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1202" ordinal="1147" sl="1202" sc="1" el="1202" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1203" ordinal="1148" sl="1203" sc="1" el="1203" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1204" ordinal="1149" sl="1204" sc="1" el="1204" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1205" ordinal="1150" sl="1205" sc="1" el="1205" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1206" ordinal="1151" sl="1206" sc="1" el="1206" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1207" ordinal="1152" sl="1207" sc="1" el="1207" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1208" ordinal="1153" sl="1208" sc="1" el="1208" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1209" ordinal="1154" sl="1209" sc="1" el="1209" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1210" ordinal="1155" sl="1210" sc="1" el="1210" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1211" ordinal="1156" sl="1211" sc="1" el="1211" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1212" ordinal="1157" sl="1212" sc="1" el="1212" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1213" ordinal="1158" sl="1213" sc="1" el="1213" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1214" ordinal="1159" sl="1214" sc="1" el="1214" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1215" ordinal="1160" sl="1215" sc="1" el="1215" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1217" ordinal="1161" sl="1217" sc="1" el="1217" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1218" ordinal="1162" sl="1218" sc="1" el="1218" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1219" ordinal="1163" sl="1219" sc="1" el="1219" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1220" ordinal="1164" sl="1220" sc="1" el="1220" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1221" ordinal="1165" sl="1221" sc="1" el="1221" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1222" ordinal="1166" sl="1222" sc="1" el="1222" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1223" ordinal="1167" sl="1223" sc="1" el="1223" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1224" ordinal="1168" sl="1224" sc="1" el="1224" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1225" ordinal="1169" sl="1225" sc="1" el="1225" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1226" ordinal="1170" sl="1226" sc="1" el="1226" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1227" ordinal="1171" sl="1227" sc="1" el="1227" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1228" ordinal="1172" sl="1228" sc="1" el="1228" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1229" ordinal="1173" sl="1229" sc="1" el="1229" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1230" ordinal="1174" sl="1230" sc="1" el="1230" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1231" ordinal="1175" sl="1231" sc="1" el="1231" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1232" ordinal="1176" sl="1232" sc="1" el="1232" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1233" ordinal="1177" sl="1233" sc="1" el="1233" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1234" ordinal="1178" sl="1234" sc="1" el="1234" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1235" ordinal="1179" sl="1235" sc="1" el="1235" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1236" ordinal="1180" sl="1236" sc="1" el="1236" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1237" ordinal="1181" sl="1237" sc="1" el="1237" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1238" ordinal="1182" sl="1238" sc="1" el="1238" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1239" ordinal="1183" sl="1239" sc="1" el="1239" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1240" ordinal="1184" sl="1240" sc="1" el="1240" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1241" ordinal="1185" sl="1241" sc="1" el="1241" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1242" ordinal="1186" sl="1242" sc="1" el="1242" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1243" ordinal="1187" sl="1243" sc="1" el="1243" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1244" ordinal="1188" sl="1244" sc="1" el="1244" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1245" ordinal="1189" sl="1245" sc="1" el="1245" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1247" ordinal="1190" sl="1247" sc="1" el="1247" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1248" ordinal="1191" sl="1248" sc="1" el="1248" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1249" ordinal="1192" sl="1249" sc="1" el="1249" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1250" ordinal="1193" sl="1250" sc="1" el="1250" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1251" ordinal="1194" sl="1251" sc="1" el="1251" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1252" ordinal="1195" sl="1252" sc="1" el="1252" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1253" ordinal="1196" sl="1253" sc="1" el="1253" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1254" ordinal="1197" sl="1254" sc="1" el="1254" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1255" ordinal="1198" sl="1255" sc="1" el="1255" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1256" ordinal="1199" sl="1256" sc="1" el="1256" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1257" ordinal="1200" sl="1257" sc="1" el="1257" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1258" ordinal="1201" sl="1258" sc="1" el="1258" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1259" ordinal="1202" sl="1259" sc="1" el="1259" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1260" ordinal="1203" sl="1260" sc="1" el="1260" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1261" ordinal="1204" sl="1261" sc="1" el="1261" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1262" ordinal="1205" sl="1262" sc="1" el="1262" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1263" ordinal="1206" sl="1263" sc="1" el="1263" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1264" ordinal="1207" sl="1264" sc="1" el="1264" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1265" ordinal="1208" sl="1265" sc="1" el="1265" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1266" ordinal="1209" sl="1266" sc="1" el="1266" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1267" ordinal="1210" sl="1267" sc="1" el="1267" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1268" ordinal="1211" sl="1268" sc="1" el="1268" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1269" ordinal="1212" sl="1269" sc="1" el="1269" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1270" ordinal="1213" sl="1270" sc="1" el="1270" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1271" ordinal="1214" sl="1271" sc="1" el="1271" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1272" ordinal="1215" sl="1272" sc="1" el="1272" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1273" ordinal="1216" sl="1273" sc="1" el="1273" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1274" ordinal="1217" sl="1274" sc="1" el="1274" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1275" ordinal="1218" sl="1275" sc="1" el="1275" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1276" ordinal="1219" sl="1276" sc="1" el="1276" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1277" ordinal="1220" sl="1277" sc="1" el="1277" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1278" ordinal="1221" sl="1278" sc="1" el="1278" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1279" ordinal="1222" sl="1279" sc="1" el="1279" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1280" ordinal="1223" sl="1280" sc="1" el="1280" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1281" ordinal="1224" sl="1281" sc="1" el="1281" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1282" ordinal="1225" sl="1282" sc="1" el="1282" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1283" ordinal="1226" sl="1283" sc="1" el="1283" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1284" ordinal="1227" sl="1284" sc="1" el="1284" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1285" ordinal="1228" sl="1285" sc="1" el="1285" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1286" ordinal="1229" sl="1286" sc="1" el="1286" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1287" ordinal="1230" sl="1287" sc="1" el="1287" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1288" ordinal="1231" sl="1288" sc="1" el="1288" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1289" ordinal="1232" sl="1289" sc="1" el="1289" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1290" ordinal="1233" sl="1290" sc="1" el="1290" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1291" ordinal="1234" sl="1291" sc="1" el="1291" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1292" ordinal="1235" sl="1292" sc="1" el="1292" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1293" ordinal="1236" sl="1293" sc="1" el="1293" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1294" ordinal="1237" sl="1294" sc="1" el="1294" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1295" ordinal="1238" sl="1295" sc="1" el="1295" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1296" ordinal="1239" sl="1296" sc="1" el="1296" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1297" ordinal="1240" sl="1297" sc="1" el="1297" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1298" ordinal="1241" sl="1298" sc="1" el="1298" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1299" ordinal="1242" sl="1299" sc="1" el="1299" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1300" ordinal="1243" sl="1300" sc="1" el="1300" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1301" ordinal="1244" sl="1301" sc="1" el="1301" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1302" ordinal="1245" sl="1302" sc="1" el="1302" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1303" ordinal="1246" sl="1303" sc="1" el="1303" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1304" ordinal="1247" sl="1304" sc="1" el="1304" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1305" ordinal="1248" sl="1305" sc="1" el="1305" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1306" ordinal="1249" sl="1306" sc="1" el="1306" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1307" ordinal="1250" sl="1307" sc="1" el="1307" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1308" ordinal="1251" sl="1308" sc="1" el="1308" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1309" ordinal="1252" sl="1309" sc="1" el="1309" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1310" ordinal="1253" sl="1310" sc="1" el="1310" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1311" ordinal="1254" sl="1311" sc="1" el="1311" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1312" ordinal="1255" sl="1312" sc="1" el="1312" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1313" ordinal="1256" sl="1313" sc="1" el="1313" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1314" ordinal="1257" sl="1314" sc="1" el="1314" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1315" ordinal="1258" sl="1315" sc="1" el="1315" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1316" ordinal="1259" sl="1316" sc="1" el="1316" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1317" ordinal="1260" sl="1317" sc="1" el="1317" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1318" ordinal="1261" sl="1318" sc="1" el="1318" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1319" ordinal="1262" sl="1319" sc="1" el="1319" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1320" ordinal="1263" sl="1320" sc="1" el="1320" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1321" ordinal="1264" sl="1321" sc="1" el="1321" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1322" ordinal="1265" sl="1322" sc="1" el="1322" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1323" ordinal="1266" sl="1323" sc="1" el="1323" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1324" ordinal="1267" sl="1324" sc="1" el="1324" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1325" ordinal="1268" sl="1325" sc="1" el="1325" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1327" ordinal="1269" sl="1327" sc="1" el="1327" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1328" ordinal="1270" sl="1328" sc="1" el="1328" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1329" ordinal="1271" sl="1329" sc="1" el="1329" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1330" ordinal="1272" sl="1330" sc="1" el="1330" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1331" ordinal="1273" sl="1331" sc="1" el="1331" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1332" ordinal="1274" sl="1332" sc="1" el="1332" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1333" ordinal="1275" sl="1333" sc="1" el="1333" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1334" ordinal="1276" sl="1334" sc="1" el="1334" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1335" ordinal="1277" sl="1335" sc="1" el="1335" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1336" ordinal="1278" sl="1336" sc="1" el="1336" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1337" ordinal="1279" sl="1337" sc="1" el="1337" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1338" ordinal="1280" sl="1338" sc="1" el="1338" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1339" ordinal="1281" sl="1339" sc="1" el="1339" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1340" ordinal="1282" sl="1340" sc="1" el="1340" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1341" ordinal="1283" sl="1341" sc="1" el="1341" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1342" ordinal="1284" sl="1342" sc="1" el="1342" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1343" ordinal="1285" sl="1343" sc="1" el="1343" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1344" ordinal="1286" sl="1344" sc="1" el="1344" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1345" ordinal="1287" sl="1345" sc="1" el="1345" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1346" ordinal="1288" sl="1346" sc="1" el="1346" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1347" ordinal="1289" sl="1347" sc="1" el="1347" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1348" ordinal="1290" sl="1348" sc="1" el="1348" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1349" ordinal="1291" sl="1349" sc="1" el="1349" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1350" ordinal="1292" sl="1350" sc="1" el="1350" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1351" ordinal="1293" sl="1351" sc="1" el="1351" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1352" ordinal="1294" sl="1352" sc="1" el="1352" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1353" ordinal="1295" sl="1353" sc="1" el="1353" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1354" ordinal="1296" sl="1354" sc="1" el="1354" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1355" ordinal="1297" sl="1355" sc="1" el="1355" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1356" ordinal="1298" sl="1356" sc="1" el="1356" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1357" ordinal="1299" sl="1357" sc="1" el="1357" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1358" ordinal="1300" sl="1358" sc="1" el="1358" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1359" ordinal="1301" sl="1359" sc="1" el="1359" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1360" ordinal="1302" sl="1360" sc="1" el="1360" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1361" ordinal="1303" sl="1361" sc="1" el="1361" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1362" ordinal="1304" sl="1362" sc="1" el="1362" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1363" ordinal="1305" sl="1363" sc="1" el="1363" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1364" ordinal="1306" sl="1364" sc="1" el="1364" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1365" ordinal="1307" sl="1365" sc="1" el="1365" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1366" ordinal="1308" sl="1366" sc="1" el="1366" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1367" ordinal="1309" sl="1367" sc="1" el="1367" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1369" ordinal="1310" sl="1369" sc="1" el="1369" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1370" ordinal="1311" sl="1370" sc="1" el="1370" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1371" ordinal="1312" sl="1371" sc="1" el="1371" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1372" ordinal="1313" sl="1372" sc="1" el="1372" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1373" ordinal="1314" sl="1373" sc="1" el="1373" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1374" ordinal="1315" sl="1374" sc="1" el="1374" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1375" ordinal="1316" sl="1375" sc="1" el="1375" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1376" ordinal="1317" sl="1376" sc="1" el="1376" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1377" ordinal="1318" sl="1377" sc="1" el="1377" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1378" ordinal="1319" sl="1378" sc="1" el="1378" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1379" ordinal="1320" sl="1379" sc="1" el="1379" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1380" ordinal="1321" sl="1380" sc="1" el="1380" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1381" ordinal="1322" sl="1381" sc="1" el="1381" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1382" ordinal="1323" sl="1382" sc="1" el="1382" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1383" ordinal="1324" sl="1383" sc="1" el="1383" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1384" ordinal="1325" sl="1384" sc="1" el="1384" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1385" ordinal="1326" sl="1385" sc="1" el="1385" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1386" ordinal="1327" sl="1386" sc="1" el="1386" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1387" ordinal="1328" sl="1387" sc="1" el="1387" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1388" ordinal="1329" sl="1388" sc="1" el="1388" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1389" ordinal="1330" sl="1389" sc="1" el="1389" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1390" ordinal="1331" sl="1390" sc="1" el="1390" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1391" ordinal="1332" sl="1391" sc="1" el="1391" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1393" ordinal="1333" sl="1393" sc="1" el="1393" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1394" ordinal="1334" sl="1394" sc="1" el="1394" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1395" ordinal="1335" sl="1395" sc="1" el="1395" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1396" ordinal="1336" sl="1396" sc="1" el="1396" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1397" ordinal="1337" sl="1397" sc="1" el="1397" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1398" ordinal="1338" sl="1398" sc="1" el="1398" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1399" ordinal="1339" sl="1399" sc="1" el="1399" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1400" ordinal="1340" sl="1400" sc="1" el="1400" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1401" ordinal="1341" sl="1401" sc="1" el="1401" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1402" ordinal="1342" sl="1402" sc="1" el="1402" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1403" ordinal="1343" sl="1403" sc="1" el="1403" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1404" ordinal="1344" sl="1404" sc="1" el="1404" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1405" ordinal="1345" sl="1405" sc="1" el="1405" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1406" ordinal="1346" sl="1406" sc="1" el="1406" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1407" ordinal="1347" sl="1407" sc="1" el="1407" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1408" ordinal="1348" sl="1408" sc="1" el="1408" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1409" ordinal="1349" sl="1409" sc="1" el="1409" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1410" ordinal="1350" sl="1410" sc="1" el="1410" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1411" ordinal="1351" sl="1411" sc="1" el="1411" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1412" ordinal="1352" sl="1412" sc="1" el="1412" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1413" ordinal="1353" sl="1413" sc="1" el="1413" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1414" ordinal="1354" sl="1414" sc="1" el="1414" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1415" ordinal="1355" sl="1415" sc="1" el="1415" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1417" ordinal="1356" sl="1417" sc="1" el="1417" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1418" ordinal="1357" sl="1418" sc="1" el="1418" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1419" ordinal="1358" sl="1419" sc="1" el="1419" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1420" ordinal="1359" sl="1420" sc="1" el="1420" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1421" ordinal="1360" sl="1421" sc="1" el="1421" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1422" ordinal="1361" sl="1422" sc="1" el="1422" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1423" ordinal="1362" sl="1423" sc="1" el="1423" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1424" ordinal="1363" sl="1424" sc="1" el="1424" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1425" ordinal="1364" sl="1425" sc="1" el="1425" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1426" ordinal="1365" sl="1426" sc="1" el="1426" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1427" ordinal="1366" sl="1427" sc="1" el="1427" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1428" ordinal="1367" sl="1428" sc="1" el="1428" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1429" ordinal="1368" sl="1429" sc="1" el="1429" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1430" ordinal="1369" sl="1430" sc="1" el="1430" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1431" ordinal="1370" sl="1431" sc="1" el="1431" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1432" ordinal="1371" sl="1432" sc="1" el="1432" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1433" ordinal="1372" sl="1433" sc="1" el="1433" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1434" ordinal="1373" sl="1434" sc="1" el="1434" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1435" ordinal="1374" sl="1435" sc="1" el="1435" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1436" ordinal="1375" sl="1436" sc="1" el="1436" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1437" ordinal="1376" sl="1437" sc="1" el="1437" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1438" ordinal="1377" sl="1438" sc="1" el="1438" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1439" ordinal="1378" sl="1439" sc="1" el="1439" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1440" ordinal="1379" sl="1440" sc="1" el="1440" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1441" ordinal="1380" sl="1441" sc="1" el="1441" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1442" ordinal="1381" sl="1442" sc="1" el="1442" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1443" ordinal="1382" sl="1443" sc="1" el="1443" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1444" ordinal="1383" sl="1444" sc="1" el="1444" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1445" ordinal="1384" sl="1445" sc="1" el="1445" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1446" ordinal="1385" sl="1446" sc="1" el="1446" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1447" ordinal="1386" sl="1447" sc="1" el="1447" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1448" ordinal="1387" sl="1448" sc="1" el="1448" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1449" ordinal="1388" sl="1449" sc="1" el="1449" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1450" ordinal="1389" sl="1450" sc="1" el="1450" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1452" ordinal="1390" sl="1452" sc="1" el="1452" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1453" ordinal="1391" sl="1453" sc="1" el="1453" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1454" ordinal="1392" sl="1454" sc="1" el="1454" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1455" ordinal="1393" sl="1455" sc="1" el="1455" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1456" ordinal="1394" sl="1456" sc="1" el="1456" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1457" ordinal="1395" sl="1457" sc="1" el="1457" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1458" ordinal="1396" sl="1458" sc="1" el="1458" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1459" ordinal="1397" sl="1459" sc="1" el="1459" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1460" ordinal="1398" sl="1460" sc="1" el="1460" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1461" ordinal="1399" sl="1461" sc="1" el="1461" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1462" ordinal="1400" sl="1462" sc="1" el="1462" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1463" ordinal="1401" sl="1463" sc="1" el="1463" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1464" ordinal="1402" sl="1464" sc="1" el="1464" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1465" ordinal="1403" sl="1465" sc="1" el="1465" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1466" ordinal="1404" sl="1466" sc="1" el="1466" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1467" ordinal="1405" sl="1467" sc="1" el="1467" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1468" ordinal="1406" sl="1468" sc="1" el="1468" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1469" ordinal="1407" sl="1469" sc="1" el="1469" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1470" ordinal="1408" sl="1470" sc="1" el="1470" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1471" ordinal="1409" sl="1471" sc="1" el="1471" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1473" ordinal="1410" sl="1473" sc="1" el="1473" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1474" ordinal="1411" sl="1474" sc="1" el="1474" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1475" ordinal="1412" sl="1475" sc="1" el="1475" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1476" ordinal="1413" sl="1476" sc="1" el="1476" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1477" ordinal="1414" sl="1477" sc="1" el="1477" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1478" ordinal="1415" sl="1478" sc="1" el="1478" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1479" ordinal="1416" sl="1479" sc="1" el="1479" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1480" ordinal="1417" sl="1480" sc="1" el="1480" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1481" ordinal="1418" sl="1481" sc="1" el="1481" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1482" ordinal="1419" sl="1482" sc="1" el="1482" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1483" ordinal="1420" sl="1483" sc="1" el="1483" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1484" ordinal="1421" sl="1484" sc="1" el="1484" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1485" ordinal="1422" sl="1485" sc="1" el="1485" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1486" ordinal="1423" sl="1486" sc="1" el="1486" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1487" ordinal="1424" sl="1487" sc="1" el="1487" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1488" ordinal="1425" sl="1488" sc="1" el="1488" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1489" ordinal="1426" sl="1489" sc="1" el="1489" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1490" ordinal="1427" sl="1490" sc="1" el="1490" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1491" ordinal="1428" sl="1491" sc="1" el="1491" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1492" ordinal="1429" sl="1492" sc="1" el="1492" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1493" ordinal="1430" sl="1493" sc="1" el="1493" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1494" ordinal="1431" sl="1494" sc="1" el="1494" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1495" ordinal="1432" sl="1495" sc="1" el="1495" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1496" ordinal="1433" sl="1496" sc="1" el="1496" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1497" ordinal="1434" sl="1497" sc="1" el="1497" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1498" ordinal="1435" sl="1498" sc="1" el="1498" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1500" ordinal="1436" sl="1500" sc="1" el="1500" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1501" ordinal="1437" sl="1501" sc="1" el="1501" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1502" ordinal="1438" sl="1502" sc="1" el="1502" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1503" ordinal="1439" sl="1503" sc="1" el="1503" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1504" ordinal="1440" sl="1504" sc="1" el="1504" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1505" ordinal="1441" sl="1505" sc="1" el="1505" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1506" ordinal="1442" sl="1506" sc="1" el="1506" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1507" ordinal="1443" sl="1507" sc="1" el="1507" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1508" ordinal="1444" sl="1508" sc="1" el="1508" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1509" ordinal="1445" sl="1509" sc="1" el="1509" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1510" ordinal="1446" sl="1510" sc="1" el="1510" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1511" ordinal="1447" sl="1511" sc="1" el="1511" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1512" ordinal="1448" sl="1512" sc="1" el="1512" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1513" ordinal="1449" sl="1513" sc="1" el="1513" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1514" ordinal="1450" sl="1514" sc="1" el="1514" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1515" ordinal="1451" sl="1515" sc="1" el="1515" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1516" ordinal="1452" sl="1516" sc="1" el="1516" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1517" ordinal="1453" sl="1517" sc="1" el="1517" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1518" ordinal="1454" sl="1518" sc="1" el="1518" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1519" ordinal="1455" sl="1519" sc="1" el="1519" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1521" ordinal="1456" sl="1521" sc="1" el="1521" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1522" ordinal="1457" sl="1522" sc="1" el="1522" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1523" ordinal="1458" sl="1523" sc="1" el="1523" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1524" ordinal="1459" sl="1524" sc="1" el="1524" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1525" ordinal="1460" sl="1525" sc="1" el="1525" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1526" ordinal="1461" sl="1526" sc="1" el="1526" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1527" ordinal="1462" sl="1527" sc="1" el="1527" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1528" ordinal="1463" sl="1528" sc="1" el="1528" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1529" ordinal="1464" sl="1529" sc="1" el="1529" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1530" ordinal="1465" sl="1530" sc="1" el="1530" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1531" ordinal="1466" sl="1531" sc="1" el="1531" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1532" ordinal="1467" sl="1532" sc="1" el="1532" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1533" ordinal="1468" sl="1533" sc="1" el="1533" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1534" ordinal="1469" sl="1534" sc="1" el="1534" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1535" ordinal="1470" sl="1535" sc="1" el="1535" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1536" ordinal="1471" sl="1536" sc="1" el="1536" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1537" ordinal="1472" sl="1537" sc="1" el="1537" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1538" ordinal="1473" sl="1538" sc="1" el="1538" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1539" ordinal="1474" sl="1539" sc="1" el="1539" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1540" ordinal="1475" sl="1540" sc="1" el="1540" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1541" ordinal="1476" sl="1541" sc="1" el="1541" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1542" ordinal="1477" sl="1542" sc="1" el="1542" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1543" ordinal="1478" sl="1543" sc="1" el="1543" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1544" ordinal="1479" sl="1544" sc="1" el="1544" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1545" ordinal="1480" sl="1545" sc="1" el="1545" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1547" ordinal="1481" sl="1547" sc="1" el="1547" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1548" ordinal="1482" sl="1548" sc="1" el="1548" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1549" ordinal="1483" sl="1549" sc="1" el="1549" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1550" ordinal="1484" sl="1550" sc="1" el="1550" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1551" ordinal="1485" sl="1551" sc="1" el="1551" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1552" ordinal="1486" sl="1552" sc="1" el="1552" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1553" ordinal="1487" sl="1553" sc="1" el="1553" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1554" ordinal="1488" sl="1554" sc="1" el="1554" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1555" ordinal="1489" sl="1555" sc="1" el="1555" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1556" ordinal="1490" sl="1556" sc="1" el="1556" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1557" ordinal="1491" sl="1557" sc="1" el="1557" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1558" ordinal="1492" sl="1558" sc="1" el="1558" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1559" ordinal="1493" sl="1559" sc="1" el="1559" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1560" ordinal="1494" sl="1560" sc="1" el="1560" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1561" ordinal="1495" sl="1561" sc="1" el="1561" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1562" ordinal="1496" sl="1562" sc="1" el="1562" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1563" ordinal="1497" sl="1563" sc="1" el="1563" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1564" ordinal="1498" sl="1564" sc="1" el="1564" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1565" ordinal="1499" sl="1565" sc="1" el="1565" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1566" ordinal="1500" sl="1566" sc="1" el="1566" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1567" ordinal="1501" sl="1567" sc="1" el="1567" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1568" ordinal="1502" sl="1568" sc="1" el="1568" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1569" ordinal="1503" sl="1569" sc="1" el="1569" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1570" ordinal="1504" sl="1570" sc="1" el="1570" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1571" ordinal="1505" sl="1571" sc="1" el="1571" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1572" ordinal="1506" sl="1572" sc="1" el="1572" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1573" ordinal="1507" sl="1573" sc="1" el="1573" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1574" ordinal="1508" sl="1574" sc="1" el="1574" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1575" ordinal="1509" sl="1575" sc="1" el="1575" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1576" ordinal="1510" sl="1576" sc="1" el="1576" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1577" ordinal="1511" sl="1577" sc="1" el="1577" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1578" ordinal="1512" sl="1578" sc="1" el="1578" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1579" ordinal="1513" sl="1579" sc="1" el="1579" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1580" ordinal="1514" sl="1580" sc="1" el="1580" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1582" ordinal="1515" sl="1582" sc="1" el="1582" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1583" ordinal="1516" sl="1583" sc="1" el="1583" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1584" ordinal="1517" sl="1584" sc="1" el="1584" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1585" ordinal="1518" sl="1585" sc="1" el="1585" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1586" ordinal="1519" sl="1586" sc="1" el="1586" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1587" ordinal="1520" sl="1587" sc="1" el="1587" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1588" ordinal="1521" sl="1588" sc="1" el="1588" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1589" ordinal="1522" sl="1589" sc="1" el="1589" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1590" ordinal="1523" sl="1590" sc="1" el="1590" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1591" ordinal="1524" sl="1591" sc="1" el="1591" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1592" ordinal="1525" sl="1592" sc="1" el="1592" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1593" ordinal="1526" sl="1593" sc="1" el="1593" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1594" ordinal="1527" sl="1594" sc="1" el="1594" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1595" ordinal="1528" sl="1595" sc="1" el="1595" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1596" ordinal="1529" sl="1596" sc="1" el="1596" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1597" ordinal="1530" sl="1597" sc="1" el="1597" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1598" ordinal="1531" sl="1598" sc="1" el="1598" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1599" ordinal="1532" sl="1599" sc="1" el="1599" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1600" ordinal="1533" sl="1600" sc="1" el="1600" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1601" ordinal="1534" sl="1601" sc="1" el="1601" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1602" ordinal="1535" sl="1602" sc="1" el="1602" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1603" ordinal="1536" sl="1603" sc="1" el="1603" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1604" ordinal="1537" sl="1604" sc="1" el="1604" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1605" ordinal="1538" sl="1605" sc="1" el="1605" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1606" ordinal="1539" sl="1606" sc="1" el="1606" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1608" ordinal="1540" sl="1608" sc="1" el="1608" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1609" ordinal="1541" sl="1609" sc="1" el="1609" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1610" ordinal="1542" sl="1610" sc="1" el="1610" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1611" ordinal="1543" sl="1611" sc="1" el="1611" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1612" ordinal="1544" sl="1612" sc="1" el="1612" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1613" ordinal="1545" sl="1613" sc="1" el="1613" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1614" ordinal="1546" sl="1614" sc="1" el="1614" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1615" ordinal="1547" sl="1615" sc="1" el="1615" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1616" ordinal="1548" sl="1616" sc="1" el="1616" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1617" ordinal="1549" sl="1617" sc="1" el="1617" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1618" ordinal="1550" sl="1618" sc="1" el="1618" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1619" ordinal="1551" sl="1619" sc="1" el="1619" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1620" ordinal="1552" sl="1620" sc="1" el="1620" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1621" ordinal="1553" sl="1621" sc="1" el="1621" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1622" ordinal="1554" sl="1622" sc="1" el="1622" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1623" ordinal="1555" sl="1623" sc="1" el="1623" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1624" ordinal="1556" sl="1624" sc="1" el="1624" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1625" ordinal="1557" sl="1625" sc="1" el="1625" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1626" ordinal="1558" sl="1626" sc="1" el="1626" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1627" ordinal="1559" sl="1627" sc="1" el="1627" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1628" ordinal="1560" sl="1628" sc="1" el="1628" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1629" ordinal="1561" sl="1629" sc="1" el="1629" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1630" ordinal="1562" sl="1630" sc="1" el="1630" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1631" ordinal="1563" sl="1631" sc="1" el="1631" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1632" ordinal="1564" sl="1632" sc="1" el="1632" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1633" ordinal="1565" sl="1633" sc="1" el="1633" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1635" ordinal="1566" sl="1635" sc="1" el="1635" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1636" ordinal="1567" sl="1636" sc="1" el="1636" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1637" ordinal="1568" sl="1637" sc="1" el="1637" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1638" ordinal="1569" sl="1638" sc="1" el="1638" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1639" ordinal="1570" sl="1639" sc="1" el="1639" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1640" ordinal="1571" sl="1640" sc="1" el="1640" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1641" ordinal="1572" sl="1641" sc="1" el="1641" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1642" ordinal="1573" sl="1642" sc="1" el="1642" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1643" ordinal="1574" sl="1643" sc="1" el="1643" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1644" ordinal="1575" sl="1644" sc="1" el="1644" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1645" ordinal="1576" sl="1645" sc="1" el="1645" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1646" ordinal="1577" sl="1646" sc="1" el="1646" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1647" ordinal="1578" sl="1647" sc="1" el="1647" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1648" ordinal="1579" sl="1648" sc="1" el="1648" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1649" ordinal="1580" sl="1649" sc="1" el="1649" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1650" ordinal="1581" sl="1650" sc="1" el="1650" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1651" ordinal="1582" sl="1651" sc="1" el="1651" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1652" ordinal="1583" sl="1652" sc="1" el="1652" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1653" ordinal="1584" sl="1653" sc="1" el="1653" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1654" ordinal="1585" sl="1654" sc="1" el="1654" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1655" ordinal="1586" sl="1655" sc="1" el="1655" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1656" ordinal="1587" sl="1656" sc="1" el="1656" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1657" ordinal="1588" sl="1657" sc="1" el="1657" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1658" ordinal="1589" sl="1658" sc="1" el="1658" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1659" ordinal="1590" sl="1659" sc="1" el="1659" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1660" ordinal="1591" sl="1660" sc="1" el="1660" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1661" ordinal="1592" sl="1661" sc="1" el="1661" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1662" ordinal="1593" sl="1662" sc="1" el="1662" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1663" ordinal="1594" sl="1663" sc="1" el="1663" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1664" ordinal="1595" sl="1664" sc="1" el="1664" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1666" ordinal="1596" sl="1666" sc="1" el="1666" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1667" ordinal="1597" sl="1667" sc="1" el="1667" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1668" ordinal="1598" sl="1668" sc="1" el="1668" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1669" ordinal="1599" sl="1669" sc="1" el="1669" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1670" ordinal="1600" sl="1670" sc="1" el="1670" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1671" ordinal="1601" sl="1671" sc="1" el="1671" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1672" ordinal="1602" sl="1672" sc="1" el="1672" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1673" ordinal="1603" sl="1673" sc="1" el="1673" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1674" ordinal="1604" sl="1674" sc="1" el="1674" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1675" ordinal="1605" sl="1675" sc="1" el="1675" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1676" ordinal="1606" sl="1676" sc="1" el="1676" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1677" ordinal="1607" sl="1677" sc="1" el="1677" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1678" ordinal="1608" sl="1678" sc="1" el="1678" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1679" ordinal="1609" sl="1679" sc="1" el="1679" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1680" ordinal="1610" sl="1680" sc="1" el="1680" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1681" ordinal="1611" sl="1681" sc="1" el="1681" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1682" ordinal="1612" sl="1682" sc="1" el="1682" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1683" ordinal="1613" sl="1683" sc="1" el="1683" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1684" ordinal="1614" sl="1684" sc="1" el="1684" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1685" ordinal="1615" sl="1685" sc="1" el="1685" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1686" ordinal="1616" sl="1686" sc="1" el="1686" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1687" ordinal="1617" sl="1687" sc="1" el="1687" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1688" ordinal="1618" sl="1688" sc="1" el="1688" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1689" ordinal="1619" sl="1689" sc="1" el="1689" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1690" ordinal="1620" sl="1690" sc="1" el="1690" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1691" ordinal="1621" sl="1691" sc="1" el="1691" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1692" ordinal="1622" sl="1692" sc="1" el="1692" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1694" ordinal="1623" sl="1694" sc="1" el="1694" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1695" ordinal="1624" sl="1695" sc="1" el="1695" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1696" ordinal="1625" sl="1696" sc="1" el="1696" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1697" ordinal="1626" sl="1697" sc="1" el="1697" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1698" ordinal="1627" sl="1698" sc="1" el="1698" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1699" ordinal="1628" sl="1699" sc="1" el="1699" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1700" ordinal="1629" sl="1700" sc="1" el="1700" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1701" ordinal="1630" sl="1701" sc="1" el="1701" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1702" ordinal="1631" sl="1702" sc="1" el="1702" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1703" ordinal="1632" sl="1703" sc="1" el="1703" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1704" ordinal="1633" sl="1704" sc="1" el="1704" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1705" ordinal="1634" sl="1705" sc="1" el="1705" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1706" ordinal="1635" sl="1706" sc="1" el="1706" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1707" ordinal="1636" sl="1707" sc="1" el="1707" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1708" ordinal="1637" sl="1708" sc="1" el="1708" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1709" ordinal="1638" sl="1709" sc="1" el="1709" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1710" ordinal="1639" sl="1710" sc="1" el="1710" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1711" ordinal="1640" sl="1711" sc="1" el="1711" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1712" ordinal="1641" sl="1712" sc="1" el="1712" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1713" ordinal="1642" sl="1713" sc="1" el="1713" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1714" ordinal="1643" sl="1714" sc="1" el="1714" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1715" ordinal="1644" sl="1715" sc="1" el="1715" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1716" ordinal="1645" sl="1716" sc="1" el="1716" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1717" ordinal="1646" sl="1717" sc="1" el="1717" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1718" ordinal="1647" sl="1718" sc="1" el="1718" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1719" ordinal="1648" sl="1719" sc="1" el="1719" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1720" ordinal="1649" sl="1720" sc="1" el="1720" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1721" ordinal="1650" sl="1721" sc="1" el="1721" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1722" ordinal="1651" sl="1722" sc="1" el="1722" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1723" ordinal="1652" sl="1723" sc="1" el="1723" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1724" ordinal="1653" sl="1724" sc="1" el="1724" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1726" ordinal="1654" sl="1726" sc="1" el="1726" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1727" ordinal="1655" sl="1727" sc="1" el="1727" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1728" ordinal="1656" sl="1728" sc="1" el="1728" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1729" ordinal="1657" sl="1729" sc="1" el="1729" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1730" ordinal="1658" sl="1730" sc="1" el="1730" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1731" ordinal="1659" sl="1731" sc="1" el="1731" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1732" ordinal="1660" sl="1732" sc="1" el="1732" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1733" ordinal="1661" sl="1733" sc="1" el="1733" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1734" ordinal="1662" sl="1734" sc="1" el="1734" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1735" ordinal="1663" sl="1735" sc="1" el="1735" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1736" ordinal="1664" sl="1736" sc="1" el="1736" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1737" ordinal="1665" sl="1737" sc="1" el="1737" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1738" ordinal="1666" sl="1738" sc="1" el="1738" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1739" ordinal="1667" sl="1739" sc="1" el="1739" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1740" ordinal="1668" sl="1740" sc="1" el="1740" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1741" ordinal="1669" sl="1741" sc="1" el="1741" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1742" ordinal="1670" sl="1742" sc="1" el="1742" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1743" ordinal="1671" sl="1743" sc="1" el="1743" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1744" ordinal="1672" sl="1744" sc="1" el="1744" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1745" ordinal="1673" sl="1745" sc="1" el="1745" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1747" ordinal="1674" sl="1747" sc="1" el="1747" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1748" ordinal="1675" sl="1748" sc="1" el="1748" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1749" ordinal="1676" sl="1749" sc="1" el="1749" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1750" ordinal="1677" sl="1750" sc="1" el="1750" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1751" ordinal="1678" sl="1751" sc="1" el="1751" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1752" ordinal="1679" sl="1752" sc="1" el="1752" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1753" ordinal="1680" sl="1753" sc="1" el="1753" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1754" ordinal="1681" sl="1754" sc="1" el="1754" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1755" ordinal="1682" sl="1755" sc="1" el="1755" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1756" ordinal="1683" sl="1756" sc="1" el="1756" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1757" ordinal="1684" sl="1757" sc="1" el="1757" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1758" ordinal="1685" sl="1758" sc="1" el="1758" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1759" ordinal="1686" sl="1759" sc="1" el="1759" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1760" ordinal="1687" sl="1760" sc="1" el="1760" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1761" ordinal="1688" sl="1761" sc="1" el="1761" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1762" ordinal="1689" sl="1762" sc="1" el="1762" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1763" ordinal="1690" sl="1763" sc="1" el="1763" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1764" ordinal="1691" sl="1764" sc="1" el="1764" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1765" ordinal="1692" sl="1765" sc="1" el="1765" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1766" ordinal="1693" sl="1766" sc="1" el="1766" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1767" ordinal="1694" sl="1767" sc="1" el="1767" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1768" ordinal="1695" sl="1768" sc="1" el="1768" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1769" ordinal="1696" sl="1769" sc="1" el="1769" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1770" ordinal="1697" sl="1770" sc="1" el="1770" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1771" ordinal="1698" sl="1771" sc="1" el="1771" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1772" ordinal="1699" sl="1772" sc="1" el="1772" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1774" ordinal="1700" sl="1774" sc="1" el="1774" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1775" ordinal="1701" sl="1775" sc="1" el="1775" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1776" ordinal="1702" sl="1776" sc="1" el="1776" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1777" ordinal="1703" sl="1777" sc="1" el="1777" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1778" ordinal="1704" sl="1778" sc="1" el="1778" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1779" ordinal="1705" sl="1779" sc="1" el="1779" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1780" ordinal="1706" sl="1780" sc="1" el="1780" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1781" ordinal="1707" sl="1781" sc="1" el="1781" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1782" ordinal="1708" sl="1782" sc="1" el="1782" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1783" ordinal="1709" sl="1783" sc="1" el="1783" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1784" ordinal="1710" sl="1784" sc="1" el="1784" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1785" ordinal="1711" sl="1785" sc="1" el="1785" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1786" ordinal="1712" sl="1786" sc="1" el="1786" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1787" ordinal="1713" sl="1787" sc="1" el="1787" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1788" ordinal="1714" sl="1788" sc="1" el="1788" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1789" ordinal="1715" sl="1789" sc="1" el="1789" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1790" ordinal="1716" sl="1790" sc="1" el="1790" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1791" ordinal="1717" sl="1791" sc="1" el="1791" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1792" ordinal="1718" sl="1792" sc="1" el="1792" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1793" ordinal="1719" sl="1793" sc="1" el="1793" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1794" ordinal="1720" sl="1794" sc="1" el="1794" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1795" ordinal="1721" sl="1795" sc="1" el="1795" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1796" ordinal="1722" sl="1796" sc="1" el="1796" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1797" ordinal="1723" sl="1797" sc="1" el="1797" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1798" ordinal="1724" sl="1798" sc="1" el="1798" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1799" ordinal="1725" sl="1799" sc="1" el="1799" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1800" ordinal="1726" sl="1800" sc="1" el="1800" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1801" ordinal="1727" sl="1801" sc="1" el="1801" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1802" ordinal="1728" sl="1802" sc="1" el="1802" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1803" ordinal="1729" sl="1803" sc="1" el="1803" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1804" ordinal="1730" sl="1804" sc="1" el="1804" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1805" ordinal="1731" sl="1805" sc="1" el="1805" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1806" ordinal="1732" sl="1806" sc="1" el="1806" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1807" ordinal="1733" sl="1807" sc="1" el="1807" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1808" ordinal="1734" sl="1808" sc="1" el="1808" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1809" ordinal="1735" sl="1809" sc="1" el="1809" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1810" ordinal="1736" sl="1810" sc="1" el="1810" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1811" ordinal="1737" sl="1811" sc="1" el="1811" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1812" ordinal="1738" sl="1812" sc="1" el="1812" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1813" ordinal="1739" sl="1813" sc="1" el="1813" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1814" ordinal="1740" sl="1814" sc="1" el="1814" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1815" ordinal="1741" sl="1815" sc="1" el="1815" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1816" ordinal="1742" sl="1816" sc="1" el="1816" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1817" ordinal="1743" sl="1817" sc="1" el="1817" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1818" ordinal="1744" sl="1818" sc="1" el="1818" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1819" ordinal="1745" sl="1819" sc="1" el="1819" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1820" ordinal="1746" sl="1820" sc="1" el="1820" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1821" ordinal="1747" sl="1821" sc="1" el="1821" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1822" ordinal="1748" sl="1822" sc="1" el="1822" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1823" ordinal="1749" sl="1823" sc="1" el="1823" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1824" ordinal="1750" sl="1824" sc="1" el="1824" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1825" ordinal="1751" sl="1825" sc="1" el="1825" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1827" ordinal="1752" sl="1827" sc="1" el="1827" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1828" ordinal="1753" sl="1828" sc="1" el="1828" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1829" ordinal="1754" sl="1829" sc="1" el="1829" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1830" ordinal="1755" sl="1830" sc="1" el="1830" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1831" ordinal="1756" sl="1831" sc="1" el="1831" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1832" ordinal="1757" sl="1832" sc="1" el="1832" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1833" ordinal="1758" sl="1833" sc="1" el="1833" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1834" ordinal="1759" sl="1834" sc="1" el="1834" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1835" ordinal="1760" sl="1835" sc="1" el="1835" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1836" ordinal="1761" sl="1836" sc="1" el="1836" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1837" ordinal="1762" sl="1837" sc="1" el="1837" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1838" ordinal="1763" sl="1838" sc="1" el="1838" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1839" ordinal="1764" sl="1839" sc="1" el="1839" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1840" ordinal="1765" sl="1840" sc="1" el="1840" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1841" ordinal="1766" sl="1841" sc="1" el="1841" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1842" ordinal="1767" sl="1842" sc="1" el="1842" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1843" ordinal="1768" sl="1843" sc="1" el="1843" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1844" ordinal="1769" sl="1844" sc="1" el="1844" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1845" ordinal="1770" sl="1845" sc="1" el="1845" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1846" ordinal="1771" sl="1846" sc="1" el="1846" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1847" ordinal="1772" sl="1847" sc="1" el="1847" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1848" ordinal="1773" sl="1848" sc="1" el="1848" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1849" ordinal="1774" sl="1849" sc="1" el="1849" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1850" ordinal="1775" sl="1850" sc="1" el="1850" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1851" ordinal="1776" sl="1851" sc="1" el="1851" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1853" ordinal="1777" sl="1853" sc="1" el="1853" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1854" ordinal="1778" sl="1854" sc="1" el="1854" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1855" ordinal="1779" sl="1855" sc="1" el="1855" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1856" ordinal="1780" sl="1856" sc="1" el="1856" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1857" ordinal="1781" sl="1857" sc="1" el="1857" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1858" ordinal="1782" sl="1858" sc="1" el="1858" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1859" ordinal="1783" sl="1859" sc="1" el="1859" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1860" ordinal="1784" sl="1860" sc="1" el="1860" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1861" ordinal="1785" sl="1861" sc="1" el="1861" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1862" ordinal="1786" sl="1862" sc="1" el="1862" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1863" ordinal="1787" sl="1863" sc="1" el="1863" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1864" ordinal="1788" sl="1864" sc="1" el="1864" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1865" ordinal="1789" sl="1865" sc="1" el="1865" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1866" ordinal="1790" sl="1866" sc="1" el="1866" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1867" ordinal="1791" sl="1867" sc="1" el="1867" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1868" ordinal="1792" sl="1868" sc="1" el="1868" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1869" ordinal="1793" sl="1869" sc="1" el="1869" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1870" ordinal="1794" sl="1870" sc="1" el="1870" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1871" ordinal="1795" sl="1871" sc="1" el="1871" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1872" ordinal="1796" sl="1872" sc="1" el="1872" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1873" ordinal="1797" sl="1873" sc="1" el="1873" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1874" ordinal="1798" sl="1874" sc="1" el="1874" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1875" ordinal="1799" sl="1875" sc="1" el="1875" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1876" ordinal="1800" sl="1876" sc="1" el="1876" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1878" ordinal="1801" sl="1878" sc="1" el="1878" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1879" ordinal="1802" sl="1879" sc="1" el="1879" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1880" ordinal="1803" sl="1880" sc="1" el="1880" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1881" ordinal="1804" sl="1881" sc="1" el="1881" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1882" ordinal="1805" sl="1882" sc="1" el="1882" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1884" ordinal="1806" sl="1884" sc="1" el="1884" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1885" ordinal="1807" sl="1885" sc="1" el="1885" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1886" ordinal="1808" sl="1886" sc="1" el="1886" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1887" ordinal="1809" sl="1887" sc="1" el="1887" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1889" ordinal="1810" sl="1889" sc="1" el="1889" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1890" ordinal="1811" sl="1890" sc="1" el="1890" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1891" ordinal="1812" sl="1891" sc="1" el="1891" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1892" ordinal="1813" sl="1892" sc="1" el="1892" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1894" ordinal="1814" sl="1894" sc="1" el="1894" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1895" ordinal="1815" sl="1895" sc="1" el="1895" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1896" ordinal="1816" sl="1896" sc="1" el="1896" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1897" ordinal="1817" sl="1897" sc="1" el="1897" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1899" ordinal="1818" sl="1899" sc="1" el="1899" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1900" ordinal="1819" sl="1900" sc="1" el="1900" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1901" ordinal="1820" sl="1901" sc="1" el="1901" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1902" ordinal="1821" sl="1902" sc="1" el="1902" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1904" ordinal="1822" sl="1904" sc="1" el="1904" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1905" ordinal="1823" sl="1905" sc="1" el="1905" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1906" ordinal="1824" sl="1906" sc="1" el="1906" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1907" ordinal="1825" sl="1907" sc="1" el="1907" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1909" ordinal="1826" sl="1909" sc="1" el="1909" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1910" ordinal="1827" sl="1910" sc="1" el="1910" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1911" ordinal="1828" sl="1911" sc="1" el="1911" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1912" ordinal="1829" sl="1912" sc="1" el="1912" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1914" ordinal="1830" sl="1914" sc="1" el="1914" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1915" ordinal="1831" sl="1915" sc="1" el="1915" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1916" ordinal="1832" sl="1916" sc="1" el="1916" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1917" ordinal="1833" sl="1917" sc="1" el="1917" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1919" ordinal="1834" sl="1919" sc="1" el="1919" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1920" ordinal="1835" sl="1920" sc="1" el="1920" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1921" ordinal="1836" sl="1921" sc="1" el="1921" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1922" ordinal="1837" sl="1922" sc="1" el="1922" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1924" ordinal="1838" sl="1924" sc="1" el="1924" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1925" ordinal="1839" sl="1925" sc="1" el="1925" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1926" ordinal="1840" sl="1926" sc="1" el="1926" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1927" ordinal="1841" sl="1927" sc="1" el="1927" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1929" ordinal="1842" sl="1929" sc="1" el="1929" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1930" ordinal="1843" sl="1930" sc="1" el="1930" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1931" ordinal="1844" sl="1931" sc="1" el="1931" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1932" ordinal="1845" sl="1932" sc="1" el="1932" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1934" ordinal="1846" sl="1934" sc="1" el="1934" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1935" ordinal="1847" sl="1935" sc="1" el="1935" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1936" ordinal="1848" sl="1936" sc="1" el="1936" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1937" ordinal="1849" sl="1937" sc="1" el="1937" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1939" ordinal="1850" sl="1939" sc="1" el="1939" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1940" ordinal="1851" sl="1940" sc="1" el="1940" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1941" ordinal="1852" sl="1941" sc="1" el="1941" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1942" ordinal="1853" sl="1942" sc="1" el="1942" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1944" ordinal="1854" sl="1944" sc="1" el="1944" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1945" ordinal="1855" sl="1945" sc="1" el="1945" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1946" ordinal="1856" sl="1946" sc="1" el="1946" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1947" ordinal="1857" sl="1947" sc="1" el="1947" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1949" ordinal="1858" sl="1949" sc="1" el="1949" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1950" ordinal="1859" sl="1950" sc="1" el="1950" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1951" ordinal="1860" sl="1951" sc="1" el="1951" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1952" ordinal="1861" sl="1952" sc="1" el="1952" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1954" ordinal="1862" sl="1954" sc="1" el="1954" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1955" ordinal="1863" sl="1955" sc="1" el="1955" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1956" ordinal="1864" sl="1956" sc="1" el="1956" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1957" ordinal="1865" sl="1957" sc="1" el="1957" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1959" ordinal="1866" sl="1959" sc="1" el="1959" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1960" ordinal="1867" sl="1960" sc="1" el="1960" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1961" ordinal="1868" sl="1961" sc="1" el="1961" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1962" ordinal="1869" sl="1962" sc="1" el="1962" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1964" ordinal="1870" sl="1964" sc="1" el="1964" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1965" ordinal="1871" sl="1965" sc="1" el="1965" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1966" ordinal="1872" sl="1966" sc="1" el="1966" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1967" ordinal="1873" sl="1967" sc="1" el="1967" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1969" ordinal="1874" sl="1969" sc="1" el="1969" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1970" ordinal="1875" sl="1970" sc="1" el="1970" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1971" ordinal="1876" sl="1971" sc="1" el="1971" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1972" ordinal="1877" sl="1972" sc="1" el="1972" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1974" ordinal="1878" sl="1974" sc="1" el="1974" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1975" ordinal="1879" sl="1975" sc="1" el="1975" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1976" ordinal="1880" sl="1976" sc="1" el="1976" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1977" ordinal="1881" sl="1977" sc="1" el="1977" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1979" ordinal="1882" sl="1979" sc="1" el="1979" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1980" ordinal="1883" sl="1980" sc="1" el="1980" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1981" ordinal="1884" sl="1981" sc="1" el="1981" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1982" ordinal="1885" sl="1982" sc="1" el="1982" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1984" ordinal="1886" sl="1984" sc="1" el="1984" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1985" ordinal="1887" sl="1985" sc="1" el="1985" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1986" ordinal="1888" sl="1986" sc="1" el="1986" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1987" ordinal="1889" sl="1987" sc="1" el="1987" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1989" ordinal="1890" sl="1989" sc="1" el="1989" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1990" ordinal="1891" sl="1990" sc="1" el="1990" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1991" ordinal="1892" sl="1991" sc="1" el="1991" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1992" ordinal="1893" sl="1992" sc="1" el="1992" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1994" ordinal="1894" sl="1994" sc="1" el="1994" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1995" ordinal="1895" sl="1995" sc="1" el="1995" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1996" ordinal="1896" sl="1996" sc="1" el="1996" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1997" ordinal="1897" sl="1997" sc="1" el="1997" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="1999" ordinal="1898" sl="1999" sc="1" el="1999" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2000" ordinal="1899" sl="2000" sc="1" el="2000" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2001" ordinal="1900" sl="2001" sc="1" el="2001" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2002" ordinal="1901" sl="2002" sc="1" el="2002" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2004" ordinal="1902" sl="2004" sc="1" el="2004" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2005" ordinal="1903" sl="2005" sc="1" el="2005" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2006" ordinal="1904" sl="2006" sc="1" el="2006" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2007" ordinal="1905" sl="2007" sc="1" el="2007" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2009" ordinal="1906" sl="2009" sc="1" el="2009" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2010" ordinal="1907" sl="2010" sc="1" el="2010" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2011" ordinal="1908" sl="2011" sc="1" el="2011" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2012" ordinal="1909" sl="2012" sc="1" el="2012" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2014" ordinal="1910" sl="2014" sc="1" el="2014" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2015" ordinal="1911" sl="2015" sc="1" el="2015" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2016" ordinal="1912" sl="2016" sc="1" el="2016" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2017" ordinal="1913" sl="2017" sc="1" el="2017" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2018" ordinal="1914" sl="2018" sc="1" el="2018" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2020" ordinal="1915" sl="2020" sc="1" el="2020" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2021" ordinal="1916" sl="2021" sc="1" el="2021" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2022" ordinal="1917" sl="2022" sc="1" el="2022" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2023" ordinal="1918" sl="2023" sc="1" el="2023" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2024" ordinal="1919" sl="2024" sc="1" el="2024" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2026" ordinal="1920" sl="2026" sc="1" el="2026" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2027" ordinal="1921" sl="2027" sc="1" el="2027" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2028" ordinal="1922" sl="2028" sc="1" el="2028" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2029" ordinal="1923" sl="2029" sc="1" el="2029" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2030" ordinal="1924" sl="2030" sc="1" el="2030" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2032" ordinal="1925" sl="2032" sc="1" el="2032" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2033" ordinal="1926" sl="2033" sc="1" el="2033" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2034" ordinal="1927" sl="2034" sc="1" el="2034" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2035" ordinal="1928" sl="2035" sc="1" el="2035" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2036" ordinal="1929" sl="2036" sc="1" el="2036" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2038" ordinal="1930" sl="2038" sc="1" el="2038" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2039" ordinal="1931" sl="2039" sc="1" el="2039" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2040" ordinal="1932" sl="2040" sc="1" el="2040" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2041" ordinal="1933" sl="2041" sc="1" el="2041" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2042" ordinal="1934" sl="2042" sc="1" el="2042" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2044" ordinal="1935" sl="2044" sc="1" el="2044" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2045" ordinal="1936" sl="2045" sc="1" el="2045" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2046" ordinal="1937" sl="2046" sc="1" el="2046" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2047" ordinal="1938" sl="2047" sc="1" el="2047" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2048" ordinal="1939" sl="2048" sc="1" el="2048" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2050" ordinal="1940" sl="2050" sc="1" el="2050" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2051" ordinal="1941" sl="2051" sc="1" el="2051" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2052" ordinal="1942" sl="2052" sc="1" el="2052" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2053" ordinal="1943" sl="2053" sc="1" el="2053" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2054" ordinal="1944" sl="2054" sc="1" el="2054" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2056" ordinal="1945" sl="2056" sc="1" el="2056" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2057" ordinal="1946" sl="2057" sc="1" el="2057" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2058" ordinal="1947" sl="2058" sc="1" el="2058" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2059" ordinal="1948" sl="2059" sc="1" el="2059" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2060" ordinal="1949" sl="2060" sc="1" el="2060" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2062" ordinal="1950" sl="2062" sc="1" el="2062" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2063" ordinal="1951" sl="2063" sc="1" el="2063" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2064" ordinal="1952" sl="2064" sc="1" el="2064" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2065" ordinal="1953" sl="2065" sc="1" el="2065" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2066" ordinal="1954" sl="2066" sc="1" el="2066" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2068" ordinal="1955" sl="2068" sc="1" el="2068" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2069" ordinal="1956" sl="2069" sc="1" el="2069" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2070" ordinal="1957" sl="2070" sc="1" el="2070" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2071" ordinal="1958" sl="2071" sc="1" el="2071" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2072" ordinal="1959" sl="2072" sc="1" el="2072" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2074" ordinal="1960" sl="2074" sc="1" el="2074" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2075" ordinal="1961" sl="2075" sc="1" el="2075" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2076" ordinal="1962" sl="2076" sc="1" el="2076" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2077" ordinal="1963" sl="2077" sc="1" el="2077" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2079" ordinal="1964" sl="2079" sc="1" el="2079" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2080" ordinal="1965" sl="2080" sc="1" el="2080" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2081" ordinal="1966" sl="2081" sc="1" el="2081" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2082" ordinal="1967" sl="2082" sc="1" el="2082" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2083" ordinal="1968" sl="2083" sc="1" el="2083" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2085" ordinal="1969" sl="2085" sc="1" el="2085" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2086" ordinal="1970" sl="2086" sc="1" el="2086" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2087" ordinal="1971" sl="2087" sc="1" el="2087" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2088" ordinal="1972" sl="2088" sc="1" el="2088" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2090" ordinal="1973" sl="2090" sc="1" el="2090" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2091" ordinal="1974" sl="2091" sc="1" el="2091" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2092" ordinal="1975" sl="2092" sc="1" el="2092" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2093" ordinal="1976" sl="2093" sc="1" el="2093" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2095" ordinal="1977" sl="2095" sc="1" el="2095" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2096" ordinal="1978" sl="2096" sc="1" el="2096" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2097" ordinal="1979" sl="2097" sc="1" el="2097" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2098" ordinal="1980" sl="2098" sc="1" el="2098" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2100" ordinal="1981" sl="2100" sc="1" el="2100" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2101" ordinal="1982" sl="2101" sc="1" el="2101" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2102" ordinal="1983" sl="2102" sc="1" el="2102" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2103" ordinal="1984" sl="2103" sc="1" el="2103" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2105" ordinal="1985" sl="2105" sc="1" el="2105" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2106" ordinal="1986" sl="2106" sc="1" el="2106" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2107" ordinal="1987" sl="2107" sc="1" el="2107" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2108" ordinal="1988" sl="2108" sc="1" el="2108" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2110" ordinal="1989" sl="2110" sc="1" el="2110" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2111" ordinal="1990" sl="2111" sc="1" el="2111" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2112" ordinal="1991" sl="2112" sc="1" el="2112" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2113" ordinal="1992" sl="2113" sc="1" el="2113" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2115" ordinal="1993" sl="2115" sc="1" el="2115" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2116" ordinal="1994" sl="2116" sc="1" el="2116" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2117" ordinal="1995" sl="2117" sc="1" el="2117" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2118" ordinal="1996" sl="2118" sc="1" el="2118" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2120" ordinal="1997" sl="2120" sc="1" el="2120" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2121" ordinal="1998" sl="2121" sc="1" el="2121" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2122" ordinal="1999" sl="2122" sc="1" el="2122" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2123" ordinal="2000" sl="2123" sc="1" el="2123" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2125" ordinal="2001" sl="2125" sc="1" el="2125" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2126" ordinal="2002" sl="2126" sc="1" el="2126" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2127" ordinal="2003" sl="2127" sc="1" el="2127" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2128" ordinal="2004" sl="2128" sc="1" el="2128" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2130" ordinal="2005" sl="2130" sc="1" el="2130" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2131" ordinal="2006" sl="2131" sc="1" el="2131" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2132" ordinal="2007" sl="2132" sc="1" el="2132" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2133" ordinal="2008" sl="2133" sc="1" el="2133" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2135" ordinal="2009" sl="2135" sc="1" el="2135" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2136" ordinal="2010" sl="2136" sc="1" el="2136" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2137" ordinal="2011" sl="2137" sc="1" el="2137" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2138" ordinal="2012" sl="2138" sc="1" el="2138" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2140" ordinal="2013" sl="2140" sc="1" el="2140" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2141" ordinal="2014" sl="2141" sc="1" el="2141" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2142" ordinal="2015" sl="2142" sc="1" el="2142" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2143" ordinal="2016" sl="2143" sc="1" el="2143" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2145" ordinal="2017" sl="2145" sc="1" el="2145" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2146" ordinal="2018" sl="2146" sc="1" el="2146" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2147" ordinal="2019" sl="2147" sc="1" el="2147" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2148" ordinal="2020" sl="2148" sc="1" el="2148" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2150" ordinal="2021" sl="2150" sc="1" el="2150" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2151" ordinal="2022" sl="2151" sc="1" el="2151" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2152" ordinal="2023" sl="2152" sc="1" el="2152" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2153" ordinal="2024" sl="2153" sc="1" el="2153" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2154" ordinal="2025" sl="2154" sc="1" el="2154" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2156" ordinal="2026" sl="2156" sc="1" el="2156" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2157" ordinal="2027" sl="2157" sc="1" el="2157" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2158" ordinal="2028" sl="2158" sc="1" el="2158" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2159" ordinal="2029" sl="2159" sc="1" el="2159" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2161" ordinal="2030" sl="2161" sc="1" el="2161" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2162" ordinal="2031" sl="2162" sc="1" el="2162" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2163" ordinal="2032" sl="2163" sc="1" el="2163" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2164" ordinal="2033" sl="2164" sc="1" el="2164" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2166" ordinal="2034" sl="2166" sc="1" el="2166" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2167" ordinal="2035" sl="2167" sc="1" el="2167" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2168" ordinal="2036" sl="2168" sc="1" el="2168" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2169" ordinal="2037" sl="2169" sc="1" el="2169" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2171" ordinal="2038" sl="2171" sc="1" el="2171" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2172" ordinal="2039" sl="2172" sc="1" el="2172" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2173" ordinal="2040" sl="2173" sc="1" el="2173" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2174" ordinal="2041" sl="2174" sc="1" el="2174" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2176" ordinal="2042" sl="2176" sc="1" el="2176" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2177" ordinal="2043" sl="2177" sc="1" el="2177" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2178" ordinal="2044" sl="2178" sc="1" el="2178" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2179" ordinal="2045" sl="2179" sc="1" el="2179" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2181" ordinal="2046" sl="2181" sc="1" el="2181" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2182" ordinal="2047" sl="2182" sc="1" el="2182" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2183" ordinal="2048" sl="2183" sc="1" el="2183" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2184" ordinal="2049" sl="2184" sc="1" el="2184" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2186" ordinal="2050" sl="2186" sc="1" el="2186" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2187" ordinal="2051" sl="2187" sc="1" el="2187" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2188" ordinal="2052" sl="2188" sc="1" el="2188" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2189" ordinal="2053" sl="2189" sc="1" el="2189" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2191" ordinal="2054" sl="2191" sc="1" el="2191" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2192" ordinal="2055" sl="2192" sc="1" el="2192" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2193" ordinal="2056" sl="2193" sc="1" el="2193" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2194" ordinal="2057" sl="2194" sc="1" el="2194" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2196" ordinal="2058" sl="2196" sc="1" el="2196" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2197" ordinal="2059" sl="2197" sc="1" el="2197" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2198" ordinal="2060" sl="2198" sc="1" el="2198" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2199" ordinal="2061" sl="2199" sc="1" el="2199" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2201" ordinal="2062" sl="2201" sc="1" el="2201" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2202" ordinal="2063" sl="2202" sc="1" el="2202" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2203" ordinal="2064" sl="2203" sc="1" el="2203" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2204" ordinal="2065" sl="2204" sc="1" el="2204" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2206" ordinal="2066" sl="2206" sc="1" el="2206" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2207" ordinal="2067" sl="2207" sc="1" el="2207" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2208" ordinal="2068" sl="2208" sc="1" el="2208" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2209" ordinal="2069" sl="2209" sc="1" el="2209" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2211" ordinal="2070" sl="2211" sc="1" el="2211" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2212" ordinal="2071" sl="2212" sc="1" el="2212" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2213" ordinal="2072" sl="2213" sc="1" el="2213" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2214" ordinal="2073" sl="2214" sc="1" el="2214" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2216" ordinal="2074" sl="2216" sc="1" el="2216" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2217" ordinal="2075" sl="2217" sc="1" el="2217" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2218" ordinal="2076" sl="2218" sc="1" el="2218" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2219" ordinal="2077" sl="2219" sc="1" el="2219" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2221" ordinal="2078" sl="2221" sc="1" el="2221" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2222" ordinal="2079" sl="2222" sc="1" el="2222" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2223" ordinal="2080" sl="2223" sc="1" el="2223" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2224" ordinal="2081" sl="2224" sc="1" el="2224" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2226" ordinal="2082" sl="2226" sc="1" el="2226" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2227" ordinal="2083" sl="2227" sc="1" el="2227" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2228" ordinal="2084" sl="2228" sc="1" el="2228" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2229" ordinal="2085" sl="2229" sc="1" el="2229" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2231" ordinal="2086" sl="2231" sc="1" el="2231" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2232" ordinal="2087" sl="2232" sc="1" el="2232" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2233" ordinal="2088" sl="2233" sc="1" el="2233" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2234" ordinal="2089" sl="2234" sc="1" el="2234" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2236" ordinal="2090" sl="2236" sc="1" el="2236" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2237" ordinal="2091" sl="2237" sc="1" el="2237" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2238" ordinal="2092" sl="2238" sc="1" el="2238" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2239" ordinal="2093" sl="2239" sc="1" el="2239" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2241" ordinal="2094" sl="2241" sc="1" el="2241" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2242" ordinal="2095" sl="2242" sc="1" el="2242" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2243" ordinal="2096" sl="2243" sc="1" el="2243" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2244" ordinal="2097" sl="2244" sc="1" el="2244" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2246" ordinal="2098" sl="2246" sc="1" el="2246" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2247" ordinal="2099" sl="2247" sc="1" el="2247" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2248" ordinal="2100" sl="2248" sc="1" el="2248" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2249" ordinal="2101" sl="2249" sc="1" el="2249" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2251" ordinal="2102" sl="2251" sc="1" el="2251" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2252" ordinal="2103" sl="2252" sc="1" el="2252" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2253" ordinal="2104" sl="2253" sc="1" el="2253" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2254" ordinal="2105" sl="2254" sc="1" el="2254" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2256" ordinal="2106" sl="2256" sc="1" el="2256" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2257" ordinal="2107" sl="2257" sc="1" el="2257" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2258" ordinal="2108" sl="2258" sc="1" el="2258" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2259" ordinal="2109" sl="2259" sc="1" el="2259" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2261" ordinal="2110" sl="2261" sc="1" el="2261" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2262" ordinal="2111" sl="2262" sc="1" el="2262" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2263" ordinal="2112" sl="2263" sc="1" el="2263" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2264" ordinal="2113" sl="2264" sc="1" el="2264" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2266" ordinal="2114" sl="2266" sc="1" el="2266" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2267" ordinal="2115" sl="2267" sc="1" el="2267" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2268" ordinal="2116" sl="2268" sc="1" el="2268" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2269" ordinal="2117" sl="2269" sc="1" el="2269" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2271" ordinal="2118" sl="2271" sc="1" el="2271" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2272" ordinal="2119" sl="2272" sc="1" el="2272" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2273" ordinal="2120" sl="2273" sc="1" el="2273" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2274" ordinal="2121" sl="2274" sc="1" el="2274" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2275" ordinal="2122" sl="2275" sc="1" el="2275" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2277" ordinal="2123" sl="2277" sc="1" el="2277" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2278" ordinal="2124" sl="2278" sc="1" el="2278" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2279" ordinal="2125" sl="2279" sc="1" el="2279" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2280" ordinal="2126" sl="2280" sc="1" el="2280" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2282" ordinal="2127" sl="2282" sc="1" el="2282" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2283" ordinal="2128" sl="2283" sc="1" el="2283" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2284" ordinal="2129" sl="2284" sc="1" el="2284" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2285" ordinal="2130" sl="2285" sc="1" el="2285" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2287" ordinal="2131" sl="2287" sc="1" el="2287" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2288" ordinal="2132" sl="2288" sc="1" el="2288" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2289" ordinal="2133" sl="2289" sc="1" el="2289" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2290" ordinal="2134" sl="2290" sc="1" el="2290" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2292" ordinal="2135" sl="2292" sc="1" el="2292" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2293" ordinal="2136" sl="2293" sc="1" el="2293" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2294" ordinal="2137" sl="2294" sc="1" el="2294" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2295" ordinal="2138" sl="2295" sc="1" el="2295" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2297" ordinal="2139" sl="2297" sc="1" el="2297" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2298" ordinal="2140" sl="2298" sc="1" el="2298" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2299" ordinal="2141" sl="2299" sc="1" el="2299" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2300" ordinal="2142" sl="2300" sc="1" el="2300" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2302" ordinal="2143" sl="2302" sc="1" el="2302" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2303" ordinal="2144" sl="2303" sc="1" el="2303" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2304" ordinal="2145" sl="2304" sc="1" el="2304" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2305" ordinal="2146" sl="2305" sc="1" el="2305" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2307" ordinal="2147" sl="2307" sc="1" el="2307" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2308" ordinal="2148" sl="2308" sc="1" el="2308" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2309" ordinal="2149" sl="2309" sc="1" el="2309" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2310" ordinal="2150" sl="2310" sc="1" el="2310" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2312" ordinal="2151" sl="2312" sc="1" el="2312" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2313" ordinal="2152" sl="2313" sc="1" el="2313" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2314" ordinal="2153" sl="2314" sc="1" el="2314" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2315" ordinal="2154" sl="2315" sc="1" el="2315" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2317" ordinal="2155" sl="2317" sc="1" el="2317" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2318" ordinal="2156" sl="2318" sc="1" el="2318" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2319" ordinal="2157" sl="2319" sc="1" el="2319" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2320" ordinal="2158" sl="2320" sc="1" el="2320" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2322" ordinal="2159" sl="2322" sc="1" el="2322" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2323" ordinal="2160" sl="2323" sc="1" el="2323" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2324" ordinal="2161" sl="2324" sc="1" el="2324" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2325" ordinal="2162" sl="2325" sc="1" el="2325" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2327" ordinal="2163" sl="2327" sc="1" el="2327" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2328" ordinal="2164" sl="2328" sc="1" el="2328" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2329" ordinal="2165" sl="2329" sc="1" el="2329" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2330" ordinal="2166" sl="2330" sc="1" el="2330" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2332" ordinal="2167" sl="2332" sc="1" el="2332" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2333" ordinal="2168" sl="2333" sc="1" el="2333" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2334" ordinal="2169" sl="2334" sc="1" el="2334" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2335" ordinal="2170" sl="2335" sc="1" el="2335" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2336" ordinal="2171" sl="2336" sc="1" el="2336" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2338" ordinal="2172" sl="2338" sc="1" el="2338" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2339" ordinal="2173" sl="2339" sc="1" el="2339" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2340" ordinal="2174" sl="2340" sc="1" el="2340" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2341" ordinal="2175" sl="2341" sc="1" el="2341" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2343" ordinal="2176" sl="2343" sc="1" el="2343" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2344" ordinal="2177" sl="2344" sc="1" el="2344" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2345" ordinal="2178" sl="2345" sc="1" el="2345" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2346" ordinal="2179" sl="2346" sc="1" el="2346" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2348" ordinal="2180" sl="2348" sc="1" el="2348" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2349" ordinal="2181" sl="2349" sc="1" el="2349" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2350" ordinal="2182" sl="2350" sc="1" el="2350" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2351" ordinal="2183" sl="2351" sc="1" el="2351" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2353" ordinal="2184" sl="2353" sc="1" el="2353" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2354" ordinal="2185" sl="2354" sc="1" el="2354" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2355" ordinal="2186" sl="2355" sc="1" el="2355" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2356" ordinal="2187" sl="2356" sc="1" el="2356" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2357" ordinal="2188" sl="2357" sc="1" el="2357" ec="2" bec="0" bev="0" fileid="80" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="10" ec="1" el="2357" bec="0" bev="0" fileid="80" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="136" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Migrations.Aphrodite1::Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)</Name> <FileRef uid="80" /> <SequencePoints> <SequencePoint vc="0" uspid="2360" ordinal="0" sl="2360" sc="1" el="2360" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2361" ordinal="1" sl="2361" sc="1" el="2361" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2362" ordinal="2" sl="2362" sc="1" el="2362" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2364" ordinal="3" sl="2364" sc="1" el="2364" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2365" ordinal="4" sl="2365" sc="1" el="2365" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2367" ordinal="5" sl="2367" sc="1" el="2367" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2368" ordinal="6" sl="2368" sc="1" el="2368" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2370" ordinal="7" sl="2370" sc="1" el="2370" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2371" ordinal="8" sl="2371" sc="1" el="2371" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2373" ordinal="9" sl="2373" sc="1" el="2373" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2374" ordinal="10" sl="2374" sc="1" el="2374" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2376" ordinal="11" sl="2376" sc="1" el="2376" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2377" ordinal="12" sl="2377" sc="1" el="2377" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2379" ordinal="13" sl="2379" sc="1" el="2379" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2380" ordinal="14" sl="2380" sc="1" el="2380" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2382" ordinal="15" sl="2382" sc="1" el="2382" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2383" ordinal="16" sl="2383" sc="1" el="2383" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2385" ordinal="17" sl="2385" sc="1" el="2385" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2386" ordinal="18" sl="2386" sc="1" el="2386" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2388" ordinal="19" sl="2388" sc="1" el="2388" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2389" ordinal="20" sl="2389" sc="1" el="2389" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2391" ordinal="21" sl="2391" sc="1" el="2391" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2392" ordinal="22" sl="2392" sc="1" el="2392" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2394" ordinal="23" sl="2394" sc="1" el="2394" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2395" ordinal="24" sl="2395" sc="1" el="2395" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2397" ordinal="25" sl="2397" sc="1" el="2397" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2398" ordinal="26" sl="2398" sc="1" el="2398" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2400" ordinal="27" sl="2400" sc="1" el="2400" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2401" ordinal="28" sl="2401" sc="1" el="2401" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2403" ordinal="29" sl="2403" sc="1" el="2403" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2404" ordinal="30" sl="2404" sc="1" el="2404" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2406" ordinal="31" sl="2406" sc="1" el="2406" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2407" ordinal="32" sl="2407" sc="1" el="2407" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2409" ordinal="33" sl="2409" sc="1" el="2409" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2410" ordinal="34" sl="2410" sc="1" el="2410" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2412" ordinal="35" sl="2412" sc="1" el="2412" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2413" ordinal="36" sl="2413" sc="1" el="2413" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2415" ordinal="37" sl="2415" sc="1" el="2415" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2416" ordinal="38" sl="2416" sc="1" el="2416" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2418" ordinal="39" sl="2418" sc="1" el="2418" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2419" ordinal="40" sl="2419" sc="1" el="2419" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2421" ordinal="41" sl="2421" sc="1" el="2421" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2422" ordinal="42" sl="2422" sc="1" el="2422" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2424" ordinal="43" sl="2424" sc="1" el="2424" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2425" ordinal="44" sl="2425" sc="1" el="2425" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2427" ordinal="45" sl="2427" sc="1" el="2427" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2428" ordinal="46" sl="2428" sc="1" el="2428" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2430" ordinal="47" sl="2430" sc="1" el="2430" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2431" ordinal="48" sl="2431" sc="1" el="2431" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2433" ordinal="49" sl="2433" sc="1" el="2433" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2434" ordinal="50" sl="2434" sc="1" el="2434" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2436" ordinal="51" sl="2436" sc="1" el="2436" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2437" ordinal="52" sl="2437" sc="1" el="2437" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2439" ordinal="53" sl="2439" sc="1" el="2439" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2440" ordinal="54" sl="2440" sc="1" el="2440" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2442" ordinal="55" sl="2442" sc="1" el="2442" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2443" ordinal="56" sl="2443" sc="1" el="2443" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2445" ordinal="57" sl="2445" sc="1" el="2445" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2446" ordinal="58" sl="2446" sc="1" el="2446" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2448" ordinal="59" sl="2448" sc="1" el="2448" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2449" ordinal="60" sl="2449" sc="1" el="2449" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2451" ordinal="61" sl="2451" sc="1" el="2451" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2452" ordinal="62" sl="2452" sc="1" el="2452" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2454" ordinal="63" sl="2454" sc="1" el="2454" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2455" ordinal="64" sl="2455" sc="1" el="2455" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2457" ordinal="65" sl="2457" sc="1" el="2457" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2458" ordinal="66" sl="2458" sc="1" el="2458" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2460" ordinal="67" sl="2460" sc="1" el="2460" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2461" ordinal="68" sl="2461" sc="1" el="2461" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2463" ordinal="69" sl="2463" sc="1" el="2463" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2464" ordinal="70" sl="2464" sc="1" el="2464" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2466" ordinal="71" sl="2466" sc="1" el="2466" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2467" ordinal="72" sl="2467" sc="1" el="2467" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2469" ordinal="73" sl="2469" sc="1" el="2469" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2470" ordinal="74" sl="2470" sc="1" el="2470" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2472" ordinal="75" sl="2472" sc="1" el="2472" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2473" ordinal="76" sl="2473" sc="1" el="2473" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2475" ordinal="77" sl="2475" sc="1" el="2475" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2476" ordinal="78" sl="2476" sc="1" el="2476" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2478" ordinal="79" sl="2478" sc="1" el="2478" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2479" ordinal="80" sl="2479" sc="1" el="2479" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2481" ordinal="81" sl="2481" sc="1" el="2481" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2482" ordinal="82" sl="2482" sc="1" el="2482" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2484" ordinal="83" sl="2484" sc="1" el="2484" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2485" ordinal="84" sl="2485" sc="1" el="2485" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2487" ordinal="85" sl="2487" sc="1" el="2487" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2488" ordinal="86" sl="2488" sc="1" el="2488" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2490" ordinal="87" sl="2490" sc="1" el="2490" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2491" ordinal="88" sl="2491" sc="1" el="2491" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2493" ordinal="89" sl="2493" sc="1" el="2493" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2494" ordinal="90" sl="2494" sc="1" el="2494" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2496" ordinal="91" sl="2496" sc="1" el="2496" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2497" ordinal="92" sl="2497" sc="1" el="2497" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2499" ordinal="93" sl="2499" sc="1" el="2499" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2500" ordinal="94" sl="2500" sc="1" el="2500" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2502" ordinal="95" sl="2502" sc="1" el="2502" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2503" ordinal="96" sl="2503" sc="1" el="2503" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2505" ordinal="97" sl="2505" sc="1" el="2505" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2506" ordinal="98" sl="2506" sc="1" el="2506" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2508" ordinal="99" sl="2508" sc="1" el="2508" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2509" ordinal="100" sl="2509" sc="1" el="2509" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2511" ordinal="101" sl="2511" sc="1" el="2511" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2512" ordinal="102" sl="2512" sc="1" el="2512" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2514" ordinal="103" sl="2514" sc="1" el="2514" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2515" ordinal="104" sl="2515" sc="1" el="2515" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2517" ordinal="105" sl="2517" sc="1" el="2517" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2518" ordinal="106" sl="2518" sc="1" el="2518" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2520" ordinal="107" sl="2520" sc="1" el="2520" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2521" ordinal="108" sl="2521" sc="1" el="2521" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2523" ordinal="109" sl="2523" sc="1" el="2523" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2524" ordinal="110" sl="2524" sc="1" el="2524" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2526" ordinal="111" sl="2526" sc="1" el="2526" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2527" ordinal="112" sl="2527" sc="1" el="2527" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2529" ordinal="113" sl="2529" sc="1" el="2529" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2530" ordinal="114" sl="2530" sc="1" el="2530" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2532" ordinal="115" sl="2532" sc="1" el="2532" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2533" ordinal="116" sl="2533" sc="1" el="2533" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2535" ordinal="117" sl="2535" sc="1" el="2535" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2536" ordinal="118" sl="2536" sc="1" el="2536" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2538" ordinal="119" sl="2538" sc="1" el="2538" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2539" ordinal="120" sl="2539" sc="1" el="2539" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2541" ordinal="121" sl="2541" sc="1" el="2541" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2542" ordinal="122" sl="2542" sc="1" el="2542" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2544" ordinal="123" sl="2544" sc="1" el="2544" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2545" ordinal="124" sl="2545" sc="1" el="2545" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2547" ordinal="125" sl="2547" sc="1" el="2547" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2548" ordinal="126" sl="2548" sc="1" el="2548" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2550" ordinal="127" sl="2550" sc="1" el="2550" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2551" ordinal="128" sl="2551" sc="1" el="2551" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2553" ordinal="129" sl="2553" sc="1" el="2553" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2554" ordinal="130" sl="2554" sc="1" el="2554" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2556" ordinal="131" sl="2556" sc="1" el="2556" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2557" ordinal="132" sl="2557" sc="1" el="2557" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2559" ordinal="133" sl="2559" sc="1" el="2559" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2560" ordinal="134" sl="2560" sc="1" el="2560" ec="2" bec="0" bev="0" fileid="80" /> <SequencePoint vc="0" uspid="2561" ordinal="135" sl="2561" sc="1" el="2561" ec="2" bec="0" bev="0" fileid="80" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="2360" ec="1" el="2561" bec="0" bev="0" fileid="80" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3372" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Migrations.Aphrodite1</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3372" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Migrations.Aphrodite1::BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)</Name> <FileRef uid="81" /> <SequencePoints> <SequencePoint vc="0" uspid="17" ordinal="0" sl="17" sc="1" el="17" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="19" ordinal="1" sl="19" sc="1" el="19" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="20" ordinal="2" sl="20" sc="1" el="20" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="21" ordinal="3" sl="21" sc="1" el="21" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="22" ordinal="4" sl="22" sc="1" el="22" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="24" ordinal="5" sl="24" sc="1" el="24" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="25" ordinal="6" sl="25" sc="1" el="25" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="26" ordinal="7" sl="26" sc="1" el="26" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="27" ordinal="8" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="28" ordinal="9" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="29" ordinal="10" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="30" ordinal="11" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="31" ordinal="12" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="32" ordinal="13" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="33" ordinal="14" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="34" ordinal="15" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="35" ordinal="16" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="36" ordinal="17" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="37" ordinal="18" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="38" ordinal="19" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="39" ordinal="20" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="40" ordinal="21" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="41" ordinal="22" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="42" ordinal="23" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="43" ordinal="24" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="44" ordinal="25" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="45" ordinal="26" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="46" ordinal="27" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="47" ordinal="28" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="48" ordinal="29" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="49" ordinal="30" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="50" ordinal="31" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="51" ordinal="32" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="52" ordinal="33" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="53" ordinal="34" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="54" ordinal="35" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="55" ordinal="36" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="56" ordinal="37" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="57" ordinal="38" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="58" ordinal="39" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="59" ordinal="40" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="60" ordinal="41" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="61" ordinal="42" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="62" ordinal="43" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="63" ordinal="44" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="64" ordinal="45" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="65" ordinal="46" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="66" ordinal="47" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="67" ordinal="48" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="68" ordinal="49" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="69" ordinal="50" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="70" ordinal="51" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="71" ordinal="52" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="72" ordinal="53" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="73" ordinal="54" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="74" ordinal="55" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="75" ordinal="56" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="76" ordinal="57" sl="76" sc="1" el="76" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="77" ordinal="58" sl="77" sc="1" el="77" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="78" ordinal="59" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="79" ordinal="60" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="81" ordinal="61" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="82" ordinal="62" sl="82" sc="1" el="82" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="83" ordinal="63" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="84" ordinal="64" sl="84" sc="1" el="84" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="85" ordinal="65" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="86" ordinal="66" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="87" ordinal="67" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="88" ordinal="68" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="89" ordinal="69" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="90" ordinal="70" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="91" ordinal="71" sl="91" sc="1" el="91" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="92" ordinal="72" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="93" ordinal="73" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="94" ordinal="74" sl="94" sc="1" el="94" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="95" ordinal="75" sl="95" sc="1" el="95" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="96" ordinal="76" sl="96" sc="1" el="96" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="97" ordinal="77" sl="97" sc="1" el="97" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="99" ordinal="78" sl="99" sc="1" el="99" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="100" ordinal="79" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="101" ordinal="80" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="102" ordinal="81" sl="102" sc="1" el="102" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="103" ordinal="82" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="104" ordinal="83" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="105" ordinal="84" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="106" ordinal="85" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="107" ordinal="86" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="108" ordinal="87" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="109" ordinal="88" sl="109" sc="1" el="109" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="110" ordinal="89" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="111" ordinal="90" sl="111" sc="1" el="111" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="112" ordinal="91" sl="112" sc="1" el="112" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="113" ordinal="92" sl="113" sc="1" el="113" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="114" ordinal="93" sl="114" sc="1" el="114" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="115" ordinal="94" sl="115" sc="1" el="115" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="116" ordinal="95" sl="116" sc="1" el="116" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="117" ordinal="96" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="118" ordinal="97" sl="118" sc="1" el="118" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="120" ordinal="98" sl="120" sc="1" el="120" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="121" ordinal="99" sl="121" sc="1" el="121" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="122" ordinal="100" sl="122" sc="1" el="122" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="123" ordinal="101" sl="123" sc="1" el="123" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="124" ordinal="102" sl="124" sc="1" el="124" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="125" ordinal="103" sl="125" sc="1" el="125" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="126" ordinal="104" sl="126" sc="1" el="126" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="127" ordinal="105" sl="127" sc="1" el="127" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="128" ordinal="106" sl="128" sc="1" el="128" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="129" ordinal="107" sl="129" sc="1" el="129" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="130" ordinal="108" sl="130" sc="1" el="130" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="131" ordinal="109" sl="131" sc="1" el="131" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="132" ordinal="110" sl="132" sc="1" el="132" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="133" ordinal="111" sl="133" sc="1" el="133" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="134" ordinal="112" sl="134" sc="1" el="134" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="135" ordinal="113" sl="135" sc="1" el="135" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="136" ordinal="114" sl="136" sc="1" el="136" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="137" ordinal="115" sl="137" sc="1" el="137" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="138" ordinal="116" sl="138" sc="1" el="138" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="139" ordinal="117" sl="139" sc="1" el="139" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="140" ordinal="118" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="141" ordinal="119" sl="141" sc="1" el="141" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="142" ordinal="120" sl="142" sc="1" el="142" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="143" ordinal="121" sl="143" sc="1" el="143" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="144" ordinal="122" sl="144" sc="1" el="144" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="145" ordinal="123" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="146" ordinal="124" sl="146" sc="1" el="146" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="147" ordinal="125" sl="147" sc="1" el="147" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="148" ordinal="126" sl="148" sc="1" el="148" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="149" ordinal="127" sl="149" sc="1" el="149" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="150" ordinal="128" sl="150" sc="1" el="150" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="152" ordinal="129" sl="152" sc="1" el="152" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="153" ordinal="130" sl="153" sc="1" el="153" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="154" ordinal="131" sl="154" sc="1" el="154" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="155" ordinal="132" sl="155" sc="1" el="155" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="156" ordinal="133" sl="156" sc="1" el="156" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="157" ordinal="134" sl="157" sc="1" el="157" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="158" ordinal="135" sl="158" sc="1" el="158" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="159" ordinal="136" sl="159" sc="1" el="159" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="160" ordinal="137" sl="160" sc="1" el="160" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="161" ordinal="138" sl="161" sc="1" el="161" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="162" ordinal="139" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="163" ordinal="140" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="164" ordinal="141" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="165" ordinal="142" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="166" ordinal="143" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="167" ordinal="144" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="168" ordinal="145" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="169" ordinal="146" sl="169" sc="1" el="169" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="170" ordinal="147" sl="170" sc="1" el="170" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="171" ordinal="148" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="172" ordinal="149" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="173" ordinal="150" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="174" ordinal="151" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="175" ordinal="152" sl="175" sc="1" el="175" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="176" ordinal="153" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="177" ordinal="154" sl="177" sc="1" el="177" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="178" ordinal="155" sl="178" sc="1" el="178" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="179" ordinal="156" sl="179" sc="1" el="179" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="180" ordinal="157" sl="180" sc="1" el="180" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="181" ordinal="158" sl="181" sc="1" el="181" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="182" ordinal="159" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="183" ordinal="160" sl="183" sc="1" el="183" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="184" ordinal="161" sl="184" sc="1" el="184" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="185" ordinal="162" sl="185" sc="1" el="185" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="186" ordinal="163" sl="186" sc="1" el="186" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="187" ordinal="164" sl="187" sc="1" el="187" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="188" ordinal="165" sl="188" sc="1" el="188" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="189" ordinal="166" sl="189" sc="1" el="189" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="190" ordinal="167" sl="190" sc="1" el="190" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="191" ordinal="168" sl="191" sc="1" el="191" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="192" ordinal="169" sl="192" sc="1" el="192" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="193" ordinal="170" sl="193" sc="1" el="193" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="194" ordinal="171" sl="194" sc="1" el="194" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="195" ordinal="172" sl="195" sc="1" el="195" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="196" ordinal="173" sl="196" sc="1" el="196" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="197" ordinal="174" sl="197" sc="1" el="197" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="198" ordinal="175" sl="198" sc="1" el="198" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="199" ordinal="176" sl="199" sc="1" el="199" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="200" ordinal="177" sl="200" sc="1" el="200" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="201" ordinal="178" sl="201" sc="1" el="201" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="202" ordinal="179" sl="202" sc="1" el="202" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="203" ordinal="180" sl="203" sc="1" el="203" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="204" ordinal="181" sl="204" sc="1" el="204" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="205" ordinal="182" sl="205" sc="1" el="205" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="206" ordinal="183" sl="206" sc="1" el="206" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="208" ordinal="184" sl="208" sc="1" el="208" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="209" ordinal="185" sl="209" sc="1" el="209" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="210" ordinal="186" sl="210" sc="1" el="210" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="211" ordinal="187" sl="211" sc="1" el="211" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="212" ordinal="188" sl="212" sc="1" el="212" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="213" ordinal="189" sl="213" sc="1" el="213" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="214" ordinal="190" sl="214" sc="1" el="214" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="215" ordinal="191" sl="215" sc="1" el="215" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="216" ordinal="192" sl="216" sc="1" el="216" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="217" ordinal="193" sl="217" sc="1" el="217" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="218" ordinal="194" sl="218" sc="1" el="218" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="219" ordinal="195" sl="219" sc="1" el="219" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="220" ordinal="196" sl="220" sc="1" el="220" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="221" ordinal="197" sl="221" sc="1" el="221" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="222" ordinal="198" sl="222" sc="1" el="222" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="223" ordinal="199" sl="223" sc="1" el="223" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="224" ordinal="200" sl="224" sc="1" el="224" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="225" ordinal="201" sl="225" sc="1" el="225" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="226" ordinal="202" sl="226" sc="1" el="226" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="227" ordinal="203" sl="227" sc="1" el="227" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="228" ordinal="204" sl="228" sc="1" el="228" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="229" ordinal="205" sl="229" sc="1" el="229" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="230" ordinal="206" sl="230" sc="1" el="230" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="231" ordinal="207" sl="231" sc="1" el="231" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="232" ordinal="208" sl="232" sc="1" el="232" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="233" ordinal="209" sl="233" sc="1" el="233" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="234" ordinal="210" sl="234" sc="1" el="234" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="235" ordinal="211" sl="235" sc="1" el="235" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="236" ordinal="212" sl="236" sc="1" el="236" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="237" ordinal="213" sl="237" sc="1" el="237" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="238" ordinal="214" sl="238" sc="1" el="238" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="239" ordinal="215" sl="239" sc="1" el="239" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="240" ordinal="216" sl="240" sc="1" el="240" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="241" ordinal="217" sl="241" sc="1" el="241" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="242" ordinal="218" sl="242" sc="1" el="242" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="243" ordinal="219" sl="243" sc="1" el="243" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="244" ordinal="220" sl="244" sc="1" el="244" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="245" ordinal="221" sl="245" sc="1" el="245" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="246" ordinal="222" sl="246" sc="1" el="246" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="248" ordinal="223" sl="248" sc="1" el="248" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="249" ordinal="224" sl="249" sc="1" el="249" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="250" ordinal="225" sl="250" sc="1" el="250" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="251" ordinal="226" sl="251" sc="1" el="251" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="252" ordinal="227" sl="252" sc="1" el="252" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="253" ordinal="228" sl="253" sc="1" el="253" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="254" ordinal="229" sl="254" sc="1" el="254" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="255" ordinal="230" sl="255" sc="1" el="255" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="256" ordinal="231" sl="256" sc="1" el="256" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="257" ordinal="232" sl="257" sc="1" el="257" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="258" ordinal="233" sl="258" sc="1" el="258" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="259" ordinal="234" sl="259" sc="1" el="259" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="260" ordinal="235" sl="260" sc="1" el="260" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="261" ordinal="236" sl="261" sc="1" el="261" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="262" ordinal="237" sl="262" sc="1" el="262" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="263" ordinal="238" sl="263" sc="1" el="263" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="264" ordinal="239" sl="264" sc="1" el="264" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="265" ordinal="240" sl="265" sc="1" el="265" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="266" ordinal="241" sl="266" sc="1" el="266" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="267" ordinal="242" sl="267" sc="1" el="267" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="268" ordinal="243" sl="268" sc="1" el="268" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="269" ordinal="244" sl="269" sc="1" el="269" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="270" ordinal="245" sl="270" sc="1" el="270" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="271" ordinal="246" sl="271" sc="1" el="271" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="272" ordinal="247" sl="272" sc="1" el="272" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="273" ordinal="248" sl="273" sc="1" el="273" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="274" ordinal="249" sl="274" sc="1" el="274" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="275" ordinal="250" sl="275" sc="1" el="275" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="276" ordinal="251" sl="276" sc="1" el="276" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="277" ordinal="252" sl="277" sc="1" el="277" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="278" ordinal="253" sl="278" sc="1" el="278" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="279" ordinal="254" sl="279" sc="1" el="279" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="280" ordinal="255" sl="280" sc="1" el="280" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="281" ordinal="256" sl="281" sc="1" el="281" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="282" ordinal="257" sl="282" sc="1" el="282" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="283" ordinal="258" sl="283" sc="1" el="283" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="284" ordinal="259" sl="284" sc="1" el="284" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="285" ordinal="260" sl="285" sc="1" el="285" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="287" ordinal="261" sl="287" sc="1" el="287" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="288" ordinal="262" sl="288" sc="1" el="288" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="289" ordinal="263" sl="289" sc="1" el="289" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="290" ordinal="264" sl="290" sc="1" el="290" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="291" ordinal="265" sl="291" sc="1" el="291" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="292" ordinal="266" sl="292" sc="1" el="292" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="293" ordinal="267" sl="293" sc="1" el="293" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="294" ordinal="268" sl="294" sc="1" el="294" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="295" ordinal="269" sl="295" sc="1" el="295" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="296" ordinal="270" sl="296" sc="1" el="296" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="297" ordinal="271" sl="297" sc="1" el="297" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="298" ordinal="272" sl="298" sc="1" el="298" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="299" ordinal="273" sl="299" sc="1" el="299" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="300" ordinal="274" sl="300" sc="1" el="300" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="301" ordinal="275" sl="301" sc="1" el="301" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="302" ordinal="276" sl="302" sc="1" el="302" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="303" ordinal="277" sl="303" sc="1" el="303" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="304" ordinal="278" sl="304" sc="1" el="304" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="305" ordinal="279" sl="305" sc="1" el="305" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="306" ordinal="280" sl="306" sc="1" el="306" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="307" ordinal="281" sl="307" sc="1" el="307" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="308" ordinal="282" sl="308" sc="1" el="308" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="309" ordinal="283" sl="309" sc="1" el="309" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="310" ordinal="284" sl="310" sc="1" el="310" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="311" ordinal="285" sl="311" sc="1" el="311" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="312" ordinal="286" sl="312" sc="1" el="312" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="313" ordinal="287" sl="313" sc="1" el="313" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="314" ordinal="288" sl="314" sc="1" el="314" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="315" ordinal="289" sl="315" sc="1" el="315" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="316" ordinal="290" sl="316" sc="1" el="316" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="317" ordinal="291" sl="317" sc="1" el="317" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="318" ordinal="292" sl="318" sc="1" el="318" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="319" ordinal="293" sl="319" sc="1" el="319" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="320" ordinal="294" sl="320" sc="1" el="320" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="321" ordinal="295" sl="321" sc="1" el="321" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="322" ordinal="296" sl="322" sc="1" el="322" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="323" ordinal="297" sl="323" sc="1" el="323" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="324" ordinal="298" sl="324" sc="1" el="324" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="325" ordinal="299" sl="325" sc="1" el="325" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="326" ordinal="300" sl="326" sc="1" el="326" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="327" ordinal="301" sl="327" sc="1" el="327" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="328" ordinal="302" sl="328" sc="1" el="328" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="329" ordinal="303" sl="329" sc="1" el="329" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="330" ordinal="304" sl="330" sc="1" el="330" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="331" ordinal="305" sl="331" sc="1" el="331" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="332" ordinal="306" sl="332" sc="1" el="332" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="333" ordinal="307" sl="333" sc="1" el="333" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="334" ordinal="308" sl="334" sc="1" el="334" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="335" ordinal="309" sl="335" sc="1" el="335" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="336" ordinal="310" sl="336" sc="1" el="336" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="337" ordinal="311" sl="337" sc="1" el="337" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="338" ordinal="312" sl="338" sc="1" el="338" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="339" ordinal="313" sl="339" sc="1" el="339" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="340" ordinal="314" sl="340" sc="1" el="340" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="341" ordinal="315" sl="341" sc="1" el="341" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="342" ordinal="316" sl="342" sc="1" el="342" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="343" ordinal="317" sl="343" sc="1" el="343" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="344" ordinal="318" sl="344" sc="1" el="344" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="345" ordinal="319" sl="345" sc="1" el="345" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="346" ordinal="320" sl="346" sc="1" el="346" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="347" ordinal="321" sl="347" sc="1" el="347" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="348" ordinal="322" sl="348" sc="1" el="348" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="349" ordinal="323" sl="349" sc="1" el="349" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="350" ordinal="324" sl="350" sc="1" el="350" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="351" ordinal="325" sl="351" sc="1" el="351" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="352" ordinal="326" sl="352" sc="1" el="352" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="353" ordinal="327" sl="353" sc="1" el="353" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="354" ordinal="328" sl="354" sc="1" el="354" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="355" ordinal="329" sl="355" sc="1" el="355" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="356" ordinal="330" sl="356" sc="1" el="356" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="357" ordinal="331" sl="357" sc="1" el="357" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="358" ordinal="332" sl="358" sc="1" el="358" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="359" ordinal="333" sl="359" sc="1" el="359" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="360" ordinal="334" sl="360" sc="1" el="360" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="361" ordinal="335" sl="361" sc="1" el="361" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="362" ordinal="336" sl="362" sc="1" el="362" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="363" ordinal="337" sl="363" sc="1" el="363" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="364" ordinal="338" sl="364" sc="1" el="364" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="365" ordinal="339" sl="365" sc="1" el="365" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="366" ordinal="340" sl="366" sc="1" el="366" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="367" ordinal="341" sl="367" sc="1" el="367" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="368" ordinal="342" sl="368" sc="1" el="368" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="369" ordinal="343" sl="369" sc="1" el="369" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="370" ordinal="344" sl="370" sc="1" el="370" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="371" ordinal="345" sl="371" sc="1" el="371" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="372" ordinal="346" sl="372" sc="1" el="372" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="373" ordinal="347" sl="373" sc="1" el="373" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="374" ordinal="348" sl="374" sc="1" el="374" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="375" ordinal="349" sl="375" sc="1" el="375" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="376" ordinal="350" sl="376" sc="1" el="376" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="377" ordinal="351" sl="377" sc="1" el="377" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="378" ordinal="352" sl="378" sc="1" el="378" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="379" ordinal="353" sl="379" sc="1" el="379" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="380" ordinal="354" sl="380" sc="1" el="380" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="381" ordinal="355" sl="381" sc="1" el="381" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="382" ordinal="356" sl="382" sc="1" el="382" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="383" ordinal="357" sl="383" sc="1" el="383" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="384" ordinal="358" sl="384" sc="1" el="384" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="385" ordinal="359" sl="385" sc="1" el="385" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="386" ordinal="360" sl="386" sc="1" el="386" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="387" ordinal="361" sl="387" sc="1" el="387" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="388" ordinal="362" sl="388" sc="1" el="388" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="389" ordinal="363" sl="389" sc="1" el="389" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="390" ordinal="364" sl="390" sc="1" el="390" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="391" ordinal="365" sl="391" sc="1" el="391" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="392" ordinal="366" sl="392" sc="1" el="392" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="393" ordinal="367" sl="393" sc="1" el="393" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="394" ordinal="368" sl="394" sc="1" el="394" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="395" ordinal="369" sl="395" sc="1" el="395" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="396" ordinal="370" sl="396" sc="1" el="396" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="397" ordinal="371" sl="397" sc="1" el="397" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="398" ordinal="372" sl="398" sc="1" el="398" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="399" ordinal="373" sl="399" sc="1" el="399" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="400" ordinal="374" sl="400" sc="1" el="400" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="401" ordinal="375" sl="401" sc="1" el="401" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="402" ordinal="376" sl="402" sc="1" el="402" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="403" ordinal="377" sl="403" sc="1" el="403" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="404" ordinal="378" sl="404" sc="1" el="404" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="405" ordinal="379" sl="405" sc="1" el="405" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="406" ordinal="380" sl="406" sc="1" el="406" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="407" ordinal="381" sl="407" sc="1" el="407" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="408" ordinal="382" sl="408" sc="1" el="408" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="409" ordinal="383" sl="409" sc="1" el="409" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="410" ordinal="384" sl="410" sc="1" el="410" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="411" ordinal="385" sl="411" sc="1" el="411" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="412" ordinal="386" sl="412" sc="1" el="412" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="413" ordinal="387" sl="413" sc="1" el="413" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="414" ordinal="388" sl="414" sc="1" el="414" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="415" ordinal="389" sl="415" sc="1" el="415" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="416" ordinal="390" sl="416" sc="1" el="416" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="417" ordinal="391" sl="417" sc="1" el="417" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="418" ordinal="392" sl="418" sc="1" el="418" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="419" ordinal="393" sl="419" sc="1" el="419" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="420" ordinal="394" sl="420" sc="1" el="420" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="421" ordinal="395" sl="421" sc="1" el="421" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="422" ordinal="396" sl="422" sc="1" el="422" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="423" ordinal="397" sl="423" sc="1" el="423" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="424" ordinal="398" sl="424" sc="1" el="424" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="425" ordinal="399" sl="425" sc="1" el="425" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="426" ordinal="400" sl="426" sc="1" el="426" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="427" ordinal="401" sl="427" sc="1" el="427" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="428" ordinal="402" sl="428" sc="1" el="428" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="429" ordinal="403" sl="429" sc="1" el="429" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="430" ordinal="404" sl="430" sc="1" el="430" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="431" ordinal="405" sl="431" sc="1" el="431" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="432" ordinal="406" sl="432" sc="1" el="432" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="433" ordinal="407" sl="433" sc="1" el="433" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="434" ordinal="408" sl="434" sc="1" el="434" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="435" ordinal="409" sl="435" sc="1" el="435" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="436" ordinal="410" sl="436" sc="1" el="436" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="437" ordinal="411" sl="437" sc="1" el="437" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="438" ordinal="412" sl="438" sc="1" el="438" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="439" ordinal="413" sl="439" sc="1" el="439" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="440" ordinal="414" sl="440" sc="1" el="440" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="441" ordinal="415" sl="441" sc="1" el="441" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="442" ordinal="416" sl="442" sc="1" el="442" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="443" ordinal="417" sl="443" sc="1" el="443" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="444" ordinal="418" sl="444" sc="1" el="444" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="445" ordinal="419" sl="445" sc="1" el="445" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="446" ordinal="420" sl="446" sc="1" el="446" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="447" ordinal="421" sl="447" sc="1" el="447" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="448" ordinal="422" sl="448" sc="1" el="448" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="449" ordinal="423" sl="449" sc="1" el="449" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="450" ordinal="424" sl="450" sc="1" el="450" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="451" ordinal="425" sl="451" sc="1" el="451" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="452" ordinal="426" sl="452" sc="1" el="452" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="453" ordinal="427" sl="453" sc="1" el="453" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="454" ordinal="428" sl="454" sc="1" el="454" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="455" ordinal="429" sl="455" sc="1" el="455" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="456" ordinal="430" sl="456" sc="1" el="456" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="457" ordinal="431" sl="457" sc="1" el="457" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="458" ordinal="432" sl="458" sc="1" el="458" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="459" ordinal="433" sl="459" sc="1" el="459" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="460" ordinal="434" sl="460" sc="1" el="460" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="461" ordinal="435" sl="461" sc="1" el="461" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="462" ordinal="436" sl="462" sc="1" el="462" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="463" ordinal="437" sl="463" sc="1" el="463" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="464" ordinal="438" sl="464" sc="1" el="464" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="465" ordinal="439" sl="465" sc="1" el="465" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="466" ordinal="440" sl="466" sc="1" el="466" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="467" ordinal="441" sl="467" sc="1" el="467" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="468" ordinal="442" sl="468" sc="1" el="468" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="469" ordinal="443" sl="469" sc="1" el="469" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="470" ordinal="444" sl="470" sc="1" el="470" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="472" ordinal="445" sl="472" sc="1" el="472" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="473" ordinal="446" sl="473" sc="1" el="473" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="474" ordinal="447" sl="474" sc="1" el="474" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="475" ordinal="448" sl="475" sc="1" el="475" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="476" ordinal="449" sl="476" sc="1" el="476" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="477" ordinal="450" sl="477" sc="1" el="477" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="478" ordinal="451" sl="478" sc="1" el="478" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="479" ordinal="452" sl="479" sc="1" el="479" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="480" ordinal="453" sl="480" sc="1" el="480" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="481" ordinal="454" sl="481" sc="1" el="481" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="482" ordinal="455" sl="482" sc="1" el="482" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="483" ordinal="456" sl="483" sc="1" el="483" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="484" ordinal="457" sl="484" sc="1" el="484" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="485" ordinal="458" sl="485" sc="1" el="485" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="486" ordinal="459" sl="486" sc="1" el="486" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="487" ordinal="460" sl="487" sc="1" el="487" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="488" ordinal="461" sl="488" sc="1" el="488" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="489" ordinal="462" sl="489" sc="1" el="489" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="490" ordinal="463" sl="490" sc="1" el="490" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="492" ordinal="464" sl="492" sc="1" el="492" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="493" ordinal="465" sl="493" sc="1" el="493" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="494" ordinal="466" sl="494" sc="1" el="494" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="495" ordinal="467" sl="495" sc="1" el="495" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="496" ordinal="468" sl="496" sc="1" el="496" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="497" ordinal="469" sl="497" sc="1" el="497" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="498" ordinal="470" sl="498" sc="1" el="498" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="499" ordinal="471" sl="499" sc="1" el="499" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="500" ordinal="472" sl="500" sc="1" el="500" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="501" ordinal="473" sl="501" sc="1" el="501" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="502" ordinal="474" sl="502" sc="1" el="502" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="503" ordinal="475" sl="503" sc="1" el="503" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="504" ordinal="476" sl="504" sc="1" el="504" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="505" ordinal="477" sl="505" sc="1" el="505" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="506" ordinal="478" sl="506" sc="1" el="506" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="507" ordinal="479" sl="507" sc="1" el="507" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="508" ordinal="480" sl="508" sc="1" el="508" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="509" ordinal="481" sl="509" sc="1" el="509" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="510" ordinal="482" sl="510" sc="1" el="510" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="511" ordinal="483" sl="511" sc="1" el="511" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="512" ordinal="484" sl="512" sc="1" el="512" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="513" ordinal="485" sl="513" sc="1" el="513" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="515" ordinal="486" sl="515" sc="1" el="515" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="516" ordinal="487" sl="516" sc="1" el="516" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="517" ordinal="488" sl="517" sc="1" el="517" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="518" ordinal="489" sl="518" sc="1" el="518" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="519" ordinal="490" sl="519" sc="1" el="519" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="520" ordinal="491" sl="520" sc="1" el="520" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="521" ordinal="492" sl="521" sc="1" el="521" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="522" ordinal="493" sl="522" sc="1" el="522" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="523" ordinal="494" sl="523" sc="1" el="523" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="524" ordinal="495" sl="524" sc="1" el="524" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="525" ordinal="496" sl="525" sc="1" el="525" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="526" ordinal="497" sl="526" sc="1" el="526" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="527" ordinal="498" sl="527" sc="1" el="527" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="528" ordinal="499" sl="528" sc="1" el="528" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="529" ordinal="500" sl="529" sc="1" el="529" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="530" ordinal="501" sl="530" sc="1" el="530" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="531" ordinal="502" sl="531" sc="1" el="531" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="532" ordinal="503" sl="532" sc="1" el="532" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="533" ordinal="504" sl="533" sc="1" el="533" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="534" ordinal="505" sl="534" sc="1" el="534" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="535" ordinal="506" sl="535" sc="1" el="535" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="536" ordinal="507" sl="536" sc="1" el="536" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="537" ordinal="508" sl="537" sc="1" el="537" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="539" ordinal="509" sl="539" sc="1" el="539" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="540" ordinal="510" sl="540" sc="1" el="540" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="541" ordinal="511" sl="541" sc="1" el="541" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="542" ordinal="512" sl="542" sc="1" el="542" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="543" ordinal="513" sl="543" sc="1" el="543" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="544" ordinal="514" sl="544" sc="1" el="544" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="545" ordinal="515" sl="545" sc="1" el="545" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="546" ordinal="516" sl="546" sc="1" el="546" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="547" ordinal="517" sl="547" sc="1" el="547" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="548" ordinal="518" sl="548" sc="1" el="548" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="549" ordinal="519" sl="549" sc="1" el="549" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="550" ordinal="520" sl="550" sc="1" el="550" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="551" ordinal="521" sl="551" sc="1" el="551" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="552" ordinal="522" sl="552" sc="1" el="552" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="553" ordinal="523" sl="553" sc="1" el="553" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="554" ordinal="524" sl="554" sc="1" el="554" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="555" ordinal="525" sl="555" sc="1" el="555" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="556" ordinal="526" sl="556" sc="1" el="556" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="557" ordinal="527" sl="557" sc="1" el="557" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="559" ordinal="528" sl="559" sc="1" el="559" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="560" ordinal="529" sl="560" sc="1" el="560" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="561" ordinal="530" sl="561" sc="1" el="561" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="562" ordinal="531" sl="562" sc="1" el="562" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="563" ordinal="532" sl="563" sc="1" el="563" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="564" ordinal="533" sl="564" sc="1" el="564" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="565" ordinal="534" sl="565" sc="1" el="565" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="566" ordinal="535" sl="566" sc="1" el="566" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="567" ordinal="536" sl="567" sc="1" el="567" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="568" ordinal="537" sl="568" sc="1" el="568" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="569" ordinal="538" sl="569" sc="1" el="569" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="570" ordinal="539" sl="570" sc="1" el="570" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="571" ordinal="540" sl="571" sc="1" el="571" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="572" ordinal="541" sl="572" sc="1" el="572" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="573" ordinal="542" sl="573" sc="1" el="573" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="574" ordinal="543" sl="574" sc="1" el="574" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="575" ordinal="544" sl="575" sc="1" el="575" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="576" ordinal="545" sl="576" sc="1" el="576" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="577" ordinal="546" sl="577" sc="1" el="577" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="578" ordinal="547" sl="578" sc="1" el="578" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="579" ordinal="548" sl="579" sc="1" el="579" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="580" ordinal="549" sl="580" sc="1" el="580" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="581" ordinal="550" sl="581" sc="1" el="581" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="582" ordinal="551" sl="582" sc="1" el="582" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="583" ordinal="552" sl="583" sc="1" el="583" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="585" ordinal="553" sl="585" sc="1" el="585" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="586" ordinal="554" sl="586" sc="1" el="586" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="587" ordinal="555" sl="587" sc="1" el="587" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="588" ordinal="556" sl="588" sc="1" el="588" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="589" ordinal="557" sl="589" sc="1" el="589" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="590" ordinal="558" sl="590" sc="1" el="590" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="591" ordinal="559" sl="591" sc="1" el="591" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="592" ordinal="560" sl="592" sc="1" el="592" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="593" ordinal="561" sl="593" sc="1" el="593" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="594" ordinal="562" sl="594" sc="1" el="594" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="595" ordinal="563" sl="595" sc="1" el="595" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="596" ordinal="564" sl="596" sc="1" el="596" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="597" ordinal="565" sl="597" sc="1" el="597" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="598" ordinal="566" sl="598" sc="1" el="598" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="599" ordinal="567" sl="599" sc="1" el="599" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="600" ordinal="568" sl="600" sc="1" el="600" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="601" ordinal="569" sl="601" sc="1" el="601" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="602" ordinal="570" sl="602" sc="1" el="602" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="603" ordinal="571" sl="603" sc="1" el="603" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="604" ordinal="572" sl="604" sc="1" el="604" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="605" ordinal="573" sl="605" sc="1" el="605" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="606" ordinal="574" sl="606" sc="1" el="606" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="607" ordinal="575" sl="607" sc="1" el="607" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="608" ordinal="576" sl="608" sc="1" el="608" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="609" ordinal="577" sl="609" sc="1" el="609" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="610" ordinal="578" sl="610" sc="1" el="610" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="611" ordinal="579" sl="611" sc="1" el="611" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="612" ordinal="580" sl="612" sc="1" el="612" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="613" ordinal="581" sl="613" sc="1" el="613" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="614" ordinal="582" sl="614" sc="1" el="614" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="615" ordinal="583" sl="615" sc="1" el="615" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="616" ordinal="584" sl="616" sc="1" el="616" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="618" ordinal="585" sl="618" sc="1" el="618" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="619" ordinal="586" sl="619" sc="1" el="619" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="620" ordinal="587" sl="620" sc="1" el="620" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="621" ordinal="588" sl="621" sc="1" el="621" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="622" ordinal="589" sl="622" sc="1" el="622" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="623" ordinal="590" sl="623" sc="1" el="623" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="624" ordinal="591" sl="624" sc="1" el="624" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="625" ordinal="592" sl="625" sc="1" el="625" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="626" ordinal="593" sl="626" sc="1" el="626" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="627" ordinal="594" sl="627" sc="1" el="627" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="628" ordinal="595" sl="628" sc="1" el="628" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="629" ordinal="596" sl="629" sc="1" el="629" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="630" ordinal="597" sl="630" sc="1" el="630" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="631" ordinal="598" sl="631" sc="1" el="631" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="632" ordinal="599" sl="632" sc="1" el="632" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="633" ordinal="600" sl="633" sc="1" el="633" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="634" ordinal="601" sl="634" sc="1" el="634" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="635" ordinal="602" sl="635" sc="1" el="635" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="636" ordinal="603" sl="636" sc="1" el="636" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="637" ordinal="604" sl="637" sc="1" el="637" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="638" ordinal="605" sl="638" sc="1" el="638" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="639" ordinal="606" sl="639" sc="1" el="639" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="640" ordinal="607" sl="640" sc="1" el="640" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="642" ordinal="608" sl="642" sc="1" el="642" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="643" ordinal="609" sl="643" sc="1" el="643" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="644" ordinal="610" sl="644" sc="1" el="644" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="645" ordinal="611" sl="645" sc="1" el="645" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="646" ordinal="612" sl="646" sc="1" el="646" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="647" ordinal="613" sl="647" sc="1" el="647" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="648" ordinal="614" sl="648" sc="1" el="648" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="649" ordinal="615" sl="649" sc="1" el="649" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="650" ordinal="616" sl="650" sc="1" el="650" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="651" ordinal="617" sl="651" sc="1" el="651" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="652" ordinal="618" sl="652" sc="1" el="652" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="653" ordinal="619" sl="653" sc="1" el="653" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="654" ordinal="620" sl="654" sc="1" el="654" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="655" ordinal="621" sl="655" sc="1" el="655" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="656" ordinal="622" sl="656" sc="1" el="656" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="657" ordinal="623" sl="657" sc="1" el="657" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="658" ordinal="624" sl="658" sc="1" el="658" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="659" ordinal="625" sl="659" sc="1" el="659" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="660" ordinal="626" sl="660" sc="1" el="660" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="661" ordinal="627" sl="661" sc="1" el="661" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="662" ordinal="628" sl="662" sc="1" el="662" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="663" ordinal="629" sl="663" sc="1" el="663" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="664" ordinal="630" sl="664" sc="1" el="664" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="665" ordinal="631" sl="665" sc="1" el="665" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="666" ordinal="632" sl="666" sc="1" el="666" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="667" ordinal="633" sl="667" sc="1" el="667" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="668" ordinal="634" sl="668" sc="1" el="668" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="669" ordinal="635" sl="669" sc="1" el="669" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="670" ordinal="636" sl="670" sc="1" el="670" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="671" ordinal="637" sl="671" sc="1" el="671" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="672" ordinal="638" sl="672" sc="1" el="672" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="673" ordinal="639" sl="673" sc="1" el="673" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="674" ordinal="640" sl="674" sc="1" el="674" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="675" ordinal="641" sl="675" sc="1" el="675" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="676" ordinal="642" sl="676" sc="1" el="676" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="677" ordinal="643" sl="677" sc="1" el="677" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="678" ordinal="644" sl="678" sc="1" el="678" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="679" ordinal="645" sl="679" sc="1" el="679" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="680" ordinal="646" sl="680" sc="1" el="680" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="681" ordinal="647" sl="681" sc="1" el="681" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="682" ordinal="648" sl="682" sc="1" el="682" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="683" ordinal="649" sl="683" sc="1" el="683" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="684" ordinal="650" sl="684" sc="1" el="684" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="685" ordinal="651" sl="685" sc="1" el="685" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="686" ordinal="652" sl="686" sc="1" el="686" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="687" ordinal="653" sl="687" sc="1" el="687" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="688" ordinal="654" sl="688" sc="1" el="688" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="689" ordinal="655" sl="689" sc="1" el="689" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="690" ordinal="656" sl="690" sc="1" el="690" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="691" ordinal="657" sl="691" sc="1" el="691" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="692" ordinal="658" sl="692" sc="1" el="692" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="693" ordinal="659" sl="693" sc="1" el="693" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="694" ordinal="660" sl="694" sc="1" el="694" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="695" ordinal="661" sl="695" sc="1" el="695" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="696" ordinal="662" sl="696" sc="1" el="696" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="697" ordinal="663" sl="697" sc="1" el="697" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="698" ordinal="664" sl="698" sc="1" el="698" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="699" ordinal="665" sl="699" sc="1" el="699" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="700" ordinal="666" sl="700" sc="1" el="700" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="702" ordinal="667" sl="702" sc="1" el="702" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="703" ordinal="668" sl="703" sc="1" el="703" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="704" ordinal="669" sl="704" sc="1" el="704" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="705" ordinal="670" sl="705" sc="1" el="705" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="706" ordinal="671" sl="706" sc="1" el="706" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="707" ordinal="672" sl="707" sc="1" el="707" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="708" ordinal="673" sl="708" sc="1" el="708" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="709" ordinal="674" sl="709" sc="1" el="709" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="710" ordinal="675" sl="710" sc="1" el="710" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="711" ordinal="676" sl="711" sc="1" el="711" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="712" ordinal="677" sl="712" sc="1" el="712" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="713" ordinal="678" sl="713" sc="1" el="713" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="714" ordinal="679" sl="714" sc="1" el="714" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="715" ordinal="680" sl="715" sc="1" el="715" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="716" ordinal="681" sl="716" sc="1" el="716" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="717" ordinal="682" sl="717" sc="1" el="717" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="718" ordinal="683" sl="718" sc="1" el="718" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="719" ordinal="684" sl="719" sc="1" el="719" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="720" ordinal="685" sl="720" sc="1" el="720" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="721" ordinal="686" sl="721" sc="1" el="721" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="722" ordinal="687" sl="722" sc="1" el="722" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="723" ordinal="688" sl="723" sc="1" el="723" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="724" ordinal="689" sl="724" sc="1" el="724" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="725" ordinal="690" sl="725" sc="1" el="725" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="726" ordinal="691" sl="726" sc="1" el="726" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="727" ordinal="692" sl="727" sc="1" el="727" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="728" ordinal="693" sl="728" sc="1" el="728" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="729" ordinal="694" sl="729" sc="1" el="729" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="730" ordinal="695" sl="730" sc="1" el="730" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="731" ordinal="696" sl="731" sc="1" el="731" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="732" ordinal="697" sl="732" sc="1" el="732" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="733" ordinal="698" sl="733" sc="1" el="733" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="734" ordinal="699" sl="734" sc="1" el="734" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="735" ordinal="700" sl="735" sc="1" el="735" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="737" ordinal="701" sl="737" sc="1" el="737" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="738" ordinal="702" sl="738" sc="1" el="738" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="739" ordinal="703" sl="739" sc="1" el="739" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="740" ordinal="704" sl="740" sc="1" el="740" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="741" ordinal="705" sl="741" sc="1" el="741" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="742" ordinal="706" sl="742" sc="1" el="742" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="743" ordinal="707" sl="743" sc="1" el="743" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="744" ordinal="708" sl="744" sc="1" el="744" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="745" ordinal="709" sl="745" sc="1" el="745" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="746" ordinal="710" sl="746" sc="1" el="746" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="747" ordinal="711" sl="747" sc="1" el="747" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="748" ordinal="712" sl="748" sc="1" el="748" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="749" ordinal="713" sl="749" sc="1" el="749" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="750" ordinal="714" sl="750" sc="1" el="750" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="751" ordinal="715" sl="751" sc="1" el="751" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="752" ordinal="716" sl="752" sc="1" el="752" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="753" ordinal="717" sl="753" sc="1" el="753" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="754" ordinal="718" sl="754" sc="1" el="754" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="755" ordinal="719" sl="755" sc="1" el="755" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="756" ordinal="720" sl="756" sc="1" el="756" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="757" ordinal="721" sl="757" sc="1" el="757" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="758" ordinal="722" sl="758" sc="1" el="758" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="759" ordinal="723" sl="759" sc="1" el="759" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="760" ordinal="724" sl="760" sc="1" el="760" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="761" ordinal="725" sl="761" sc="1" el="761" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="762" ordinal="726" sl="762" sc="1" el="762" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="764" ordinal="727" sl="764" sc="1" el="764" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="765" ordinal="728" sl="765" sc="1" el="765" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="766" ordinal="729" sl="766" sc="1" el="766" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="767" ordinal="730" sl="767" sc="1" el="767" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="768" ordinal="731" sl="768" sc="1" el="768" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="769" ordinal="732" sl="769" sc="1" el="769" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="770" ordinal="733" sl="770" sc="1" el="770" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="771" ordinal="734" sl="771" sc="1" el="771" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="772" ordinal="735" sl="772" sc="1" el="772" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="773" ordinal="736" sl="773" sc="1" el="773" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="774" ordinal="737" sl="774" sc="1" el="774" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="775" ordinal="738" sl="775" sc="1" el="775" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="776" ordinal="739" sl="776" sc="1" el="776" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="777" ordinal="740" sl="777" sc="1" el="777" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="778" ordinal="741" sl="778" sc="1" el="778" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="779" ordinal="742" sl="779" sc="1" el="779" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="780" ordinal="743" sl="780" sc="1" el="780" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="781" ordinal="744" sl="781" sc="1" el="781" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="782" ordinal="745" sl="782" sc="1" el="782" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="783" ordinal="746" sl="783" sc="1" el="783" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="784" ordinal="747" sl="784" sc="1" el="784" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="785" ordinal="748" sl="785" sc="1" el="785" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="786" ordinal="749" sl="786" sc="1" el="786" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="787" ordinal="750" sl="787" sc="1" el="787" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="788" ordinal="751" sl="788" sc="1" el="788" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="790" ordinal="752" sl="790" sc="1" el="790" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="791" ordinal="753" sl="791" sc="1" el="791" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="792" ordinal="754" sl="792" sc="1" el="792" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="793" ordinal="755" sl="793" sc="1" el="793" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="794" ordinal="756" sl="794" sc="1" el="794" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="795" ordinal="757" sl="795" sc="1" el="795" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="796" ordinal="758" sl="796" sc="1" el="796" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="797" ordinal="759" sl="797" sc="1" el="797" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="798" ordinal="760" sl="798" sc="1" el="798" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="799" ordinal="761" sl="799" sc="1" el="799" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="800" ordinal="762" sl="800" sc="1" el="800" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="801" ordinal="763" sl="801" sc="1" el="801" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="802" ordinal="764" sl="802" sc="1" el="802" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="803" ordinal="765" sl="803" sc="1" el="803" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="804" ordinal="766" sl="804" sc="1" el="804" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="805" ordinal="767" sl="805" sc="1" el="805" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="806" ordinal="768" sl="806" sc="1" el="806" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="807" ordinal="769" sl="807" sc="1" el="807" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="808" ordinal="770" sl="808" sc="1" el="808" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="809" ordinal="771" sl="809" sc="1" el="809" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="810" ordinal="772" sl="810" sc="1" el="810" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="811" ordinal="773" sl="811" sc="1" el="811" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="812" ordinal="774" sl="812" sc="1" el="812" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="813" ordinal="775" sl="813" sc="1" el="813" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="814" ordinal="776" sl="814" sc="1" el="814" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="816" ordinal="777" sl="816" sc="1" el="816" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="817" ordinal="778" sl="817" sc="1" el="817" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="818" ordinal="779" sl="818" sc="1" el="818" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="819" ordinal="780" sl="819" sc="1" el="819" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="820" ordinal="781" sl="820" sc="1" el="820" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="821" ordinal="782" sl="821" sc="1" el="821" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="822" ordinal="783" sl="822" sc="1" el="822" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="823" ordinal="784" sl="823" sc="1" el="823" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="824" ordinal="785" sl="824" sc="1" el="824" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="825" ordinal="786" sl="825" sc="1" el="825" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="826" ordinal="787" sl="826" sc="1" el="826" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="827" ordinal="788" sl="827" sc="1" el="827" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="828" ordinal="789" sl="828" sc="1" el="828" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="829" ordinal="790" sl="829" sc="1" el="829" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="830" ordinal="791" sl="830" sc="1" el="830" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="831" ordinal="792" sl="831" sc="1" el="831" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="832" ordinal="793" sl="832" sc="1" el="832" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="833" ordinal="794" sl="833" sc="1" el="833" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="834" ordinal="795" sl="834" sc="1" el="834" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="835" ordinal="796" sl="835" sc="1" el="835" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="836" ordinal="797" sl="836" sc="1" el="836" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="837" ordinal="798" sl="837" sc="1" el="837" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="838" ordinal="799" sl="838" sc="1" el="838" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="839" ordinal="800" sl="839" sc="1" el="839" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="840" ordinal="801" sl="840" sc="1" el="840" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="842" ordinal="802" sl="842" sc="1" el="842" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="843" ordinal="803" sl="843" sc="1" el="843" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="844" ordinal="804" sl="844" sc="1" el="844" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="845" ordinal="805" sl="845" sc="1" el="845" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="846" ordinal="806" sl="846" sc="1" el="846" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="847" ordinal="807" sl="847" sc="1" el="847" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="848" ordinal="808" sl="848" sc="1" el="848" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="849" ordinal="809" sl="849" sc="1" el="849" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="850" ordinal="810" sl="850" sc="1" el="850" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="851" ordinal="811" sl="851" sc="1" el="851" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="852" ordinal="812" sl="852" sc="1" el="852" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="853" ordinal="813" sl="853" sc="1" el="853" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="854" ordinal="814" sl="854" sc="1" el="854" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="855" ordinal="815" sl="855" sc="1" el="855" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="856" ordinal="816" sl="856" sc="1" el="856" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="857" ordinal="817" sl="857" sc="1" el="857" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="858" ordinal="818" sl="858" sc="1" el="858" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="859" ordinal="819" sl="859" sc="1" el="859" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="860" ordinal="820" sl="860" sc="1" el="860" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="861" ordinal="821" sl="861" sc="1" el="861" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="862" ordinal="822" sl="862" sc="1" el="862" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="863" ordinal="823" sl="863" sc="1" el="863" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="864" ordinal="824" sl="864" sc="1" el="864" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="865" ordinal="825" sl="865" sc="1" el="865" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="866" ordinal="826" sl="866" sc="1" el="866" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="868" ordinal="827" sl="868" sc="1" el="868" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="869" ordinal="828" sl="869" sc="1" el="869" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="870" ordinal="829" sl="870" sc="1" el="870" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="871" ordinal="830" sl="871" sc="1" el="871" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="872" ordinal="831" sl="872" sc="1" el="872" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="873" ordinal="832" sl="873" sc="1" el="873" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="874" ordinal="833" sl="874" sc="1" el="874" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="875" ordinal="834" sl="875" sc="1" el="875" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="876" ordinal="835" sl="876" sc="1" el="876" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="877" ordinal="836" sl="877" sc="1" el="877" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="878" ordinal="837" sl="878" sc="1" el="878" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="879" ordinal="838" sl="879" sc="1" el="879" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="880" ordinal="839" sl="880" sc="1" el="880" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="881" ordinal="840" sl="881" sc="1" el="881" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="882" ordinal="841" sl="882" sc="1" el="882" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="883" ordinal="842" sl="883" sc="1" el="883" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="884" ordinal="843" sl="884" sc="1" el="884" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="885" ordinal="844" sl="885" sc="1" el="885" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="886" ordinal="845" sl="886" sc="1" el="886" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="887" ordinal="846" sl="887" sc="1" el="887" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="888" ordinal="847" sl="888" sc="1" el="888" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="889" ordinal="848" sl="889" sc="1" el="889" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="890" ordinal="849" sl="890" sc="1" el="890" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="891" ordinal="850" sl="891" sc="1" el="891" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="892" ordinal="851" sl="892" sc="1" el="892" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="894" ordinal="852" sl="894" sc="1" el="894" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="895" ordinal="853" sl="895" sc="1" el="895" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="896" ordinal="854" sl="896" sc="1" el="896" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="897" ordinal="855" sl="897" sc="1" el="897" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="898" ordinal="856" sl="898" sc="1" el="898" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="899" ordinal="857" sl="899" sc="1" el="899" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="900" ordinal="858" sl="900" sc="1" el="900" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="901" ordinal="859" sl="901" sc="1" el="901" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="902" ordinal="860" sl="902" sc="1" el="902" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="903" ordinal="861" sl="903" sc="1" el="903" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="904" ordinal="862" sl="904" sc="1" el="904" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="905" ordinal="863" sl="905" sc="1" el="905" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="906" ordinal="864" sl="906" sc="1" el="906" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="907" ordinal="865" sl="907" sc="1" el="907" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="908" ordinal="866" sl="908" sc="1" el="908" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="909" ordinal="867" sl="909" sc="1" el="909" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="910" ordinal="868" sl="910" sc="1" el="910" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="911" ordinal="869" sl="911" sc="1" el="911" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="912" ordinal="870" sl="912" sc="1" el="912" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="913" ordinal="871" sl="913" sc="1" el="913" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="914" ordinal="872" sl="914" sc="1" el="914" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="915" ordinal="873" sl="915" sc="1" el="915" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="916" ordinal="874" sl="916" sc="1" el="916" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="917" ordinal="875" sl="917" sc="1" el="917" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="918" ordinal="876" sl="918" sc="1" el="918" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="920" ordinal="877" sl="920" sc="1" el="920" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="921" ordinal="878" sl="921" sc="1" el="921" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="922" ordinal="879" sl="922" sc="1" el="922" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="923" ordinal="880" sl="923" sc="1" el="923" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="924" ordinal="881" sl="924" sc="1" el="924" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="925" ordinal="882" sl="925" sc="1" el="925" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="926" ordinal="883" sl="926" sc="1" el="926" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="927" ordinal="884" sl="927" sc="1" el="927" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="928" ordinal="885" sl="928" sc="1" el="928" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="929" ordinal="886" sl="929" sc="1" el="929" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="930" ordinal="887" sl="930" sc="1" el="930" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="931" ordinal="888" sl="931" sc="1" el="931" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="932" ordinal="889" sl="932" sc="1" el="932" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="933" ordinal="890" sl="933" sc="1" el="933" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="934" ordinal="891" sl="934" sc="1" el="934" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="935" ordinal="892" sl="935" sc="1" el="935" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="936" ordinal="893" sl="936" sc="1" el="936" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="937" ordinal="894" sl="937" sc="1" el="937" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="938" ordinal="895" sl="938" sc="1" el="938" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="939" ordinal="896" sl="939" sc="1" el="939" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="940" ordinal="897" sl="940" sc="1" el="940" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="941" ordinal="898" sl="941" sc="1" el="941" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="942" ordinal="899" sl="942" sc="1" el="942" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="943" ordinal="900" sl="943" sc="1" el="943" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="944" ordinal="901" sl="944" sc="1" el="944" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="946" ordinal="902" sl="946" sc="1" el="946" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="947" ordinal="903" sl="947" sc="1" el="947" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="948" ordinal="904" sl="948" sc="1" el="948" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="949" ordinal="905" sl="949" sc="1" el="949" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="950" ordinal="906" sl="950" sc="1" el="950" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="951" ordinal="907" sl="951" sc="1" el="951" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="952" ordinal="908" sl="952" sc="1" el="952" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="953" ordinal="909" sl="953" sc="1" el="953" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="954" ordinal="910" sl="954" sc="1" el="954" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="955" ordinal="911" sl="955" sc="1" el="955" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="956" ordinal="912" sl="956" sc="1" el="956" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="957" ordinal="913" sl="957" sc="1" el="957" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="958" ordinal="914" sl="958" sc="1" el="958" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="959" ordinal="915" sl="959" sc="1" el="959" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="960" ordinal="916" sl="960" sc="1" el="960" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="961" ordinal="917" sl="961" sc="1" el="961" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="962" ordinal="918" sl="962" sc="1" el="962" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="963" ordinal="919" sl="963" sc="1" el="963" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="964" ordinal="920" sl="964" sc="1" el="964" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="965" ordinal="921" sl="965" sc="1" el="965" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="966" ordinal="922" sl="966" sc="1" el="966" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="967" ordinal="923" sl="967" sc="1" el="967" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="968" ordinal="924" sl="968" sc="1" el="968" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="969" ordinal="925" sl="969" sc="1" el="969" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="970" ordinal="926" sl="970" sc="1" el="970" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="972" ordinal="927" sl="972" sc="1" el="972" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="973" ordinal="928" sl="973" sc="1" el="973" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="974" ordinal="929" sl="974" sc="1" el="974" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="975" ordinal="930" sl="975" sc="1" el="975" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="976" ordinal="931" sl="976" sc="1" el="976" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="977" ordinal="932" sl="977" sc="1" el="977" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="978" ordinal="933" sl="978" sc="1" el="978" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="979" ordinal="934" sl="979" sc="1" el="979" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="980" ordinal="935" sl="980" sc="1" el="980" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="981" ordinal="936" sl="981" sc="1" el="981" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="982" ordinal="937" sl="982" sc="1" el="982" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="983" ordinal="938" sl="983" sc="1" el="983" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="984" ordinal="939" sl="984" sc="1" el="984" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="985" ordinal="940" sl="985" sc="1" el="985" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="986" ordinal="941" sl="986" sc="1" el="986" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="987" ordinal="942" sl="987" sc="1" el="987" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="988" ordinal="943" sl="988" sc="1" el="988" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="989" ordinal="944" sl="989" sc="1" el="989" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="990" ordinal="945" sl="990" sc="1" el="990" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="991" ordinal="946" sl="991" sc="1" el="991" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="992" ordinal="947" sl="992" sc="1" el="992" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="993" ordinal="948" sl="993" sc="1" el="993" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="994" ordinal="949" sl="994" sc="1" el="994" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="995" ordinal="950" sl="995" sc="1" el="995" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="996" ordinal="951" sl="996" sc="1" el="996" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="998" ordinal="952" sl="998" sc="1" el="998" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="999" ordinal="953" sl="999" sc="1" el="999" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1000" ordinal="954" sl="1000" sc="1" el="1000" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1001" ordinal="955" sl="1001" sc="1" el="1001" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1002" ordinal="956" sl="1002" sc="1" el="1002" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1003" ordinal="957" sl="1003" sc="1" el="1003" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1004" ordinal="958" sl="1004" sc="1" el="1004" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1005" ordinal="959" sl="1005" sc="1" el="1005" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1006" ordinal="960" sl="1006" sc="1" el="1006" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1007" ordinal="961" sl="1007" sc="1" el="1007" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1008" ordinal="962" sl="1008" sc="1" el="1008" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1009" ordinal="963" sl="1009" sc="1" el="1009" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1010" ordinal="964" sl="1010" sc="1" el="1010" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1011" ordinal="965" sl="1011" sc="1" el="1011" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1012" ordinal="966" sl="1012" sc="1" el="1012" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1013" ordinal="967" sl="1013" sc="1" el="1013" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1014" ordinal="968" sl="1014" sc="1" el="1014" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1015" ordinal="969" sl="1015" sc="1" el="1015" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1016" ordinal="970" sl="1016" sc="1" el="1016" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1017" ordinal="971" sl="1017" sc="1" el="1017" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1018" ordinal="972" sl="1018" sc="1" el="1018" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1019" ordinal="973" sl="1019" sc="1" el="1019" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1020" ordinal="974" sl="1020" sc="1" el="1020" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1021" ordinal="975" sl="1021" sc="1" el="1021" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1022" ordinal="976" sl="1022" sc="1" el="1022" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1024" ordinal="977" sl="1024" sc="1" el="1024" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1025" ordinal="978" sl="1025" sc="1" el="1025" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1026" ordinal="979" sl="1026" sc="1" el="1026" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1027" ordinal="980" sl="1027" sc="1" el="1027" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1028" ordinal="981" sl="1028" sc="1" el="1028" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1029" ordinal="982" sl="1029" sc="1" el="1029" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1030" ordinal="983" sl="1030" sc="1" el="1030" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1031" ordinal="984" sl="1031" sc="1" el="1031" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1032" ordinal="985" sl="1032" sc="1" el="1032" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1033" ordinal="986" sl="1033" sc="1" el="1033" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1034" ordinal="987" sl="1034" sc="1" el="1034" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1035" ordinal="988" sl="1035" sc="1" el="1035" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1036" ordinal="989" sl="1036" sc="1" el="1036" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1037" ordinal="990" sl="1037" sc="1" el="1037" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1038" ordinal="991" sl="1038" sc="1" el="1038" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1039" ordinal="992" sl="1039" sc="1" el="1039" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1040" ordinal="993" sl="1040" sc="1" el="1040" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1041" ordinal="994" sl="1041" sc="1" el="1041" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1042" ordinal="995" sl="1042" sc="1" el="1042" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1043" ordinal="996" sl="1043" sc="1" el="1043" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1044" ordinal="997" sl="1044" sc="1" el="1044" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1045" ordinal="998" sl="1045" sc="1" el="1045" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1046" ordinal="999" sl="1046" sc="1" el="1046" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1047" ordinal="1000" sl="1047" sc="1" el="1047" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1048" ordinal="1001" sl="1048" sc="1" el="1048" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1049" ordinal="1002" sl="1049" sc="1" el="1049" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1051" ordinal="1003" sl="1051" sc="1" el="1051" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1052" ordinal="1004" sl="1052" sc="1" el="1052" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1053" ordinal="1005" sl="1053" sc="1" el="1053" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1054" ordinal="1006" sl="1054" sc="1" el="1054" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1055" ordinal="1007" sl="1055" sc="1" el="1055" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1056" ordinal="1008" sl="1056" sc="1" el="1056" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1057" ordinal="1009" sl="1057" sc="1" el="1057" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1058" ordinal="1010" sl="1058" sc="1" el="1058" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1059" ordinal="1011" sl="1059" sc="1" el="1059" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1060" ordinal="1012" sl="1060" sc="1" el="1060" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1061" ordinal="1013" sl="1061" sc="1" el="1061" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1062" ordinal="1014" sl="1062" sc="1" el="1062" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1063" ordinal="1015" sl="1063" sc="1" el="1063" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1064" ordinal="1016" sl="1064" sc="1" el="1064" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1065" ordinal="1017" sl="1065" sc="1" el="1065" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1066" ordinal="1018" sl="1066" sc="1" el="1066" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1067" ordinal="1019" sl="1067" sc="1" el="1067" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1068" ordinal="1020" sl="1068" sc="1" el="1068" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1069" ordinal="1021" sl="1069" sc="1" el="1069" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1070" ordinal="1022" sl="1070" sc="1" el="1070" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1071" ordinal="1023" sl="1071" sc="1" el="1071" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1072" ordinal="1024" sl="1072" sc="1" el="1072" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1073" ordinal="1025" sl="1073" sc="1" el="1073" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1074" ordinal="1026" sl="1074" sc="1" el="1074" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1075" ordinal="1027" sl="1075" sc="1" el="1075" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1076" ordinal="1028" sl="1076" sc="1" el="1076" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1077" ordinal="1029" sl="1077" sc="1" el="1077" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1078" ordinal="1030" sl="1078" sc="1" el="1078" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1079" ordinal="1031" sl="1079" sc="1" el="1079" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1080" ordinal="1032" sl="1080" sc="1" el="1080" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1081" ordinal="1033" sl="1081" sc="1" el="1081" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1082" ordinal="1034" sl="1082" sc="1" el="1082" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1083" ordinal="1035" sl="1083" sc="1" el="1083" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1084" ordinal="1036" sl="1084" sc="1" el="1084" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1085" ordinal="1037" sl="1085" sc="1" el="1085" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1086" ordinal="1038" sl="1086" sc="1" el="1086" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1087" ordinal="1039" sl="1087" sc="1" el="1087" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1088" ordinal="1040" sl="1088" sc="1" el="1088" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1089" ordinal="1041" sl="1089" sc="1" el="1089" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1090" ordinal="1042" sl="1090" sc="1" el="1090" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1091" ordinal="1043" sl="1091" sc="1" el="1091" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1092" ordinal="1044" sl="1092" sc="1" el="1092" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1093" ordinal="1045" sl="1093" sc="1" el="1093" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1094" ordinal="1046" sl="1094" sc="1" el="1094" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1095" ordinal="1047" sl="1095" sc="1" el="1095" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1096" ordinal="1048" sl="1096" sc="1" el="1096" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1097" ordinal="1049" sl="1097" sc="1" el="1097" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1098" ordinal="1050" sl="1098" sc="1" el="1098" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1099" ordinal="1051" sl="1099" sc="1" el="1099" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1100" ordinal="1052" sl="1100" sc="1" el="1100" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1101" ordinal="1053" sl="1101" sc="1" el="1101" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1102" ordinal="1054" sl="1102" sc="1" el="1102" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1103" ordinal="1055" sl="1103" sc="1" el="1103" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1104" ordinal="1056" sl="1104" sc="1" el="1104" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1105" ordinal="1057" sl="1105" sc="1" el="1105" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1106" ordinal="1058" sl="1106" sc="1" el="1106" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1107" ordinal="1059" sl="1107" sc="1" el="1107" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1108" ordinal="1060" sl="1108" sc="1" el="1108" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1109" ordinal="1061" sl="1109" sc="1" el="1109" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1110" ordinal="1062" sl="1110" sc="1" el="1110" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1111" ordinal="1063" sl="1111" sc="1" el="1111" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1112" ordinal="1064" sl="1112" sc="1" el="1112" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1113" ordinal="1065" sl="1113" sc="1" el="1113" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1114" ordinal="1066" sl="1114" sc="1" el="1114" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1115" ordinal="1067" sl="1115" sc="1" el="1115" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1116" ordinal="1068" sl="1116" sc="1" el="1116" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1117" ordinal="1069" sl="1117" sc="1" el="1117" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1118" ordinal="1070" sl="1118" sc="1" el="1118" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1119" ordinal="1071" sl="1119" sc="1" el="1119" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1120" ordinal="1072" sl="1120" sc="1" el="1120" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1121" ordinal="1073" sl="1121" sc="1" el="1121" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1122" ordinal="1074" sl="1122" sc="1" el="1122" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1123" ordinal="1075" sl="1123" sc="1" el="1123" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1124" ordinal="1076" sl="1124" sc="1" el="1124" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1125" ordinal="1077" sl="1125" sc="1" el="1125" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1126" ordinal="1078" sl="1126" sc="1" el="1126" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1127" ordinal="1079" sl="1127" sc="1" el="1127" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1128" ordinal="1080" sl="1128" sc="1" el="1128" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1129" ordinal="1081" sl="1129" sc="1" el="1129" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1130" ordinal="1082" sl="1130" sc="1" el="1130" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1131" ordinal="1083" sl="1131" sc="1" el="1131" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1132" ordinal="1084" sl="1132" sc="1" el="1132" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1133" ordinal="1085" sl="1133" sc="1" el="1133" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1134" ordinal="1086" sl="1134" sc="1" el="1134" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1135" ordinal="1087" sl="1135" sc="1" el="1135" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1136" ordinal="1088" sl="1136" sc="1" el="1136" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1137" ordinal="1089" sl="1137" sc="1" el="1137" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1138" ordinal="1090" sl="1138" sc="1" el="1138" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1139" ordinal="1091" sl="1139" sc="1" el="1139" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1140" ordinal="1092" sl="1140" sc="1" el="1140" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1141" ordinal="1093" sl="1141" sc="1" el="1141" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1142" ordinal="1094" sl="1142" sc="1" el="1142" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1143" ordinal="1095" sl="1143" sc="1" el="1143" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1144" ordinal="1096" sl="1144" sc="1" el="1144" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1145" ordinal="1097" sl="1145" sc="1" el="1145" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1146" ordinal="1098" sl="1146" sc="1" el="1146" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1147" ordinal="1099" sl="1147" sc="1" el="1147" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1148" ordinal="1100" sl="1148" sc="1" el="1148" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1149" ordinal="1101" sl="1149" sc="1" el="1149" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1150" ordinal="1102" sl="1150" sc="1" el="1150" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1151" ordinal="1103" sl="1151" sc="1" el="1151" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1152" ordinal="1104" sl="1152" sc="1" el="1152" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1153" ordinal="1105" sl="1153" sc="1" el="1153" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1154" ordinal="1106" sl="1154" sc="1" el="1154" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1155" ordinal="1107" sl="1155" sc="1" el="1155" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1156" ordinal="1108" sl="1156" sc="1" el="1156" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1157" ordinal="1109" sl="1157" sc="1" el="1157" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1158" ordinal="1110" sl="1158" sc="1" el="1158" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1159" ordinal="1111" sl="1159" sc="1" el="1159" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1160" ordinal="1112" sl="1160" sc="1" el="1160" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1161" ordinal="1113" sl="1161" sc="1" el="1161" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1162" ordinal="1114" sl="1162" sc="1" el="1162" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1163" ordinal="1115" sl="1163" sc="1" el="1163" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1164" ordinal="1116" sl="1164" sc="1" el="1164" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1165" ordinal="1117" sl="1165" sc="1" el="1165" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1166" ordinal="1118" sl="1166" sc="1" el="1166" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1167" ordinal="1119" sl="1167" sc="1" el="1167" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1168" ordinal="1120" sl="1168" sc="1" el="1168" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1169" ordinal="1121" sl="1169" sc="1" el="1169" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1170" ordinal="1122" sl="1170" sc="1" el="1170" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1171" ordinal="1123" sl="1171" sc="1" el="1171" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1172" ordinal="1124" sl="1172" sc="1" el="1172" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1173" ordinal="1125" sl="1173" sc="1" el="1173" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1174" ordinal="1126" sl="1174" sc="1" el="1174" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1175" ordinal="1127" sl="1175" sc="1" el="1175" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1176" ordinal="1128" sl="1176" sc="1" el="1176" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1177" ordinal="1129" sl="1177" sc="1" el="1177" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1178" ordinal="1130" sl="1178" sc="1" el="1178" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1179" ordinal="1131" sl="1179" sc="1" el="1179" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1180" ordinal="1132" sl="1180" sc="1" el="1180" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1181" ordinal="1133" sl="1181" sc="1" el="1181" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1182" ordinal="1134" sl="1182" sc="1" el="1182" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1183" ordinal="1135" sl="1183" sc="1" el="1183" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1184" ordinal="1136" sl="1184" sc="1" el="1184" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1185" ordinal="1137" sl="1185" sc="1" el="1185" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1186" ordinal="1138" sl="1186" sc="1" el="1186" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1187" ordinal="1139" sl="1187" sc="1" el="1187" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1188" ordinal="1140" sl="1188" sc="1" el="1188" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1189" ordinal="1141" sl="1189" sc="1" el="1189" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1190" ordinal="1142" sl="1190" sc="1" el="1190" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1191" ordinal="1143" sl="1191" sc="1" el="1191" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1192" ordinal="1144" sl="1192" sc="1" el="1192" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1193" ordinal="1145" sl="1193" sc="1" el="1193" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1194" ordinal="1146" sl="1194" sc="1" el="1194" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1195" ordinal="1147" sl="1195" sc="1" el="1195" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1196" ordinal="1148" sl="1196" sc="1" el="1196" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1197" ordinal="1149" sl="1197" sc="1" el="1197" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1198" ordinal="1150" sl="1198" sc="1" el="1198" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1199" ordinal="1151" sl="1199" sc="1" el="1199" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1200" ordinal="1152" sl="1200" sc="1" el="1200" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1201" ordinal="1153" sl="1201" sc="1" el="1201" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1202" ordinal="1154" sl="1202" sc="1" el="1202" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1203" ordinal="1155" sl="1203" sc="1" el="1203" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1204" ordinal="1156" sl="1204" sc="1" el="1204" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1205" ordinal="1157" sl="1205" sc="1" el="1205" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1206" ordinal="1158" sl="1206" sc="1" el="1206" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1207" ordinal="1159" sl="1207" sc="1" el="1207" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1208" ordinal="1160" sl="1208" sc="1" el="1208" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1209" ordinal="1161" sl="1209" sc="1" el="1209" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1210" ordinal="1162" sl="1210" sc="1" el="1210" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1211" ordinal="1163" sl="1211" sc="1" el="1211" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1212" ordinal="1164" sl="1212" sc="1" el="1212" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1213" ordinal="1165" sl="1213" sc="1" el="1213" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1214" ordinal="1166" sl="1214" sc="1" el="1214" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1215" ordinal="1167" sl="1215" sc="1" el="1215" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1216" ordinal="1168" sl="1216" sc="1" el="1216" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1217" ordinal="1169" sl="1217" sc="1" el="1217" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1218" ordinal="1170" sl="1218" sc="1" el="1218" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1219" ordinal="1171" sl="1219" sc="1" el="1219" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1220" ordinal="1172" sl="1220" sc="1" el="1220" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1221" ordinal="1173" sl="1221" sc="1" el="1221" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1222" ordinal="1174" sl="1222" sc="1" el="1222" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1223" ordinal="1175" sl="1223" sc="1" el="1223" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1224" ordinal="1176" sl="1224" sc="1" el="1224" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1225" ordinal="1177" sl="1225" sc="1" el="1225" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1226" ordinal="1178" sl="1226" sc="1" el="1226" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1227" ordinal="1179" sl="1227" sc="1" el="1227" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1228" ordinal="1180" sl="1228" sc="1" el="1228" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1229" ordinal="1181" sl="1229" sc="1" el="1229" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1230" ordinal="1182" sl="1230" sc="1" el="1230" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1231" ordinal="1183" sl="1231" sc="1" el="1231" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1232" ordinal="1184" sl="1232" sc="1" el="1232" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1233" ordinal="1185" sl="1233" sc="1" el="1233" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1234" ordinal="1186" sl="1234" sc="1" el="1234" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1235" ordinal="1187" sl="1235" sc="1" el="1235" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1236" ordinal="1188" sl="1236" sc="1" el="1236" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1237" ordinal="1189" sl="1237" sc="1" el="1237" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1238" ordinal="1190" sl="1238" sc="1" el="1238" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1239" ordinal="1191" sl="1239" sc="1" el="1239" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1240" ordinal="1192" sl="1240" sc="1" el="1240" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1241" ordinal="1193" sl="1241" sc="1" el="1241" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1242" ordinal="1194" sl="1242" sc="1" el="1242" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1243" ordinal="1195" sl="1243" sc="1" el="1243" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1244" ordinal="1196" sl="1244" sc="1" el="1244" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1245" ordinal="1197" sl="1245" sc="1" el="1245" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1246" ordinal="1198" sl="1246" sc="1" el="1246" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1247" ordinal="1199" sl="1247" sc="1" el="1247" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1248" ordinal="1200" sl="1248" sc="1" el="1248" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1249" ordinal="1201" sl="1249" sc="1" el="1249" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1250" ordinal="1202" sl="1250" sc="1" el="1250" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1251" ordinal="1203" sl="1251" sc="1" el="1251" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1252" ordinal="1204" sl="1252" sc="1" el="1252" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1253" ordinal="1205" sl="1253" sc="1" el="1253" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1254" ordinal="1206" sl="1254" sc="1" el="1254" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1255" ordinal="1207" sl="1255" sc="1" el="1255" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1256" ordinal="1208" sl="1256" sc="1" el="1256" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1257" ordinal="1209" sl="1257" sc="1" el="1257" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1258" ordinal="1210" sl="1258" sc="1" el="1258" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1259" ordinal="1211" sl="1259" sc="1" el="1259" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1260" ordinal="1212" sl="1260" sc="1" el="1260" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1261" ordinal="1213" sl="1261" sc="1" el="1261" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1262" ordinal="1214" sl="1262" sc="1" el="1262" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1263" ordinal="1215" sl="1263" sc="1" el="1263" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1264" ordinal="1216" sl="1264" sc="1" el="1264" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1265" ordinal="1217" sl="1265" sc="1" el="1265" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1266" ordinal="1218" sl="1266" sc="1" el="1266" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1267" ordinal="1219" sl="1267" sc="1" el="1267" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1268" ordinal="1220" sl="1268" sc="1" el="1268" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1269" ordinal="1221" sl="1269" sc="1" el="1269" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1270" ordinal="1222" sl="1270" sc="1" el="1270" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1271" ordinal="1223" sl="1271" sc="1" el="1271" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1272" ordinal="1224" sl="1272" sc="1" el="1272" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1273" ordinal="1225" sl="1273" sc="1" el="1273" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1274" ordinal="1226" sl="1274" sc="1" el="1274" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1275" ordinal="1227" sl="1275" sc="1" el="1275" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1276" ordinal="1228" sl="1276" sc="1" el="1276" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1277" ordinal="1229" sl="1277" sc="1" el="1277" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1278" ordinal="1230" sl="1278" sc="1" el="1278" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1279" ordinal="1231" sl="1279" sc="1" el="1279" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1280" ordinal="1232" sl="1280" sc="1" el="1280" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1281" ordinal="1233" sl="1281" sc="1" el="1281" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1282" ordinal="1234" sl="1282" sc="1" el="1282" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1283" ordinal="1235" sl="1283" sc="1" el="1283" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1284" ordinal="1236" sl="1284" sc="1" el="1284" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1285" ordinal="1237" sl="1285" sc="1" el="1285" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1286" ordinal="1238" sl="1286" sc="1" el="1286" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1287" ordinal="1239" sl="1287" sc="1" el="1287" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1288" ordinal="1240" sl="1288" sc="1" el="1288" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1289" ordinal="1241" sl="1289" sc="1" el="1289" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1290" ordinal="1242" sl="1290" sc="1" el="1290" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1291" ordinal="1243" sl="1291" sc="1" el="1291" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1292" ordinal="1244" sl="1292" sc="1" el="1292" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1293" ordinal="1245" sl="1293" sc="1" el="1293" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1294" ordinal="1246" sl="1294" sc="1" el="1294" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1295" ordinal="1247" sl="1295" sc="1" el="1295" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1297" ordinal="1248" sl="1297" sc="1" el="1297" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1298" ordinal="1249" sl="1298" sc="1" el="1298" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1299" ordinal="1250" sl="1299" sc="1" el="1299" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1300" ordinal="1251" sl="1300" sc="1" el="1300" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1301" ordinal="1252" sl="1301" sc="1" el="1301" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1302" ordinal="1253" sl="1302" sc="1" el="1302" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1303" ordinal="1254" sl="1303" sc="1" el="1303" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1304" ordinal="1255" sl="1304" sc="1" el="1304" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1305" ordinal="1256" sl="1305" sc="1" el="1305" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1306" ordinal="1257" sl="1306" sc="1" el="1306" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1307" ordinal="1258" sl="1307" sc="1" el="1307" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1308" ordinal="1259" sl="1308" sc="1" el="1308" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1309" ordinal="1260" sl="1309" sc="1" el="1309" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1310" ordinal="1261" sl="1310" sc="1" el="1310" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1311" ordinal="1262" sl="1311" sc="1" el="1311" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1312" ordinal="1263" sl="1312" sc="1" el="1312" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1313" ordinal="1264" sl="1313" sc="1" el="1313" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1314" ordinal="1265" sl="1314" sc="1" el="1314" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1315" ordinal="1266" sl="1315" sc="1" el="1315" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1316" ordinal="1267" sl="1316" sc="1" el="1316" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1317" ordinal="1268" sl="1317" sc="1" el="1317" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1318" ordinal="1269" sl="1318" sc="1" el="1318" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1319" ordinal="1270" sl="1319" sc="1" el="1319" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1320" ordinal="1271" sl="1320" sc="1" el="1320" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1321" ordinal="1272" sl="1321" sc="1" el="1321" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1322" ordinal="1273" sl="1322" sc="1" el="1322" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1323" ordinal="1274" sl="1323" sc="1" el="1323" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1324" ordinal="1275" sl="1324" sc="1" el="1324" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1325" ordinal="1276" sl="1325" sc="1" el="1325" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1326" ordinal="1277" sl="1326" sc="1" el="1326" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1327" ordinal="1278" sl="1327" sc="1" el="1327" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1328" ordinal="1279" sl="1328" sc="1" el="1328" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1329" ordinal="1280" sl="1329" sc="1" el="1329" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1330" ordinal="1281" sl="1330" sc="1" el="1330" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1331" ordinal="1282" sl="1331" sc="1" el="1331" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1332" ordinal="1283" sl="1332" sc="1" el="1332" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1333" ordinal="1284" sl="1333" sc="1" el="1333" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1334" ordinal="1285" sl="1334" sc="1" el="1334" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1335" ordinal="1286" sl="1335" sc="1" el="1335" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1336" ordinal="1287" sl="1336" sc="1" el="1336" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1337" ordinal="1288" sl="1337" sc="1" el="1337" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1338" ordinal="1289" sl="1338" sc="1" el="1338" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1339" ordinal="1290" sl="1339" sc="1" el="1339" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1340" ordinal="1291" sl="1340" sc="1" el="1340" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1341" ordinal="1292" sl="1341" sc="1" el="1341" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1342" ordinal="1293" sl="1342" sc="1" el="1342" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1344" ordinal="1294" sl="1344" sc="1" el="1344" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1345" ordinal="1295" sl="1345" sc="1" el="1345" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1346" ordinal="1296" sl="1346" sc="1" el="1346" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1347" ordinal="1297" sl="1347" sc="1" el="1347" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1348" ordinal="1298" sl="1348" sc="1" el="1348" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1349" ordinal="1299" sl="1349" sc="1" el="1349" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1350" ordinal="1300" sl="1350" sc="1" el="1350" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1351" ordinal="1301" sl="1351" sc="1" el="1351" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1352" ordinal="1302" sl="1352" sc="1" el="1352" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1353" ordinal="1303" sl="1353" sc="1" el="1353" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1354" ordinal="1304" sl="1354" sc="1" el="1354" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1355" ordinal="1305" sl="1355" sc="1" el="1355" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1356" ordinal="1306" sl="1356" sc="1" el="1356" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1357" ordinal="1307" sl="1357" sc="1" el="1357" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1358" ordinal="1308" sl="1358" sc="1" el="1358" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1359" ordinal="1309" sl="1359" sc="1" el="1359" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1360" ordinal="1310" sl="1360" sc="1" el="1360" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1361" ordinal="1311" sl="1361" sc="1" el="1361" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1362" ordinal="1312" sl="1362" sc="1" el="1362" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1363" ordinal="1313" sl="1363" sc="1" el="1363" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1364" ordinal="1314" sl="1364" sc="1" el="1364" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1365" ordinal="1315" sl="1365" sc="1" el="1365" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1366" ordinal="1316" sl="1366" sc="1" el="1366" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1367" ordinal="1317" sl="1367" sc="1" el="1367" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1368" ordinal="1318" sl="1368" sc="1" el="1368" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1369" ordinal="1319" sl="1369" sc="1" el="1369" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1370" ordinal="1320" sl="1370" sc="1" el="1370" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1371" ordinal="1321" sl="1371" sc="1" el="1371" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1372" ordinal="1322" sl="1372" sc="1" el="1372" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1373" ordinal="1323" sl="1373" sc="1" el="1373" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1374" ordinal="1324" sl="1374" sc="1" el="1374" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1375" ordinal="1325" sl="1375" sc="1" el="1375" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1376" ordinal="1326" sl="1376" sc="1" el="1376" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1377" ordinal="1327" sl="1377" sc="1" el="1377" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1378" ordinal="1328" sl="1378" sc="1" el="1378" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1379" ordinal="1329" sl="1379" sc="1" el="1379" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1380" ordinal="1330" sl="1380" sc="1" el="1380" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1381" ordinal="1331" sl="1381" sc="1" el="1381" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1382" ordinal="1332" sl="1382" sc="1" el="1382" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1383" ordinal="1333" sl="1383" sc="1" el="1383" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1384" ordinal="1334" sl="1384" sc="1" el="1384" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1385" ordinal="1335" sl="1385" sc="1" el="1385" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1386" ordinal="1336" sl="1386" sc="1" el="1386" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1387" ordinal="1337" sl="1387" sc="1" el="1387" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1388" ordinal="1338" sl="1388" sc="1" el="1388" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1389" ordinal="1339" sl="1389" sc="1" el="1389" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1390" ordinal="1340" sl="1390" sc="1" el="1390" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1391" ordinal="1341" sl="1391" sc="1" el="1391" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1392" ordinal="1342" sl="1392" sc="1" el="1392" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1393" ordinal="1343" sl="1393" sc="1" el="1393" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1394" ordinal="1344" sl="1394" sc="1" el="1394" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1395" ordinal="1345" sl="1395" sc="1" el="1395" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1396" ordinal="1346" sl="1396" sc="1" el="1396" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1397" ordinal="1347" sl="1397" sc="1" el="1397" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1398" ordinal="1348" sl="1398" sc="1" el="1398" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1399" ordinal="1349" sl="1399" sc="1" el="1399" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1400" ordinal="1350" sl="1400" sc="1" el="1400" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1401" ordinal="1351" sl="1401" sc="1" el="1401" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1402" ordinal="1352" sl="1402" sc="1" el="1402" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1403" ordinal="1353" sl="1403" sc="1" el="1403" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1404" ordinal="1354" sl="1404" sc="1" el="1404" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1405" ordinal="1355" sl="1405" sc="1" el="1405" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1406" ordinal="1356" sl="1406" sc="1" el="1406" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1407" ordinal="1357" sl="1407" sc="1" el="1407" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1408" ordinal="1358" sl="1408" sc="1" el="1408" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1409" ordinal="1359" sl="1409" sc="1" el="1409" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1410" ordinal="1360" sl="1410" sc="1" el="1410" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1411" ordinal="1361" sl="1411" sc="1" el="1411" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1412" ordinal="1362" sl="1412" sc="1" el="1412" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1413" ordinal="1363" sl="1413" sc="1" el="1413" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1414" ordinal="1364" sl="1414" sc="1" el="1414" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1415" ordinal="1365" sl="1415" sc="1" el="1415" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1416" ordinal="1366" sl="1416" sc="1" el="1416" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1417" ordinal="1367" sl="1417" sc="1" el="1417" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1418" ordinal="1368" sl="1418" sc="1" el="1418" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1419" ordinal="1369" sl="1419" sc="1" el="1419" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1420" ordinal="1370" sl="1420" sc="1" el="1420" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1421" ordinal="1371" sl="1421" sc="1" el="1421" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1422" ordinal="1372" sl="1422" sc="1" el="1422" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1423" ordinal="1373" sl="1423" sc="1" el="1423" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1424" ordinal="1374" sl="1424" sc="1" el="1424" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1425" ordinal="1375" sl="1425" sc="1" el="1425" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1426" ordinal="1376" sl="1426" sc="1" el="1426" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1427" ordinal="1377" sl="1427" sc="1" el="1427" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1428" ordinal="1378" sl="1428" sc="1" el="1428" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1429" ordinal="1379" sl="1429" sc="1" el="1429" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1430" ordinal="1380" sl="1430" sc="1" el="1430" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1431" ordinal="1381" sl="1431" sc="1" el="1431" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1432" ordinal="1382" sl="1432" sc="1" el="1432" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1433" ordinal="1383" sl="1433" sc="1" el="1433" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1435" ordinal="1384" sl="1435" sc="1" el="1435" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1436" ordinal="1385" sl="1436" sc="1" el="1436" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1437" ordinal="1386" sl="1437" sc="1" el="1437" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1438" ordinal="1387" sl="1438" sc="1" el="1438" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1439" ordinal="1388" sl="1439" sc="1" el="1439" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1440" ordinal="1389" sl="1440" sc="1" el="1440" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1441" ordinal="1390" sl="1441" sc="1" el="1441" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1442" ordinal="1391" sl="1442" sc="1" el="1442" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1443" ordinal="1392" sl="1443" sc="1" el="1443" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1444" ordinal="1393" sl="1444" sc="1" el="1444" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1445" ordinal="1394" sl="1445" sc="1" el="1445" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1446" ordinal="1395" sl="1446" sc="1" el="1446" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1447" ordinal="1396" sl="1447" sc="1" el="1447" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1448" ordinal="1397" sl="1448" sc="1" el="1448" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1449" ordinal="1398" sl="1449" sc="1" el="1449" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1450" ordinal="1399" sl="1450" sc="1" el="1450" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1451" ordinal="1400" sl="1451" sc="1" el="1451" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1452" ordinal="1401" sl="1452" sc="1" el="1452" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1453" ordinal="1402" sl="1453" sc="1" el="1453" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1454" ordinal="1403" sl="1454" sc="1" el="1454" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1455" ordinal="1404" sl="1455" sc="1" el="1455" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1456" ordinal="1405" sl="1456" sc="1" el="1456" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1457" ordinal="1406" sl="1457" sc="1" el="1457" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1458" ordinal="1407" sl="1458" sc="1" el="1458" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1460" ordinal="1408" sl="1460" sc="1" el="1460" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1461" ordinal="1409" sl="1461" sc="1" el="1461" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1462" ordinal="1410" sl="1462" sc="1" el="1462" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1463" ordinal="1411" sl="1463" sc="1" el="1463" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1464" ordinal="1412" sl="1464" sc="1" el="1464" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1465" ordinal="1413" sl="1465" sc="1" el="1465" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1466" ordinal="1414" sl="1466" sc="1" el="1466" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1467" ordinal="1415" sl="1467" sc="1" el="1467" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1468" ordinal="1416" sl="1468" sc="1" el="1468" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1469" ordinal="1417" sl="1469" sc="1" el="1469" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1470" ordinal="1418" sl="1470" sc="1" el="1470" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1471" ordinal="1419" sl="1471" sc="1" el="1471" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1472" ordinal="1420" sl="1472" sc="1" el="1472" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1473" ordinal="1421" sl="1473" sc="1" el="1473" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1474" ordinal="1422" sl="1474" sc="1" el="1474" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1475" ordinal="1423" sl="1475" sc="1" el="1475" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1476" ordinal="1424" sl="1476" sc="1" el="1476" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1477" ordinal="1425" sl="1477" sc="1" el="1477" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1478" ordinal="1426" sl="1478" sc="1" el="1478" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1479" ordinal="1427" sl="1479" sc="1" el="1479" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1480" ordinal="1428" sl="1480" sc="1" el="1480" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1481" ordinal="1429" sl="1481" sc="1" el="1481" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1482" ordinal="1430" sl="1482" sc="1" el="1482" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1483" ordinal="1431" sl="1483" sc="1" el="1483" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1484" ordinal="1432" sl="1484" sc="1" el="1484" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1485" ordinal="1433" sl="1485" sc="1" el="1485" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1486" ordinal="1434" sl="1486" sc="1" el="1486" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1487" ordinal="1435" sl="1487" sc="1" el="1487" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1488" ordinal="1436" sl="1488" sc="1" el="1488" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1489" ordinal="1437" sl="1489" sc="1" el="1489" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1490" ordinal="1438" sl="1490" sc="1" el="1490" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1491" ordinal="1439" sl="1491" sc="1" el="1491" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1492" ordinal="1440" sl="1492" sc="1" el="1492" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1493" ordinal="1441" sl="1493" sc="1" el="1493" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1495" ordinal="1442" sl="1495" sc="1" el="1495" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1496" ordinal="1443" sl="1496" sc="1" el="1496" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1497" ordinal="1444" sl="1497" sc="1" el="1497" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1498" ordinal="1445" sl="1498" sc="1" el="1498" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1499" ordinal="1446" sl="1499" sc="1" el="1499" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1500" ordinal="1447" sl="1500" sc="1" el="1500" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1501" ordinal="1448" sl="1501" sc="1" el="1501" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1502" ordinal="1449" sl="1502" sc="1" el="1502" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1503" ordinal="1450" sl="1503" sc="1" el="1503" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1504" ordinal="1451" sl="1504" sc="1" el="1504" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1505" ordinal="1452" sl="1505" sc="1" el="1505" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1506" ordinal="1453" sl="1506" sc="1" el="1506" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1507" ordinal="1454" sl="1507" sc="1" el="1507" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1508" ordinal="1455" sl="1508" sc="1" el="1508" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1509" ordinal="1456" sl="1509" sc="1" el="1509" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1510" ordinal="1457" sl="1510" sc="1" el="1510" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1511" ordinal="1458" sl="1511" sc="1" el="1511" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1512" ordinal="1459" sl="1512" sc="1" el="1512" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1513" ordinal="1460" sl="1513" sc="1" el="1513" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1514" ordinal="1461" sl="1514" sc="1" el="1514" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1515" ordinal="1462" sl="1515" sc="1" el="1515" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1516" ordinal="1463" sl="1516" sc="1" el="1516" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1517" ordinal="1464" sl="1517" sc="1" el="1517" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1518" ordinal="1465" sl="1518" sc="1" el="1518" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1519" ordinal="1466" sl="1519" sc="1" el="1519" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1520" ordinal="1467" sl="1520" sc="1" el="1520" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1521" ordinal="1468" sl="1521" sc="1" el="1521" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1522" ordinal="1469" sl="1522" sc="1" el="1522" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1523" ordinal="1470" sl="1523" sc="1" el="1523" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1524" ordinal="1471" sl="1524" sc="1" el="1524" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1525" ordinal="1472" sl="1525" sc="1" el="1525" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1526" ordinal="1473" sl="1526" sc="1" el="1526" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1527" ordinal="1474" sl="1527" sc="1" el="1527" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1528" ordinal="1475" sl="1528" sc="1" el="1528" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1529" ordinal="1476" sl="1529" sc="1" el="1529" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1530" ordinal="1477" sl="1530" sc="1" el="1530" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1531" ordinal="1478" sl="1531" sc="1" el="1531" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1532" ordinal="1479" sl="1532" sc="1" el="1532" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1533" ordinal="1480" sl="1533" sc="1" el="1533" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1534" ordinal="1481" sl="1534" sc="1" el="1534" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1535" ordinal="1482" sl="1535" sc="1" el="1535" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1536" ordinal="1483" sl="1536" sc="1" el="1536" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1537" ordinal="1484" sl="1537" sc="1" el="1537" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1538" ordinal="1485" sl="1538" sc="1" el="1538" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1539" ordinal="1486" sl="1539" sc="1" el="1539" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1540" ordinal="1487" sl="1540" sc="1" el="1540" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1541" ordinal="1488" sl="1541" sc="1" el="1541" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1542" ordinal="1489" sl="1542" sc="1" el="1542" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1544" ordinal="1490" sl="1544" sc="1" el="1544" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1545" ordinal="1491" sl="1545" sc="1" el="1545" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1546" ordinal="1492" sl="1546" sc="1" el="1546" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1547" ordinal="1493" sl="1547" sc="1" el="1547" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1548" ordinal="1494" sl="1548" sc="1" el="1548" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1549" ordinal="1495" sl="1549" sc="1" el="1549" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1550" ordinal="1496" sl="1550" sc="1" el="1550" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1551" ordinal="1497" sl="1551" sc="1" el="1551" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1552" ordinal="1498" sl="1552" sc="1" el="1552" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1553" ordinal="1499" sl="1553" sc="1" el="1553" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1554" ordinal="1500" sl="1554" sc="1" el="1554" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1555" ordinal="1501" sl="1555" sc="1" el="1555" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1556" ordinal="1502" sl="1556" sc="1" el="1556" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1557" ordinal="1503" sl="1557" sc="1" el="1557" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1558" ordinal="1504" sl="1558" sc="1" el="1558" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1559" ordinal="1505" sl="1559" sc="1" el="1559" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1560" ordinal="1506" sl="1560" sc="1" el="1560" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1561" ordinal="1507" sl="1561" sc="1" el="1561" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1562" ordinal="1508" sl="1562" sc="1" el="1562" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1563" ordinal="1509" sl="1563" sc="1" el="1563" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1564" ordinal="1510" sl="1564" sc="1" el="1564" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1565" ordinal="1511" sl="1565" sc="1" el="1565" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1566" ordinal="1512" sl="1566" sc="1" el="1566" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1567" ordinal="1513" sl="1567" sc="1" el="1567" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1568" ordinal="1514" sl="1568" sc="1" el="1568" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1569" ordinal="1515" sl="1569" sc="1" el="1569" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1571" ordinal="1516" sl="1571" sc="1" el="1571" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1572" ordinal="1517" sl="1572" sc="1" el="1572" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1573" ordinal="1518" sl="1573" sc="1" el="1573" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1574" ordinal="1519" sl="1574" sc="1" el="1574" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1575" ordinal="1520" sl="1575" sc="1" el="1575" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1576" ordinal="1521" sl="1576" sc="1" el="1576" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1577" ordinal="1522" sl="1577" sc="1" el="1577" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1578" ordinal="1523" sl="1578" sc="1" el="1578" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1579" ordinal="1524" sl="1579" sc="1" el="1579" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1580" ordinal="1525" sl="1580" sc="1" el="1580" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1581" ordinal="1526" sl="1581" sc="1" el="1581" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1582" ordinal="1527" sl="1582" sc="1" el="1582" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1583" ordinal="1528" sl="1583" sc="1" el="1583" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1584" ordinal="1529" sl="1584" sc="1" el="1584" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1585" ordinal="1530" sl="1585" sc="1" el="1585" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1586" ordinal="1531" sl="1586" sc="1" el="1586" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1587" ordinal="1532" sl="1587" sc="1" el="1587" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1588" ordinal="1533" sl="1588" sc="1" el="1588" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1589" ordinal="1534" sl="1589" sc="1" el="1589" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1590" ordinal="1535" sl="1590" sc="1" el="1590" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1591" ordinal="1536" sl="1591" sc="1" el="1591" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1592" ordinal="1537" sl="1592" sc="1" el="1592" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1594" ordinal="1538" sl="1594" sc="1" el="1594" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1595" ordinal="1539" sl="1595" sc="1" el="1595" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1596" ordinal="1540" sl="1596" sc="1" el="1596" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1597" ordinal="1541" sl="1597" sc="1" el="1597" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1598" ordinal="1542" sl="1598" sc="1" el="1598" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1599" ordinal="1543" sl="1599" sc="1" el="1599" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1600" ordinal="1544" sl="1600" sc="1" el="1600" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1601" ordinal="1545" sl="1601" sc="1" el="1601" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1602" ordinal="1546" sl="1602" sc="1" el="1602" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1603" ordinal="1547" sl="1603" sc="1" el="1603" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1604" ordinal="1548" sl="1604" sc="1" el="1604" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1605" ordinal="1549" sl="1605" sc="1" el="1605" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1606" ordinal="1550" sl="1606" sc="1" el="1606" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1607" ordinal="1551" sl="1607" sc="1" el="1607" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1608" ordinal="1552" sl="1608" sc="1" el="1608" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1609" ordinal="1553" sl="1609" sc="1" el="1609" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1610" ordinal="1554" sl="1610" sc="1" el="1610" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1611" ordinal="1555" sl="1611" sc="1" el="1611" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1612" ordinal="1556" sl="1612" sc="1" el="1612" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1613" ordinal="1557" sl="1613" sc="1" el="1613" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1614" ordinal="1558" sl="1614" sc="1" el="1614" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1615" ordinal="1559" sl="1615" sc="1" el="1615" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1616" ordinal="1560" sl="1616" sc="1" el="1616" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1617" ordinal="1561" sl="1617" sc="1" el="1617" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1618" ordinal="1562" sl="1618" sc="1" el="1618" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1619" ordinal="1563" sl="1619" sc="1" el="1619" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1620" ordinal="1564" sl="1620" sc="1" el="1620" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1621" ordinal="1565" sl="1621" sc="1" el="1621" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1622" ordinal="1566" sl="1622" sc="1" el="1622" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1623" ordinal="1567" sl="1623" sc="1" el="1623" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1624" ordinal="1568" sl="1624" sc="1" el="1624" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1625" ordinal="1569" sl="1625" sc="1" el="1625" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1626" ordinal="1570" sl="1626" sc="1" el="1626" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1627" ordinal="1571" sl="1627" sc="1" el="1627" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1628" ordinal="1572" sl="1628" sc="1" el="1628" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1629" ordinal="1573" sl="1629" sc="1" el="1629" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1630" ordinal="1574" sl="1630" sc="1" el="1630" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1631" ordinal="1575" sl="1631" sc="1" el="1631" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1632" ordinal="1576" sl="1632" sc="1" el="1632" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1633" ordinal="1577" sl="1633" sc="1" el="1633" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1634" ordinal="1578" sl="1634" sc="1" el="1634" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1635" ordinal="1579" sl="1635" sc="1" el="1635" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1636" ordinal="1580" sl="1636" sc="1" el="1636" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1637" ordinal="1581" sl="1637" sc="1" el="1637" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1638" ordinal="1582" sl="1638" sc="1" el="1638" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1639" ordinal="1583" sl="1639" sc="1" el="1639" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1640" ordinal="1584" sl="1640" sc="1" el="1640" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1641" ordinal="1585" sl="1641" sc="1" el="1641" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1642" ordinal="1586" sl="1642" sc="1" el="1642" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1643" ordinal="1587" sl="1643" sc="1" el="1643" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1644" ordinal="1588" sl="1644" sc="1" el="1644" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1645" ordinal="1589" sl="1645" sc="1" el="1645" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1646" ordinal="1590" sl="1646" sc="1" el="1646" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1647" ordinal="1591" sl="1647" sc="1" el="1647" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1648" ordinal="1592" sl="1648" sc="1" el="1648" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1649" ordinal="1593" sl="1649" sc="1" el="1649" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1650" ordinal="1594" sl="1650" sc="1" el="1650" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1651" ordinal="1595" sl="1651" sc="1" el="1651" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1652" ordinal="1596" sl="1652" sc="1" el="1652" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1653" ordinal="1597" sl="1653" sc="1" el="1653" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1654" ordinal="1598" sl="1654" sc="1" el="1654" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1655" ordinal="1599" sl="1655" sc="1" el="1655" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1656" ordinal="1600" sl="1656" sc="1" el="1656" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1657" ordinal="1601" sl="1657" sc="1" el="1657" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1658" ordinal="1602" sl="1658" sc="1" el="1658" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1659" ordinal="1603" sl="1659" sc="1" el="1659" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1660" ordinal="1604" sl="1660" sc="1" el="1660" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1661" ordinal="1605" sl="1661" sc="1" el="1661" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1662" ordinal="1606" sl="1662" sc="1" el="1662" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1663" ordinal="1607" sl="1663" sc="1" el="1663" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1665" ordinal="1608" sl="1665" sc="1" el="1665" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1666" ordinal="1609" sl="1666" sc="1" el="1666" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1667" ordinal="1610" sl="1667" sc="1" el="1667" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1668" ordinal="1611" sl="1668" sc="1" el="1668" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1669" ordinal="1612" sl="1669" sc="1" el="1669" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1670" ordinal="1613" sl="1670" sc="1" el="1670" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1671" ordinal="1614" sl="1671" sc="1" el="1671" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1672" ordinal="1615" sl="1672" sc="1" el="1672" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1673" ordinal="1616" sl="1673" sc="1" el="1673" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1674" ordinal="1617" sl="1674" sc="1" el="1674" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1675" ordinal="1618" sl="1675" sc="1" el="1675" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1676" ordinal="1619" sl="1676" sc="1" el="1676" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1677" ordinal="1620" sl="1677" sc="1" el="1677" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1678" ordinal="1621" sl="1678" sc="1" el="1678" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1679" ordinal="1622" sl="1679" sc="1" el="1679" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1680" ordinal="1623" sl="1680" sc="1" el="1680" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1681" ordinal="1624" sl="1681" sc="1" el="1681" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1682" ordinal="1625" sl="1682" sc="1" el="1682" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1683" ordinal="1626" sl="1683" sc="1" el="1683" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1684" ordinal="1627" sl="1684" sc="1" el="1684" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1685" ordinal="1628" sl="1685" sc="1" el="1685" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1686" ordinal="1629" sl="1686" sc="1" el="1686" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1687" ordinal="1630" sl="1687" sc="1" el="1687" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1688" ordinal="1631" sl="1688" sc="1" el="1688" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1689" ordinal="1632" sl="1689" sc="1" el="1689" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1690" ordinal="1633" sl="1690" sc="1" el="1690" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1691" ordinal="1634" sl="1691" sc="1" el="1691" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1692" ordinal="1635" sl="1692" sc="1" el="1692" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1693" ordinal="1636" sl="1693" sc="1" el="1693" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1694" ordinal="1637" sl="1694" sc="1" el="1694" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1695" ordinal="1638" sl="1695" sc="1" el="1695" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1696" ordinal="1639" sl="1696" sc="1" el="1696" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1697" ordinal="1640" sl="1697" sc="1" el="1697" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1698" ordinal="1641" sl="1698" sc="1" el="1698" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1700" ordinal="1642" sl="1700" sc="1" el="1700" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1701" ordinal="1643" sl="1701" sc="1" el="1701" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1702" ordinal="1644" sl="1702" sc="1" el="1702" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1703" ordinal="1645" sl="1703" sc="1" el="1703" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1704" ordinal="1646" sl="1704" sc="1" el="1704" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1705" ordinal="1647" sl="1705" sc="1" el="1705" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1706" ordinal="1648" sl="1706" sc="1" el="1706" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1707" ordinal="1649" sl="1707" sc="1" el="1707" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1708" ordinal="1650" sl="1708" sc="1" el="1708" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1709" ordinal="1651" sl="1709" sc="1" el="1709" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1710" ordinal="1652" sl="1710" sc="1" el="1710" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1711" ordinal="1653" sl="1711" sc="1" el="1711" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1712" ordinal="1654" sl="1712" sc="1" el="1712" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1713" ordinal="1655" sl="1713" sc="1" el="1713" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1714" ordinal="1656" sl="1714" sc="1" el="1714" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1715" ordinal="1657" sl="1715" sc="1" el="1715" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1716" ordinal="1658" sl="1716" sc="1" el="1716" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1717" ordinal="1659" sl="1717" sc="1" el="1717" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1718" ordinal="1660" sl="1718" sc="1" el="1718" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1719" ordinal="1661" sl="1719" sc="1" el="1719" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1720" ordinal="1662" sl="1720" sc="1" el="1720" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1721" ordinal="1663" sl="1721" sc="1" el="1721" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1722" ordinal="1664" sl="1722" sc="1" el="1722" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1723" ordinal="1665" sl="1723" sc="1" el="1723" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1724" ordinal="1666" sl="1724" sc="1" el="1724" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1725" ordinal="1667" sl="1725" sc="1" el="1725" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1726" ordinal="1668" sl="1726" sc="1" el="1726" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1727" ordinal="1669" sl="1727" sc="1" el="1727" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1728" ordinal="1670" sl="1728" sc="1" el="1728" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1729" ordinal="1671" sl="1729" sc="1" el="1729" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1730" ordinal="1672" sl="1730" sc="1" el="1730" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1731" ordinal="1673" sl="1731" sc="1" el="1731" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1732" ordinal="1674" sl="1732" sc="1" el="1732" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1733" ordinal="1675" sl="1733" sc="1" el="1733" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1734" ordinal="1676" sl="1734" sc="1" el="1734" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1735" ordinal="1677" sl="1735" sc="1" el="1735" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1737" ordinal="1678" sl="1737" sc="1" el="1737" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1738" ordinal="1679" sl="1738" sc="1" el="1738" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1739" ordinal="1680" sl="1739" sc="1" el="1739" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1740" ordinal="1681" sl="1740" sc="1" el="1740" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1741" ordinal="1682" sl="1741" sc="1" el="1741" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1742" ordinal="1683" sl="1742" sc="1" el="1742" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1743" ordinal="1684" sl="1743" sc="1" el="1743" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1744" ordinal="1685" sl="1744" sc="1" el="1744" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1745" ordinal="1686" sl="1745" sc="1" el="1745" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1746" ordinal="1687" sl="1746" sc="1" el="1746" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1747" ordinal="1688" sl="1747" sc="1" el="1747" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1748" ordinal="1689" sl="1748" sc="1" el="1748" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1749" ordinal="1690" sl="1749" sc="1" el="1749" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1750" ordinal="1691" sl="1750" sc="1" el="1750" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1751" ordinal="1692" sl="1751" sc="1" el="1751" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1752" ordinal="1693" sl="1752" sc="1" el="1752" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1753" ordinal="1694" sl="1753" sc="1" el="1753" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1754" ordinal="1695" sl="1754" sc="1" el="1754" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1755" ordinal="1696" sl="1755" sc="1" el="1755" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1756" ordinal="1697" sl="1756" sc="1" el="1756" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1757" ordinal="1698" sl="1757" sc="1" el="1757" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1758" ordinal="1699" sl="1758" sc="1" el="1758" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1759" ordinal="1700" sl="1759" sc="1" el="1759" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1760" ordinal="1701" sl="1760" sc="1" el="1760" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1761" ordinal="1702" sl="1761" sc="1" el="1761" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1762" ordinal="1703" sl="1762" sc="1" el="1762" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1763" ordinal="1704" sl="1763" sc="1" el="1763" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1764" ordinal="1705" sl="1764" sc="1" el="1764" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1765" ordinal="1706" sl="1765" sc="1" el="1765" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1766" ordinal="1707" sl="1766" sc="1" el="1766" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1767" ordinal="1708" sl="1767" sc="1" el="1767" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1768" ordinal="1709" sl="1768" sc="1" el="1768" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1769" ordinal="1710" sl="1769" sc="1" el="1769" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1770" ordinal="1711" sl="1770" sc="1" el="1770" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1771" ordinal="1712" sl="1771" sc="1" el="1771" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1772" ordinal="1713" sl="1772" sc="1" el="1772" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1773" ordinal="1714" sl="1773" sc="1" el="1773" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1774" ordinal="1715" sl="1774" sc="1" el="1774" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1775" ordinal="1716" sl="1775" sc="1" el="1775" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1776" ordinal="1717" sl="1776" sc="1" el="1776" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1777" ordinal="1718" sl="1777" sc="1" el="1777" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1778" ordinal="1719" sl="1778" sc="1" el="1778" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1779" ordinal="1720" sl="1779" sc="1" el="1779" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1780" ordinal="1721" sl="1780" sc="1" el="1780" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1781" ordinal="1722" sl="1781" sc="1" el="1781" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1782" ordinal="1723" sl="1782" sc="1" el="1782" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1783" ordinal="1724" sl="1783" sc="1" el="1783" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1784" ordinal="1725" sl="1784" sc="1" el="1784" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1785" ordinal="1726" sl="1785" sc="1" el="1785" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1786" ordinal="1727" sl="1786" sc="1" el="1786" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1787" ordinal="1728" sl="1787" sc="1" el="1787" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1788" ordinal="1729" sl="1788" sc="1" el="1788" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1789" ordinal="1730" sl="1789" sc="1" el="1789" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1790" ordinal="1731" sl="1790" sc="1" el="1790" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1791" ordinal="1732" sl="1791" sc="1" el="1791" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1792" ordinal="1733" sl="1792" sc="1" el="1792" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1793" ordinal="1734" sl="1793" sc="1" el="1793" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1794" ordinal="1735" sl="1794" sc="1" el="1794" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1795" ordinal="1736" sl="1795" sc="1" el="1795" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1796" ordinal="1737" sl="1796" sc="1" el="1796" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1797" ordinal="1738" sl="1797" sc="1" el="1797" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1798" ordinal="1739" sl="1798" sc="1" el="1798" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1799" ordinal="1740" sl="1799" sc="1" el="1799" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1800" ordinal="1741" sl="1800" sc="1" el="1800" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1801" ordinal="1742" sl="1801" sc="1" el="1801" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1802" ordinal="1743" sl="1802" sc="1" el="1802" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1803" ordinal="1744" sl="1803" sc="1" el="1803" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1804" ordinal="1745" sl="1804" sc="1" el="1804" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1805" ordinal="1746" sl="1805" sc="1" el="1805" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1806" ordinal="1747" sl="1806" sc="1" el="1806" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1807" ordinal="1748" sl="1807" sc="1" el="1807" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1808" ordinal="1749" sl="1808" sc="1" el="1808" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1809" ordinal="1750" sl="1809" sc="1" el="1809" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1810" ordinal="1751" sl="1810" sc="1" el="1810" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1811" ordinal="1752" sl="1811" sc="1" el="1811" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1812" ordinal="1753" sl="1812" sc="1" el="1812" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1813" ordinal="1754" sl="1813" sc="1" el="1813" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1814" ordinal="1755" sl="1814" sc="1" el="1814" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1815" ordinal="1756" sl="1815" sc="1" el="1815" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1816" ordinal="1757" sl="1816" sc="1" el="1816" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1817" ordinal="1758" sl="1817" sc="1" el="1817" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1818" ordinal="1759" sl="1818" sc="1" el="1818" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1819" ordinal="1760" sl="1819" sc="1" el="1819" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1820" ordinal="1761" sl="1820" sc="1" el="1820" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1821" ordinal="1762" sl="1821" sc="1" el="1821" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1822" ordinal="1763" sl="1822" sc="1" el="1822" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1823" ordinal="1764" sl="1823" sc="1" el="1823" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1824" ordinal="1765" sl="1824" sc="1" el="1824" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1825" ordinal="1766" sl="1825" sc="1" el="1825" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1826" ordinal="1767" sl="1826" sc="1" el="1826" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1827" ordinal="1768" sl="1827" sc="1" el="1827" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1828" ordinal="1769" sl="1828" sc="1" el="1828" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1829" ordinal="1770" sl="1829" sc="1" el="1829" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1830" ordinal="1771" sl="1830" sc="1" el="1830" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1831" ordinal="1772" sl="1831" sc="1" el="1831" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1832" ordinal="1773" sl="1832" sc="1" el="1832" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1833" ordinal="1774" sl="1833" sc="1" el="1833" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1834" ordinal="1775" sl="1834" sc="1" el="1834" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1835" ordinal="1776" sl="1835" sc="1" el="1835" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1836" ordinal="1777" sl="1836" sc="1" el="1836" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1837" ordinal="1778" sl="1837" sc="1" el="1837" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1838" ordinal="1779" sl="1838" sc="1" el="1838" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1839" ordinal="1780" sl="1839" sc="1" el="1839" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1840" ordinal="1781" sl="1840" sc="1" el="1840" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1841" ordinal="1782" sl="1841" sc="1" el="1841" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1842" ordinal="1783" sl="1842" sc="1" el="1842" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1843" ordinal="1784" sl="1843" sc="1" el="1843" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1844" ordinal="1785" sl="1844" sc="1" el="1844" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1845" ordinal="1786" sl="1845" sc="1" el="1845" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1846" ordinal="1787" sl="1846" sc="1" el="1846" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1847" ordinal="1788" sl="1847" sc="1" el="1847" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1848" ordinal="1789" sl="1848" sc="1" el="1848" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1849" ordinal="1790" sl="1849" sc="1" el="1849" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1850" ordinal="1791" sl="1850" sc="1" el="1850" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1851" ordinal="1792" sl="1851" sc="1" el="1851" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1852" ordinal="1793" sl="1852" sc="1" el="1852" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1853" ordinal="1794" sl="1853" sc="1" el="1853" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1854" ordinal="1795" sl="1854" sc="1" el="1854" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1855" ordinal="1796" sl="1855" sc="1" el="1855" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1856" ordinal="1797" sl="1856" sc="1" el="1856" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1857" ordinal="1798" sl="1857" sc="1" el="1857" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1858" ordinal="1799" sl="1858" sc="1" el="1858" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1859" ordinal="1800" sl="1859" sc="1" el="1859" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1860" ordinal="1801" sl="1860" sc="1" el="1860" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1861" ordinal="1802" sl="1861" sc="1" el="1861" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1862" ordinal="1803" sl="1862" sc="1" el="1862" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1863" ordinal="1804" sl="1863" sc="1" el="1863" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1864" ordinal="1805" sl="1864" sc="1" el="1864" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1865" ordinal="1806" sl="1865" sc="1" el="1865" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1866" ordinal="1807" sl="1866" sc="1" el="1866" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1867" ordinal="1808" sl="1867" sc="1" el="1867" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1868" ordinal="1809" sl="1868" sc="1" el="1868" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1869" ordinal="1810" sl="1869" sc="1" el="1869" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1870" ordinal="1811" sl="1870" sc="1" el="1870" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1871" ordinal="1812" sl="1871" sc="1" el="1871" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1872" ordinal="1813" sl="1872" sc="1" el="1872" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1873" ordinal="1814" sl="1873" sc="1" el="1873" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1874" ordinal="1815" sl="1874" sc="1" el="1874" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1875" ordinal="1816" sl="1875" sc="1" el="1875" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1876" ordinal="1817" sl="1876" sc="1" el="1876" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1877" ordinal="1818" sl="1877" sc="1" el="1877" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1878" ordinal="1819" sl="1878" sc="1" el="1878" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1879" ordinal="1820" sl="1879" sc="1" el="1879" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1881" ordinal="1821" sl="1881" sc="1" el="1881" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1882" ordinal="1822" sl="1882" sc="1" el="1882" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1883" ordinal="1823" sl="1883" sc="1" el="1883" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1884" ordinal="1824" sl="1884" sc="1" el="1884" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1885" ordinal="1825" sl="1885" sc="1" el="1885" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1886" ordinal="1826" sl="1886" sc="1" el="1886" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1887" ordinal="1827" sl="1887" sc="1" el="1887" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1888" ordinal="1828" sl="1888" sc="1" el="1888" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1889" ordinal="1829" sl="1889" sc="1" el="1889" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1890" ordinal="1830" sl="1890" sc="1" el="1890" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1891" ordinal="1831" sl="1891" sc="1" el="1891" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1892" ordinal="1832" sl="1892" sc="1" el="1892" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1893" ordinal="1833" sl="1893" sc="1" el="1893" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1894" ordinal="1834" sl="1894" sc="1" el="1894" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1895" ordinal="1835" sl="1895" sc="1" el="1895" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1896" ordinal="1836" sl="1896" sc="1" el="1896" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1897" ordinal="1837" sl="1897" sc="1" el="1897" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1898" ordinal="1838" sl="1898" sc="1" el="1898" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1899" ordinal="1839" sl="1899" sc="1" el="1899" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1900" ordinal="1840" sl="1900" sc="1" el="1900" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1901" ordinal="1841" sl="1901" sc="1" el="1901" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1902" ordinal="1842" sl="1902" sc="1" el="1902" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1903" ordinal="1843" sl="1903" sc="1" el="1903" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1904" ordinal="1844" sl="1904" sc="1" el="1904" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1906" ordinal="1845" sl="1906" sc="1" el="1906" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1907" ordinal="1846" sl="1907" sc="1" el="1907" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1908" ordinal="1847" sl="1908" sc="1" el="1908" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1909" ordinal="1848" sl="1909" sc="1" el="1909" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1910" ordinal="1849" sl="1910" sc="1" el="1910" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1911" ordinal="1850" sl="1911" sc="1" el="1911" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1912" ordinal="1851" sl="1912" sc="1" el="1912" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1913" ordinal="1852" sl="1913" sc="1" el="1913" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1914" ordinal="1853" sl="1914" sc="1" el="1914" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1915" ordinal="1854" sl="1915" sc="1" el="1915" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1916" ordinal="1855" sl="1916" sc="1" el="1916" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1917" ordinal="1856" sl="1917" sc="1" el="1917" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1918" ordinal="1857" sl="1918" sc="1" el="1918" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1919" ordinal="1858" sl="1919" sc="1" el="1919" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1920" ordinal="1859" sl="1920" sc="1" el="1920" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1921" ordinal="1860" sl="1921" sc="1" el="1921" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1923" ordinal="1861" sl="1923" sc="1" el="1923" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1924" ordinal="1862" sl="1924" sc="1" el="1924" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1925" ordinal="1863" sl="1925" sc="1" el="1925" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1926" ordinal="1864" sl="1926" sc="1" el="1926" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1927" ordinal="1865" sl="1927" sc="1" el="1927" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1928" ordinal="1866" sl="1928" sc="1" el="1928" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1929" ordinal="1867" sl="1929" sc="1" el="1929" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1930" ordinal="1868" sl="1930" sc="1" el="1930" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1931" ordinal="1869" sl="1931" sc="1" el="1931" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1932" ordinal="1870" sl="1932" sc="1" el="1932" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1933" ordinal="1871" sl="1933" sc="1" el="1933" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1934" ordinal="1872" sl="1934" sc="1" el="1934" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1935" ordinal="1873" sl="1935" sc="1" el="1935" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1936" ordinal="1874" sl="1936" sc="1" el="1936" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1937" ordinal="1875" sl="1937" sc="1" el="1937" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1938" ordinal="1876" sl="1938" sc="1" el="1938" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1939" ordinal="1877" sl="1939" sc="1" el="1939" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1940" ordinal="1878" sl="1940" sc="1" el="1940" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1941" ordinal="1879" sl="1941" sc="1" el="1941" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1942" ordinal="1880" sl="1942" sc="1" el="1942" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1943" ordinal="1881" sl="1943" sc="1" el="1943" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1944" ordinal="1882" sl="1944" sc="1" el="1944" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1945" ordinal="1883" sl="1945" sc="1" el="1945" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1946" ordinal="1884" sl="1946" sc="1" el="1946" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1947" ordinal="1885" sl="1947" sc="1" el="1947" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1948" ordinal="1886" sl="1948" sc="1" el="1948" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1949" ordinal="1887" sl="1949" sc="1" el="1949" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1950" ordinal="1888" sl="1950" sc="1" el="1950" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1951" ordinal="1889" sl="1951" sc="1" el="1951" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1952" ordinal="1890" sl="1952" sc="1" el="1952" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1953" ordinal="1891" sl="1953" sc="1" el="1953" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1954" ordinal="1892" sl="1954" sc="1" el="1954" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1955" ordinal="1893" sl="1955" sc="1" el="1955" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1956" ordinal="1894" sl="1956" sc="1" el="1956" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1958" ordinal="1895" sl="1958" sc="1" el="1958" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1959" ordinal="1896" sl="1959" sc="1" el="1959" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1960" ordinal="1897" sl="1960" sc="1" el="1960" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1961" ordinal="1898" sl="1961" sc="1" el="1961" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1962" ordinal="1899" sl="1962" sc="1" el="1962" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1963" ordinal="1900" sl="1963" sc="1" el="1963" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1964" ordinal="1901" sl="1964" sc="1" el="1964" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1965" ordinal="1902" sl="1965" sc="1" el="1965" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1966" ordinal="1903" sl="1966" sc="1" el="1966" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1967" ordinal="1904" sl="1967" sc="1" el="1967" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1968" ordinal="1905" sl="1968" sc="1" el="1968" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1969" ordinal="1906" sl="1969" sc="1" el="1969" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1970" ordinal="1907" sl="1970" sc="1" el="1970" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1971" ordinal="1908" sl="1971" sc="1" el="1971" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1972" ordinal="1909" sl="1972" sc="1" el="1972" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1973" ordinal="1910" sl="1973" sc="1" el="1973" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1974" ordinal="1911" sl="1974" sc="1" el="1974" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1975" ordinal="1912" sl="1975" sc="1" el="1975" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1976" ordinal="1913" sl="1976" sc="1" el="1976" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1977" ordinal="1914" sl="1977" sc="1" el="1977" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1978" ordinal="1915" sl="1978" sc="1" el="1978" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1979" ordinal="1916" sl="1979" sc="1" el="1979" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1980" ordinal="1917" sl="1980" sc="1" el="1980" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1981" ordinal="1918" sl="1981" sc="1" el="1981" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1982" ordinal="1919" sl="1982" sc="1" el="1982" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1983" ordinal="1920" sl="1983" sc="1" el="1983" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1984" ordinal="1921" sl="1984" sc="1" el="1984" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1985" ordinal="1922" sl="1985" sc="1" el="1985" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1986" ordinal="1923" sl="1986" sc="1" el="1986" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1987" ordinal="1924" sl="1987" sc="1" el="1987" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1988" ordinal="1925" sl="1988" sc="1" el="1988" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1989" ordinal="1926" sl="1989" sc="1" el="1989" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1990" ordinal="1927" sl="1990" sc="1" el="1990" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1991" ordinal="1928" sl="1991" sc="1" el="1991" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1992" ordinal="1929" sl="1992" sc="1" el="1992" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1993" ordinal="1930" sl="1993" sc="1" el="1993" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1994" ordinal="1931" sl="1994" sc="1" el="1994" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1995" ordinal="1932" sl="1995" sc="1" el="1995" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1996" ordinal="1933" sl="1996" sc="1" el="1996" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1998" ordinal="1934" sl="1998" sc="1" el="1998" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="1999" ordinal="1935" sl="1999" sc="1" el="1999" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2000" ordinal="1936" sl="2000" sc="1" el="2000" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2001" ordinal="1937" sl="2001" sc="1" el="2001" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2002" ordinal="1938" sl="2002" sc="1" el="2002" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2003" ordinal="1939" sl="2003" sc="1" el="2003" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2004" ordinal="1940" sl="2004" sc="1" el="2004" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2005" ordinal="1941" sl="2005" sc="1" el="2005" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2006" ordinal="1942" sl="2006" sc="1" el="2006" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2007" ordinal="1943" sl="2007" sc="1" el="2007" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2008" ordinal="1944" sl="2008" sc="1" el="2008" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2009" ordinal="1945" sl="2009" sc="1" el="2009" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2010" ordinal="1946" sl="2010" sc="1" el="2010" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2011" ordinal="1947" sl="2011" sc="1" el="2011" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2012" ordinal="1948" sl="2012" sc="1" el="2012" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2013" ordinal="1949" sl="2013" sc="1" el="2013" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2014" ordinal="1950" sl="2014" sc="1" el="2014" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2015" ordinal="1951" sl="2015" sc="1" el="2015" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2016" ordinal="1952" sl="2016" sc="1" el="2016" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2017" ordinal="1953" sl="2017" sc="1" el="2017" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2018" ordinal="1954" sl="2018" sc="1" el="2018" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2019" ordinal="1955" sl="2019" sc="1" el="2019" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2020" ordinal="1956" sl="2020" sc="1" el="2020" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2021" ordinal="1957" sl="2021" sc="1" el="2021" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2022" ordinal="1958" sl="2022" sc="1" el="2022" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2023" ordinal="1959" sl="2023" sc="1" el="2023" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2024" ordinal="1960" sl="2024" sc="1" el="2024" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2025" ordinal="1961" sl="2025" sc="1" el="2025" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2026" ordinal="1962" sl="2026" sc="1" el="2026" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2027" ordinal="1963" sl="2027" sc="1" el="2027" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2028" ordinal="1964" sl="2028" sc="1" el="2028" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2029" ordinal="1965" sl="2029" sc="1" el="2029" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2030" ordinal="1966" sl="2030" sc="1" el="2030" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2031" ordinal="1967" sl="2031" sc="1" el="2031" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2032" ordinal="1968" sl="2032" sc="1" el="2032" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2033" ordinal="1969" sl="2033" sc="1" el="2033" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2034" ordinal="1970" sl="2034" sc="1" el="2034" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2035" ordinal="1971" sl="2035" sc="1" el="2035" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2036" ordinal="1972" sl="2036" sc="1" el="2036" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2037" ordinal="1973" sl="2037" sc="1" el="2037" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2038" ordinal="1974" sl="2038" sc="1" el="2038" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2039" ordinal="1975" sl="2039" sc="1" el="2039" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2040" ordinal="1976" sl="2040" sc="1" el="2040" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2041" ordinal="1977" sl="2041" sc="1" el="2041" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2042" ordinal="1978" sl="2042" sc="1" el="2042" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2043" ordinal="1979" sl="2043" sc="1" el="2043" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2044" ordinal="1980" sl="2044" sc="1" el="2044" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2045" ordinal="1981" sl="2045" sc="1" el="2045" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2046" ordinal="1982" sl="2046" sc="1" el="2046" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2047" ordinal="1983" sl="2047" sc="1" el="2047" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2048" ordinal="1984" sl="2048" sc="1" el="2048" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2049" ordinal="1985" sl="2049" sc="1" el="2049" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2050" ordinal="1986" sl="2050" sc="1" el="2050" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2051" ordinal="1987" sl="2051" sc="1" el="2051" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2052" ordinal="1988" sl="2052" sc="1" el="2052" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2053" ordinal="1989" sl="2053" sc="1" el="2053" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2054" ordinal="1990" sl="2054" sc="1" el="2054" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2055" ordinal="1991" sl="2055" sc="1" el="2055" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2056" ordinal="1992" sl="2056" sc="1" el="2056" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2057" ordinal="1993" sl="2057" sc="1" el="2057" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2058" ordinal="1994" sl="2058" sc="1" el="2058" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2060" ordinal="1995" sl="2060" sc="1" el="2060" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2061" ordinal="1996" sl="2061" sc="1" el="2061" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2062" ordinal="1997" sl="2062" sc="1" el="2062" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2063" ordinal="1998" sl="2063" sc="1" el="2063" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2064" ordinal="1999" sl="2064" sc="1" el="2064" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2065" ordinal="2000" sl="2065" sc="1" el="2065" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2066" ordinal="2001" sl="2066" sc="1" el="2066" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2067" ordinal="2002" sl="2067" sc="1" el="2067" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2068" ordinal="2003" sl="2068" sc="1" el="2068" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2069" ordinal="2004" sl="2069" sc="1" el="2069" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2070" ordinal="2005" sl="2070" sc="1" el="2070" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2071" ordinal="2006" sl="2071" sc="1" el="2071" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2072" ordinal="2007" sl="2072" sc="1" el="2072" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2073" ordinal="2008" sl="2073" sc="1" el="2073" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2074" ordinal="2009" sl="2074" sc="1" el="2074" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2075" ordinal="2010" sl="2075" sc="1" el="2075" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2076" ordinal="2011" sl="2076" sc="1" el="2076" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2077" ordinal="2012" sl="2077" sc="1" el="2077" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2078" ordinal="2013" sl="2078" sc="1" el="2078" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2079" ordinal="2014" sl="2079" sc="1" el="2079" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2080" ordinal="2015" sl="2080" sc="1" el="2080" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2081" ordinal="2016" sl="2081" sc="1" el="2081" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2082" ordinal="2017" sl="2082" sc="1" el="2082" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2083" ordinal="2018" sl="2083" sc="1" el="2083" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2084" ordinal="2019" sl="2084" sc="1" el="2084" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2085" ordinal="2020" sl="2085" sc="1" el="2085" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2086" ordinal="2021" sl="2086" sc="1" el="2086" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2088" ordinal="2022" sl="2088" sc="1" el="2088" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2089" ordinal="2023" sl="2089" sc="1" el="2089" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2090" ordinal="2024" sl="2090" sc="1" el="2090" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2091" ordinal="2025" sl="2091" sc="1" el="2091" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2092" ordinal="2026" sl="2092" sc="1" el="2092" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2093" ordinal="2027" sl="2093" sc="1" el="2093" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2094" ordinal="2028" sl="2094" sc="1" el="2094" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2095" ordinal="2029" sl="2095" sc="1" el="2095" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2096" ordinal="2030" sl="2096" sc="1" el="2096" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2097" ordinal="2031" sl="2097" sc="1" el="2097" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2098" ordinal="2032" sl="2098" sc="1" el="2098" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2099" ordinal="2033" sl="2099" sc="1" el="2099" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2100" ordinal="2034" sl="2100" sc="1" el="2100" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2101" ordinal="2035" sl="2101" sc="1" el="2101" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2102" ordinal="2036" sl="2102" sc="1" el="2102" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2103" ordinal="2037" sl="2103" sc="1" el="2103" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2104" ordinal="2038" sl="2104" sc="1" el="2104" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2105" ordinal="2039" sl="2105" sc="1" el="2105" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2106" ordinal="2040" sl="2106" sc="1" el="2106" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2108" ordinal="2041" sl="2108" sc="1" el="2108" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2109" ordinal="2042" sl="2109" sc="1" el="2109" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2110" ordinal="2043" sl="2110" sc="1" el="2110" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2111" ordinal="2044" sl="2111" sc="1" el="2111" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2112" ordinal="2045" sl="2112" sc="1" el="2112" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2113" ordinal="2046" sl="2113" sc="1" el="2113" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2114" ordinal="2047" sl="2114" sc="1" el="2114" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2115" ordinal="2048" sl="2115" sc="1" el="2115" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2116" ordinal="2049" sl="2116" sc="1" el="2116" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2117" ordinal="2050" sl="2117" sc="1" el="2117" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2118" ordinal="2051" sl="2118" sc="1" el="2118" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2119" ordinal="2052" sl="2119" sc="1" el="2119" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2120" ordinal="2053" sl="2120" sc="1" el="2120" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2121" ordinal="2054" sl="2121" sc="1" el="2121" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2122" ordinal="2055" sl="2122" sc="1" el="2122" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2123" ordinal="2056" sl="2123" sc="1" el="2123" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2124" ordinal="2057" sl="2124" sc="1" el="2124" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2125" ordinal="2058" sl="2125" sc="1" el="2125" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2126" ordinal="2059" sl="2126" sc="1" el="2126" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2127" ordinal="2060" sl="2127" sc="1" el="2127" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2128" ordinal="2061" sl="2128" sc="1" el="2128" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2129" ordinal="2062" sl="2129" sc="1" el="2129" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2130" ordinal="2063" sl="2130" sc="1" el="2130" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2131" ordinal="2064" sl="2131" sc="1" el="2131" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2132" ordinal="2065" sl="2132" sc="1" el="2132" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2133" ordinal="2066" sl="2133" sc="1" el="2133" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2134" ordinal="2067" sl="2134" sc="1" el="2134" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2135" ordinal="2068" sl="2135" sc="1" el="2135" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2136" ordinal="2069" sl="2136" sc="1" el="2136" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2138" ordinal="2070" sl="2138" sc="1" el="2138" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2139" ordinal="2071" sl="2139" sc="1" el="2139" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2140" ordinal="2072" sl="2140" sc="1" el="2140" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2141" ordinal="2073" sl="2141" sc="1" el="2141" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2142" ordinal="2074" sl="2142" sc="1" el="2142" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2143" ordinal="2075" sl="2143" sc="1" el="2143" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2144" ordinal="2076" sl="2144" sc="1" el="2144" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2145" ordinal="2077" sl="2145" sc="1" el="2145" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2146" ordinal="2078" sl="2146" sc="1" el="2146" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2147" ordinal="2079" sl="2147" sc="1" el="2147" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2148" ordinal="2080" sl="2148" sc="1" el="2148" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2149" ordinal="2081" sl="2149" sc="1" el="2149" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2150" ordinal="2082" sl="2150" sc="1" el="2150" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2151" ordinal="2083" sl="2151" sc="1" el="2151" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2152" ordinal="2084" sl="2152" sc="1" el="2152" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2153" ordinal="2085" sl="2153" sc="1" el="2153" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2154" ordinal="2086" sl="2154" sc="1" el="2154" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2155" ordinal="2087" sl="2155" sc="1" el="2155" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2156" ordinal="2088" sl="2156" sc="1" el="2156" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2157" ordinal="2089" sl="2157" sc="1" el="2157" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2158" ordinal="2090" sl="2158" sc="1" el="2158" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2159" ordinal="2091" sl="2159" sc="1" el="2159" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2160" ordinal="2092" sl="2160" sc="1" el="2160" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2161" ordinal="2093" sl="2161" sc="1" el="2161" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2162" ordinal="2094" sl="2162" sc="1" el="2162" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2163" ordinal="2095" sl="2163" sc="1" el="2163" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2164" ordinal="2096" sl="2164" sc="1" el="2164" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2165" ordinal="2097" sl="2165" sc="1" el="2165" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2166" ordinal="2098" sl="2166" sc="1" el="2166" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2167" ordinal="2099" sl="2167" sc="1" el="2167" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2168" ordinal="2100" sl="2168" sc="1" el="2168" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2169" ordinal="2101" sl="2169" sc="1" el="2169" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2171" ordinal="2102" sl="2171" sc="1" el="2171" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2172" ordinal="2103" sl="2172" sc="1" el="2172" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2173" ordinal="2104" sl="2173" sc="1" el="2173" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2174" ordinal="2105" sl="2174" sc="1" el="2174" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2175" ordinal="2106" sl="2175" sc="1" el="2175" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2176" ordinal="2107" sl="2176" sc="1" el="2176" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2177" ordinal="2108" sl="2177" sc="1" el="2177" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2178" ordinal="2109" sl="2178" sc="1" el="2178" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2179" ordinal="2110" sl="2179" sc="1" el="2179" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2180" ordinal="2111" sl="2180" sc="1" el="2180" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2181" ordinal="2112" sl="2181" sc="1" el="2181" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2182" ordinal="2113" sl="2182" sc="1" el="2182" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2183" ordinal="2114" sl="2183" sc="1" el="2183" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2184" ordinal="2115" sl="2184" sc="1" el="2184" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2185" ordinal="2116" sl="2185" sc="1" el="2185" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2186" ordinal="2117" sl="2186" sc="1" el="2186" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2187" ordinal="2118" sl="2187" sc="1" el="2187" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2188" ordinal="2119" sl="2188" sc="1" el="2188" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2189" ordinal="2120" sl="2189" sc="1" el="2189" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2190" ordinal="2121" sl="2190" sc="1" el="2190" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2191" ordinal="2122" sl="2191" sc="1" el="2191" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2192" ordinal="2123" sl="2192" sc="1" el="2192" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2193" ordinal="2124" sl="2193" sc="1" el="2193" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2194" ordinal="2125" sl="2194" sc="1" el="2194" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2196" ordinal="2126" sl="2196" sc="1" el="2196" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2197" ordinal="2127" sl="2197" sc="1" el="2197" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2198" ordinal="2128" sl="2198" sc="1" el="2198" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2199" ordinal="2129" sl="2199" sc="1" el="2199" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2200" ordinal="2130" sl="2200" sc="1" el="2200" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2201" ordinal="2131" sl="2201" sc="1" el="2201" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2202" ordinal="2132" sl="2202" sc="1" el="2202" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2203" ordinal="2133" sl="2203" sc="1" el="2203" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2204" ordinal="2134" sl="2204" sc="1" el="2204" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2205" ordinal="2135" sl="2205" sc="1" el="2205" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2206" ordinal="2136" sl="2206" sc="1" el="2206" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2207" ordinal="2137" sl="2207" sc="1" el="2207" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2208" ordinal="2138" sl="2208" sc="1" el="2208" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2209" ordinal="2139" sl="2209" sc="1" el="2209" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2210" ordinal="2140" sl="2210" sc="1" el="2210" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2211" ordinal="2141" sl="2211" sc="1" el="2211" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2212" ordinal="2142" sl="2212" sc="1" el="2212" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2213" ordinal="2143" sl="2213" sc="1" el="2213" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2214" ordinal="2144" sl="2214" sc="1" el="2214" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2215" ordinal="2145" sl="2215" sc="1" el="2215" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2216" ordinal="2146" sl="2216" sc="1" el="2216" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2217" ordinal="2147" sl="2217" sc="1" el="2217" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2218" ordinal="2148" sl="2218" sc="1" el="2218" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2219" ordinal="2149" sl="2219" sc="1" el="2219" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2221" ordinal="2150" sl="2221" sc="1" el="2221" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2222" ordinal="2151" sl="2222" sc="1" el="2222" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2223" ordinal="2152" sl="2223" sc="1" el="2223" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2224" ordinal="2153" sl="2224" sc="1" el="2224" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2225" ordinal="2154" sl="2225" sc="1" el="2225" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2226" ordinal="2155" sl="2226" sc="1" el="2226" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2227" ordinal="2156" sl="2227" sc="1" el="2227" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2228" ordinal="2157" sl="2228" sc="1" el="2228" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2229" ordinal="2158" sl="2229" sc="1" el="2229" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2230" ordinal="2159" sl="2230" sc="1" el="2230" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2231" ordinal="2160" sl="2231" sc="1" el="2231" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2232" ordinal="2161" sl="2232" sc="1" el="2232" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2233" ordinal="2162" sl="2233" sc="1" el="2233" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2234" ordinal="2163" sl="2234" sc="1" el="2234" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2235" ordinal="2164" sl="2235" sc="1" el="2235" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2236" ordinal="2165" sl="2236" sc="1" el="2236" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2237" ordinal="2166" sl="2237" sc="1" el="2237" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2238" ordinal="2167" sl="2238" sc="1" el="2238" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2239" ordinal="2168" sl="2239" sc="1" el="2239" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2240" ordinal="2169" sl="2240" sc="1" el="2240" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2241" ordinal="2170" sl="2241" sc="1" el="2241" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2242" ordinal="2171" sl="2242" sc="1" el="2242" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2243" ordinal="2172" sl="2243" sc="1" el="2243" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2244" ordinal="2173" sl="2244" sc="1" el="2244" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2245" ordinal="2174" sl="2245" sc="1" el="2245" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2246" ordinal="2175" sl="2246" sc="1" el="2246" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2247" ordinal="2176" sl="2247" sc="1" el="2247" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2248" ordinal="2177" sl="2248" sc="1" el="2248" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2249" ordinal="2178" sl="2249" sc="1" el="2249" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2250" ordinal="2179" sl="2250" sc="1" el="2250" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2251" ordinal="2180" sl="2251" sc="1" el="2251" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2252" ordinal="2181" sl="2252" sc="1" el="2252" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2254" ordinal="2182" sl="2254" sc="1" el="2254" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2255" ordinal="2183" sl="2255" sc="1" el="2255" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2256" ordinal="2184" sl="2256" sc="1" el="2256" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2257" ordinal="2185" sl="2257" sc="1" el="2257" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2258" ordinal="2186" sl="2258" sc="1" el="2258" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2259" ordinal="2187" sl="2259" sc="1" el="2259" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2260" ordinal="2188" sl="2260" sc="1" el="2260" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2261" ordinal="2189" sl="2261" sc="1" el="2261" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2262" ordinal="2190" sl="2262" sc="1" el="2262" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2263" ordinal="2191" sl="2263" sc="1" el="2263" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2264" ordinal="2192" sl="2264" sc="1" el="2264" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2265" ordinal="2193" sl="2265" sc="1" el="2265" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2266" ordinal="2194" sl="2266" sc="1" el="2266" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2267" ordinal="2195" sl="2267" sc="1" el="2267" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2268" ordinal="2196" sl="2268" sc="1" el="2268" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2269" ordinal="2197" sl="2269" sc="1" el="2269" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2270" ordinal="2198" sl="2270" sc="1" el="2270" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2271" ordinal="2199" sl="2271" sc="1" el="2271" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2272" ordinal="2200" sl="2272" sc="1" el="2272" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2273" ordinal="2201" sl="2273" sc="1" el="2273" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2274" ordinal="2202" sl="2274" sc="1" el="2274" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2275" ordinal="2203" sl="2275" sc="1" el="2275" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2276" ordinal="2204" sl="2276" sc="1" el="2276" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2277" ordinal="2205" sl="2277" sc="1" el="2277" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2279" ordinal="2206" sl="2279" sc="1" el="2279" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2280" ordinal="2207" sl="2280" sc="1" el="2280" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2281" ordinal="2208" sl="2281" sc="1" el="2281" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2282" ordinal="2209" sl="2282" sc="1" el="2282" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2283" ordinal="2210" sl="2283" sc="1" el="2283" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2284" ordinal="2211" sl="2284" sc="1" el="2284" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2285" ordinal="2212" sl="2285" sc="1" el="2285" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2286" ordinal="2213" sl="2286" sc="1" el="2286" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2287" ordinal="2214" sl="2287" sc="1" el="2287" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2288" ordinal="2215" sl="2288" sc="1" el="2288" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2289" ordinal="2216" sl="2289" sc="1" el="2289" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2290" ordinal="2217" sl="2290" sc="1" el="2290" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2291" ordinal="2218" sl="2291" sc="1" el="2291" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2292" ordinal="2219" sl="2292" sc="1" el="2292" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2293" ordinal="2220" sl="2293" sc="1" el="2293" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2294" ordinal="2221" sl="2294" sc="1" el="2294" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2295" ordinal="2222" sl="2295" sc="1" el="2295" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2296" ordinal="2223" sl="2296" sc="1" el="2296" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2297" ordinal="2224" sl="2297" sc="1" el="2297" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2298" ordinal="2225" sl="2298" sc="1" el="2298" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2299" ordinal="2226" sl="2299" sc="1" el="2299" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2300" ordinal="2227" sl="2300" sc="1" el="2300" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2301" ordinal="2228" sl="2301" sc="1" el="2301" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2302" ordinal="2229" sl="2302" sc="1" el="2302" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2303" ordinal="2230" sl="2303" sc="1" el="2303" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2304" ordinal="2231" sl="2304" sc="1" el="2304" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2305" ordinal="2232" sl="2305" sc="1" el="2305" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2306" ordinal="2233" sl="2306" sc="1" el="2306" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2307" ordinal="2234" sl="2307" sc="1" el="2307" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2308" ordinal="2235" sl="2308" sc="1" el="2308" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2309" ordinal="2236" sl="2309" sc="1" el="2309" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2310" ordinal="2237" sl="2310" sc="1" el="2310" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2311" ordinal="2238" sl="2311" sc="1" el="2311" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2312" ordinal="2239" sl="2312" sc="1" el="2312" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2313" ordinal="2240" sl="2313" sc="1" el="2313" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2314" ordinal="2241" sl="2314" sc="1" el="2314" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2315" ordinal="2242" sl="2315" sc="1" el="2315" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2316" ordinal="2243" sl="2316" sc="1" el="2316" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2317" ordinal="2244" sl="2317" sc="1" el="2317" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2318" ordinal="2245" sl="2318" sc="1" el="2318" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2319" ordinal="2246" sl="2319" sc="1" el="2319" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2320" ordinal="2247" sl="2320" sc="1" el="2320" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2321" ordinal="2248" sl="2321" sc="1" el="2321" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2322" ordinal="2249" sl="2322" sc="1" el="2322" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2323" ordinal="2250" sl="2323" sc="1" el="2323" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2325" ordinal="2251" sl="2325" sc="1" el="2325" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2326" ordinal="2252" sl="2326" sc="1" el="2326" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2327" ordinal="2253" sl="2327" sc="1" el="2327" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2328" ordinal="2254" sl="2328" sc="1" el="2328" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2329" ordinal="2255" sl="2329" sc="1" el="2329" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2330" ordinal="2256" sl="2330" sc="1" el="2330" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2331" ordinal="2257" sl="2331" sc="1" el="2331" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2332" ordinal="2258" sl="2332" sc="1" el="2332" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2333" ordinal="2259" sl="2333" sc="1" el="2333" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2334" ordinal="2260" sl="2334" sc="1" el="2334" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2335" ordinal="2261" sl="2335" sc="1" el="2335" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2336" ordinal="2262" sl="2336" sc="1" el="2336" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2337" ordinal="2263" sl="2337" sc="1" el="2337" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2338" ordinal="2264" sl="2338" sc="1" el="2338" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2339" ordinal="2265" sl="2339" sc="1" el="2339" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2340" ordinal="2266" sl="2340" sc="1" el="2340" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2341" ordinal="2267" sl="2341" sc="1" el="2341" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2342" ordinal="2268" sl="2342" sc="1" el="2342" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2343" ordinal="2269" sl="2343" sc="1" el="2343" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2344" ordinal="2270" sl="2344" sc="1" el="2344" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2345" ordinal="2271" sl="2345" sc="1" el="2345" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2346" ordinal="2272" sl="2346" sc="1" el="2346" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2347" ordinal="2273" sl="2347" sc="1" el="2347" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2348" ordinal="2274" sl="2348" sc="1" el="2348" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2349" ordinal="2275" sl="2349" sc="1" el="2349" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2350" ordinal="2276" sl="2350" sc="1" el="2350" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2351" ordinal="2277" sl="2351" sc="1" el="2351" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2352" ordinal="2278" sl="2352" sc="1" el="2352" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2353" ordinal="2279" sl="2353" sc="1" el="2353" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2354" ordinal="2280" sl="2354" sc="1" el="2354" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2355" ordinal="2281" sl="2355" sc="1" el="2355" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2356" ordinal="2282" sl="2356" sc="1" el="2356" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2357" ordinal="2283" sl="2357" sc="1" el="2357" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2358" ordinal="2284" sl="2358" sc="1" el="2358" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2360" ordinal="2285" sl="2360" sc="1" el="2360" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2361" ordinal="2286" sl="2361" sc="1" el="2361" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2362" ordinal="2287" sl="2362" sc="1" el="2362" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2363" ordinal="2288" sl="2363" sc="1" el="2363" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2364" ordinal="2289" sl="2364" sc="1" el="2364" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2365" ordinal="2290" sl="2365" sc="1" el="2365" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2366" ordinal="2291" sl="2366" sc="1" el="2366" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2367" ordinal="2292" sl="2367" sc="1" el="2367" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2368" ordinal="2293" sl="2368" sc="1" el="2368" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2369" ordinal="2294" sl="2369" sc="1" el="2369" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2370" ordinal="2295" sl="2370" sc="1" el="2370" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2371" ordinal="2296" sl="2371" sc="1" el="2371" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2372" ordinal="2297" sl="2372" sc="1" el="2372" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2373" ordinal="2298" sl="2373" sc="1" el="2373" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2374" ordinal="2299" sl="2374" sc="1" el="2374" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2375" ordinal="2300" sl="2375" sc="1" el="2375" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2376" ordinal="2301" sl="2376" sc="1" el="2376" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2377" ordinal="2302" sl="2377" sc="1" el="2377" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2378" ordinal="2303" sl="2378" sc="1" el="2378" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2379" ordinal="2304" sl="2379" sc="1" el="2379" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2380" ordinal="2305" sl="2380" sc="1" el="2380" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2381" ordinal="2306" sl="2381" sc="1" el="2381" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2382" ordinal="2307" sl="2382" sc="1" el="2382" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2383" ordinal="2308" sl="2383" sc="1" el="2383" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2384" ordinal="2309" sl="2384" sc="1" el="2384" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2385" ordinal="2310" sl="2385" sc="1" el="2385" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2386" ordinal="2311" sl="2386" sc="1" el="2386" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2387" ordinal="2312" sl="2387" sc="1" el="2387" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2388" ordinal="2313" sl="2388" sc="1" el="2388" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2389" ordinal="2314" sl="2389" sc="1" el="2389" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2390" ordinal="2315" sl="2390" sc="1" el="2390" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2391" ordinal="2316" sl="2391" sc="1" el="2391" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2393" ordinal="2317" sl="2393" sc="1" el="2393" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2394" ordinal="2318" sl="2394" sc="1" el="2394" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2395" ordinal="2319" sl="2395" sc="1" el="2395" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2396" ordinal="2320" sl="2396" sc="1" el="2396" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2397" ordinal="2321" sl="2397" sc="1" el="2397" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2398" ordinal="2322" sl="2398" sc="1" el="2398" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2399" ordinal="2323" sl="2399" sc="1" el="2399" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2400" ordinal="2324" sl="2400" sc="1" el="2400" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2401" ordinal="2325" sl="2401" sc="1" el="2401" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2402" ordinal="2326" sl="2402" sc="1" el="2402" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2403" ordinal="2327" sl="2403" sc="1" el="2403" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2404" ordinal="2328" sl="2404" sc="1" el="2404" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2405" ordinal="2329" sl="2405" sc="1" el="2405" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2406" ordinal="2330" sl="2406" sc="1" el="2406" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2407" ordinal="2331" sl="2407" sc="1" el="2407" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2408" ordinal="2332" sl="2408" sc="1" el="2408" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2409" ordinal="2333" sl="2409" sc="1" el="2409" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2410" ordinal="2334" sl="2410" sc="1" el="2410" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2411" ordinal="2335" sl="2411" sc="1" el="2411" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2412" ordinal="2336" sl="2412" sc="1" el="2412" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2413" ordinal="2337" sl="2413" sc="1" el="2413" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2414" ordinal="2338" sl="2414" sc="1" el="2414" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2416" ordinal="2339" sl="2416" sc="1" el="2416" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2417" ordinal="2340" sl="2417" sc="1" el="2417" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2418" ordinal="2341" sl="2418" sc="1" el="2418" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2419" ordinal="2342" sl="2419" sc="1" el="2419" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2420" ordinal="2343" sl="2420" sc="1" el="2420" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2421" ordinal="2344" sl="2421" sc="1" el="2421" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2422" ordinal="2345" sl="2422" sc="1" el="2422" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2423" ordinal="2346" sl="2423" sc="1" el="2423" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2424" ordinal="2347" sl="2424" sc="1" el="2424" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2425" ordinal="2348" sl="2425" sc="1" el="2425" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2426" ordinal="2349" sl="2426" sc="1" el="2426" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2427" ordinal="2350" sl="2427" sc="1" el="2427" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2428" ordinal="2351" sl="2428" sc="1" el="2428" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2429" ordinal="2352" sl="2429" sc="1" el="2429" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2430" ordinal="2353" sl="2430" sc="1" el="2430" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2431" ordinal="2354" sl="2431" sc="1" el="2431" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2432" ordinal="2355" sl="2432" sc="1" el="2432" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2433" ordinal="2356" sl="2433" sc="1" el="2433" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2434" ordinal="2357" sl="2434" sc="1" el="2434" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2435" ordinal="2358" sl="2435" sc="1" el="2435" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2436" ordinal="2359" sl="2436" sc="1" el="2436" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2437" ordinal="2360" sl="2437" sc="1" el="2437" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2438" ordinal="2361" sl="2438" sc="1" el="2438" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2439" ordinal="2362" sl="2439" sc="1" el="2439" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2440" ordinal="2363" sl="2440" sc="1" el="2440" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2441" ordinal="2364" sl="2441" sc="1" el="2441" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2442" ordinal="2365" sl="2442" sc="1" el="2442" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2443" ordinal="2366" sl="2443" sc="1" el="2443" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2444" ordinal="2367" sl="2444" sc="1" el="2444" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2445" ordinal="2368" sl="2445" sc="1" el="2445" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2446" ordinal="2369" sl="2446" sc="1" el="2446" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2447" ordinal="2370" sl="2447" sc="1" el="2447" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2448" ordinal="2371" sl="2448" sc="1" el="2448" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2449" ordinal="2372" sl="2449" sc="1" el="2449" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2450" ordinal="2373" sl="2450" sc="1" el="2450" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2451" ordinal="2374" sl="2451" sc="1" el="2451" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2453" ordinal="2375" sl="2453" sc="1" el="2453" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2454" ordinal="2376" sl="2454" sc="1" el="2454" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2455" ordinal="2377" sl="2455" sc="1" el="2455" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2456" ordinal="2378" sl="2456" sc="1" el="2456" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2457" ordinal="2379" sl="2457" sc="1" el="2457" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2458" ordinal="2380" sl="2458" sc="1" el="2458" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2459" ordinal="2381" sl="2459" sc="1" el="2459" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2460" ordinal="2382" sl="2460" sc="1" el="2460" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2461" ordinal="2383" sl="2461" sc="1" el="2461" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2462" ordinal="2384" sl="2462" sc="1" el="2462" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2463" ordinal="2385" sl="2463" sc="1" el="2463" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2464" ordinal="2386" sl="2464" sc="1" el="2464" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2465" ordinal="2387" sl="2465" sc="1" el="2465" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2466" ordinal="2388" sl="2466" sc="1" el="2466" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2467" ordinal="2389" sl="2467" sc="1" el="2467" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2468" ordinal="2390" sl="2468" sc="1" el="2468" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2469" ordinal="2391" sl="2469" sc="1" el="2469" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2470" ordinal="2392" sl="2470" sc="1" el="2470" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2471" ordinal="2393" sl="2471" sc="1" el="2471" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2472" ordinal="2394" sl="2472" sc="1" el="2472" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2473" ordinal="2395" sl="2473" sc="1" el="2473" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2474" ordinal="2396" sl="2474" sc="1" el="2474" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2475" ordinal="2397" sl="2475" sc="1" el="2475" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2476" ordinal="2398" sl="2476" sc="1" el="2476" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2477" ordinal="2399" sl="2477" sc="1" el="2477" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2478" ordinal="2400" sl="2478" sc="1" el="2478" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2479" ordinal="2401" sl="2479" sc="1" el="2479" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2481" ordinal="2402" sl="2481" sc="1" el="2481" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2482" ordinal="2403" sl="2482" sc="1" el="2482" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2483" ordinal="2404" sl="2483" sc="1" el="2483" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2484" ordinal="2405" sl="2484" sc="1" el="2484" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2485" ordinal="2406" sl="2485" sc="1" el="2485" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2486" ordinal="2407" sl="2486" sc="1" el="2486" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2487" ordinal="2408" sl="2487" sc="1" el="2487" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2488" ordinal="2409" sl="2488" sc="1" el="2488" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2489" ordinal="2410" sl="2489" sc="1" el="2489" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2490" ordinal="2411" sl="2490" sc="1" el="2490" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2491" ordinal="2412" sl="2491" sc="1" el="2491" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2492" ordinal="2413" sl="2492" sc="1" el="2492" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2493" ordinal="2414" sl="2493" sc="1" el="2493" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2494" ordinal="2415" sl="2494" sc="1" el="2494" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2495" ordinal="2416" sl="2495" sc="1" el="2495" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2496" ordinal="2417" sl="2496" sc="1" el="2496" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2497" ordinal="2418" sl="2497" sc="1" el="2497" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2498" ordinal="2419" sl="2498" sc="1" el="2498" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2499" ordinal="2420" sl="2499" sc="1" el="2499" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2500" ordinal="2421" sl="2500" sc="1" el="2500" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2501" ordinal="2422" sl="2501" sc="1" el="2501" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2502" ordinal="2423" sl="2502" sc="1" el="2502" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2503" ordinal="2424" sl="2503" sc="1" el="2503" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2504" ordinal="2425" sl="2504" sc="1" el="2504" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2505" ordinal="2426" sl="2505" sc="1" el="2505" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2506" ordinal="2427" sl="2506" sc="1" el="2506" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2507" ordinal="2428" sl="2507" sc="1" el="2507" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2508" ordinal="2429" sl="2508" sc="1" el="2508" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2509" ordinal="2430" sl="2509" sc="1" el="2509" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2510" ordinal="2431" sl="2510" sc="1" el="2510" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2511" ordinal="2432" sl="2511" sc="1" el="2511" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2512" ordinal="2433" sl="2512" sc="1" el="2512" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2513" ordinal="2434" sl="2513" sc="1" el="2513" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2514" ordinal="2435" sl="2514" sc="1" el="2514" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2515" ordinal="2436" sl="2515" sc="1" el="2515" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2516" ordinal="2437" sl="2516" sc="1" el="2516" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2517" ordinal="2438" sl="2517" sc="1" el="2517" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2518" ordinal="2439" sl="2518" sc="1" el="2518" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2519" ordinal="2440" sl="2519" sc="1" el="2519" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2520" ordinal="2441" sl="2520" sc="1" el="2520" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2521" ordinal="2442" sl="2521" sc="1" el="2521" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2522" ordinal="2443" sl="2522" sc="1" el="2522" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2523" ordinal="2444" sl="2523" sc="1" el="2523" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2524" ordinal="2445" sl="2524" sc="1" el="2524" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2525" ordinal="2446" sl="2525" sc="1" el="2525" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2526" ordinal="2447" sl="2526" sc="1" el="2526" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2527" ordinal="2448" sl="2527" sc="1" el="2527" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2528" ordinal="2449" sl="2528" sc="1" el="2528" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2529" ordinal="2450" sl="2529" sc="1" el="2529" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2530" ordinal="2451" sl="2530" sc="1" el="2530" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2531" ordinal="2452" sl="2531" sc="1" el="2531" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2532" ordinal="2453" sl="2532" sc="1" el="2532" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2533" ordinal="2454" sl="2533" sc="1" el="2533" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2534" ordinal="2455" sl="2534" sc="1" el="2534" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2535" ordinal="2456" sl="2535" sc="1" el="2535" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2536" ordinal="2457" sl="2536" sc="1" el="2536" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2537" ordinal="2458" sl="2537" sc="1" el="2537" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2538" ordinal="2459" sl="2538" sc="1" el="2538" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2539" ordinal="2460" sl="2539" sc="1" el="2539" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2540" ordinal="2461" sl="2540" sc="1" el="2540" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2541" ordinal="2462" sl="2541" sc="1" el="2541" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2542" ordinal="2463" sl="2542" sc="1" el="2542" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2543" ordinal="2464" sl="2543" sc="1" el="2543" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2544" ordinal="2465" sl="2544" sc="1" el="2544" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2545" ordinal="2466" sl="2545" sc="1" el="2545" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2546" ordinal="2467" sl="2546" sc="1" el="2546" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2547" ordinal="2468" sl="2547" sc="1" el="2547" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2548" ordinal="2469" sl="2548" sc="1" el="2548" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2549" ordinal="2470" sl="2549" sc="1" el="2549" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2550" ordinal="2471" sl="2550" sc="1" el="2550" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2551" ordinal="2472" sl="2551" sc="1" el="2551" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2552" ordinal="2473" sl="2552" sc="1" el="2552" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2553" ordinal="2474" sl="2553" sc="1" el="2553" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2554" ordinal="2475" sl="2554" sc="1" el="2554" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2555" ordinal="2476" sl="2555" sc="1" el="2555" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2556" ordinal="2477" sl="2556" sc="1" el="2556" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2557" ordinal="2478" sl="2557" sc="1" el="2557" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2558" ordinal="2479" sl="2558" sc="1" el="2558" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2559" ordinal="2480" sl="2559" sc="1" el="2559" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2560" ordinal="2481" sl="2560" sc="1" el="2560" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2561" ordinal="2482" sl="2561" sc="1" el="2561" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2562" ordinal="2483" sl="2562" sc="1" el="2562" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2563" ordinal="2484" sl="2563" sc="1" el="2563" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2564" ordinal="2485" sl="2564" sc="1" el="2564" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2565" ordinal="2486" sl="2565" sc="1" el="2565" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2566" ordinal="2487" sl="2566" sc="1" el="2566" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2567" ordinal="2488" sl="2567" sc="1" el="2567" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2568" ordinal="2489" sl="2568" sc="1" el="2568" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2569" ordinal="2490" sl="2569" sc="1" el="2569" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2570" ordinal="2491" sl="2570" sc="1" el="2570" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2571" ordinal="2492" sl="2571" sc="1" el="2571" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2572" ordinal="2493" sl="2572" sc="1" el="2572" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2573" ordinal="2494" sl="2573" sc="1" el="2573" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2574" ordinal="2495" sl="2574" sc="1" el="2574" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2575" ordinal="2496" sl="2575" sc="1" el="2575" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2576" ordinal="2497" sl="2576" sc="1" el="2576" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2577" ordinal="2498" sl="2577" sc="1" el="2577" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2578" ordinal="2499" sl="2578" sc="1" el="2578" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2580" ordinal="2500" sl="2580" sc="1" el="2580" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2581" ordinal="2501" sl="2581" sc="1" el="2581" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2582" ordinal="2502" sl="2582" sc="1" el="2582" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2583" ordinal="2503" sl="2583" sc="1" el="2583" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2584" ordinal="2504" sl="2584" sc="1" el="2584" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2585" ordinal="2505" sl="2585" sc="1" el="2585" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2586" ordinal="2506" sl="2586" sc="1" el="2586" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2587" ordinal="2507" sl="2587" sc="1" el="2587" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2588" ordinal="2508" sl="2588" sc="1" el="2588" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2589" ordinal="2509" sl="2589" sc="1" el="2589" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2590" ordinal="2510" sl="2590" sc="1" el="2590" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2591" ordinal="2511" sl="2591" sc="1" el="2591" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2592" ordinal="2512" sl="2592" sc="1" el="2592" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2593" ordinal="2513" sl="2593" sc="1" el="2593" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2594" ordinal="2514" sl="2594" sc="1" el="2594" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2595" ordinal="2515" sl="2595" sc="1" el="2595" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2596" ordinal="2516" sl="2596" sc="1" el="2596" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2597" ordinal="2517" sl="2597" sc="1" el="2597" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2598" ordinal="2518" sl="2598" sc="1" el="2598" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2599" ordinal="2519" sl="2599" sc="1" el="2599" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2600" ordinal="2520" sl="2600" sc="1" el="2600" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2601" ordinal="2521" sl="2601" sc="1" el="2601" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2603" ordinal="2522" sl="2603" sc="1" el="2603" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2604" ordinal="2523" sl="2604" sc="1" el="2604" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2605" ordinal="2524" sl="2605" sc="1" el="2605" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2606" ordinal="2525" sl="2606" sc="1" el="2606" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2607" ordinal="2526" sl="2607" sc="1" el="2607" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2608" ordinal="2527" sl="2608" sc="1" el="2608" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2609" ordinal="2528" sl="2609" sc="1" el="2609" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2610" ordinal="2529" sl="2610" sc="1" el="2610" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2611" ordinal="2530" sl="2611" sc="1" el="2611" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2612" ordinal="2531" sl="2612" sc="1" el="2612" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2613" ordinal="2532" sl="2613" sc="1" el="2613" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2614" ordinal="2533" sl="2614" sc="1" el="2614" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2615" ordinal="2534" sl="2615" sc="1" el="2615" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2616" ordinal="2535" sl="2616" sc="1" el="2616" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2617" ordinal="2536" sl="2617" sc="1" el="2617" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2618" ordinal="2537" sl="2618" sc="1" el="2618" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2619" ordinal="2538" sl="2619" sc="1" el="2619" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2620" ordinal="2539" sl="2620" sc="1" el="2620" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2621" ordinal="2540" sl="2621" sc="1" el="2621" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2622" ordinal="2541" sl="2622" sc="1" el="2622" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2623" ordinal="2542" sl="2623" sc="1" el="2623" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2624" ordinal="2543" sl="2624" sc="1" el="2624" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2625" ordinal="2544" sl="2625" sc="1" el="2625" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2626" ordinal="2545" sl="2626" sc="1" el="2626" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2628" ordinal="2546" sl="2628" sc="1" el="2628" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2629" ordinal="2547" sl="2629" sc="1" el="2629" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2630" ordinal="2548" sl="2630" sc="1" el="2630" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2631" ordinal="2549" sl="2631" sc="1" el="2631" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2632" ordinal="2550" sl="2632" sc="1" el="2632" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2633" ordinal="2551" sl="2633" sc="1" el="2633" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2634" ordinal="2552" sl="2634" sc="1" el="2634" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2635" ordinal="2553" sl="2635" sc="1" el="2635" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2636" ordinal="2554" sl="2636" sc="1" el="2636" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2637" ordinal="2555" sl="2637" sc="1" el="2637" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2638" ordinal="2556" sl="2638" sc="1" el="2638" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2639" ordinal="2557" sl="2639" sc="1" el="2639" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2640" ordinal="2558" sl="2640" sc="1" el="2640" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2641" ordinal="2559" sl="2641" sc="1" el="2641" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2642" ordinal="2560" sl="2642" sc="1" el="2642" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2643" ordinal="2561" sl="2643" sc="1" el="2643" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2644" ordinal="2562" sl="2644" sc="1" el="2644" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2645" ordinal="2563" sl="2645" sc="1" el="2645" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2646" ordinal="2564" sl="2646" sc="1" el="2646" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2647" ordinal="2565" sl="2647" sc="1" el="2647" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2648" ordinal="2566" sl="2648" sc="1" el="2648" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2649" ordinal="2567" sl="2649" sc="1" el="2649" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2650" ordinal="2568" sl="2650" sc="1" el="2650" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2651" ordinal="2569" sl="2651" sc="1" el="2651" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2652" ordinal="2570" sl="2652" sc="1" el="2652" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2653" ordinal="2571" sl="2653" sc="1" el="2653" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2654" ordinal="2572" sl="2654" sc="1" el="2654" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2655" ordinal="2573" sl="2655" sc="1" el="2655" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2656" ordinal="2574" sl="2656" sc="1" el="2656" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2657" ordinal="2575" sl="2657" sc="1" el="2657" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2658" ordinal="2576" sl="2658" sc="1" el="2658" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2659" ordinal="2577" sl="2659" sc="1" el="2659" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2660" ordinal="2578" sl="2660" sc="1" el="2660" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2662" ordinal="2579" sl="2662" sc="1" el="2662" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2663" ordinal="2580" sl="2663" sc="1" el="2663" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2664" ordinal="2581" sl="2664" sc="1" el="2664" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2665" ordinal="2582" sl="2665" sc="1" el="2665" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2666" ordinal="2583" sl="2666" sc="1" el="2666" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2667" ordinal="2584" sl="2667" sc="1" el="2667" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2668" ordinal="2585" sl="2668" sc="1" el="2668" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2669" ordinal="2586" sl="2669" sc="1" el="2669" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2670" ordinal="2587" sl="2670" sc="1" el="2670" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2671" ordinal="2588" sl="2671" sc="1" el="2671" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2672" ordinal="2589" sl="2672" sc="1" el="2672" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2673" ordinal="2590" sl="2673" sc="1" el="2673" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2674" ordinal="2591" sl="2674" sc="1" el="2674" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2675" ordinal="2592" sl="2675" sc="1" el="2675" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2676" ordinal="2593" sl="2676" sc="1" el="2676" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2677" ordinal="2594" sl="2677" sc="1" el="2677" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2678" ordinal="2595" sl="2678" sc="1" el="2678" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2679" ordinal="2596" sl="2679" sc="1" el="2679" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2680" ordinal="2597" sl="2680" sc="1" el="2680" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2681" ordinal="2598" sl="2681" sc="1" el="2681" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2682" ordinal="2599" sl="2682" sc="1" el="2682" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2683" ordinal="2600" sl="2683" sc="1" el="2683" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2684" ordinal="2601" sl="2684" sc="1" el="2684" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2685" ordinal="2602" sl="2685" sc="1" el="2685" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2687" ordinal="2603" sl="2687" sc="1" el="2687" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2688" ordinal="2604" sl="2688" sc="1" el="2688" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2689" ordinal="2605" sl="2689" sc="1" el="2689" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2690" ordinal="2606" sl="2690" sc="1" el="2690" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2691" ordinal="2607" sl="2691" sc="1" el="2691" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2692" ordinal="2608" sl="2692" sc="1" el="2692" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2693" ordinal="2609" sl="2693" sc="1" el="2693" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2694" ordinal="2610" sl="2694" sc="1" el="2694" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2695" ordinal="2611" sl="2695" sc="1" el="2695" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2696" ordinal="2612" sl="2696" sc="1" el="2696" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2697" ordinal="2613" sl="2697" sc="1" el="2697" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2698" ordinal="2614" sl="2698" sc="1" el="2698" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2699" ordinal="2615" sl="2699" sc="1" el="2699" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2700" ordinal="2616" sl="2700" sc="1" el="2700" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2701" ordinal="2617" sl="2701" sc="1" el="2701" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2702" ordinal="2618" sl="2702" sc="1" el="2702" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2703" ordinal="2619" sl="2703" sc="1" el="2703" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2704" ordinal="2620" sl="2704" sc="1" el="2704" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2705" ordinal="2621" sl="2705" sc="1" el="2705" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2706" ordinal="2622" sl="2706" sc="1" el="2706" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2707" ordinal="2623" sl="2707" sc="1" el="2707" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2708" ordinal="2624" sl="2708" sc="1" el="2708" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2710" ordinal="2625" sl="2710" sc="1" el="2710" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2711" ordinal="2626" sl="2711" sc="1" el="2711" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2712" ordinal="2627" sl="2712" sc="1" el="2712" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2713" ordinal="2628" sl="2713" sc="1" el="2713" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2714" ordinal="2629" sl="2714" sc="1" el="2714" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2715" ordinal="2630" sl="2715" sc="1" el="2715" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2716" ordinal="2631" sl="2716" sc="1" el="2716" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2717" ordinal="2632" sl="2717" sc="1" el="2717" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2718" ordinal="2633" sl="2718" sc="1" el="2718" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2719" ordinal="2634" sl="2719" sc="1" el="2719" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2720" ordinal="2635" sl="2720" sc="1" el="2720" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2721" ordinal="2636" sl="2721" sc="1" el="2721" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2722" ordinal="2637" sl="2722" sc="1" el="2722" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2723" ordinal="2638" sl="2723" sc="1" el="2723" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2724" ordinal="2639" sl="2724" sc="1" el="2724" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2725" ordinal="2640" sl="2725" sc="1" el="2725" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2726" ordinal="2641" sl="2726" sc="1" el="2726" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2727" ordinal="2642" sl="2727" sc="1" el="2727" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2728" ordinal="2643" sl="2728" sc="1" el="2728" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2729" ordinal="2644" sl="2729" sc="1" el="2729" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2730" ordinal="2645" sl="2730" sc="1" el="2730" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2731" ordinal="2646" sl="2731" sc="1" el="2731" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2733" ordinal="2647" sl="2733" sc="1" el="2733" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2734" ordinal="2648" sl="2734" sc="1" el="2734" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2735" ordinal="2649" sl="2735" sc="1" el="2735" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2736" ordinal="2650" sl="2736" sc="1" el="2736" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2737" ordinal="2651" sl="2737" sc="1" el="2737" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2738" ordinal="2652" sl="2738" sc="1" el="2738" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2739" ordinal="2653" sl="2739" sc="1" el="2739" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2740" ordinal="2654" sl="2740" sc="1" el="2740" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2741" ordinal="2655" sl="2741" sc="1" el="2741" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2742" ordinal="2656" sl="2742" sc="1" el="2742" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2743" ordinal="2657" sl="2743" sc="1" el="2743" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2744" ordinal="2658" sl="2744" sc="1" el="2744" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2746" ordinal="2659" sl="2746" sc="1" el="2746" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2747" ordinal="2660" sl="2747" sc="1" el="2747" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2748" ordinal="2661" sl="2748" sc="1" el="2748" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2749" ordinal="2662" sl="2749" sc="1" el="2749" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2750" ordinal="2663" sl="2750" sc="1" el="2750" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2751" ordinal="2664" sl="2751" sc="1" el="2751" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2752" ordinal="2665" sl="2752" sc="1" el="2752" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2753" ordinal="2666" sl="2753" sc="1" el="2753" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2754" ordinal="2667" sl="2754" sc="1" el="2754" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2755" ordinal="2668" sl="2755" sc="1" el="2755" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2756" ordinal="2669" sl="2756" sc="1" el="2756" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2757" ordinal="2670" sl="2757" sc="1" el="2757" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2758" ordinal="2671" sl="2758" sc="1" el="2758" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2759" ordinal="2672" sl="2759" sc="1" el="2759" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2760" ordinal="2673" sl="2760" sc="1" el="2760" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2761" ordinal="2674" sl="2761" sc="1" el="2761" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2762" ordinal="2675" sl="2762" sc="1" el="2762" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2763" ordinal="2676" sl="2763" sc="1" el="2763" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2764" ordinal="2677" sl="2764" sc="1" el="2764" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2765" ordinal="2678" sl="2765" sc="1" el="2765" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2766" ordinal="2679" sl="2766" sc="1" el="2766" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2767" ordinal="2680" sl="2767" sc="1" el="2767" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2768" ordinal="2681" sl="2768" sc="1" el="2768" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2769" ordinal="2682" sl="2769" sc="1" el="2769" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2770" ordinal="2683" sl="2770" sc="1" el="2770" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2771" ordinal="2684" sl="2771" sc="1" el="2771" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2772" ordinal="2685" sl="2772" sc="1" el="2772" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2773" ordinal="2686" sl="2773" sc="1" el="2773" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2774" ordinal="2687" sl="2774" sc="1" el="2774" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2775" ordinal="2688" sl="2775" sc="1" el="2775" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2776" ordinal="2689" sl="2776" sc="1" el="2776" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2777" ordinal="2690" sl="2777" sc="1" el="2777" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2778" ordinal="2691" sl="2778" sc="1" el="2778" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2779" ordinal="2692" sl="2779" sc="1" el="2779" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2780" ordinal="2693" sl="2780" sc="1" el="2780" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2781" ordinal="2694" sl="2781" sc="1" el="2781" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2782" ordinal="2695" sl="2782" sc="1" el="2782" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2783" ordinal="2696" sl="2783" sc="1" el="2783" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2784" ordinal="2697" sl="2784" sc="1" el="2784" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2785" ordinal="2698" sl="2785" sc="1" el="2785" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2786" ordinal="2699" sl="2786" sc="1" el="2786" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2787" ordinal="2700" sl="2787" sc="1" el="2787" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2788" ordinal="2701" sl="2788" sc="1" el="2788" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2789" ordinal="2702" sl="2789" sc="1" el="2789" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2790" ordinal="2703" sl="2790" sc="1" el="2790" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2791" ordinal="2704" sl="2791" sc="1" el="2791" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2792" ordinal="2705" sl="2792" sc="1" el="2792" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2793" ordinal="2706" sl="2793" sc="1" el="2793" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2794" ordinal="2707" sl="2794" sc="1" el="2794" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2795" ordinal="2708" sl="2795" sc="1" el="2795" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2796" ordinal="2709" sl="2796" sc="1" el="2796" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2797" ordinal="2710" sl="2797" sc="1" el="2797" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2798" ordinal="2711" sl="2798" sc="1" el="2798" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2799" ordinal="2712" sl="2799" sc="1" el="2799" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2800" ordinal="2713" sl="2800" sc="1" el="2800" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2801" ordinal="2714" sl="2801" sc="1" el="2801" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2802" ordinal="2715" sl="2802" sc="1" el="2802" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2803" ordinal="2716" sl="2803" sc="1" el="2803" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2804" ordinal="2717" sl="2804" sc="1" el="2804" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2805" ordinal="2718" sl="2805" sc="1" el="2805" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2806" ordinal="2719" sl="2806" sc="1" el="2806" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2807" ordinal="2720" sl="2807" sc="1" el="2807" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2808" ordinal="2721" sl="2808" sc="1" el="2808" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2809" ordinal="2722" sl="2809" sc="1" el="2809" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2810" ordinal="2723" sl="2810" sc="1" el="2810" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2811" ordinal="2724" sl="2811" sc="1" el="2811" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2812" ordinal="2725" sl="2812" sc="1" el="2812" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2813" ordinal="2726" sl="2813" sc="1" el="2813" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2814" ordinal="2727" sl="2814" sc="1" el="2814" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2815" ordinal="2728" sl="2815" sc="1" el="2815" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2816" ordinal="2729" sl="2816" sc="1" el="2816" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2817" ordinal="2730" sl="2817" sc="1" el="2817" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2818" ordinal="2731" sl="2818" sc="1" el="2818" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2819" ordinal="2732" sl="2819" sc="1" el="2819" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2820" ordinal="2733" sl="2820" sc="1" el="2820" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2821" ordinal="2734" sl="2821" sc="1" el="2821" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2822" ordinal="2735" sl="2822" sc="1" el="2822" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2823" ordinal="2736" sl="2823" sc="1" el="2823" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2824" ordinal="2737" sl="2824" sc="1" el="2824" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2825" ordinal="2738" sl="2825" sc="1" el="2825" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2826" ordinal="2739" sl="2826" sc="1" el="2826" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2827" ordinal="2740" sl="2827" sc="1" el="2827" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2828" ordinal="2741" sl="2828" sc="1" el="2828" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2829" ordinal="2742" sl="2829" sc="1" el="2829" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2830" ordinal="2743" sl="2830" sc="1" el="2830" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2831" ordinal="2744" sl="2831" sc="1" el="2831" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2832" ordinal="2745" sl="2832" sc="1" el="2832" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2833" ordinal="2746" sl="2833" sc="1" el="2833" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2834" ordinal="2747" sl="2834" sc="1" el="2834" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2835" ordinal="2748" sl="2835" sc="1" el="2835" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2836" ordinal="2749" sl="2836" sc="1" el="2836" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2837" ordinal="2750" sl="2837" sc="1" el="2837" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2838" ordinal="2751" sl="2838" sc="1" el="2838" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2839" ordinal="2752" sl="2839" sc="1" el="2839" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2840" ordinal="2753" sl="2840" sc="1" el="2840" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2841" ordinal="2754" sl="2841" sc="1" el="2841" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2842" ordinal="2755" sl="2842" sc="1" el="2842" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2843" ordinal="2756" sl="2843" sc="1" el="2843" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2845" ordinal="2757" sl="2845" sc="1" el="2845" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2846" ordinal="2758" sl="2846" sc="1" el="2846" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2847" ordinal="2759" sl="2847" sc="1" el="2847" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2848" ordinal="2760" sl="2848" sc="1" el="2848" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2849" ordinal="2761" sl="2849" sc="1" el="2849" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2850" ordinal="2762" sl="2850" sc="1" el="2850" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2851" ordinal="2763" sl="2851" sc="1" el="2851" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2852" ordinal="2764" sl="2852" sc="1" el="2852" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2853" ordinal="2765" sl="2853" sc="1" el="2853" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2854" ordinal="2766" sl="2854" sc="1" el="2854" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2855" ordinal="2767" sl="2855" sc="1" el="2855" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2856" ordinal="2768" sl="2856" sc="1" el="2856" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2857" ordinal="2769" sl="2857" sc="1" el="2857" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2858" ordinal="2770" sl="2858" sc="1" el="2858" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2859" ordinal="2771" sl="2859" sc="1" el="2859" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2860" ordinal="2772" sl="2860" sc="1" el="2860" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2861" ordinal="2773" sl="2861" sc="1" el="2861" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2862" ordinal="2774" sl="2862" sc="1" el="2862" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2863" ordinal="2775" sl="2863" sc="1" el="2863" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2864" ordinal="2776" sl="2864" sc="1" el="2864" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2865" ordinal="2777" sl="2865" sc="1" el="2865" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2866" ordinal="2778" sl="2866" sc="1" el="2866" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2867" ordinal="2779" sl="2867" sc="1" el="2867" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2868" ordinal="2780" sl="2868" sc="1" el="2868" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2869" ordinal="2781" sl="2869" sc="1" el="2869" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2870" ordinal="2782" sl="2870" sc="1" el="2870" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2871" ordinal="2783" sl="2871" sc="1" el="2871" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2872" ordinal="2784" sl="2872" sc="1" el="2872" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2873" ordinal="2785" sl="2873" sc="1" el="2873" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2874" ordinal="2786" sl="2874" sc="1" el="2874" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2875" ordinal="2787" sl="2875" sc="1" el="2875" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2876" ordinal="2788" sl="2876" sc="1" el="2876" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2877" ordinal="2789" sl="2877" sc="1" el="2877" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2878" ordinal="2790" sl="2878" sc="1" el="2878" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2879" ordinal="2791" sl="2879" sc="1" el="2879" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2880" ordinal="2792" sl="2880" sc="1" el="2880" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2881" ordinal="2793" sl="2881" sc="1" el="2881" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2882" ordinal="2794" sl="2882" sc="1" el="2882" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2883" ordinal="2795" sl="2883" sc="1" el="2883" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2884" ordinal="2796" sl="2884" sc="1" el="2884" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2885" ordinal="2797" sl="2885" sc="1" el="2885" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2886" ordinal="2798" sl="2886" sc="1" el="2886" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2887" ordinal="2799" sl="2887" sc="1" el="2887" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2888" ordinal="2800" sl="2888" sc="1" el="2888" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2889" ordinal="2801" sl="2889" sc="1" el="2889" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2890" ordinal="2802" sl="2890" sc="1" el="2890" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2891" ordinal="2803" sl="2891" sc="1" el="2891" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2892" ordinal="2804" sl="2892" sc="1" el="2892" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2894" ordinal="2805" sl="2894" sc="1" el="2894" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2895" ordinal="2806" sl="2895" sc="1" el="2895" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2896" ordinal="2807" sl="2896" sc="1" el="2896" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2897" ordinal="2808" sl="2897" sc="1" el="2897" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2898" ordinal="2809" sl="2898" sc="1" el="2898" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2899" ordinal="2810" sl="2899" sc="1" el="2899" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2900" ordinal="2811" sl="2900" sc="1" el="2900" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2901" ordinal="2812" sl="2901" sc="1" el="2901" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2902" ordinal="2813" sl="2902" sc="1" el="2902" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2904" ordinal="2814" sl="2904" sc="1" el="2904" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2905" ordinal="2815" sl="2905" sc="1" el="2905" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2906" ordinal="2816" sl="2906" sc="1" el="2906" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2907" ordinal="2817" sl="2907" sc="1" el="2907" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2908" ordinal="2818" sl="2908" sc="1" el="2908" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2909" ordinal="2819" sl="2909" sc="1" el="2909" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2910" ordinal="2820" sl="2910" sc="1" el="2910" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2911" ordinal="2821" sl="2911" sc="1" el="2911" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2913" ordinal="2822" sl="2913" sc="1" el="2913" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2914" ordinal="2823" sl="2914" sc="1" el="2914" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2915" ordinal="2824" sl="2915" sc="1" el="2915" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2916" ordinal="2825" sl="2916" sc="1" el="2916" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2917" ordinal="2826" sl="2917" sc="1" el="2917" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2918" ordinal="2827" sl="2918" sc="1" el="2918" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2919" ordinal="2828" sl="2919" sc="1" el="2919" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2920" ordinal="2829" sl="2920" sc="1" el="2920" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2921" ordinal="2830" sl="2921" sc="1" el="2921" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2922" ordinal="2831" sl="2922" sc="1" el="2922" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2923" ordinal="2832" sl="2923" sc="1" el="2923" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2924" ordinal="2833" sl="2924" sc="1" el="2924" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2925" ordinal="2834" sl="2925" sc="1" el="2925" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2926" ordinal="2835" sl="2926" sc="1" el="2926" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2927" ordinal="2836" sl="2927" sc="1" el="2927" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2928" ordinal="2837" sl="2928" sc="1" el="2928" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2929" ordinal="2838" sl="2929" sc="1" el="2929" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2930" ordinal="2839" sl="2930" sc="1" el="2930" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2931" ordinal="2840" sl="2931" sc="1" el="2931" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2932" ordinal="2841" sl="2932" sc="1" el="2932" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2933" ordinal="2842" sl="2933" sc="1" el="2933" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2934" ordinal="2843" sl="2934" sc="1" el="2934" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2936" ordinal="2844" sl="2936" sc="1" el="2936" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2937" ordinal="2845" sl="2937" sc="1" el="2937" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2938" ordinal="2846" sl="2938" sc="1" el="2938" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2939" ordinal="2847" sl="2939" sc="1" el="2939" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2940" ordinal="2848" sl="2940" sc="1" el="2940" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2941" ordinal="2849" sl="2941" sc="1" el="2941" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2942" ordinal="2850" sl="2942" sc="1" el="2942" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2943" ordinal="2851" sl="2943" sc="1" el="2943" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2944" ordinal="2852" sl="2944" sc="1" el="2944" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2945" ordinal="2853" sl="2945" sc="1" el="2945" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2946" ordinal="2854" sl="2946" sc="1" el="2946" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2947" ordinal="2855" sl="2947" sc="1" el="2947" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2948" ordinal="2856" sl="2948" sc="1" el="2948" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2949" ordinal="2857" sl="2949" sc="1" el="2949" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2951" ordinal="2858" sl="2951" sc="1" el="2951" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2952" ordinal="2859" sl="2952" sc="1" el="2952" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2953" ordinal="2860" sl="2953" sc="1" el="2953" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2954" ordinal="2861" sl="2954" sc="1" el="2954" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2955" ordinal="2862" sl="2955" sc="1" el="2955" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2956" ordinal="2863" sl="2956" sc="1" el="2956" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2957" ordinal="2864" sl="2957" sc="1" el="2957" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2958" ordinal="2865" sl="2958" sc="1" el="2958" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2959" ordinal="2866" sl="2959" sc="1" el="2959" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2960" ordinal="2867" sl="2960" sc="1" el="2960" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2961" ordinal="2868" sl="2961" sc="1" el="2961" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2962" ordinal="2869" sl="2962" sc="1" el="2962" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2963" ordinal="2870" sl="2963" sc="1" el="2963" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2964" ordinal="2871" sl="2964" sc="1" el="2964" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2965" ordinal="2872" sl="2965" sc="1" el="2965" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2966" ordinal="2873" sl="2966" sc="1" el="2966" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2967" ordinal="2874" sl="2967" sc="1" el="2967" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2968" ordinal="2875" sl="2968" sc="1" el="2968" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2969" ordinal="2876" sl="2969" sc="1" el="2969" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2971" ordinal="2877" sl="2971" sc="1" el="2971" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2972" ordinal="2878" sl="2972" sc="1" el="2972" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2973" ordinal="2879" sl="2973" sc="1" el="2973" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2974" ordinal="2880" sl="2974" sc="1" el="2974" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2975" ordinal="2881" sl="2975" sc="1" el="2975" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2976" ordinal="2882" sl="2976" sc="1" el="2976" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2977" ordinal="2883" sl="2977" sc="1" el="2977" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2978" ordinal="2884" sl="2978" sc="1" el="2978" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2979" ordinal="2885" sl="2979" sc="1" el="2979" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2980" ordinal="2886" sl="2980" sc="1" el="2980" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2981" ordinal="2887" sl="2981" sc="1" el="2981" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2982" ordinal="2888" sl="2982" sc="1" el="2982" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2983" ordinal="2889" sl="2983" sc="1" el="2983" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2984" ordinal="2890" sl="2984" sc="1" el="2984" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2986" ordinal="2891" sl="2986" sc="1" el="2986" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2987" ordinal="2892" sl="2987" sc="1" el="2987" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2988" ordinal="2893" sl="2988" sc="1" el="2988" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2989" ordinal="2894" sl="2989" sc="1" el="2989" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2990" ordinal="2895" sl="2990" sc="1" el="2990" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2991" ordinal="2896" sl="2991" sc="1" el="2991" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2992" ordinal="2897" sl="2992" sc="1" el="2992" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2993" ordinal="2898" sl="2993" sc="1" el="2993" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2994" ordinal="2899" sl="2994" sc="1" el="2994" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2995" ordinal="2900" sl="2995" sc="1" el="2995" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2996" ordinal="2901" sl="2996" sc="1" el="2996" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2997" ordinal="2902" sl="2997" sc="1" el="2997" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2998" ordinal="2903" sl="2998" sc="1" el="2998" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="2999" ordinal="2904" sl="2999" sc="1" el="2999" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3001" ordinal="2905" sl="3001" sc="1" el="3001" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3002" ordinal="2906" sl="3002" sc="1" el="3002" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3003" ordinal="2907" sl="3003" sc="1" el="3003" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3004" ordinal="2908" sl="3004" sc="1" el="3004" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3005" ordinal="2909" sl="3005" sc="1" el="3005" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3006" ordinal="2910" sl="3006" sc="1" el="3006" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3007" ordinal="2911" sl="3007" sc="1" el="3007" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3008" ordinal="2912" sl="3008" sc="1" el="3008" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3009" ordinal="2913" sl="3009" sc="1" el="3009" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3010" ordinal="2914" sl="3010" sc="1" el="3010" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3011" ordinal="2915" sl="3011" sc="1" el="3011" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3012" ordinal="2916" sl="3012" sc="1" el="3012" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3013" ordinal="2917" sl="3013" sc="1" el="3013" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3014" ordinal="2918" sl="3014" sc="1" el="3014" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3016" ordinal="2919" sl="3016" sc="1" el="3016" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3017" ordinal="2920" sl="3017" sc="1" el="3017" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3018" ordinal="2921" sl="3018" sc="1" el="3018" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3019" ordinal="2922" sl="3019" sc="1" el="3019" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3020" ordinal="2923" sl="3020" sc="1" el="3020" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3021" ordinal="2924" sl="3021" sc="1" el="3021" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3022" ordinal="2925" sl="3022" sc="1" el="3022" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3023" ordinal="2926" sl="3023" sc="1" el="3023" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3024" ordinal="2927" sl="3024" sc="1" el="3024" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3025" ordinal="2928" sl="3025" sc="1" el="3025" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3026" ordinal="2929" sl="3026" sc="1" el="3026" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3027" ordinal="2930" sl="3027" sc="1" el="3027" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3028" ordinal="2931" sl="3028" sc="1" el="3028" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3029" ordinal="2932" sl="3029" sc="1" el="3029" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3031" ordinal="2933" sl="3031" sc="1" el="3031" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3032" ordinal="2934" sl="3032" sc="1" el="3032" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3033" ordinal="2935" sl="3033" sc="1" el="3033" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3034" ordinal="2936" sl="3034" sc="1" el="3034" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3035" ordinal="2937" sl="3035" sc="1" el="3035" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3036" ordinal="2938" sl="3036" sc="1" el="3036" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3037" ordinal="2939" sl="3037" sc="1" el="3037" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3038" ordinal="2940" sl="3038" sc="1" el="3038" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3040" ordinal="2941" sl="3040" sc="1" el="3040" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3041" ordinal="2942" sl="3041" sc="1" el="3041" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3042" ordinal="2943" sl="3042" sc="1" el="3042" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3043" ordinal="2944" sl="3043" sc="1" el="3043" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3044" ordinal="2945" sl="3044" sc="1" el="3044" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3045" ordinal="2946" sl="3045" sc="1" el="3045" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3046" ordinal="2947" sl="3046" sc="1" el="3046" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3047" ordinal="2948" sl="3047" sc="1" el="3047" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3048" ordinal="2949" sl="3048" sc="1" el="3048" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3049" ordinal="2950" sl="3049" sc="1" el="3049" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3050" ordinal="2951" sl="3050" sc="1" el="3050" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3051" ordinal="2952" sl="3051" sc="1" el="3051" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3052" ordinal="2953" sl="3052" sc="1" el="3052" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3053" ordinal="2954" sl="3053" sc="1" el="3053" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3054" ordinal="2955" sl="3054" sc="1" el="3054" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3055" ordinal="2956" sl="3055" sc="1" el="3055" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3056" ordinal="2957" sl="3056" sc="1" el="3056" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3057" ordinal="2958" sl="3057" sc="1" el="3057" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3059" ordinal="2959" sl="3059" sc="1" el="3059" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3060" ordinal="2960" sl="3060" sc="1" el="3060" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3061" ordinal="2961" sl="3061" sc="1" el="3061" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3062" ordinal="2962" sl="3062" sc="1" el="3062" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3063" ordinal="2963" sl="3063" sc="1" el="3063" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3064" ordinal="2964" sl="3064" sc="1" el="3064" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3065" ordinal="2965" sl="3065" sc="1" el="3065" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3066" ordinal="2966" sl="3066" sc="1" el="3066" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3068" ordinal="2967" sl="3068" sc="1" el="3068" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3069" ordinal="2968" sl="3069" sc="1" el="3069" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3070" ordinal="2969" sl="3070" sc="1" el="3070" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3071" ordinal="2970" sl="3071" sc="1" el="3071" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3072" ordinal="2971" sl="3072" sc="1" el="3072" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3073" ordinal="2972" sl="3073" sc="1" el="3073" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3074" ordinal="2973" sl="3074" sc="1" el="3074" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3075" ordinal="2974" sl="3075" sc="1" el="3075" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3076" ordinal="2975" sl="3076" sc="1" el="3076" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3077" ordinal="2976" sl="3077" sc="1" el="3077" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3078" ordinal="2977" sl="3078" sc="1" el="3078" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3079" ordinal="2978" sl="3079" sc="1" el="3079" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3080" ordinal="2979" sl="3080" sc="1" el="3080" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3081" ordinal="2980" sl="3081" sc="1" el="3081" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3083" ordinal="2981" sl="3083" sc="1" el="3083" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3084" ordinal="2982" sl="3084" sc="1" el="3084" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3085" ordinal="2983" sl="3085" sc="1" el="3085" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3086" ordinal="2984" sl="3086" sc="1" el="3086" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3087" ordinal="2985" sl="3087" sc="1" el="3087" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3088" ordinal="2986" sl="3088" sc="1" el="3088" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3089" ordinal="2987" sl="3089" sc="1" el="3089" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3090" ordinal="2988" sl="3090" sc="1" el="3090" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3092" ordinal="2989" sl="3092" sc="1" el="3092" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3093" ordinal="2990" sl="3093" sc="1" el="3093" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3094" ordinal="2991" sl="3094" sc="1" el="3094" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3095" ordinal="2992" sl="3095" sc="1" el="3095" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3096" ordinal="2993" sl="3096" sc="1" el="3096" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3097" ordinal="2994" sl="3097" sc="1" el="3097" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3098" ordinal="2995" sl="3098" sc="1" el="3098" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3099" ordinal="2996" sl="3099" sc="1" el="3099" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3100" ordinal="2997" sl="3100" sc="1" el="3100" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3101" ordinal="2998" sl="3101" sc="1" el="3101" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3102" ordinal="2999" sl="3102" sc="1" el="3102" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3103" ordinal="3000" sl="3103" sc="1" el="3103" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3104" ordinal="3001" sl="3104" sc="1" el="3104" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3105" ordinal="3002" sl="3105" sc="1" el="3105" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3107" ordinal="3003" sl="3107" sc="1" el="3107" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3108" ordinal="3004" sl="3108" sc="1" el="3108" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3109" ordinal="3005" sl="3109" sc="1" el="3109" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3110" ordinal="3006" sl="3110" sc="1" el="3110" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3111" ordinal="3007" sl="3111" sc="1" el="3111" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3112" ordinal="3008" sl="3112" sc="1" el="3112" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3113" ordinal="3009" sl="3113" sc="1" el="3113" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3114" ordinal="3010" sl="3114" sc="1" el="3114" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3115" ordinal="3011" sl="3115" sc="1" el="3115" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3116" ordinal="3012" sl="3116" sc="1" el="3116" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3117" ordinal="3013" sl="3117" sc="1" el="3117" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3118" ordinal="3014" sl="3118" sc="1" el="3118" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3120" ordinal="3015" sl="3120" sc="1" el="3120" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3121" ordinal="3016" sl="3121" sc="1" el="3121" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3122" ordinal="3017" sl="3122" sc="1" el="3122" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3123" ordinal="3018" sl="3123" sc="1" el="3123" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3124" ordinal="3019" sl="3124" sc="1" el="3124" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3125" ordinal="3020" sl="3125" sc="1" el="3125" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3126" ordinal="3021" sl="3126" sc="1" el="3126" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3127" ordinal="3022" sl="3127" sc="1" el="3127" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3128" ordinal="3023" sl="3128" sc="1" el="3128" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3129" ordinal="3024" sl="3129" sc="1" el="3129" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3130" ordinal="3025" sl="3130" sc="1" el="3130" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3131" ordinal="3026" sl="3131" sc="1" el="3131" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3132" ordinal="3027" sl="3132" sc="1" el="3132" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3133" ordinal="3028" sl="3133" sc="1" el="3133" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3134" ordinal="3029" sl="3134" sc="1" el="3134" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3135" ordinal="3030" sl="3135" sc="1" el="3135" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3136" ordinal="3031" sl="3136" sc="1" el="3136" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3137" ordinal="3032" sl="3137" sc="1" el="3137" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3139" ordinal="3033" sl="3139" sc="1" el="3139" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3140" ordinal="3034" sl="3140" sc="1" el="3140" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3141" ordinal="3035" sl="3141" sc="1" el="3141" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3142" ordinal="3036" sl="3142" sc="1" el="3142" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3143" ordinal="3037" sl="3143" sc="1" el="3143" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3144" ordinal="3038" sl="3144" sc="1" el="3144" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3145" ordinal="3039" sl="3145" sc="1" el="3145" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3146" ordinal="3040" sl="3146" sc="1" el="3146" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3147" ordinal="3041" sl="3147" sc="1" el="3147" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3148" ordinal="3042" sl="3148" sc="1" el="3148" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3149" ordinal="3043" sl="3149" sc="1" el="3149" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3150" ordinal="3044" sl="3150" sc="1" el="3150" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3151" ordinal="3045" sl="3151" sc="1" el="3151" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3152" ordinal="3046" sl="3152" sc="1" el="3152" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3154" ordinal="3047" sl="3154" sc="1" el="3154" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3155" ordinal="3048" sl="3155" sc="1" el="3155" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3156" ordinal="3049" sl="3156" sc="1" el="3156" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3157" ordinal="3050" sl="3157" sc="1" el="3157" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3158" ordinal="3051" sl="3158" sc="1" el="3158" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3159" ordinal="3052" sl="3159" sc="1" el="3159" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3160" ordinal="3053" sl="3160" sc="1" el="3160" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3161" ordinal="3054" sl="3161" sc="1" el="3161" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3162" ordinal="3055" sl="3162" sc="1" el="3162" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3163" ordinal="3056" sl="3163" sc="1" el="3163" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3164" ordinal="3057" sl="3164" sc="1" el="3164" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3165" ordinal="3058" sl="3165" sc="1" el="3165" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3166" ordinal="3059" sl="3166" sc="1" el="3166" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3167" ordinal="3060" sl="3167" sc="1" el="3167" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3168" ordinal="3061" sl="3168" sc="1" el="3168" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3169" ordinal="3062" sl="3169" sc="1" el="3169" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3170" ordinal="3063" sl="3170" sc="1" el="3170" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3171" ordinal="3064" sl="3171" sc="1" el="3171" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3172" ordinal="3065" sl="3172" sc="1" el="3172" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3174" ordinal="3066" sl="3174" sc="1" el="3174" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3175" ordinal="3067" sl="3175" sc="1" el="3175" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3176" ordinal="3068" sl="3176" sc="1" el="3176" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3177" ordinal="3069" sl="3177" sc="1" el="3177" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3178" ordinal="3070" sl="3178" sc="1" el="3178" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3179" ordinal="3071" sl="3179" sc="1" el="3179" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3180" ordinal="3072" sl="3180" sc="1" el="3180" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3181" ordinal="3073" sl="3181" sc="1" el="3181" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3182" ordinal="3074" sl="3182" sc="1" el="3182" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3183" ordinal="3075" sl="3183" sc="1" el="3183" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3184" ordinal="3076" sl="3184" sc="1" el="3184" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3185" ordinal="3077" sl="3185" sc="1" el="3185" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3187" ordinal="3078" sl="3187" sc="1" el="3187" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3188" ordinal="3079" sl="3188" sc="1" el="3188" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3189" ordinal="3080" sl="3189" sc="1" el="3189" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3190" ordinal="3081" sl="3190" sc="1" el="3190" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3191" ordinal="3082" sl="3191" sc="1" el="3191" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3192" ordinal="3083" sl="3192" sc="1" el="3192" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3193" ordinal="3084" sl="3193" sc="1" el="3193" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3194" ordinal="3085" sl="3194" sc="1" el="3194" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3195" ordinal="3086" sl="3195" sc="1" el="3195" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3196" ordinal="3087" sl="3196" sc="1" el="3196" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3197" ordinal="3088" sl="3197" sc="1" el="3197" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3198" ordinal="3089" sl="3198" sc="1" el="3198" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3199" ordinal="3090" sl="3199" sc="1" el="3199" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3200" ordinal="3091" sl="3200" sc="1" el="3200" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3202" ordinal="3092" sl="3202" sc="1" el="3202" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3203" ordinal="3093" sl="3203" sc="1" el="3203" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3204" ordinal="3094" sl="3204" sc="1" el="3204" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3205" ordinal="3095" sl="3205" sc="1" el="3205" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3206" ordinal="3096" sl="3206" sc="1" el="3206" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3207" ordinal="3097" sl="3207" sc="1" el="3207" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3208" ordinal="3098" sl="3208" sc="1" el="3208" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3209" ordinal="3099" sl="3209" sc="1" el="3209" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3210" ordinal="3100" sl="3210" sc="1" el="3210" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3211" ordinal="3101" sl="3211" sc="1" el="3211" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3212" ordinal="3102" sl="3212" sc="1" el="3212" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3213" ordinal="3103" sl="3213" sc="1" el="3213" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3214" ordinal="3104" sl="3214" sc="1" el="3214" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3215" ordinal="3105" sl="3215" sc="1" el="3215" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3217" ordinal="3106" sl="3217" sc="1" el="3217" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3218" ordinal="3107" sl="3218" sc="1" el="3218" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3219" ordinal="3108" sl="3219" sc="1" el="3219" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3220" ordinal="3109" sl="3220" sc="1" el="3220" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3221" ordinal="3110" sl="3221" sc="1" el="3221" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3222" ordinal="3111" sl="3222" sc="1" el="3222" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3223" ordinal="3112" sl="3223" sc="1" el="3223" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3224" ordinal="3113" sl="3224" sc="1" el="3224" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3226" ordinal="3114" sl="3226" sc="1" el="3226" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3227" ordinal="3115" sl="3227" sc="1" el="3227" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3228" ordinal="3116" sl="3228" sc="1" el="3228" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3229" ordinal="3117" sl="3229" sc="1" el="3229" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3230" ordinal="3118" sl="3230" sc="1" el="3230" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3231" ordinal="3119" sl="3231" sc="1" el="3231" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3232" ordinal="3120" sl="3232" sc="1" el="3232" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3234" ordinal="3121" sl="3234" sc="1" el="3234" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3235" ordinal="3122" sl="3235" sc="1" el="3235" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3236" ordinal="3123" sl="3236" sc="1" el="3236" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3237" ordinal="3124" sl="3237" sc="1" el="3237" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3238" ordinal="3125" sl="3238" sc="1" el="3238" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3239" ordinal="3126" sl="3239" sc="1" el="3239" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3240" ordinal="3127" sl="3240" sc="1" el="3240" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3241" ordinal="3128" sl="3241" sc="1" el="3241" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3242" ordinal="3129" sl="3242" sc="1" el="3242" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3243" ordinal="3130" sl="3243" sc="1" el="3243" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3244" ordinal="3131" sl="3244" sc="1" el="3244" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3245" ordinal="3132" sl="3245" sc="1" el="3245" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3246" ordinal="3133" sl="3246" sc="1" el="3246" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3247" ordinal="3134" sl="3247" sc="1" el="3247" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3249" ordinal="3135" sl="3249" sc="1" el="3249" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3250" ordinal="3136" sl="3250" sc="1" el="3250" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3251" ordinal="3137" sl="3251" sc="1" el="3251" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3252" ordinal="3138" sl="3252" sc="1" el="3252" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3253" ordinal="3139" sl="3253" sc="1" el="3253" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3254" ordinal="3140" sl="3254" sc="1" el="3254" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3255" ordinal="3141" sl="3255" sc="1" el="3255" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3256" ordinal="3142" sl="3256" sc="1" el="3256" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3258" ordinal="3143" sl="3258" sc="1" el="3258" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3259" ordinal="3144" sl="3259" sc="1" el="3259" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3260" ordinal="3145" sl="3260" sc="1" el="3260" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3261" ordinal="3146" sl="3261" sc="1" el="3261" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3262" ordinal="3147" sl="3262" sc="1" el="3262" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3263" ordinal="3148" sl="3263" sc="1" el="3263" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3264" ordinal="3149" sl="3264" sc="1" el="3264" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3265" ordinal="3150" sl="3265" sc="1" el="3265" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3266" ordinal="3151" sl="3266" sc="1" el="3266" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3267" ordinal="3152" sl="3267" sc="1" el="3267" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3268" ordinal="3153" sl="3268" sc="1" el="3268" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3269" ordinal="3154" sl="3269" sc="1" el="3269" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3270" ordinal="3155" sl="3270" sc="1" el="3270" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3271" ordinal="3156" sl="3271" sc="1" el="3271" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3273" ordinal="3157" sl="3273" sc="1" el="3273" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3274" ordinal="3158" sl="3274" sc="1" el="3274" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3275" ordinal="3159" sl="3275" sc="1" el="3275" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3276" ordinal="3160" sl="3276" sc="1" el="3276" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3277" ordinal="3161" sl="3277" sc="1" el="3277" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3278" ordinal="3162" sl="3278" sc="1" el="3278" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3279" ordinal="3163" sl="3279" sc="1" el="3279" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3280" ordinal="3164" sl="3280" sc="1" el="3280" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3282" ordinal="3165" sl="3282" sc="1" el="3282" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3283" ordinal="3166" sl="3283" sc="1" el="3283" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3284" ordinal="3167" sl="3284" sc="1" el="3284" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3285" ordinal="3168" sl="3285" sc="1" el="3285" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3286" ordinal="3169" sl="3286" sc="1" el="3286" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3287" ordinal="3170" sl="3287" sc="1" el="3287" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3288" ordinal="3171" sl="3288" sc="1" el="3288" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3289" ordinal="3172" sl="3289" sc="1" el="3289" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3290" ordinal="3173" sl="3290" sc="1" el="3290" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3291" ordinal="3174" sl="3291" sc="1" el="3291" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3292" ordinal="3175" sl="3292" sc="1" el="3292" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3293" ordinal="3176" sl="3293" sc="1" el="3293" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3294" ordinal="3177" sl="3294" sc="1" el="3294" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3295" ordinal="3178" sl="3295" sc="1" el="3295" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3297" ordinal="3179" sl="3297" sc="1" el="3297" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3298" ordinal="3180" sl="3298" sc="1" el="3298" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3299" ordinal="3181" sl="3299" sc="1" el="3299" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3300" ordinal="3182" sl="3300" sc="1" el="3300" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3301" ordinal="3183" sl="3301" sc="1" el="3301" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3302" ordinal="3184" sl="3302" sc="1" el="3302" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3303" ordinal="3185" sl="3303" sc="1" el="3303" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3304" ordinal="3186" sl="3304" sc="1" el="3304" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3306" ordinal="3187" sl="3306" sc="1" el="3306" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3307" ordinal="3188" sl="3307" sc="1" el="3307" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3308" ordinal="3189" sl="3308" sc="1" el="3308" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3309" ordinal="3190" sl="3309" sc="1" el="3309" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3310" ordinal="3191" sl="3310" sc="1" el="3310" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3311" ordinal="3192" sl="3311" sc="1" el="3311" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3312" ordinal="3193" sl="3312" sc="1" el="3312" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3313" ordinal="3194" sl="3313" sc="1" el="3313" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3314" ordinal="3195" sl="3314" sc="1" el="3314" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3315" ordinal="3196" sl="3315" sc="1" el="3315" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3316" ordinal="3197" sl="3316" sc="1" el="3316" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3317" ordinal="3198" sl="3317" sc="1" el="3317" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3318" ordinal="3199" sl="3318" sc="1" el="3318" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3319" ordinal="3200" sl="3319" sc="1" el="3319" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3321" ordinal="3201" sl="3321" sc="1" el="3321" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3322" ordinal="3202" sl="3322" sc="1" el="3322" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3323" ordinal="3203" sl="3323" sc="1" el="3323" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3324" ordinal="3204" sl="3324" sc="1" el="3324" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3325" ordinal="3205" sl="3325" sc="1" el="3325" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3326" ordinal="3206" sl="3326" sc="1" el="3326" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3327" ordinal="3207" sl="3327" sc="1" el="3327" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3328" ordinal="3208" sl="3328" sc="1" el="3328" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3329" ordinal="3209" sl="3329" sc="1" el="3329" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3330" ordinal="3210" sl="3330" sc="1" el="3330" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3331" ordinal="3211" sl="3331" sc="1" el="3331" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3332" ordinal="3212" sl="3332" sc="1" el="3332" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3333" ordinal="3213" sl="3333" sc="1" el="3333" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3334" ordinal="3214" sl="3334" sc="1" el="3334" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3336" ordinal="3215" sl="3336" sc="1" el="3336" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3337" ordinal="3216" sl="3337" sc="1" el="3337" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3338" ordinal="3217" sl="3338" sc="1" el="3338" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3339" ordinal="3218" sl="3339" sc="1" el="3339" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3340" ordinal="3219" sl="3340" sc="1" el="3340" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3341" ordinal="3220" sl="3341" sc="1" el="3341" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3342" ordinal="3221" sl="3342" sc="1" el="3342" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3343" ordinal="3222" sl="3343" sc="1" el="3343" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3344" ordinal="3223" sl="3344" sc="1" el="3344" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3345" ordinal="3224" sl="3345" sc="1" el="3345" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3346" ordinal="3225" sl="3346" sc="1" el="3346" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3347" ordinal="3226" sl="3347" sc="1" el="3347" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3348" ordinal="3227" sl="3348" sc="1" el="3348" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3349" ordinal="3228" sl="3349" sc="1" el="3349" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3350" ordinal="3229" sl="3350" sc="1" el="3350" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3351" ordinal="3230" sl="3351" sc="1" el="3351" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3352" ordinal="3231" sl="3352" sc="1" el="3352" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3353" ordinal="3232" sl="3353" sc="1" el="3353" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3354" ordinal="3233" sl="3354" sc="1" el="3354" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3355" ordinal="3234" sl="3355" sc="1" el="3355" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3357" ordinal="3235" sl="3357" sc="1" el="3357" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3358" ordinal="3236" sl="3358" sc="1" el="3358" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3359" ordinal="3237" sl="3359" sc="1" el="3359" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3360" ordinal="3238" sl="3360" sc="1" el="3360" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3361" ordinal="3239" sl="3361" sc="1" el="3361" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3362" ordinal="3240" sl="3362" sc="1" el="3362" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3363" ordinal="3241" sl="3363" sc="1" el="3363" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3364" ordinal="3242" sl="3364" sc="1" el="3364" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3366" ordinal="3243" sl="3366" sc="1" el="3366" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3367" ordinal="3244" sl="3367" sc="1" el="3367" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3368" ordinal="3245" sl="3368" sc="1" el="3368" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3369" ordinal="3246" sl="3369" sc="1" el="3369" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3370" ordinal="3247" sl="3370" sc="1" el="3370" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3371" ordinal="3248" sl="3371" sc="1" el="3371" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3372" ordinal="3249" sl="3372" sc="1" el="3372" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3373" ordinal="3250" sl="3373" sc="1" el="3373" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3374" ordinal="3251" sl="3374" sc="1" el="3374" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3375" ordinal="3252" sl="3375" sc="1" el="3375" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3376" ordinal="3253" sl="3376" sc="1" el="3376" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3377" ordinal="3254" sl="3377" sc="1" el="3377" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3378" ordinal="3255" sl="3378" sc="1" el="3378" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3379" ordinal="3256" sl="3379" sc="1" el="3379" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3381" ordinal="3257" sl="3381" sc="1" el="3381" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3382" ordinal="3258" sl="3382" sc="1" el="3382" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3383" ordinal="3259" sl="3383" sc="1" el="3383" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3384" ordinal="3260" sl="3384" sc="1" el="3384" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3385" ordinal="3261" sl="3385" sc="1" el="3385" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3386" ordinal="3262" sl="3386" sc="1" el="3386" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3387" ordinal="3263" sl="3387" sc="1" el="3387" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3388" ordinal="3264" sl="3388" sc="1" el="3388" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3390" ordinal="3265" sl="3390" sc="1" el="3390" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3391" ordinal="3266" sl="3391" sc="1" el="3391" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3392" ordinal="3267" sl="3392" sc="1" el="3392" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3393" ordinal="3268" sl="3393" sc="1" el="3393" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3394" ordinal="3269" sl="3394" sc="1" el="3394" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3395" ordinal="3270" sl="3395" sc="1" el="3395" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3396" ordinal="3271" sl="3396" sc="1" el="3396" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3397" ordinal="3272" sl="3397" sc="1" el="3397" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3399" ordinal="3273" sl="3399" sc="1" el="3399" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3400" ordinal="3274" sl="3400" sc="1" el="3400" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3401" ordinal="3275" sl="3401" sc="1" el="3401" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3402" ordinal="3276" sl="3402" sc="1" el="3402" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3403" ordinal="3277" sl="3403" sc="1" el="3403" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3404" ordinal="3278" sl="3404" sc="1" el="3404" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3405" ordinal="3279" sl="3405" sc="1" el="3405" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3406" ordinal="3280" sl="3406" sc="1" el="3406" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3407" ordinal="3281" sl="3407" sc="1" el="3407" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3408" ordinal="3282" sl="3408" sc="1" el="3408" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3409" ordinal="3283" sl="3409" sc="1" el="3409" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3410" ordinal="3284" sl="3410" sc="1" el="3410" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3411" ordinal="3285" sl="3411" sc="1" el="3411" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3412" ordinal="3286" sl="3412" sc="1" el="3412" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3414" ordinal="3287" sl="3414" sc="1" el="3414" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3415" ordinal="3288" sl="3415" sc="1" el="3415" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3416" ordinal="3289" sl="3416" sc="1" el="3416" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3417" ordinal="3290" sl="3417" sc="1" el="3417" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3418" ordinal="3291" sl="3418" sc="1" el="3418" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3419" ordinal="3292" sl="3419" sc="1" el="3419" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3420" ordinal="3293" sl="3420" sc="1" el="3420" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3421" ordinal="3294" sl="3421" sc="1" el="3421" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3422" ordinal="3295" sl="3422" sc="1" el="3422" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3423" ordinal="3296" sl="3423" sc="1" el="3423" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3424" ordinal="3297" sl="3424" sc="1" el="3424" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3425" ordinal="3298" sl="3425" sc="1" el="3425" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3426" ordinal="3299" sl="3426" sc="1" el="3426" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3427" ordinal="3300" sl="3427" sc="1" el="3427" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3429" ordinal="3301" sl="3429" sc="1" el="3429" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3430" ordinal="3302" sl="3430" sc="1" el="3430" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3431" ordinal="3303" sl="3431" sc="1" el="3431" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3432" ordinal="3304" sl="3432" sc="1" el="3432" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3433" ordinal="3305" sl="3433" sc="1" el="3433" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3434" ordinal="3306" sl="3434" sc="1" el="3434" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3435" ordinal="3307" sl="3435" sc="1" el="3435" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3436" ordinal="3308" sl="3436" sc="1" el="3436" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3438" ordinal="3309" sl="3438" sc="1" el="3438" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3439" ordinal="3310" sl="3439" sc="1" el="3439" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3440" ordinal="3311" sl="3440" sc="1" el="3440" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3441" ordinal="3312" sl="3441" sc="1" el="3441" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3442" ordinal="3313" sl="3442" sc="1" el="3442" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3443" ordinal="3314" sl="3443" sc="1" el="3443" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3444" ordinal="3315" sl="3444" sc="1" el="3444" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3445" ordinal="3316" sl="3445" sc="1" el="3445" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3446" ordinal="3317" sl="3446" sc="1" el="3446" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3447" ordinal="3318" sl="3447" sc="1" el="3447" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3448" ordinal="3319" sl="3448" sc="1" el="3448" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3449" ordinal="3320" sl="3449" sc="1" el="3449" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3450" ordinal="3321" sl="3450" sc="1" el="3450" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3451" ordinal="3322" sl="3451" sc="1" el="3451" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3453" ordinal="3323" sl="3453" sc="1" el="3453" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3454" ordinal="3324" sl="3454" sc="1" el="3454" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3455" ordinal="3325" sl="3455" sc="1" el="3455" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3456" ordinal="3326" sl="3456" sc="1" el="3456" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3457" ordinal="3327" sl="3457" sc="1" el="3457" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3458" ordinal="3328" sl="3458" sc="1" el="3458" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3459" ordinal="3329" sl="3459" sc="1" el="3459" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3460" ordinal="3330" sl="3460" sc="1" el="3460" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3461" ordinal="3331" sl="3461" sc="1" el="3461" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3462" ordinal="3332" sl="3462" sc="1" el="3462" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3463" ordinal="3333" sl="3463" sc="1" el="3463" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3464" ordinal="3334" sl="3464" sc="1" el="3464" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3465" ordinal="3335" sl="3465" sc="1" el="3465" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3466" ordinal="3336" sl="3466" sc="1" el="3466" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3468" ordinal="3337" sl="3468" sc="1" el="3468" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3469" ordinal="3338" sl="3469" sc="1" el="3469" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3470" ordinal="3339" sl="3470" sc="1" el="3470" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3471" ordinal="3340" sl="3471" sc="1" el="3471" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3472" ordinal="3341" sl="3472" sc="1" el="3472" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3473" ordinal="3342" sl="3473" sc="1" el="3473" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3474" ordinal="3343" sl="3474" sc="1" el="3474" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3475" ordinal="3344" sl="3475" sc="1" el="3475" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3477" ordinal="3345" sl="3477" sc="1" el="3477" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3478" ordinal="3346" sl="3478" sc="1" el="3478" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3479" ordinal="3347" sl="3479" sc="1" el="3479" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3480" ordinal="3348" sl="3480" sc="1" el="3480" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3481" ordinal="3349" sl="3481" sc="1" el="3481" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3482" ordinal="3350" sl="3482" sc="1" el="3482" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3483" ordinal="3351" sl="3483" sc="1" el="3483" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3484" ordinal="3352" sl="3484" sc="1" el="3484" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3485" ordinal="3353" sl="3485" sc="1" el="3485" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3486" ordinal="3354" sl="3486" sc="1" el="3486" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3487" ordinal="3355" sl="3487" sc="1" el="3487" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3488" ordinal="3356" sl="3488" sc="1" el="3488" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3490" ordinal="3357" sl="3490" sc="1" el="3490" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3491" ordinal="3358" sl="3491" sc="1" el="3491" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3492" ordinal="3359" sl="3492" sc="1" el="3492" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3493" ordinal="3360" sl="3493" sc="1" el="3493" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3494" ordinal="3361" sl="3494" sc="1" el="3494" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3495" ordinal="3362" sl="3495" sc="1" el="3495" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3496" ordinal="3363" sl="3496" sc="1" el="3496" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3497" ordinal="3364" sl="3497" sc="1" el="3497" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3498" ordinal="3365" sl="3498" sc="1" el="3498" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3499" ordinal="3366" sl="3499" sc="1" el="3499" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3500" ordinal="3367" sl="3500" sc="1" el="3500" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3501" ordinal="3368" sl="3501" sc="1" el="3501" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3502" ordinal="3369" sl="3502" sc="1" el="3502" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3503" ordinal="3370" sl="3503" sc="1" el="3503" ec="2" bec="0" bev="0" fileid="81" /> <SequencePoint vc="0" uspid="3505" ordinal="3371" sl="3505" sc="1" el="3505" ec="2" bec="0" bev="0" fileid="81" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="17" ec="1" el="3505" bec="0" bev="0" fileid="81" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="28" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Database.Migrations.Aphrodite2</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="14" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Migrations.Aphrodite2::Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)</Name> <FileRef uid="82" /> <SequencePoints> <SequencePoint vc="0" uspid="8" ordinal="0" sl="8" sc="1" el="8" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="9" ordinal="1" sl="9" sc="1" el="9" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="10" ordinal="2" sl="10" sc="1" el="10" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="11" ordinal="3" sl="11" sc="1" el="11" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="12" ordinal="4" sl="12" sc="1" el="12" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="14" ordinal="5" sl="14" sc="1" el="14" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="15" ordinal="6" sl="15" sc="1" el="15" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="16" ordinal="7" sl="16" sc="1" el="16" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="17" ordinal="8" sl="17" sc="1" el="17" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="19" ordinal="9" sl="19" sc="1" el="19" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="20" ordinal="10" sl="20" sc="1" el="20" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="21" ordinal="11" sl="21" sc="1" el="21" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="22" ordinal="12" sl="22" sc="1" el="22" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="23" ordinal="13" sl="23" sc="1" el="23" ec="2" bec="0" bev="0" fileid="82" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="8" ec="1" el="23" bec="0" bev="0" fileid="82" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="14" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Migrations.Aphrodite2::Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)</Name> <FileRef uid="82" /> <SequencePoints> <SequencePoint vc="0" uspid="26" ordinal="0" sl="26" sc="1" el="26" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="27" ordinal="1" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="28" ordinal="2" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="29" ordinal="3" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="30" ordinal="4" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="32" ordinal="5" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="33" ordinal="6" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="34" ordinal="7" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="35" ordinal="8" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="37" ordinal="9" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="38" ordinal="10" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="39" ordinal="11" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="40" ordinal="12" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="82" /> <SequencePoint vc="0" uspid="41" ordinal="13" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="82" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="26" ec="1" el="41" bec="0" bev="0" fileid="82" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3736" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Migrations.Aphrodite2</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3736" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Migrations.Aphrodite2::BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)</Name> <FileRef uid="83" /> <SequencePoints> <SequencePoint vc="0" uspid="17" ordinal="0" sl="17" sc="1" el="17" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="19" ordinal="1" sl="19" sc="1" el="19" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="20" ordinal="2" sl="20" sc="1" el="20" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="21" ordinal="3" sl="21" sc="1" el="21" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="22" ordinal="4" sl="22" sc="1" el="22" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="24" ordinal="5" sl="24" sc="1" el="24" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="25" ordinal="6" sl="25" sc="1" el="25" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="26" ordinal="7" sl="26" sc="1" el="26" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="27" ordinal="8" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="28" ordinal="9" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="29" ordinal="10" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="30" ordinal="11" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="31" ordinal="12" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="32" ordinal="13" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="33" ordinal="14" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="34" ordinal="15" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="35" ordinal="16" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="36" ordinal="17" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="37" ordinal="18" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="38" ordinal="19" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="39" ordinal="20" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="40" ordinal="21" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="41" ordinal="22" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="42" ordinal="23" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="43" ordinal="24" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="44" ordinal="25" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="45" ordinal="26" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="46" ordinal="27" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="47" ordinal="28" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="48" ordinal="29" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="49" ordinal="30" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="50" ordinal="31" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="51" ordinal="32" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="52" ordinal="33" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="53" ordinal="34" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="54" ordinal="35" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="55" ordinal="36" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="56" ordinal="37" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="57" ordinal="38" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="58" ordinal="39" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="59" ordinal="40" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="60" ordinal="41" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="61" ordinal="42" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="62" ordinal="43" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="63" ordinal="44" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="64" ordinal="45" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="65" ordinal="46" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="66" ordinal="47" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="67" ordinal="48" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="68" ordinal="49" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="69" ordinal="50" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="70" ordinal="51" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="71" ordinal="52" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="72" ordinal="53" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="73" ordinal="54" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="74" ordinal="55" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="75" ordinal="56" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="76" ordinal="57" sl="76" sc="1" el="76" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="77" ordinal="58" sl="77" sc="1" el="77" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="78" ordinal="59" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="79" ordinal="60" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="81" ordinal="61" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="82" ordinal="62" sl="82" sc="1" el="82" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="83" ordinal="63" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="84" ordinal="64" sl="84" sc="1" el="84" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="85" ordinal="65" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="86" ordinal="66" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="87" ordinal="67" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="88" ordinal="68" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="89" ordinal="69" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="90" ordinal="70" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="91" ordinal="71" sl="91" sc="1" el="91" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="92" ordinal="72" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="93" ordinal="73" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="94" ordinal="74" sl="94" sc="1" el="94" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="95" ordinal="75" sl="95" sc="1" el="95" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="96" ordinal="76" sl="96" sc="1" el="96" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="97" ordinal="77" sl="97" sc="1" el="97" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="99" ordinal="78" sl="99" sc="1" el="99" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="100" ordinal="79" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="101" ordinal="80" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="102" ordinal="81" sl="102" sc="1" el="102" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="103" ordinal="82" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="104" ordinal="83" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="105" ordinal="84" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="106" ordinal="85" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="107" ordinal="86" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="108" ordinal="87" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="109" ordinal="88" sl="109" sc="1" el="109" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="110" ordinal="89" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="111" ordinal="90" sl="111" sc="1" el="111" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="112" ordinal="91" sl="112" sc="1" el="112" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="113" ordinal="92" sl="113" sc="1" el="113" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="114" ordinal="93" sl="114" sc="1" el="114" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="115" ordinal="94" sl="115" sc="1" el="115" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="116" ordinal="95" sl="116" sc="1" el="116" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="117" ordinal="96" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="118" ordinal="97" sl="118" sc="1" el="118" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="120" ordinal="98" sl="120" sc="1" el="120" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="121" ordinal="99" sl="121" sc="1" el="121" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="122" ordinal="100" sl="122" sc="1" el="122" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="123" ordinal="101" sl="123" sc="1" el="123" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="124" ordinal="102" sl="124" sc="1" el="124" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="125" ordinal="103" sl="125" sc="1" el="125" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="126" ordinal="104" sl="126" sc="1" el="126" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="127" ordinal="105" sl="127" sc="1" el="127" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="128" ordinal="106" sl="128" sc="1" el="128" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="129" ordinal="107" sl="129" sc="1" el="129" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="130" ordinal="108" sl="130" sc="1" el="130" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="131" ordinal="109" sl="131" sc="1" el="131" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="132" ordinal="110" sl="132" sc="1" el="132" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="133" ordinal="111" sl="133" sc="1" el="133" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="134" ordinal="112" sl="134" sc="1" el="134" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="135" ordinal="113" sl="135" sc="1" el="135" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="136" ordinal="114" sl="136" sc="1" el="136" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="137" ordinal="115" sl="137" sc="1" el="137" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="138" ordinal="116" sl="138" sc="1" el="138" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="139" ordinal="117" sl="139" sc="1" el="139" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="140" ordinal="118" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="141" ordinal="119" sl="141" sc="1" el="141" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="142" ordinal="120" sl="142" sc="1" el="142" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="143" ordinal="121" sl="143" sc="1" el="143" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="144" ordinal="122" sl="144" sc="1" el="144" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="145" ordinal="123" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="146" ordinal="124" sl="146" sc="1" el="146" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="147" ordinal="125" sl="147" sc="1" el="147" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="148" ordinal="126" sl="148" sc="1" el="148" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="149" ordinal="127" sl="149" sc="1" el="149" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="150" ordinal="128" sl="150" sc="1" el="150" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="152" ordinal="129" sl="152" sc="1" el="152" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="153" ordinal="130" sl="153" sc="1" el="153" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="154" ordinal="131" sl="154" sc="1" el="154" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="155" ordinal="132" sl="155" sc="1" el="155" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="156" ordinal="133" sl="156" sc="1" el="156" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="157" ordinal="134" sl="157" sc="1" el="157" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="158" ordinal="135" sl="158" sc="1" el="158" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="159" ordinal="136" sl="159" sc="1" el="159" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="160" ordinal="137" sl="160" sc="1" el="160" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="161" ordinal="138" sl="161" sc="1" el="161" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="162" ordinal="139" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="163" ordinal="140" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="164" ordinal="141" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="165" ordinal="142" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="166" ordinal="143" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="167" ordinal="144" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="168" ordinal="145" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="169" ordinal="146" sl="169" sc="1" el="169" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="170" ordinal="147" sl="170" sc="1" el="170" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="171" ordinal="148" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="172" ordinal="149" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="173" ordinal="150" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="174" ordinal="151" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="175" ordinal="152" sl="175" sc="1" el="175" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="176" ordinal="153" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="177" ordinal="154" sl="177" sc="1" el="177" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="178" ordinal="155" sl="178" sc="1" el="178" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="179" ordinal="156" sl="179" sc="1" el="179" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="180" ordinal="157" sl="180" sc="1" el="180" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="181" ordinal="158" sl="181" sc="1" el="181" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="182" ordinal="159" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="183" ordinal="160" sl="183" sc="1" el="183" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="184" ordinal="161" sl="184" sc="1" el="184" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="185" ordinal="162" sl="185" sc="1" el="185" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="186" ordinal="163" sl="186" sc="1" el="186" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="187" ordinal="164" sl="187" sc="1" el="187" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="188" ordinal="165" sl="188" sc="1" el="188" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="189" ordinal="166" sl="189" sc="1" el="189" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="190" ordinal="167" sl="190" sc="1" el="190" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="191" ordinal="168" sl="191" sc="1" el="191" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="192" ordinal="169" sl="192" sc="1" el="192" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="193" ordinal="170" sl="193" sc="1" el="193" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="194" ordinal="171" sl="194" sc="1" el="194" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="195" ordinal="172" sl="195" sc="1" el="195" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="196" ordinal="173" sl="196" sc="1" el="196" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="197" ordinal="174" sl="197" sc="1" el="197" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="198" ordinal="175" sl="198" sc="1" el="198" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="199" ordinal="176" sl="199" sc="1" el="199" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="200" ordinal="177" sl="200" sc="1" el="200" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="201" ordinal="178" sl="201" sc="1" el="201" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="202" ordinal="179" sl="202" sc="1" el="202" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="203" ordinal="180" sl="203" sc="1" el="203" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="204" ordinal="181" sl="204" sc="1" el="204" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="205" ordinal="182" sl="205" sc="1" el="205" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="206" ordinal="183" sl="206" sc="1" el="206" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="208" ordinal="184" sl="208" sc="1" el="208" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="209" ordinal="185" sl="209" sc="1" el="209" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="210" ordinal="186" sl="210" sc="1" el="210" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="211" ordinal="187" sl="211" sc="1" el="211" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="212" ordinal="188" sl="212" sc="1" el="212" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="213" ordinal="189" sl="213" sc="1" el="213" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="214" ordinal="190" sl="214" sc="1" el="214" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="215" ordinal="191" sl="215" sc="1" el="215" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="216" ordinal="192" sl="216" sc="1" el="216" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="217" ordinal="193" sl="217" sc="1" el="217" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="218" ordinal="194" sl="218" sc="1" el="218" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="219" ordinal="195" sl="219" sc="1" el="219" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="220" ordinal="196" sl="220" sc="1" el="220" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="221" ordinal="197" sl="221" sc="1" el="221" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="222" ordinal="198" sl="222" sc="1" el="222" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="223" ordinal="199" sl="223" sc="1" el="223" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="224" ordinal="200" sl="224" sc="1" el="224" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="225" ordinal="201" sl="225" sc="1" el="225" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="226" ordinal="202" sl="226" sc="1" el="226" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="227" ordinal="203" sl="227" sc="1" el="227" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="228" ordinal="204" sl="228" sc="1" el="228" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="229" ordinal="205" sl="229" sc="1" el="229" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="230" ordinal="206" sl="230" sc="1" el="230" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="231" ordinal="207" sl="231" sc="1" el="231" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="232" ordinal="208" sl="232" sc="1" el="232" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="233" ordinal="209" sl="233" sc="1" el="233" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="234" ordinal="210" sl="234" sc="1" el="234" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="235" ordinal="211" sl="235" sc="1" el="235" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="236" ordinal="212" sl="236" sc="1" el="236" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="237" ordinal="213" sl="237" sc="1" el="237" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="238" ordinal="214" sl="238" sc="1" el="238" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="239" ordinal="215" sl="239" sc="1" el="239" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="240" ordinal="216" sl="240" sc="1" el="240" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="241" ordinal="217" sl="241" sc="1" el="241" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="242" ordinal="218" sl="242" sc="1" el="242" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="243" ordinal="219" sl="243" sc="1" el="243" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="244" ordinal="220" sl="244" sc="1" el="244" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="245" ordinal="221" sl="245" sc="1" el="245" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="246" ordinal="222" sl="246" sc="1" el="246" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="248" ordinal="223" sl="248" sc="1" el="248" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="249" ordinal="224" sl="249" sc="1" el="249" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="250" ordinal="225" sl="250" sc="1" el="250" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="251" ordinal="226" sl="251" sc="1" el="251" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="252" ordinal="227" sl="252" sc="1" el="252" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="253" ordinal="228" sl="253" sc="1" el="253" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="254" ordinal="229" sl="254" sc="1" el="254" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="255" ordinal="230" sl="255" sc="1" el="255" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="256" ordinal="231" sl="256" sc="1" el="256" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="257" ordinal="232" sl="257" sc="1" el="257" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="258" ordinal="233" sl="258" sc="1" el="258" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="259" ordinal="234" sl="259" sc="1" el="259" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="260" ordinal="235" sl="260" sc="1" el="260" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="261" ordinal="236" sl="261" sc="1" el="261" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="262" ordinal="237" sl="262" sc="1" el="262" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="263" ordinal="238" sl="263" sc="1" el="263" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="264" ordinal="239" sl="264" sc="1" el="264" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="265" ordinal="240" sl="265" sc="1" el="265" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="266" ordinal="241" sl="266" sc="1" el="266" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="267" ordinal="242" sl="267" sc="1" el="267" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="268" ordinal="243" sl="268" sc="1" el="268" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="269" ordinal="244" sl="269" sc="1" el="269" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="270" ordinal="245" sl="270" sc="1" el="270" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="271" ordinal="246" sl="271" sc="1" el="271" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="272" ordinal="247" sl="272" sc="1" el="272" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="273" ordinal="248" sl="273" sc="1" el="273" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="274" ordinal="249" sl="274" sc="1" el="274" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="275" ordinal="250" sl="275" sc="1" el="275" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="276" ordinal="251" sl="276" sc="1" el="276" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="277" ordinal="252" sl="277" sc="1" el="277" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="278" ordinal="253" sl="278" sc="1" el="278" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="279" ordinal="254" sl="279" sc="1" el="279" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="280" ordinal="255" sl="280" sc="1" el="280" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="281" ordinal="256" sl="281" sc="1" el="281" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="282" ordinal="257" sl="282" sc="1" el="282" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="283" ordinal="258" sl="283" sc="1" el="283" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="284" ordinal="259" sl="284" sc="1" el="284" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="285" ordinal="260" sl="285" sc="1" el="285" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="287" ordinal="261" sl="287" sc="1" el="287" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="288" ordinal="262" sl="288" sc="1" el="288" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="289" ordinal="263" sl="289" sc="1" el="289" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="290" ordinal="264" sl="290" sc="1" el="290" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="291" ordinal="265" sl="291" sc="1" el="291" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="292" ordinal="266" sl="292" sc="1" el="292" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="293" ordinal="267" sl="293" sc="1" el="293" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="294" ordinal="268" sl="294" sc="1" el="294" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="295" ordinal="269" sl="295" sc="1" el="295" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="296" ordinal="270" sl="296" sc="1" el="296" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="297" ordinal="271" sl="297" sc="1" el="297" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="298" ordinal="272" sl="298" sc="1" el="298" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="299" ordinal="273" sl="299" sc="1" el="299" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="300" ordinal="274" sl="300" sc="1" el="300" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="301" ordinal="275" sl="301" sc="1" el="301" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="302" ordinal="276" sl="302" sc="1" el="302" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="303" ordinal="277" sl="303" sc="1" el="303" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="304" ordinal="278" sl="304" sc="1" el="304" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="305" ordinal="279" sl="305" sc="1" el="305" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="306" ordinal="280" sl="306" sc="1" el="306" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="307" ordinal="281" sl="307" sc="1" el="307" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="308" ordinal="282" sl="308" sc="1" el="308" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="309" ordinal="283" sl="309" sc="1" el="309" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="310" ordinal="284" sl="310" sc="1" el="310" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="311" ordinal="285" sl="311" sc="1" el="311" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="312" ordinal="286" sl="312" sc="1" el="312" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="313" ordinal="287" sl="313" sc="1" el="313" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="314" ordinal="288" sl="314" sc="1" el="314" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="315" ordinal="289" sl="315" sc="1" el="315" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="316" ordinal="290" sl="316" sc="1" el="316" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="317" ordinal="291" sl="317" sc="1" el="317" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="318" ordinal="292" sl="318" sc="1" el="318" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="319" ordinal="293" sl="319" sc="1" el="319" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="320" ordinal="294" sl="320" sc="1" el="320" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="321" ordinal="295" sl="321" sc="1" el="321" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="322" ordinal="296" sl="322" sc="1" el="322" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="323" ordinal="297" sl="323" sc="1" el="323" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="324" ordinal="298" sl="324" sc="1" el="324" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="325" ordinal="299" sl="325" sc="1" el="325" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="326" ordinal="300" sl="326" sc="1" el="326" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="327" ordinal="301" sl="327" sc="1" el="327" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="328" ordinal="302" sl="328" sc="1" el="328" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="329" ordinal="303" sl="329" sc="1" el="329" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="330" ordinal="304" sl="330" sc="1" el="330" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="331" ordinal="305" sl="331" sc="1" el="331" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="332" ordinal="306" sl="332" sc="1" el="332" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="333" ordinal="307" sl="333" sc="1" el="333" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="334" ordinal="308" sl="334" sc="1" el="334" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="335" ordinal="309" sl="335" sc="1" el="335" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="336" ordinal="310" sl="336" sc="1" el="336" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="337" ordinal="311" sl="337" sc="1" el="337" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="338" ordinal="312" sl="338" sc="1" el="338" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="339" ordinal="313" sl="339" sc="1" el="339" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="340" ordinal="314" sl="340" sc="1" el="340" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="341" ordinal="315" sl="341" sc="1" el="341" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="342" ordinal="316" sl="342" sc="1" el="342" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="343" ordinal="317" sl="343" sc="1" el="343" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="344" ordinal="318" sl="344" sc="1" el="344" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="345" ordinal="319" sl="345" sc="1" el="345" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="346" ordinal="320" sl="346" sc="1" el="346" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="347" ordinal="321" sl="347" sc="1" el="347" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="348" ordinal="322" sl="348" sc="1" el="348" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="349" ordinal="323" sl="349" sc="1" el="349" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="350" ordinal="324" sl="350" sc="1" el="350" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="351" ordinal="325" sl="351" sc="1" el="351" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="352" ordinal="326" sl="352" sc="1" el="352" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="353" ordinal="327" sl="353" sc="1" el="353" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="354" ordinal="328" sl="354" sc="1" el="354" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="355" ordinal="329" sl="355" sc="1" el="355" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="356" ordinal="330" sl="356" sc="1" el="356" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="357" ordinal="331" sl="357" sc="1" el="357" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="358" ordinal="332" sl="358" sc="1" el="358" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="359" ordinal="333" sl="359" sc="1" el="359" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="360" ordinal="334" sl="360" sc="1" el="360" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="361" ordinal="335" sl="361" sc="1" el="361" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="362" ordinal="336" sl="362" sc="1" el="362" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="363" ordinal="337" sl="363" sc="1" el="363" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="364" ordinal="338" sl="364" sc="1" el="364" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="365" ordinal="339" sl="365" sc="1" el="365" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="366" ordinal="340" sl="366" sc="1" el="366" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="367" ordinal="341" sl="367" sc="1" el="367" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="368" ordinal="342" sl="368" sc="1" el="368" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="369" ordinal="343" sl="369" sc="1" el="369" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="370" ordinal="344" sl="370" sc="1" el="370" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="371" ordinal="345" sl="371" sc="1" el="371" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="372" ordinal="346" sl="372" sc="1" el="372" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="373" ordinal="347" sl="373" sc="1" el="373" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="374" ordinal="348" sl="374" sc="1" el="374" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="375" ordinal="349" sl="375" sc="1" el="375" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="376" ordinal="350" sl="376" sc="1" el="376" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="377" ordinal="351" sl="377" sc="1" el="377" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="378" ordinal="352" sl="378" sc="1" el="378" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="379" ordinal="353" sl="379" sc="1" el="379" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="380" ordinal="354" sl="380" sc="1" el="380" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="381" ordinal="355" sl="381" sc="1" el="381" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="382" ordinal="356" sl="382" sc="1" el="382" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="383" ordinal="357" sl="383" sc="1" el="383" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="384" ordinal="358" sl="384" sc="1" el="384" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="385" ordinal="359" sl="385" sc="1" el="385" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="386" ordinal="360" sl="386" sc="1" el="386" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="387" ordinal="361" sl="387" sc="1" el="387" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="388" ordinal="362" sl="388" sc="1" el="388" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="389" ordinal="363" sl="389" sc="1" el="389" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="390" ordinal="364" sl="390" sc="1" el="390" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="391" ordinal="365" sl="391" sc="1" el="391" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="392" ordinal="366" sl="392" sc="1" el="392" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="393" ordinal="367" sl="393" sc="1" el="393" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="394" ordinal="368" sl="394" sc="1" el="394" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="395" ordinal="369" sl="395" sc="1" el="395" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="396" ordinal="370" sl="396" sc="1" el="396" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="397" ordinal="371" sl="397" sc="1" el="397" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="398" ordinal="372" sl="398" sc="1" el="398" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="399" ordinal="373" sl="399" sc="1" el="399" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="400" ordinal="374" sl="400" sc="1" el="400" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="401" ordinal="375" sl="401" sc="1" el="401" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="402" ordinal="376" sl="402" sc="1" el="402" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="403" ordinal="377" sl="403" sc="1" el="403" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="404" ordinal="378" sl="404" sc="1" el="404" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="405" ordinal="379" sl="405" sc="1" el="405" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="406" ordinal="380" sl="406" sc="1" el="406" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="407" ordinal="381" sl="407" sc="1" el="407" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="408" ordinal="382" sl="408" sc="1" el="408" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="409" ordinal="383" sl="409" sc="1" el="409" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="410" ordinal="384" sl="410" sc="1" el="410" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="411" ordinal="385" sl="411" sc="1" el="411" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="412" ordinal="386" sl="412" sc="1" el="412" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="413" ordinal="387" sl="413" sc="1" el="413" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="414" ordinal="388" sl="414" sc="1" el="414" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="415" ordinal="389" sl="415" sc="1" el="415" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="416" ordinal="390" sl="416" sc="1" el="416" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="417" ordinal="391" sl="417" sc="1" el="417" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="418" ordinal="392" sl="418" sc="1" el="418" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="419" ordinal="393" sl="419" sc="1" el="419" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="420" ordinal="394" sl="420" sc="1" el="420" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="421" ordinal="395" sl="421" sc="1" el="421" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="422" ordinal="396" sl="422" sc="1" el="422" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="423" ordinal="397" sl="423" sc="1" el="423" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="424" ordinal="398" sl="424" sc="1" el="424" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="425" ordinal="399" sl="425" sc="1" el="425" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="426" ordinal="400" sl="426" sc="1" el="426" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="427" ordinal="401" sl="427" sc="1" el="427" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="428" ordinal="402" sl="428" sc="1" el="428" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="429" ordinal="403" sl="429" sc="1" el="429" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="430" ordinal="404" sl="430" sc="1" el="430" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="431" ordinal="405" sl="431" sc="1" el="431" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="432" ordinal="406" sl="432" sc="1" el="432" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="433" ordinal="407" sl="433" sc="1" el="433" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="434" ordinal="408" sl="434" sc="1" el="434" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="435" ordinal="409" sl="435" sc="1" el="435" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="436" ordinal="410" sl="436" sc="1" el="436" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="437" ordinal="411" sl="437" sc="1" el="437" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="438" ordinal="412" sl="438" sc="1" el="438" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="439" ordinal="413" sl="439" sc="1" el="439" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="440" ordinal="414" sl="440" sc="1" el="440" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="441" ordinal="415" sl="441" sc="1" el="441" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="442" ordinal="416" sl="442" sc="1" el="442" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="443" ordinal="417" sl="443" sc="1" el="443" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="444" ordinal="418" sl="444" sc="1" el="444" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="445" ordinal="419" sl="445" sc="1" el="445" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="446" ordinal="420" sl="446" sc="1" el="446" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="447" ordinal="421" sl="447" sc="1" el="447" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="448" ordinal="422" sl="448" sc="1" el="448" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="449" ordinal="423" sl="449" sc="1" el="449" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="450" ordinal="424" sl="450" sc="1" el="450" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="451" ordinal="425" sl="451" sc="1" el="451" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="452" ordinal="426" sl="452" sc="1" el="452" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="453" ordinal="427" sl="453" sc="1" el="453" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="454" ordinal="428" sl="454" sc="1" el="454" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="455" ordinal="429" sl="455" sc="1" el="455" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="456" ordinal="430" sl="456" sc="1" el="456" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="457" ordinal="431" sl="457" sc="1" el="457" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="458" ordinal="432" sl="458" sc="1" el="458" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="459" ordinal="433" sl="459" sc="1" el="459" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="460" ordinal="434" sl="460" sc="1" el="460" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="461" ordinal="435" sl="461" sc="1" el="461" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="462" ordinal="436" sl="462" sc="1" el="462" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="463" ordinal="437" sl="463" sc="1" el="463" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="464" ordinal="438" sl="464" sc="1" el="464" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="465" ordinal="439" sl="465" sc="1" el="465" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="466" ordinal="440" sl="466" sc="1" el="466" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="467" ordinal="441" sl="467" sc="1" el="467" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="468" ordinal="442" sl="468" sc="1" el="468" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="469" ordinal="443" sl="469" sc="1" el="469" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="470" ordinal="444" sl="470" sc="1" el="470" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="472" ordinal="445" sl="472" sc="1" el="472" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="473" ordinal="446" sl="473" sc="1" el="473" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="474" ordinal="447" sl="474" sc="1" el="474" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="475" ordinal="448" sl="475" sc="1" el="475" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="476" ordinal="449" sl="476" sc="1" el="476" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="477" ordinal="450" sl="477" sc="1" el="477" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="478" ordinal="451" sl="478" sc="1" el="478" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="479" ordinal="452" sl="479" sc="1" el="479" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="480" ordinal="453" sl="480" sc="1" el="480" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="481" ordinal="454" sl="481" sc="1" el="481" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="482" ordinal="455" sl="482" sc="1" el="482" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="483" ordinal="456" sl="483" sc="1" el="483" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="484" ordinal="457" sl="484" sc="1" el="484" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="485" ordinal="458" sl="485" sc="1" el="485" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="486" ordinal="459" sl="486" sc="1" el="486" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="487" ordinal="460" sl="487" sc="1" el="487" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="488" ordinal="461" sl="488" sc="1" el="488" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="489" ordinal="462" sl="489" sc="1" el="489" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="490" ordinal="463" sl="490" sc="1" el="490" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="492" ordinal="464" sl="492" sc="1" el="492" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="493" ordinal="465" sl="493" sc="1" el="493" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="494" ordinal="466" sl="494" sc="1" el="494" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="495" ordinal="467" sl="495" sc="1" el="495" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="496" ordinal="468" sl="496" sc="1" el="496" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="497" ordinal="469" sl="497" sc="1" el="497" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="498" ordinal="470" sl="498" sc="1" el="498" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="499" ordinal="471" sl="499" sc="1" el="499" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="500" ordinal="472" sl="500" sc="1" el="500" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="501" ordinal="473" sl="501" sc="1" el="501" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="502" ordinal="474" sl="502" sc="1" el="502" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="503" ordinal="475" sl="503" sc="1" el="503" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="504" ordinal="476" sl="504" sc="1" el="504" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="505" ordinal="477" sl="505" sc="1" el="505" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="506" ordinal="478" sl="506" sc="1" el="506" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="507" ordinal="479" sl="507" sc="1" el="507" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="508" ordinal="480" sl="508" sc="1" el="508" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="509" ordinal="481" sl="509" sc="1" el="509" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="510" ordinal="482" sl="510" sc="1" el="510" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="511" ordinal="483" sl="511" sc="1" el="511" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="512" ordinal="484" sl="512" sc="1" el="512" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="513" ordinal="485" sl="513" sc="1" el="513" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="515" ordinal="486" sl="515" sc="1" el="515" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="516" ordinal="487" sl="516" sc="1" el="516" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="517" ordinal="488" sl="517" sc="1" el="517" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="518" ordinal="489" sl="518" sc="1" el="518" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="519" ordinal="490" sl="519" sc="1" el="519" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="520" ordinal="491" sl="520" sc="1" el="520" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="521" ordinal="492" sl="521" sc="1" el="521" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="522" ordinal="493" sl="522" sc="1" el="522" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="523" ordinal="494" sl="523" sc="1" el="523" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="524" ordinal="495" sl="524" sc="1" el="524" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="525" ordinal="496" sl="525" sc="1" el="525" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="526" ordinal="497" sl="526" sc="1" el="526" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="527" ordinal="498" sl="527" sc="1" el="527" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="528" ordinal="499" sl="528" sc="1" el="528" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="529" ordinal="500" sl="529" sc="1" el="529" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="530" ordinal="501" sl="530" sc="1" el="530" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="531" ordinal="502" sl="531" sc="1" el="531" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="532" ordinal="503" sl="532" sc="1" el="532" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="533" ordinal="504" sl="533" sc="1" el="533" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="534" ordinal="505" sl="534" sc="1" el="534" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="535" ordinal="506" sl="535" sc="1" el="535" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="536" ordinal="507" sl="536" sc="1" el="536" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="537" ordinal="508" sl="537" sc="1" el="537" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="539" ordinal="509" sl="539" sc="1" el="539" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="540" ordinal="510" sl="540" sc="1" el="540" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="541" ordinal="511" sl="541" sc="1" el="541" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="542" ordinal="512" sl="542" sc="1" el="542" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="543" ordinal="513" sl="543" sc="1" el="543" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="544" ordinal="514" sl="544" sc="1" el="544" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="545" ordinal="515" sl="545" sc="1" el="545" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="546" ordinal="516" sl="546" sc="1" el="546" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="547" ordinal="517" sl="547" sc="1" el="547" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="548" ordinal="518" sl="548" sc="1" el="548" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="549" ordinal="519" sl="549" sc="1" el="549" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="550" ordinal="520" sl="550" sc="1" el="550" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="551" ordinal="521" sl="551" sc="1" el="551" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="552" ordinal="522" sl="552" sc="1" el="552" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="553" ordinal="523" sl="553" sc="1" el="553" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="554" ordinal="524" sl="554" sc="1" el="554" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="555" ordinal="525" sl="555" sc="1" el="555" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="556" ordinal="526" sl="556" sc="1" el="556" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="557" ordinal="527" sl="557" sc="1" el="557" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="559" ordinal="528" sl="559" sc="1" el="559" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="560" ordinal="529" sl="560" sc="1" el="560" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="561" ordinal="530" sl="561" sc="1" el="561" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="562" ordinal="531" sl="562" sc="1" el="562" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="563" ordinal="532" sl="563" sc="1" el="563" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="564" ordinal="533" sl="564" sc="1" el="564" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="565" ordinal="534" sl="565" sc="1" el="565" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="566" ordinal="535" sl="566" sc="1" el="566" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="567" ordinal="536" sl="567" sc="1" el="567" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="568" ordinal="537" sl="568" sc="1" el="568" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="569" ordinal="538" sl="569" sc="1" el="569" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="570" ordinal="539" sl="570" sc="1" el="570" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="571" ordinal="540" sl="571" sc="1" el="571" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="572" ordinal="541" sl="572" sc="1" el="572" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="573" ordinal="542" sl="573" sc="1" el="573" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="574" ordinal="543" sl="574" sc="1" el="574" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="575" ordinal="544" sl="575" sc="1" el="575" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="576" ordinal="545" sl="576" sc="1" el="576" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="577" ordinal="546" sl="577" sc="1" el="577" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="578" ordinal="547" sl="578" sc="1" el="578" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="579" ordinal="548" sl="579" sc="1" el="579" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="580" ordinal="549" sl="580" sc="1" el="580" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="581" ordinal="550" sl="581" sc="1" el="581" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="582" ordinal="551" sl="582" sc="1" el="582" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="583" ordinal="552" sl="583" sc="1" el="583" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="585" ordinal="553" sl="585" sc="1" el="585" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="586" ordinal="554" sl="586" sc="1" el="586" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="587" ordinal="555" sl="587" sc="1" el="587" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="588" ordinal="556" sl="588" sc="1" el="588" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="589" ordinal="557" sl="589" sc="1" el="589" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="590" ordinal="558" sl="590" sc="1" el="590" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="591" ordinal="559" sl="591" sc="1" el="591" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="592" ordinal="560" sl="592" sc="1" el="592" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="593" ordinal="561" sl="593" sc="1" el="593" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="594" ordinal="562" sl="594" sc="1" el="594" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="595" ordinal="563" sl="595" sc="1" el="595" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="596" ordinal="564" sl="596" sc="1" el="596" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="597" ordinal="565" sl="597" sc="1" el="597" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="598" ordinal="566" sl="598" sc="1" el="598" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="599" ordinal="567" sl="599" sc="1" el="599" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="600" ordinal="568" sl="600" sc="1" el="600" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="601" ordinal="569" sl="601" sc="1" el="601" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="602" ordinal="570" sl="602" sc="1" el="602" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="603" ordinal="571" sl="603" sc="1" el="603" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="604" ordinal="572" sl="604" sc="1" el="604" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="605" ordinal="573" sl="605" sc="1" el="605" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="606" ordinal="574" sl="606" sc="1" el="606" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="607" ordinal="575" sl="607" sc="1" el="607" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="608" ordinal="576" sl="608" sc="1" el="608" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="609" ordinal="577" sl="609" sc="1" el="609" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="610" ordinal="578" sl="610" sc="1" el="610" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="611" ordinal="579" sl="611" sc="1" el="611" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="612" ordinal="580" sl="612" sc="1" el="612" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="613" ordinal="581" sl="613" sc="1" el="613" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="614" ordinal="582" sl="614" sc="1" el="614" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="615" ordinal="583" sl="615" sc="1" el="615" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="616" ordinal="584" sl="616" sc="1" el="616" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="618" ordinal="585" sl="618" sc="1" el="618" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="619" ordinal="586" sl="619" sc="1" el="619" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="620" ordinal="587" sl="620" sc="1" el="620" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="621" ordinal="588" sl="621" sc="1" el="621" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="622" ordinal="589" sl="622" sc="1" el="622" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="623" ordinal="590" sl="623" sc="1" el="623" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="624" ordinal="591" sl="624" sc="1" el="624" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="625" ordinal="592" sl="625" sc="1" el="625" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="626" ordinal="593" sl="626" sc="1" el="626" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="627" ordinal="594" sl="627" sc="1" el="627" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="628" ordinal="595" sl="628" sc="1" el="628" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="629" ordinal="596" sl="629" sc="1" el="629" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="630" ordinal="597" sl="630" sc="1" el="630" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="631" ordinal="598" sl="631" sc="1" el="631" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="632" ordinal="599" sl="632" sc="1" el="632" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="633" ordinal="600" sl="633" sc="1" el="633" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="634" ordinal="601" sl="634" sc="1" el="634" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="635" ordinal="602" sl="635" sc="1" el="635" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="636" ordinal="603" sl="636" sc="1" el="636" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="637" ordinal="604" sl="637" sc="1" el="637" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="638" ordinal="605" sl="638" sc="1" el="638" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="639" ordinal="606" sl="639" sc="1" el="639" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="640" ordinal="607" sl="640" sc="1" el="640" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="642" ordinal="608" sl="642" sc="1" el="642" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="643" ordinal="609" sl="643" sc="1" el="643" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="644" ordinal="610" sl="644" sc="1" el="644" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="645" ordinal="611" sl="645" sc="1" el="645" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="646" ordinal="612" sl="646" sc="1" el="646" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="647" ordinal="613" sl="647" sc="1" el="647" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="648" ordinal="614" sl="648" sc="1" el="648" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="649" ordinal="615" sl="649" sc="1" el="649" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="650" ordinal="616" sl="650" sc="1" el="650" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="651" ordinal="617" sl="651" sc="1" el="651" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="652" ordinal="618" sl="652" sc="1" el="652" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="653" ordinal="619" sl="653" sc="1" el="653" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="654" ordinal="620" sl="654" sc="1" el="654" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="655" ordinal="621" sl="655" sc="1" el="655" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="656" ordinal="622" sl="656" sc="1" el="656" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="657" ordinal="623" sl="657" sc="1" el="657" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="658" ordinal="624" sl="658" sc="1" el="658" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="659" ordinal="625" sl="659" sc="1" el="659" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="660" ordinal="626" sl="660" sc="1" el="660" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="661" ordinal="627" sl="661" sc="1" el="661" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="662" ordinal="628" sl="662" sc="1" el="662" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="663" ordinal="629" sl="663" sc="1" el="663" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="664" ordinal="630" sl="664" sc="1" el="664" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="665" ordinal="631" sl="665" sc="1" el="665" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="666" ordinal="632" sl="666" sc="1" el="666" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="667" ordinal="633" sl="667" sc="1" el="667" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="668" ordinal="634" sl="668" sc="1" el="668" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="669" ordinal="635" sl="669" sc="1" el="669" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="670" ordinal="636" sl="670" sc="1" el="670" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="671" ordinal="637" sl="671" sc="1" el="671" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="672" ordinal="638" sl="672" sc="1" el="672" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="673" ordinal="639" sl="673" sc="1" el="673" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="674" ordinal="640" sl="674" sc="1" el="674" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="675" ordinal="641" sl="675" sc="1" el="675" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="676" ordinal="642" sl="676" sc="1" el="676" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="677" ordinal="643" sl="677" sc="1" el="677" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="678" ordinal="644" sl="678" sc="1" el="678" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="679" ordinal="645" sl="679" sc="1" el="679" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="680" ordinal="646" sl="680" sc="1" el="680" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="681" ordinal="647" sl="681" sc="1" el="681" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="682" ordinal="648" sl="682" sc="1" el="682" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="683" ordinal="649" sl="683" sc="1" el="683" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="684" ordinal="650" sl="684" sc="1" el="684" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="685" ordinal="651" sl="685" sc="1" el="685" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="686" ordinal="652" sl="686" sc="1" el="686" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="687" ordinal="653" sl="687" sc="1" el="687" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="688" ordinal="654" sl="688" sc="1" el="688" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="689" ordinal="655" sl="689" sc="1" el="689" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="690" ordinal="656" sl="690" sc="1" el="690" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="691" ordinal="657" sl="691" sc="1" el="691" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="692" ordinal="658" sl="692" sc="1" el="692" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="693" ordinal="659" sl="693" sc="1" el="693" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="694" ordinal="660" sl="694" sc="1" el="694" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="695" ordinal="661" sl="695" sc="1" el="695" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="696" ordinal="662" sl="696" sc="1" el="696" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="697" ordinal="663" sl="697" sc="1" el="697" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="698" ordinal="664" sl="698" sc="1" el="698" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="699" ordinal="665" sl="699" sc="1" el="699" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="700" ordinal="666" sl="700" sc="1" el="700" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="702" ordinal="667" sl="702" sc="1" el="702" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="703" ordinal="668" sl="703" sc="1" el="703" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="704" ordinal="669" sl="704" sc="1" el="704" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="705" ordinal="670" sl="705" sc="1" el="705" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="706" ordinal="671" sl="706" sc="1" el="706" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="707" ordinal="672" sl="707" sc="1" el="707" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="708" ordinal="673" sl="708" sc="1" el="708" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="709" ordinal="674" sl="709" sc="1" el="709" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="710" ordinal="675" sl="710" sc="1" el="710" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="711" ordinal="676" sl="711" sc="1" el="711" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="712" ordinal="677" sl="712" sc="1" el="712" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="713" ordinal="678" sl="713" sc="1" el="713" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="714" ordinal="679" sl="714" sc="1" el="714" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="715" ordinal="680" sl="715" sc="1" el="715" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="716" ordinal="681" sl="716" sc="1" el="716" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="717" ordinal="682" sl="717" sc="1" el="717" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="718" ordinal="683" sl="718" sc="1" el="718" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="719" ordinal="684" sl="719" sc="1" el="719" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="720" ordinal="685" sl="720" sc="1" el="720" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="721" ordinal="686" sl="721" sc="1" el="721" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="722" ordinal="687" sl="722" sc="1" el="722" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="723" ordinal="688" sl="723" sc="1" el="723" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="724" ordinal="689" sl="724" sc="1" el="724" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="725" ordinal="690" sl="725" sc="1" el="725" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="726" ordinal="691" sl="726" sc="1" el="726" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="727" ordinal="692" sl="727" sc="1" el="727" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="728" ordinal="693" sl="728" sc="1" el="728" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="729" ordinal="694" sl="729" sc="1" el="729" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="730" ordinal="695" sl="730" sc="1" el="730" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="731" ordinal="696" sl="731" sc="1" el="731" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="732" ordinal="697" sl="732" sc="1" el="732" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="733" ordinal="698" sl="733" sc="1" el="733" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="734" ordinal="699" sl="734" sc="1" el="734" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="735" ordinal="700" sl="735" sc="1" el="735" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="737" ordinal="701" sl="737" sc="1" el="737" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="738" ordinal="702" sl="738" sc="1" el="738" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="739" ordinal="703" sl="739" sc="1" el="739" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="740" ordinal="704" sl="740" sc="1" el="740" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="741" ordinal="705" sl="741" sc="1" el="741" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="742" ordinal="706" sl="742" sc="1" el="742" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="743" ordinal="707" sl="743" sc="1" el="743" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="744" ordinal="708" sl="744" sc="1" el="744" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="745" ordinal="709" sl="745" sc="1" el="745" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="746" ordinal="710" sl="746" sc="1" el="746" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="747" ordinal="711" sl="747" sc="1" el="747" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="748" ordinal="712" sl="748" sc="1" el="748" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="749" ordinal="713" sl="749" sc="1" el="749" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="750" ordinal="714" sl="750" sc="1" el="750" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="751" ordinal="715" sl="751" sc="1" el="751" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="752" ordinal="716" sl="752" sc="1" el="752" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="753" ordinal="717" sl="753" sc="1" el="753" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="754" ordinal="718" sl="754" sc="1" el="754" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="755" ordinal="719" sl="755" sc="1" el="755" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="756" ordinal="720" sl="756" sc="1" el="756" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="757" ordinal="721" sl="757" sc="1" el="757" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="758" ordinal="722" sl="758" sc="1" el="758" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="759" ordinal="723" sl="759" sc="1" el="759" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="760" ordinal="724" sl="760" sc="1" el="760" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="761" ordinal="725" sl="761" sc="1" el="761" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="762" ordinal="726" sl="762" sc="1" el="762" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="764" ordinal="727" sl="764" sc="1" el="764" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="765" ordinal="728" sl="765" sc="1" el="765" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="766" ordinal="729" sl="766" sc="1" el="766" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="767" ordinal="730" sl="767" sc="1" el="767" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="768" ordinal="731" sl="768" sc="1" el="768" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="769" ordinal="732" sl="769" sc="1" el="769" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="770" ordinal="733" sl="770" sc="1" el="770" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="771" ordinal="734" sl="771" sc="1" el="771" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="772" ordinal="735" sl="772" sc="1" el="772" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="773" ordinal="736" sl="773" sc="1" el="773" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="774" ordinal="737" sl="774" sc="1" el="774" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="775" ordinal="738" sl="775" sc="1" el="775" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="776" ordinal="739" sl="776" sc="1" el="776" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="777" ordinal="740" sl="777" sc="1" el="777" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="778" ordinal="741" sl="778" sc="1" el="778" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="779" ordinal="742" sl="779" sc="1" el="779" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="780" ordinal="743" sl="780" sc="1" el="780" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="781" ordinal="744" sl="781" sc="1" el="781" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="782" ordinal="745" sl="782" sc="1" el="782" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="783" ordinal="746" sl="783" sc="1" el="783" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="784" ordinal="747" sl="784" sc="1" el="784" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="785" ordinal="748" sl="785" sc="1" el="785" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="786" ordinal="749" sl="786" sc="1" el="786" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="787" ordinal="750" sl="787" sc="1" el="787" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="788" ordinal="751" sl="788" sc="1" el="788" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="790" ordinal="752" sl="790" sc="1" el="790" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="791" ordinal="753" sl="791" sc="1" el="791" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="792" ordinal="754" sl="792" sc="1" el="792" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="793" ordinal="755" sl="793" sc="1" el="793" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="794" ordinal="756" sl="794" sc="1" el="794" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="795" ordinal="757" sl="795" sc="1" el="795" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="796" ordinal="758" sl="796" sc="1" el="796" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="797" ordinal="759" sl="797" sc="1" el="797" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="798" ordinal="760" sl="798" sc="1" el="798" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="799" ordinal="761" sl="799" sc="1" el="799" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="800" ordinal="762" sl="800" sc="1" el="800" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="801" ordinal="763" sl="801" sc="1" el="801" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="802" ordinal="764" sl="802" sc="1" el="802" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="803" ordinal="765" sl="803" sc="1" el="803" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="804" ordinal="766" sl="804" sc="1" el="804" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="805" ordinal="767" sl="805" sc="1" el="805" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="806" ordinal="768" sl="806" sc="1" el="806" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="807" ordinal="769" sl="807" sc="1" el="807" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="808" ordinal="770" sl="808" sc="1" el="808" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="809" ordinal="771" sl="809" sc="1" el="809" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="810" ordinal="772" sl="810" sc="1" el="810" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="811" ordinal="773" sl="811" sc="1" el="811" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="812" ordinal="774" sl="812" sc="1" el="812" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="813" ordinal="775" sl="813" sc="1" el="813" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="814" ordinal="776" sl="814" sc="1" el="814" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="816" ordinal="777" sl="816" sc="1" el="816" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="817" ordinal="778" sl="817" sc="1" el="817" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="818" ordinal="779" sl="818" sc="1" el="818" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="819" ordinal="780" sl="819" sc="1" el="819" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="820" ordinal="781" sl="820" sc="1" el="820" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="821" ordinal="782" sl="821" sc="1" el="821" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="822" ordinal="783" sl="822" sc="1" el="822" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="823" ordinal="784" sl="823" sc="1" el="823" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="824" ordinal="785" sl="824" sc="1" el="824" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="825" ordinal="786" sl="825" sc="1" el="825" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="826" ordinal="787" sl="826" sc="1" el="826" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="827" ordinal="788" sl="827" sc="1" el="827" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="828" ordinal="789" sl="828" sc="1" el="828" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="829" ordinal="790" sl="829" sc="1" el="829" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="830" ordinal="791" sl="830" sc="1" el="830" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="831" ordinal="792" sl="831" sc="1" el="831" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="832" ordinal="793" sl="832" sc="1" el="832" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="833" ordinal="794" sl="833" sc="1" el="833" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="834" ordinal="795" sl="834" sc="1" el="834" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="835" ordinal="796" sl="835" sc="1" el="835" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="836" ordinal="797" sl="836" sc="1" el="836" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="837" ordinal="798" sl="837" sc="1" el="837" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="838" ordinal="799" sl="838" sc="1" el="838" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="839" ordinal="800" sl="839" sc="1" el="839" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="840" ordinal="801" sl="840" sc="1" el="840" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="842" ordinal="802" sl="842" sc="1" el="842" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="843" ordinal="803" sl="843" sc="1" el="843" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="844" ordinal="804" sl="844" sc="1" el="844" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="845" ordinal="805" sl="845" sc="1" el="845" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="846" ordinal="806" sl="846" sc="1" el="846" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="847" ordinal="807" sl="847" sc="1" el="847" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="848" ordinal="808" sl="848" sc="1" el="848" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="849" ordinal="809" sl="849" sc="1" el="849" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="850" ordinal="810" sl="850" sc="1" el="850" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="851" ordinal="811" sl="851" sc="1" el="851" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="852" ordinal="812" sl="852" sc="1" el="852" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="853" ordinal="813" sl="853" sc="1" el="853" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="854" ordinal="814" sl="854" sc="1" el="854" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="855" ordinal="815" sl="855" sc="1" el="855" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="856" ordinal="816" sl="856" sc="1" el="856" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="857" ordinal="817" sl="857" sc="1" el="857" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="858" ordinal="818" sl="858" sc="1" el="858" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="859" ordinal="819" sl="859" sc="1" el="859" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="860" ordinal="820" sl="860" sc="1" el="860" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="861" ordinal="821" sl="861" sc="1" el="861" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="862" ordinal="822" sl="862" sc="1" el="862" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="863" ordinal="823" sl="863" sc="1" el="863" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="864" ordinal="824" sl="864" sc="1" el="864" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="865" ordinal="825" sl="865" sc="1" el="865" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="866" ordinal="826" sl="866" sc="1" el="866" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="868" ordinal="827" sl="868" sc="1" el="868" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="869" ordinal="828" sl="869" sc="1" el="869" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="870" ordinal="829" sl="870" sc="1" el="870" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="871" ordinal="830" sl="871" sc="1" el="871" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="872" ordinal="831" sl="872" sc="1" el="872" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="873" ordinal="832" sl="873" sc="1" el="873" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="874" ordinal="833" sl="874" sc="1" el="874" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="875" ordinal="834" sl="875" sc="1" el="875" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="876" ordinal="835" sl="876" sc="1" el="876" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="877" ordinal="836" sl="877" sc="1" el="877" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="878" ordinal="837" sl="878" sc="1" el="878" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="879" ordinal="838" sl="879" sc="1" el="879" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="880" ordinal="839" sl="880" sc="1" el="880" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="881" ordinal="840" sl="881" sc="1" el="881" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="882" ordinal="841" sl="882" sc="1" el="882" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="883" ordinal="842" sl="883" sc="1" el="883" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="884" ordinal="843" sl="884" sc="1" el="884" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="885" ordinal="844" sl="885" sc="1" el="885" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="886" ordinal="845" sl="886" sc="1" el="886" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="887" ordinal="846" sl="887" sc="1" el="887" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="888" ordinal="847" sl="888" sc="1" el="888" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="889" ordinal="848" sl="889" sc="1" el="889" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="890" ordinal="849" sl="890" sc="1" el="890" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="891" ordinal="850" sl="891" sc="1" el="891" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="892" ordinal="851" sl="892" sc="1" el="892" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="894" ordinal="852" sl="894" sc="1" el="894" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="895" ordinal="853" sl="895" sc="1" el="895" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="896" ordinal="854" sl="896" sc="1" el="896" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="897" ordinal="855" sl="897" sc="1" el="897" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="898" ordinal="856" sl="898" sc="1" el="898" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="899" ordinal="857" sl="899" sc="1" el="899" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="900" ordinal="858" sl="900" sc="1" el="900" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="901" ordinal="859" sl="901" sc="1" el="901" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="902" ordinal="860" sl="902" sc="1" el="902" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="903" ordinal="861" sl="903" sc="1" el="903" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="904" ordinal="862" sl="904" sc="1" el="904" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="905" ordinal="863" sl="905" sc="1" el="905" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="906" ordinal="864" sl="906" sc="1" el="906" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="907" ordinal="865" sl="907" sc="1" el="907" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="908" ordinal="866" sl="908" sc="1" el="908" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="909" ordinal="867" sl="909" sc="1" el="909" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="910" ordinal="868" sl="910" sc="1" el="910" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="911" ordinal="869" sl="911" sc="1" el="911" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="912" ordinal="870" sl="912" sc="1" el="912" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="913" ordinal="871" sl="913" sc="1" el="913" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="914" ordinal="872" sl="914" sc="1" el="914" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="915" ordinal="873" sl="915" sc="1" el="915" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="916" ordinal="874" sl="916" sc="1" el="916" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="917" ordinal="875" sl="917" sc="1" el="917" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="918" ordinal="876" sl="918" sc="1" el="918" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="920" ordinal="877" sl="920" sc="1" el="920" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="921" ordinal="878" sl="921" sc="1" el="921" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="922" ordinal="879" sl="922" sc="1" el="922" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="923" ordinal="880" sl="923" sc="1" el="923" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="924" ordinal="881" sl="924" sc="1" el="924" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="925" ordinal="882" sl="925" sc="1" el="925" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="926" ordinal="883" sl="926" sc="1" el="926" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="927" ordinal="884" sl="927" sc="1" el="927" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="928" ordinal="885" sl="928" sc="1" el="928" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="929" ordinal="886" sl="929" sc="1" el="929" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="930" ordinal="887" sl="930" sc="1" el="930" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="931" ordinal="888" sl="931" sc="1" el="931" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="932" ordinal="889" sl="932" sc="1" el="932" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="933" ordinal="890" sl="933" sc="1" el="933" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="934" ordinal="891" sl="934" sc="1" el="934" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="935" ordinal="892" sl="935" sc="1" el="935" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="936" ordinal="893" sl="936" sc="1" el="936" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="937" ordinal="894" sl="937" sc="1" el="937" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="938" ordinal="895" sl="938" sc="1" el="938" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="939" ordinal="896" sl="939" sc="1" el="939" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="940" ordinal="897" sl="940" sc="1" el="940" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="941" ordinal="898" sl="941" sc="1" el="941" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="942" ordinal="899" sl="942" sc="1" el="942" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="943" ordinal="900" sl="943" sc="1" el="943" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="944" ordinal="901" sl="944" sc="1" el="944" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="946" ordinal="902" sl="946" sc="1" el="946" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="947" ordinal="903" sl="947" sc="1" el="947" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="948" ordinal="904" sl="948" sc="1" el="948" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="949" ordinal="905" sl="949" sc="1" el="949" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="950" ordinal="906" sl="950" sc="1" el="950" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="951" ordinal="907" sl="951" sc="1" el="951" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="952" ordinal="908" sl="952" sc="1" el="952" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="953" ordinal="909" sl="953" sc="1" el="953" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="954" ordinal="910" sl="954" sc="1" el="954" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="955" ordinal="911" sl="955" sc="1" el="955" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="956" ordinal="912" sl="956" sc="1" el="956" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="957" ordinal="913" sl="957" sc="1" el="957" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="958" ordinal="914" sl="958" sc="1" el="958" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="959" ordinal="915" sl="959" sc="1" el="959" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="960" ordinal="916" sl="960" sc="1" el="960" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="961" ordinal="917" sl="961" sc="1" el="961" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="962" ordinal="918" sl="962" sc="1" el="962" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="963" ordinal="919" sl="963" sc="1" el="963" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="964" ordinal="920" sl="964" sc="1" el="964" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="965" ordinal="921" sl="965" sc="1" el="965" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="966" ordinal="922" sl="966" sc="1" el="966" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="967" ordinal="923" sl="967" sc="1" el="967" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="968" ordinal="924" sl="968" sc="1" el="968" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="969" ordinal="925" sl="969" sc="1" el="969" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="970" ordinal="926" sl="970" sc="1" el="970" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="972" ordinal="927" sl="972" sc="1" el="972" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="973" ordinal="928" sl="973" sc="1" el="973" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="974" ordinal="929" sl="974" sc="1" el="974" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="975" ordinal="930" sl="975" sc="1" el="975" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="976" ordinal="931" sl="976" sc="1" el="976" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="977" ordinal="932" sl="977" sc="1" el="977" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="978" ordinal="933" sl="978" sc="1" el="978" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="979" ordinal="934" sl="979" sc="1" el="979" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="980" ordinal="935" sl="980" sc="1" el="980" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="981" ordinal="936" sl="981" sc="1" el="981" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="982" ordinal="937" sl="982" sc="1" el="982" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="983" ordinal="938" sl="983" sc="1" el="983" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="984" ordinal="939" sl="984" sc="1" el="984" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="985" ordinal="940" sl="985" sc="1" el="985" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="986" ordinal="941" sl="986" sc="1" el="986" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="987" ordinal="942" sl="987" sc="1" el="987" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="988" ordinal="943" sl="988" sc="1" el="988" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="989" ordinal="944" sl="989" sc="1" el="989" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="990" ordinal="945" sl="990" sc="1" el="990" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="991" ordinal="946" sl="991" sc="1" el="991" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="992" ordinal="947" sl="992" sc="1" el="992" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="993" ordinal="948" sl="993" sc="1" el="993" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="994" ordinal="949" sl="994" sc="1" el="994" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="995" ordinal="950" sl="995" sc="1" el="995" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="996" ordinal="951" sl="996" sc="1" el="996" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="998" ordinal="952" sl="998" sc="1" el="998" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="999" ordinal="953" sl="999" sc="1" el="999" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1000" ordinal="954" sl="1000" sc="1" el="1000" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1001" ordinal="955" sl="1001" sc="1" el="1001" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1002" ordinal="956" sl="1002" sc="1" el="1002" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1003" ordinal="957" sl="1003" sc="1" el="1003" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1004" ordinal="958" sl="1004" sc="1" el="1004" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1005" ordinal="959" sl="1005" sc="1" el="1005" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1006" ordinal="960" sl="1006" sc="1" el="1006" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1007" ordinal="961" sl="1007" sc="1" el="1007" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1008" ordinal="962" sl="1008" sc="1" el="1008" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1009" ordinal="963" sl="1009" sc="1" el="1009" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1010" ordinal="964" sl="1010" sc="1" el="1010" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1011" ordinal="965" sl="1011" sc="1" el="1011" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1012" ordinal="966" sl="1012" sc="1" el="1012" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1013" ordinal="967" sl="1013" sc="1" el="1013" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1014" ordinal="968" sl="1014" sc="1" el="1014" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1015" ordinal="969" sl="1015" sc="1" el="1015" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1016" ordinal="970" sl="1016" sc="1" el="1016" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1017" ordinal="971" sl="1017" sc="1" el="1017" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1018" ordinal="972" sl="1018" sc="1" el="1018" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1019" ordinal="973" sl="1019" sc="1" el="1019" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1020" ordinal="974" sl="1020" sc="1" el="1020" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1021" ordinal="975" sl="1021" sc="1" el="1021" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1022" ordinal="976" sl="1022" sc="1" el="1022" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1024" ordinal="977" sl="1024" sc="1" el="1024" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1025" ordinal="978" sl="1025" sc="1" el="1025" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1026" ordinal="979" sl="1026" sc="1" el="1026" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1027" ordinal="980" sl="1027" sc="1" el="1027" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1028" ordinal="981" sl="1028" sc="1" el="1028" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1029" ordinal="982" sl="1029" sc="1" el="1029" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1030" ordinal="983" sl="1030" sc="1" el="1030" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1031" ordinal="984" sl="1031" sc="1" el="1031" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1032" ordinal="985" sl="1032" sc="1" el="1032" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1033" ordinal="986" sl="1033" sc="1" el="1033" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1034" ordinal="987" sl="1034" sc="1" el="1034" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1035" ordinal="988" sl="1035" sc="1" el="1035" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1036" ordinal="989" sl="1036" sc="1" el="1036" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1037" ordinal="990" sl="1037" sc="1" el="1037" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1038" ordinal="991" sl="1038" sc="1" el="1038" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1039" ordinal="992" sl="1039" sc="1" el="1039" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1040" ordinal="993" sl="1040" sc="1" el="1040" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1041" ordinal="994" sl="1041" sc="1" el="1041" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1042" ordinal="995" sl="1042" sc="1" el="1042" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1043" ordinal="996" sl="1043" sc="1" el="1043" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1044" ordinal="997" sl="1044" sc="1" el="1044" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1045" ordinal="998" sl="1045" sc="1" el="1045" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1046" ordinal="999" sl="1046" sc="1" el="1046" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1047" ordinal="1000" sl="1047" sc="1" el="1047" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1048" ordinal="1001" sl="1048" sc="1" el="1048" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1049" ordinal="1002" sl="1049" sc="1" el="1049" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1051" ordinal="1003" sl="1051" sc="1" el="1051" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1052" ordinal="1004" sl="1052" sc="1" el="1052" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1053" ordinal="1005" sl="1053" sc="1" el="1053" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1054" ordinal="1006" sl="1054" sc="1" el="1054" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1055" ordinal="1007" sl="1055" sc="1" el="1055" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1056" ordinal="1008" sl="1056" sc="1" el="1056" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1057" ordinal="1009" sl="1057" sc="1" el="1057" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1058" ordinal="1010" sl="1058" sc="1" el="1058" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1059" ordinal="1011" sl="1059" sc="1" el="1059" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1060" ordinal="1012" sl="1060" sc="1" el="1060" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1061" ordinal="1013" sl="1061" sc="1" el="1061" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1062" ordinal="1014" sl="1062" sc="1" el="1062" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1063" ordinal="1015" sl="1063" sc="1" el="1063" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1064" ordinal="1016" sl="1064" sc="1" el="1064" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1065" ordinal="1017" sl="1065" sc="1" el="1065" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1066" ordinal="1018" sl="1066" sc="1" el="1066" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1067" ordinal="1019" sl="1067" sc="1" el="1067" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1068" ordinal="1020" sl="1068" sc="1" el="1068" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1069" ordinal="1021" sl="1069" sc="1" el="1069" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1070" ordinal="1022" sl="1070" sc="1" el="1070" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1071" ordinal="1023" sl="1071" sc="1" el="1071" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1072" ordinal="1024" sl="1072" sc="1" el="1072" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1073" ordinal="1025" sl="1073" sc="1" el="1073" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1074" ordinal="1026" sl="1074" sc="1" el="1074" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1075" ordinal="1027" sl="1075" sc="1" el="1075" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1076" ordinal="1028" sl="1076" sc="1" el="1076" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1077" ordinal="1029" sl="1077" sc="1" el="1077" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1078" ordinal="1030" sl="1078" sc="1" el="1078" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1079" ordinal="1031" sl="1079" sc="1" el="1079" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1080" ordinal="1032" sl="1080" sc="1" el="1080" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1081" ordinal="1033" sl="1081" sc="1" el="1081" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1082" ordinal="1034" sl="1082" sc="1" el="1082" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1083" ordinal="1035" sl="1083" sc="1" el="1083" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1084" ordinal="1036" sl="1084" sc="1" el="1084" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1085" ordinal="1037" sl="1085" sc="1" el="1085" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1086" ordinal="1038" sl="1086" sc="1" el="1086" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1087" ordinal="1039" sl="1087" sc="1" el="1087" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1088" ordinal="1040" sl="1088" sc="1" el="1088" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1089" ordinal="1041" sl="1089" sc="1" el="1089" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1090" ordinal="1042" sl="1090" sc="1" el="1090" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1091" ordinal="1043" sl="1091" sc="1" el="1091" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1092" ordinal="1044" sl="1092" sc="1" el="1092" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1093" ordinal="1045" sl="1093" sc="1" el="1093" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1094" ordinal="1046" sl="1094" sc="1" el="1094" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1095" ordinal="1047" sl="1095" sc="1" el="1095" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1096" ordinal="1048" sl="1096" sc="1" el="1096" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1097" ordinal="1049" sl="1097" sc="1" el="1097" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1098" ordinal="1050" sl="1098" sc="1" el="1098" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1099" ordinal="1051" sl="1099" sc="1" el="1099" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1100" ordinal="1052" sl="1100" sc="1" el="1100" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1101" ordinal="1053" sl="1101" sc="1" el="1101" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1102" ordinal="1054" sl="1102" sc="1" el="1102" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1103" ordinal="1055" sl="1103" sc="1" el="1103" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1104" ordinal="1056" sl="1104" sc="1" el="1104" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1105" ordinal="1057" sl="1105" sc="1" el="1105" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1106" ordinal="1058" sl="1106" sc="1" el="1106" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1107" ordinal="1059" sl="1107" sc="1" el="1107" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1108" ordinal="1060" sl="1108" sc="1" el="1108" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1109" ordinal="1061" sl="1109" sc="1" el="1109" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1110" ordinal="1062" sl="1110" sc="1" el="1110" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1111" ordinal="1063" sl="1111" sc="1" el="1111" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1112" ordinal="1064" sl="1112" sc="1" el="1112" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1113" ordinal="1065" sl="1113" sc="1" el="1113" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1114" ordinal="1066" sl="1114" sc="1" el="1114" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1115" ordinal="1067" sl="1115" sc="1" el="1115" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1116" ordinal="1068" sl="1116" sc="1" el="1116" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1117" ordinal="1069" sl="1117" sc="1" el="1117" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1118" ordinal="1070" sl="1118" sc="1" el="1118" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1119" ordinal="1071" sl="1119" sc="1" el="1119" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1120" ordinal="1072" sl="1120" sc="1" el="1120" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1121" ordinal="1073" sl="1121" sc="1" el="1121" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1122" ordinal="1074" sl="1122" sc="1" el="1122" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1123" ordinal="1075" sl="1123" sc="1" el="1123" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1124" ordinal="1076" sl="1124" sc="1" el="1124" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1125" ordinal="1077" sl="1125" sc="1" el="1125" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1126" ordinal="1078" sl="1126" sc="1" el="1126" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1127" ordinal="1079" sl="1127" sc="1" el="1127" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1128" ordinal="1080" sl="1128" sc="1" el="1128" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1129" ordinal="1081" sl="1129" sc="1" el="1129" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1130" ordinal="1082" sl="1130" sc="1" el="1130" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1131" ordinal="1083" sl="1131" sc="1" el="1131" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1132" ordinal="1084" sl="1132" sc="1" el="1132" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1133" ordinal="1085" sl="1133" sc="1" el="1133" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1134" ordinal="1086" sl="1134" sc="1" el="1134" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1135" ordinal="1087" sl="1135" sc="1" el="1135" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1136" ordinal="1088" sl="1136" sc="1" el="1136" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1137" ordinal="1089" sl="1137" sc="1" el="1137" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1138" ordinal="1090" sl="1138" sc="1" el="1138" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1139" ordinal="1091" sl="1139" sc="1" el="1139" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1140" ordinal="1092" sl="1140" sc="1" el="1140" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1141" ordinal="1093" sl="1141" sc="1" el="1141" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1142" ordinal="1094" sl="1142" sc="1" el="1142" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1143" ordinal="1095" sl="1143" sc="1" el="1143" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1144" ordinal="1096" sl="1144" sc="1" el="1144" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1145" ordinal="1097" sl="1145" sc="1" el="1145" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1146" ordinal="1098" sl="1146" sc="1" el="1146" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1147" ordinal="1099" sl="1147" sc="1" el="1147" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1148" ordinal="1100" sl="1148" sc="1" el="1148" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1149" ordinal="1101" sl="1149" sc="1" el="1149" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1150" ordinal="1102" sl="1150" sc="1" el="1150" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1151" ordinal="1103" sl="1151" sc="1" el="1151" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1152" ordinal="1104" sl="1152" sc="1" el="1152" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1153" ordinal="1105" sl="1153" sc="1" el="1153" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1154" ordinal="1106" sl="1154" sc="1" el="1154" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1155" ordinal="1107" sl="1155" sc="1" el="1155" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1156" ordinal="1108" sl="1156" sc="1" el="1156" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1157" ordinal="1109" sl="1157" sc="1" el="1157" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1158" ordinal="1110" sl="1158" sc="1" el="1158" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1159" ordinal="1111" sl="1159" sc="1" el="1159" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1160" ordinal="1112" sl="1160" sc="1" el="1160" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1161" ordinal="1113" sl="1161" sc="1" el="1161" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1162" ordinal="1114" sl="1162" sc="1" el="1162" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1163" ordinal="1115" sl="1163" sc="1" el="1163" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1164" ordinal="1116" sl="1164" sc="1" el="1164" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1165" ordinal="1117" sl="1165" sc="1" el="1165" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1166" ordinal="1118" sl="1166" sc="1" el="1166" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1167" ordinal="1119" sl="1167" sc="1" el="1167" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1168" ordinal="1120" sl="1168" sc="1" el="1168" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1169" ordinal="1121" sl="1169" sc="1" el="1169" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1170" ordinal="1122" sl="1170" sc="1" el="1170" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1171" ordinal="1123" sl="1171" sc="1" el="1171" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1172" ordinal="1124" sl="1172" sc="1" el="1172" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1173" ordinal="1125" sl="1173" sc="1" el="1173" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1174" ordinal="1126" sl="1174" sc="1" el="1174" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1175" ordinal="1127" sl="1175" sc="1" el="1175" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1176" ordinal="1128" sl="1176" sc="1" el="1176" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1177" ordinal="1129" sl="1177" sc="1" el="1177" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1178" ordinal="1130" sl="1178" sc="1" el="1178" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1179" ordinal="1131" sl="1179" sc="1" el="1179" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1180" ordinal="1132" sl="1180" sc="1" el="1180" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1181" ordinal="1133" sl="1181" sc="1" el="1181" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1182" ordinal="1134" sl="1182" sc="1" el="1182" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1183" ordinal="1135" sl="1183" sc="1" el="1183" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1184" ordinal="1136" sl="1184" sc="1" el="1184" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1185" ordinal="1137" sl="1185" sc="1" el="1185" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1186" ordinal="1138" sl="1186" sc="1" el="1186" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1187" ordinal="1139" sl="1187" sc="1" el="1187" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1188" ordinal="1140" sl="1188" sc="1" el="1188" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1189" ordinal="1141" sl="1189" sc="1" el="1189" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1190" ordinal="1142" sl="1190" sc="1" el="1190" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1191" ordinal="1143" sl="1191" sc="1" el="1191" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1192" ordinal="1144" sl="1192" sc="1" el="1192" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1193" ordinal="1145" sl="1193" sc="1" el="1193" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1194" ordinal="1146" sl="1194" sc="1" el="1194" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1195" ordinal="1147" sl="1195" sc="1" el="1195" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1196" ordinal="1148" sl="1196" sc="1" el="1196" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1197" ordinal="1149" sl="1197" sc="1" el="1197" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1198" ordinal="1150" sl="1198" sc="1" el="1198" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1199" ordinal="1151" sl="1199" sc="1" el="1199" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1200" ordinal="1152" sl="1200" sc="1" el="1200" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1201" ordinal="1153" sl="1201" sc="1" el="1201" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1202" ordinal="1154" sl="1202" sc="1" el="1202" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1203" ordinal="1155" sl="1203" sc="1" el="1203" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1204" ordinal="1156" sl="1204" sc="1" el="1204" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1205" ordinal="1157" sl="1205" sc="1" el="1205" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1206" ordinal="1158" sl="1206" sc="1" el="1206" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1207" ordinal="1159" sl="1207" sc="1" el="1207" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1208" ordinal="1160" sl="1208" sc="1" el="1208" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1209" ordinal="1161" sl="1209" sc="1" el="1209" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1210" ordinal="1162" sl="1210" sc="1" el="1210" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1211" ordinal="1163" sl="1211" sc="1" el="1211" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1212" ordinal="1164" sl="1212" sc="1" el="1212" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1213" ordinal="1165" sl="1213" sc="1" el="1213" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1214" ordinal="1166" sl="1214" sc="1" el="1214" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1215" ordinal="1167" sl="1215" sc="1" el="1215" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1216" ordinal="1168" sl="1216" sc="1" el="1216" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1217" ordinal="1169" sl="1217" sc="1" el="1217" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1218" ordinal="1170" sl="1218" sc="1" el="1218" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1219" ordinal="1171" sl="1219" sc="1" el="1219" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1220" ordinal="1172" sl="1220" sc="1" el="1220" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1221" ordinal="1173" sl="1221" sc="1" el="1221" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1222" ordinal="1174" sl="1222" sc="1" el="1222" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1223" ordinal="1175" sl="1223" sc="1" el="1223" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1224" ordinal="1176" sl="1224" sc="1" el="1224" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1225" ordinal="1177" sl="1225" sc="1" el="1225" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1226" ordinal="1178" sl="1226" sc="1" el="1226" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1227" ordinal="1179" sl="1227" sc="1" el="1227" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1228" ordinal="1180" sl="1228" sc="1" el="1228" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1229" ordinal="1181" sl="1229" sc="1" el="1229" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1230" ordinal="1182" sl="1230" sc="1" el="1230" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1231" ordinal="1183" sl="1231" sc="1" el="1231" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1232" ordinal="1184" sl="1232" sc="1" el="1232" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1233" ordinal="1185" sl="1233" sc="1" el="1233" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1234" ordinal="1186" sl="1234" sc="1" el="1234" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1235" ordinal="1187" sl="1235" sc="1" el="1235" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1236" ordinal="1188" sl="1236" sc="1" el="1236" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1237" ordinal="1189" sl="1237" sc="1" el="1237" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1238" ordinal="1190" sl="1238" sc="1" el="1238" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1239" ordinal="1191" sl="1239" sc="1" el="1239" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1240" ordinal="1192" sl="1240" sc="1" el="1240" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1241" ordinal="1193" sl="1241" sc="1" el="1241" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1242" ordinal="1194" sl="1242" sc="1" el="1242" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1243" ordinal="1195" sl="1243" sc="1" el="1243" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1244" ordinal="1196" sl="1244" sc="1" el="1244" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1245" ordinal="1197" sl="1245" sc="1" el="1245" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1246" ordinal="1198" sl="1246" sc="1" el="1246" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1247" ordinal="1199" sl="1247" sc="1" el="1247" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1248" ordinal="1200" sl="1248" sc="1" el="1248" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1249" ordinal="1201" sl="1249" sc="1" el="1249" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1250" ordinal="1202" sl="1250" sc="1" el="1250" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1251" ordinal="1203" sl="1251" sc="1" el="1251" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1252" ordinal="1204" sl="1252" sc="1" el="1252" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1253" ordinal="1205" sl="1253" sc="1" el="1253" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1254" ordinal="1206" sl="1254" sc="1" el="1254" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1255" ordinal="1207" sl="1255" sc="1" el="1255" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1256" ordinal="1208" sl="1256" sc="1" el="1256" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1257" ordinal="1209" sl="1257" sc="1" el="1257" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1258" ordinal="1210" sl="1258" sc="1" el="1258" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1259" ordinal="1211" sl="1259" sc="1" el="1259" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1260" ordinal="1212" sl="1260" sc="1" el="1260" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1261" ordinal="1213" sl="1261" sc="1" el="1261" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1262" ordinal="1214" sl="1262" sc="1" el="1262" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1263" ordinal="1215" sl="1263" sc="1" el="1263" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1264" ordinal="1216" sl="1264" sc="1" el="1264" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1265" ordinal="1217" sl="1265" sc="1" el="1265" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1266" ordinal="1218" sl="1266" sc="1" el="1266" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1267" ordinal="1219" sl="1267" sc="1" el="1267" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1268" ordinal="1220" sl="1268" sc="1" el="1268" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1269" ordinal="1221" sl="1269" sc="1" el="1269" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1270" ordinal="1222" sl="1270" sc="1" el="1270" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1271" ordinal="1223" sl="1271" sc="1" el="1271" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1272" ordinal="1224" sl="1272" sc="1" el="1272" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1273" ordinal="1225" sl="1273" sc="1" el="1273" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1274" ordinal="1226" sl="1274" sc="1" el="1274" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1275" ordinal="1227" sl="1275" sc="1" el="1275" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1276" ordinal="1228" sl="1276" sc="1" el="1276" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1277" ordinal="1229" sl="1277" sc="1" el="1277" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1278" ordinal="1230" sl="1278" sc="1" el="1278" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1279" ordinal="1231" sl="1279" sc="1" el="1279" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1280" ordinal="1232" sl="1280" sc="1" el="1280" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1281" ordinal="1233" sl="1281" sc="1" el="1281" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1282" ordinal="1234" sl="1282" sc="1" el="1282" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1283" ordinal="1235" sl="1283" sc="1" el="1283" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1284" ordinal="1236" sl="1284" sc="1" el="1284" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1285" ordinal="1237" sl="1285" sc="1" el="1285" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1286" ordinal="1238" sl="1286" sc="1" el="1286" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1287" ordinal="1239" sl="1287" sc="1" el="1287" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1288" ordinal="1240" sl="1288" sc="1" el="1288" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1289" ordinal="1241" sl="1289" sc="1" el="1289" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1290" ordinal="1242" sl="1290" sc="1" el="1290" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1291" ordinal="1243" sl="1291" sc="1" el="1291" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1292" ordinal="1244" sl="1292" sc="1" el="1292" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1293" ordinal="1245" sl="1293" sc="1" el="1293" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1294" ordinal="1246" sl="1294" sc="1" el="1294" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1295" ordinal="1247" sl="1295" sc="1" el="1295" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1297" ordinal="1248" sl="1297" sc="1" el="1297" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1298" ordinal="1249" sl="1298" sc="1" el="1298" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1299" ordinal="1250" sl="1299" sc="1" el="1299" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1300" ordinal="1251" sl="1300" sc="1" el="1300" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1301" ordinal="1252" sl="1301" sc="1" el="1301" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1302" ordinal="1253" sl="1302" sc="1" el="1302" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1303" ordinal="1254" sl="1303" sc="1" el="1303" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1304" ordinal="1255" sl="1304" sc="1" el="1304" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1305" ordinal="1256" sl="1305" sc="1" el="1305" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1306" ordinal="1257" sl="1306" sc="1" el="1306" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1307" ordinal="1258" sl="1307" sc="1" el="1307" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1308" ordinal="1259" sl="1308" sc="1" el="1308" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1309" ordinal="1260" sl="1309" sc="1" el="1309" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1310" ordinal="1261" sl="1310" sc="1" el="1310" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1311" ordinal="1262" sl="1311" sc="1" el="1311" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1312" ordinal="1263" sl="1312" sc="1" el="1312" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1313" ordinal="1264" sl="1313" sc="1" el="1313" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1314" ordinal="1265" sl="1314" sc="1" el="1314" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1315" ordinal="1266" sl="1315" sc="1" el="1315" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1316" ordinal="1267" sl="1316" sc="1" el="1316" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1317" ordinal="1268" sl="1317" sc="1" el="1317" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1318" ordinal="1269" sl="1318" sc="1" el="1318" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1319" ordinal="1270" sl="1319" sc="1" el="1319" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1320" ordinal="1271" sl="1320" sc="1" el="1320" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1321" ordinal="1272" sl="1321" sc="1" el="1321" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1322" ordinal="1273" sl="1322" sc="1" el="1322" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1323" ordinal="1274" sl="1323" sc="1" el="1323" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1324" ordinal="1275" sl="1324" sc="1" el="1324" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1325" ordinal="1276" sl="1325" sc="1" el="1325" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1326" ordinal="1277" sl="1326" sc="1" el="1326" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1327" ordinal="1278" sl="1327" sc="1" el="1327" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1328" ordinal="1279" sl="1328" sc="1" el="1328" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1329" ordinal="1280" sl="1329" sc="1" el="1329" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1330" ordinal="1281" sl="1330" sc="1" el="1330" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1331" ordinal="1282" sl="1331" sc="1" el="1331" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1332" ordinal="1283" sl="1332" sc="1" el="1332" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1333" ordinal="1284" sl="1333" sc="1" el="1333" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1334" ordinal="1285" sl="1334" sc="1" el="1334" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1335" ordinal="1286" sl="1335" sc="1" el="1335" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1336" ordinal="1287" sl="1336" sc="1" el="1336" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1337" ordinal="1288" sl="1337" sc="1" el="1337" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1338" ordinal="1289" sl="1338" sc="1" el="1338" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1339" ordinal="1290" sl="1339" sc="1" el="1339" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1340" ordinal="1291" sl="1340" sc="1" el="1340" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1341" ordinal="1292" sl="1341" sc="1" el="1341" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1342" ordinal="1293" sl="1342" sc="1" el="1342" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1344" ordinal="1294" sl="1344" sc="1" el="1344" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1345" ordinal="1295" sl="1345" sc="1" el="1345" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1346" ordinal="1296" sl="1346" sc="1" el="1346" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1347" ordinal="1297" sl="1347" sc="1" el="1347" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1348" ordinal="1298" sl="1348" sc="1" el="1348" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1349" ordinal="1299" sl="1349" sc="1" el="1349" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1350" ordinal="1300" sl="1350" sc="1" el="1350" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1351" ordinal="1301" sl="1351" sc="1" el="1351" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1352" ordinal="1302" sl="1352" sc="1" el="1352" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1353" ordinal="1303" sl="1353" sc="1" el="1353" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1354" ordinal="1304" sl="1354" sc="1" el="1354" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1355" ordinal="1305" sl="1355" sc="1" el="1355" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1356" ordinal="1306" sl="1356" sc="1" el="1356" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1357" ordinal="1307" sl="1357" sc="1" el="1357" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1358" ordinal="1308" sl="1358" sc="1" el="1358" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1359" ordinal="1309" sl="1359" sc="1" el="1359" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1360" ordinal="1310" sl="1360" sc="1" el="1360" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1361" ordinal="1311" sl="1361" sc="1" el="1361" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1362" ordinal="1312" sl="1362" sc="1" el="1362" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1363" ordinal="1313" sl="1363" sc="1" el="1363" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1364" ordinal="1314" sl="1364" sc="1" el="1364" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1365" ordinal="1315" sl="1365" sc="1" el="1365" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1366" ordinal="1316" sl="1366" sc="1" el="1366" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1367" ordinal="1317" sl="1367" sc="1" el="1367" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1368" ordinal="1318" sl="1368" sc="1" el="1368" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1369" ordinal="1319" sl="1369" sc="1" el="1369" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1370" ordinal="1320" sl="1370" sc="1" el="1370" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1371" ordinal="1321" sl="1371" sc="1" el="1371" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1372" ordinal="1322" sl="1372" sc="1" el="1372" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1373" ordinal="1323" sl="1373" sc="1" el="1373" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1374" ordinal="1324" sl="1374" sc="1" el="1374" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1375" ordinal="1325" sl="1375" sc="1" el="1375" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1376" ordinal="1326" sl="1376" sc="1" el="1376" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1377" ordinal="1327" sl="1377" sc="1" el="1377" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1378" ordinal="1328" sl="1378" sc="1" el="1378" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1379" ordinal="1329" sl="1379" sc="1" el="1379" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1380" ordinal="1330" sl="1380" sc="1" el="1380" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1381" ordinal="1331" sl="1381" sc="1" el="1381" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1382" ordinal="1332" sl="1382" sc="1" el="1382" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1383" ordinal="1333" sl="1383" sc="1" el="1383" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1384" ordinal="1334" sl="1384" sc="1" el="1384" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1385" ordinal="1335" sl="1385" sc="1" el="1385" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1386" ordinal="1336" sl="1386" sc="1" el="1386" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1387" ordinal="1337" sl="1387" sc="1" el="1387" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1388" ordinal="1338" sl="1388" sc="1" el="1388" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1389" ordinal="1339" sl="1389" sc="1" el="1389" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1390" ordinal="1340" sl="1390" sc="1" el="1390" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1391" ordinal="1341" sl="1391" sc="1" el="1391" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1392" ordinal="1342" sl="1392" sc="1" el="1392" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1393" ordinal="1343" sl="1393" sc="1" el="1393" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1394" ordinal="1344" sl="1394" sc="1" el="1394" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1395" ordinal="1345" sl="1395" sc="1" el="1395" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1396" ordinal="1346" sl="1396" sc="1" el="1396" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1397" ordinal="1347" sl="1397" sc="1" el="1397" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1398" ordinal="1348" sl="1398" sc="1" el="1398" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1399" ordinal="1349" sl="1399" sc="1" el="1399" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1400" ordinal="1350" sl="1400" sc="1" el="1400" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1401" ordinal="1351" sl="1401" sc="1" el="1401" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1402" ordinal="1352" sl="1402" sc="1" el="1402" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1403" ordinal="1353" sl="1403" sc="1" el="1403" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1404" ordinal="1354" sl="1404" sc="1" el="1404" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1405" ordinal="1355" sl="1405" sc="1" el="1405" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1406" ordinal="1356" sl="1406" sc="1" el="1406" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1407" ordinal="1357" sl="1407" sc="1" el="1407" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1408" ordinal="1358" sl="1408" sc="1" el="1408" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1409" ordinal="1359" sl="1409" sc="1" el="1409" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1410" ordinal="1360" sl="1410" sc="1" el="1410" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1411" ordinal="1361" sl="1411" sc="1" el="1411" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1412" ordinal="1362" sl="1412" sc="1" el="1412" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1413" ordinal="1363" sl="1413" sc="1" el="1413" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1414" ordinal="1364" sl="1414" sc="1" el="1414" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1415" ordinal="1365" sl="1415" sc="1" el="1415" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1416" ordinal="1366" sl="1416" sc="1" el="1416" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1417" ordinal="1367" sl="1417" sc="1" el="1417" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1418" ordinal="1368" sl="1418" sc="1" el="1418" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1419" ordinal="1369" sl="1419" sc="1" el="1419" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1420" ordinal="1370" sl="1420" sc="1" el="1420" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1421" ordinal="1371" sl="1421" sc="1" el="1421" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1422" ordinal="1372" sl="1422" sc="1" el="1422" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1423" ordinal="1373" sl="1423" sc="1" el="1423" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1424" ordinal="1374" sl="1424" sc="1" el="1424" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1425" ordinal="1375" sl="1425" sc="1" el="1425" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1426" ordinal="1376" sl="1426" sc="1" el="1426" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1427" ordinal="1377" sl="1427" sc="1" el="1427" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1428" ordinal="1378" sl="1428" sc="1" el="1428" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1429" ordinal="1379" sl="1429" sc="1" el="1429" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1430" ordinal="1380" sl="1430" sc="1" el="1430" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1431" ordinal="1381" sl="1431" sc="1" el="1431" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1432" ordinal="1382" sl="1432" sc="1" el="1432" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1433" ordinal="1383" sl="1433" sc="1" el="1433" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1435" ordinal="1384" sl="1435" sc="1" el="1435" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1436" ordinal="1385" sl="1436" sc="1" el="1436" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1437" ordinal="1386" sl="1437" sc="1" el="1437" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1438" ordinal="1387" sl="1438" sc="1" el="1438" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1439" ordinal="1388" sl="1439" sc="1" el="1439" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1440" ordinal="1389" sl="1440" sc="1" el="1440" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1441" ordinal="1390" sl="1441" sc="1" el="1441" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1442" ordinal="1391" sl="1442" sc="1" el="1442" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1443" ordinal="1392" sl="1443" sc="1" el="1443" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1444" ordinal="1393" sl="1444" sc="1" el="1444" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1445" ordinal="1394" sl="1445" sc="1" el="1445" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1446" ordinal="1395" sl="1446" sc="1" el="1446" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1447" ordinal="1396" sl="1447" sc="1" el="1447" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1448" ordinal="1397" sl="1448" sc="1" el="1448" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1449" ordinal="1398" sl="1449" sc="1" el="1449" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1450" ordinal="1399" sl="1450" sc="1" el="1450" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1451" ordinal="1400" sl="1451" sc="1" el="1451" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1452" ordinal="1401" sl="1452" sc="1" el="1452" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1453" ordinal="1402" sl="1453" sc="1" el="1453" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1454" ordinal="1403" sl="1454" sc="1" el="1454" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1455" ordinal="1404" sl="1455" sc="1" el="1455" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1456" ordinal="1405" sl="1456" sc="1" el="1456" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1457" ordinal="1406" sl="1457" sc="1" el="1457" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1458" ordinal="1407" sl="1458" sc="1" el="1458" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1460" ordinal="1408" sl="1460" sc="1" el="1460" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1461" ordinal="1409" sl="1461" sc="1" el="1461" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1462" ordinal="1410" sl="1462" sc="1" el="1462" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1463" ordinal="1411" sl="1463" sc="1" el="1463" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1464" ordinal="1412" sl="1464" sc="1" el="1464" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1465" ordinal="1413" sl="1465" sc="1" el="1465" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1466" ordinal="1414" sl="1466" sc="1" el="1466" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1467" ordinal="1415" sl="1467" sc="1" el="1467" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1468" ordinal="1416" sl="1468" sc="1" el="1468" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1469" ordinal="1417" sl="1469" sc="1" el="1469" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1470" ordinal="1418" sl="1470" sc="1" el="1470" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1471" ordinal="1419" sl="1471" sc="1" el="1471" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1472" ordinal="1420" sl="1472" sc="1" el="1472" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1473" ordinal="1421" sl="1473" sc="1" el="1473" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1474" ordinal="1422" sl="1474" sc="1" el="1474" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1475" ordinal="1423" sl="1475" sc="1" el="1475" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1476" ordinal="1424" sl="1476" sc="1" el="1476" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1477" ordinal="1425" sl="1477" sc="1" el="1477" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1478" ordinal="1426" sl="1478" sc="1" el="1478" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1479" ordinal="1427" sl="1479" sc="1" el="1479" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1480" ordinal="1428" sl="1480" sc="1" el="1480" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1481" ordinal="1429" sl="1481" sc="1" el="1481" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1482" ordinal="1430" sl="1482" sc="1" el="1482" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1483" ordinal="1431" sl="1483" sc="1" el="1483" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1484" ordinal="1432" sl="1484" sc="1" el="1484" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1485" ordinal="1433" sl="1485" sc="1" el="1485" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1486" ordinal="1434" sl="1486" sc="1" el="1486" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1487" ordinal="1435" sl="1487" sc="1" el="1487" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1488" ordinal="1436" sl="1488" sc="1" el="1488" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1489" ordinal="1437" sl="1489" sc="1" el="1489" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1490" ordinal="1438" sl="1490" sc="1" el="1490" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1491" ordinal="1439" sl="1491" sc="1" el="1491" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1492" ordinal="1440" sl="1492" sc="1" el="1492" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1493" ordinal="1441" sl="1493" sc="1" el="1493" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1495" ordinal="1442" sl="1495" sc="1" el="1495" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1496" ordinal="1443" sl="1496" sc="1" el="1496" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1497" ordinal="1444" sl="1497" sc="1" el="1497" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1498" ordinal="1445" sl="1498" sc="1" el="1498" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1499" ordinal="1446" sl="1499" sc="1" el="1499" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1500" ordinal="1447" sl="1500" sc="1" el="1500" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1501" ordinal="1448" sl="1501" sc="1" el="1501" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1502" ordinal="1449" sl="1502" sc="1" el="1502" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1503" ordinal="1450" sl="1503" sc="1" el="1503" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1504" ordinal="1451" sl="1504" sc="1" el="1504" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1505" ordinal="1452" sl="1505" sc="1" el="1505" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1506" ordinal="1453" sl="1506" sc="1" el="1506" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1507" ordinal="1454" sl="1507" sc="1" el="1507" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1508" ordinal="1455" sl="1508" sc="1" el="1508" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1509" ordinal="1456" sl="1509" sc="1" el="1509" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1510" ordinal="1457" sl="1510" sc="1" el="1510" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1511" ordinal="1458" sl="1511" sc="1" el="1511" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1512" ordinal="1459" sl="1512" sc="1" el="1512" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1513" ordinal="1460" sl="1513" sc="1" el="1513" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1514" ordinal="1461" sl="1514" sc="1" el="1514" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1515" ordinal="1462" sl="1515" sc="1" el="1515" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1516" ordinal="1463" sl="1516" sc="1" el="1516" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1517" ordinal="1464" sl="1517" sc="1" el="1517" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1518" ordinal="1465" sl="1518" sc="1" el="1518" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1519" ordinal="1466" sl="1519" sc="1" el="1519" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1520" ordinal="1467" sl="1520" sc="1" el="1520" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1521" ordinal="1468" sl="1521" sc="1" el="1521" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1522" ordinal="1469" sl="1522" sc="1" el="1522" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1523" ordinal="1470" sl="1523" sc="1" el="1523" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1524" ordinal="1471" sl="1524" sc="1" el="1524" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1525" ordinal="1472" sl="1525" sc="1" el="1525" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1526" ordinal="1473" sl="1526" sc="1" el="1526" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1527" ordinal="1474" sl="1527" sc="1" el="1527" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1528" ordinal="1475" sl="1528" sc="1" el="1528" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1529" ordinal="1476" sl="1529" sc="1" el="1529" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1530" ordinal="1477" sl="1530" sc="1" el="1530" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1531" ordinal="1478" sl="1531" sc="1" el="1531" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1532" ordinal="1479" sl="1532" sc="1" el="1532" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1533" ordinal="1480" sl="1533" sc="1" el="1533" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1534" ordinal="1481" sl="1534" sc="1" el="1534" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1535" ordinal="1482" sl="1535" sc="1" el="1535" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1536" ordinal="1483" sl="1536" sc="1" el="1536" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1537" ordinal="1484" sl="1537" sc="1" el="1537" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1538" ordinal="1485" sl="1538" sc="1" el="1538" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1539" ordinal="1486" sl="1539" sc="1" el="1539" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1540" ordinal="1487" sl="1540" sc="1" el="1540" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1541" ordinal="1488" sl="1541" sc="1" el="1541" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1542" ordinal="1489" sl="1542" sc="1" el="1542" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1544" ordinal="1490" sl="1544" sc="1" el="1544" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1545" ordinal="1491" sl="1545" sc="1" el="1545" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1546" ordinal="1492" sl="1546" sc="1" el="1546" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1547" ordinal="1493" sl="1547" sc="1" el="1547" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1548" ordinal="1494" sl="1548" sc="1" el="1548" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1549" ordinal="1495" sl="1549" sc="1" el="1549" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1550" ordinal="1496" sl="1550" sc="1" el="1550" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1551" ordinal="1497" sl="1551" sc="1" el="1551" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1552" ordinal="1498" sl="1552" sc="1" el="1552" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1553" ordinal="1499" sl="1553" sc="1" el="1553" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1554" ordinal="1500" sl="1554" sc="1" el="1554" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1555" ordinal="1501" sl="1555" sc="1" el="1555" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1556" ordinal="1502" sl="1556" sc="1" el="1556" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1557" ordinal="1503" sl="1557" sc="1" el="1557" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1558" ordinal="1504" sl="1558" sc="1" el="1558" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1559" ordinal="1505" sl="1559" sc="1" el="1559" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1560" ordinal="1506" sl="1560" sc="1" el="1560" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1561" ordinal="1507" sl="1561" sc="1" el="1561" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1562" ordinal="1508" sl="1562" sc="1" el="1562" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1563" ordinal="1509" sl="1563" sc="1" el="1563" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1564" ordinal="1510" sl="1564" sc="1" el="1564" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1565" ordinal="1511" sl="1565" sc="1" el="1565" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1566" ordinal="1512" sl="1566" sc="1" el="1566" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1567" ordinal="1513" sl="1567" sc="1" el="1567" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1568" ordinal="1514" sl="1568" sc="1" el="1568" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1569" ordinal="1515" sl="1569" sc="1" el="1569" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1571" ordinal="1516" sl="1571" sc="1" el="1571" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1572" ordinal="1517" sl="1572" sc="1" el="1572" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1573" ordinal="1518" sl="1573" sc="1" el="1573" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1574" ordinal="1519" sl="1574" sc="1" el="1574" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1575" ordinal="1520" sl="1575" sc="1" el="1575" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1576" ordinal="1521" sl="1576" sc="1" el="1576" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1577" ordinal="1522" sl="1577" sc="1" el="1577" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1578" ordinal="1523" sl="1578" sc="1" el="1578" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1579" ordinal="1524" sl="1579" sc="1" el="1579" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1580" ordinal="1525" sl="1580" sc="1" el="1580" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1581" ordinal="1526" sl="1581" sc="1" el="1581" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1582" ordinal="1527" sl="1582" sc="1" el="1582" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1583" ordinal="1528" sl="1583" sc="1" el="1583" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1584" ordinal="1529" sl="1584" sc="1" el="1584" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1585" ordinal="1530" sl="1585" sc="1" el="1585" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1586" ordinal="1531" sl="1586" sc="1" el="1586" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1587" ordinal="1532" sl="1587" sc="1" el="1587" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1588" ordinal="1533" sl="1588" sc="1" el="1588" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1589" ordinal="1534" sl="1589" sc="1" el="1589" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1590" ordinal="1535" sl="1590" sc="1" el="1590" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1591" ordinal="1536" sl="1591" sc="1" el="1591" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1592" ordinal="1537" sl="1592" sc="1" el="1592" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1594" ordinal="1538" sl="1594" sc="1" el="1594" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1595" ordinal="1539" sl="1595" sc="1" el="1595" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1596" ordinal="1540" sl="1596" sc="1" el="1596" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1597" ordinal="1541" sl="1597" sc="1" el="1597" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1598" ordinal="1542" sl="1598" sc="1" el="1598" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1599" ordinal="1543" sl="1599" sc="1" el="1599" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1600" ordinal="1544" sl="1600" sc="1" el="1600" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1601" ordinal="1545" sl="1601" sc="1" el="1601" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1602" ordinal="1546" sl="1602" sc="1" el="1602" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1603" ordinal="1547" sl="1603" sc="1" el="1603" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1604" ordinal="1548" sl="1604" sc="1" el="1604" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1605" ordinal="1549" sl="1605" sc="1" el="1605" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1606" ordinal="1550" sl="1606" sc="1" el="1606" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1607" ordinal="1551" sl="1607" sc="1" el="1607" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1608" ordinal="1552" sl="1608" sc="1" el="1608" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1609" ordinal="1553" sl="1609" sc="1" el="1609" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1610" ordinal="1554" sl="1610" sc="1" el="1610" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1611" ordinal="1555" sl="1611" sc="1" el="1611" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1612" ordinal="1556" sl="1612" sc="1" el="1612" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1613" ordinal="1557" sl="1613" sc="1" el="1613" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1614" ordinal="1558" sl="1614" sc="1" el="1614" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1615" ordinal="1559" sl="1615" sc="1" el="1615" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1616" ordinal="1560" sl="1616" sc="1" el="1616" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1617" ordinal="1561" sl="1617" sc="1" el="1617" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1618" ordinal="1562" sl="1618" sc="1" el="1618" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1619" ordinal="1563" sl="1619" sc="1" el="1619" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1620" ordinal="1564" sl="1620" sc="1" el="1620" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1621" ordinal="1565" sl="1621" sc="1" el="1621" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1622" ordinal="1566" sl="1622" sc="1" el="1622" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1623" ordinal="1567" sl="1623" sc="1" el="1623" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1624" ordinal="1568" sl="1624" sc="1" el="1624" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1625" ordinal="1569" sl="1625" sc="1" el="1625" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1626" ordinal="1570" sl="1626" sc="1" el="1626" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1627" ordinal="1571" sl="1627" sc="1" el="1627" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1628" ordinal="1572" sl="1628" sc="1" el="1628" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1629" ordinal="1573" sl="1629" sc="1" el="1629" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1630" ordinal="1574" sl="1630" sc="1" el="1630" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1631" ordinal="1575" sl="1631" sc="1" el="1631" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1632" ordinal="1576" sl="1632" sc="1" el="1632" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1633" ordinal="1577" sl="1633" sc="1" el="1633" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1634" ordinal="1578" sl="1634" sc="1" el="1634" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1635" ordinal="1579" sl="1635" sc="1" el="1635" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1636" ordinal="1580" sl="1636" sc="1" el="1636" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1637" ordinal="1581" sl="1637" sc="1" el="1637" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1638" ordinal="1582" sl="1638" sc="1" el="1638" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1639" ordinal="1583" sl="1639" sc="1" el="1639" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1640" ordinal="1584" sl="1640" sc="1" el="1640" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1641" ordinal="1585" sl="1641" sc="1" el="1641" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1642" ordinal="1586" sl="1642" sc="1" el="1642" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1643" ordinal="1587" sl="1643" sc="1" el="1643" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1644" ordinal="1588" sl="1644" sc="1" el="1644" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1645" ordinal="1589" sl="1645" sc="1" el="1645" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1646" ordinal="1590" sl="1646" sc="1" el="1646" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1647" ordinal="1591" sl="1647" sc="1" el="1647" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1648" ordinal="1592" sl="1648" sc="1" el="1648" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1649" ordinal="1593" sl="1649" sc="1" el="1649" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1650" ordinal="1594" sl="1650" sc="1" el="1650" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1651" ordinal="1595" sl="1651" sc="1" el="1651" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1652" ordinal="1596" sl="1652" sc="1" el="1652" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1653" ordinal="1597" sl="1653" sc="1" el="1653" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1654" ordinal="1598" sl="1654" sc="1" el="1654" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1655" ordinal="1599" sl="1655" sc="1" el="1655" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1656" ordinal="1600" sl="1656" sc="1" el="1656" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1657" ordinal="1601" sl="1657" sc="1" el="1657" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1658" ordinal="1602" sl="1658" sc="1" el="1658" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1659" ordinal="1603" sl="1659" sc="1" el="1659" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1660" ordinal="1604" sl="1660" sc="1" el="1660" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1661" ordinal="1605" sl="1661" sc="1" el="1661" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1662" ordinal="1606" sl="1662" sc="1" el="1662" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1663" ordinal="1607" sl="1663" sc="1" el="1663" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1665" ordinal="1608" sl="1665" sc="1" el="1665" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1666" ordinal="1609" sl="1666" sc="1" el="1666" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1667" ordinal="1610" sl="1667" sc="1" el="1667" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1668" ordinal="1611" sl="1668" sc="1" el="1668" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1669" ordinal="1612" sl="1669" sc="1" el="1669" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1670" ordinal="1613" sl="1670" sc="1" el="1670" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1671" ordinal="1614" sl="1671" sc="1" el="1671" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1672" ordinal="1615" sl="1672" sc="1" el="1672" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1673" ordinal="1616" sl="1673" sc="1" el="1673" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1674" ordinal="1617" sl="1674" sc="1" el="1674" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1675" ordinal="1618" sl="1675" sc="1" el="1675" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1676" ordinal="1619" sl="1676" sc="1" el="1676" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1677" ordinal="1620" sl="1677" sc="1" el="1677" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1678" ordinal="1621" sl="1678" sc="1" el="1678" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1679" ordinal="1622" sl="1679" sc="1" el="1679" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1680" ordinal="1623" sl="1680" sc="1" el="1680" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1681" ordinal="1624" sl="1681" sc="1" el="1681" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1682" ordinal="1625" sl="1682" sc="1" el="1682" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1683" ordinal="1626" sl="1683" sc="1" el="1683" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1684" ordinal="1627" sl="1684" sc="1" el="1684" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1685" ordinal="1628" sl="1685" sc="1" el="1685" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1686" ordinal="1629" sl="1686" sc="1" el="1686" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1687" ordinal="1630" sl="1687" sc="1" el="1687" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1688" ordinal="1631" sl="1688" sc="1" el="1688" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1689" ordinal="1632" sl="1689" sc="1" el="1689" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1690" ordinal="1633" sl="1690" sc="1" el="1690" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1691" ordinal="1634" sl="1691" sc="1" el="1691" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1692" ordinal="1635" sl="1692" sc="1" el="1692" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1693" ordinal="1636" sl="1693" sc="1" el="1693" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1694" ordinal="1637" sl="1694" sc="1" el="1694" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1695" ordinal="1638" sl="1695" sc="1" el="1695" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1696" ordinal="1639" sl="1696" sc="1" el="1696" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1697" ordinal="1640" sl="1697" sc="1" el="1697" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1698" ordinal="1641" sl="1698" sc="1" el="1698" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1700" ordinal="1642" sl="1700" sc="1" el="1700" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1701" ordinal="1643" sl="1701" sc="1" el="1701" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1702" ordinal="1644" sl="1702" sc="1" el="1702" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1703" ordinal="1645" sl="1703" sc="1" el="1703" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1704" ordinal="1646" sl="1704" sc="1" el="1704" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1705" ordinal="1647" sl="1705" sc="1" el="1705" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1706" ordinal="1648" sl="1706" sc="1" el="1706" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1707" ordinal="1649" sl="1707" sc="1" el="1707" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1708" ordinal="1650" sl="1708" sc="1" el="1708" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1709" ordinal="1651" sl="1709" sc="1" el="1709" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1710" ordinal="1652" sl="1710" sc="1" el="1710" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1711" ordinal="1653" sl="1711" sc="1" el="1711" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1712" ordinal="1654" sl="1712" sc="1" el="1712" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1713" ordinal="1655" sl="1713" sc="1" el="1713" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1714" ordinal="1656" sl="1714" sc="1" el="1714" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1715" ordinal="1657" sl="1715" sc="1" el="1715" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1716" ordinal="1658" sl="1716" sc="1" el="1716" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1717" ordinal="1659" sl="1717" sc="1" el="1717" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1718" ordinal="1660" sl="1718" sc="1" el="1718" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1719" ordinal="1661" sl="1719" sc="1" el="1719" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1720" ordinal="1662" sl="1720" sc="1" el="1720" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1721" ordinal="1663" sl="1721" sc="1" el="1721" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1722" ordinal="1664" sl="1722" sc="1" el="1722" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1723" ordinal="1665" sl="1723" sc="1" el="1723" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1724" ordinal="1666" sl="1724" sc="1" el="1724" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1725" ordinal="1667" sl="1725" sc="1" el="1725" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1726" ordinal="1668" sl="1726" sc="1" el="1726" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1727" ordinal="1669" sl="1727" sc="1" el="1727" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1728" ordinal="1670" sl="1728" sc="1" el="1728" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1729" ordinal="1671" sl="1729" sc="1" el="1729" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1730" ordinal="1672" sl="1730" sc="1" el="1730" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1731" ordinal="1673" sl="1731" sc="1" el="1731" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1732" ordinal="1674" sl="1732" sc="1" el="1732" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1733" ordinal="1675" sl="1733" sc="1" el="1733" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1734" ordinal="1676" sl="1734" sc="1" el="1734" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1735" ordinal="1677" sl="1735" sc="1" el="1735" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1737" ordinal="1678" sl="1737" sc="1" el="1737" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1738" ordinal="1679" sl="1738" sc="1" el="1738" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1739" ordinal="1680" sl="1739" sc="1" el="1739" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1740" ordinal="1681" sl="1740" sc="1" el="1740" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1741" ordinal="1682" sl="1741" sc="1" el="1741" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1742" ordinal="1683" sl="1742" sc="1" el="1742" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1743" ordinal="1684" sl="1743" sc="1" el="1743" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1744" ordinal="1685" sl="1744" sc="1" el="1744" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1745" ordinal="1686" sl="1745" sc="1" el="1745" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1746" ordinal="1687" sl="1746" sc="1" el="1746" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1747" ordinal="1688" sl="1747" sc="1" el="1747" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1748" ordinal="1689" sl="1748" sc="1" el="1748" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1749" ordinal="1690" sl="1749" sc="1" el="1749" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1750" ordinal="1691" sl="1750" sc="1" el="1750" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1751" ordinal="1692" sl="1751" sc="1" el="1751" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1752" ordinal="1693" sl="1752" sc="1" el="1752" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1753" ordinal="1694" sl="1753" sc="1" el="1753" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1754" ordinal="1695" sl="1754" sc="1" el="1754" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1755" ordinal="1696" sl="1755" sc="1" el="1755" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1756" ordinal="1697" sl="1756" sc="1" el="1756" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1757" ordinal="1698" sl="1757" sc="1" el="1757" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1758" ordinal="1699" sl="1758" sc="1" el="1758" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1759" ordinal="1700" sl="1759" sc="1" el="1759" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1760" ordinal="1701" sl="1760" sc="1" el="1760" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1761" ordinal="1702" sl="1761" sc="1" el="1761" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1762" ordinal="1703" sl="1762" sc="1" el="1762" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1763" ordinal="1704" sl="1763" sc="1" el="1763" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1764" ordinal="1705" sl="1764" sc="1" el="1764" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1765" ordinal="1706" sl="1765" sc="1" el="1765" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1766" ordinal="1707" sl="1766" sc="1" el="1766" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1767" ordinal="1708" sl="1767" sc="1" el="1767" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1768" ordinal="1709" sl="1768" sc="1" el="1768" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1769" ordinal="1710" sl="1769" sc="1" el="1769" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1770" ordinal="1711" sl="1770" sc="1" el="1770" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1771" ordinal="1712" sl="1771" sc="1" el="1771" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1772" ordinal="1713" sl="1772" sc="1" el="1772" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1773" ordinal="1714" sl="1773" sc="1" el="1773" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1774" ordinal="1715" sl="1774" sc="1" el="1774" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1775" ordinal="1716" sl="1775" sc="1" el="1775" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1776" ordinal="1717" sl="1776" sc="1" el="1776" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1777" ordinal="1718" sl="1777" sc="1" el="1777" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1778" ordinal="1719" sl="1778" sc="1" el="1778" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1779" ordinal="1720" sl="1779" sc="1" el="1779" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1780" ordinal="1721" sl="1780" sc="1" el="1780" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1781" ordinal="1722" sl="1781" sc="1" el="1781" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1782" ordinal="1723" sl="1782" sc="1" el="1782" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1783" ordinal="1724" sl="1783" sc="1" el="1783" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1784" ordinal="1725" sl="1784" sc="1" el="1784" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1785" ordinal="1726" sl="1785" sc="1" el="1785" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1786" ordinal="1727" sl="1786" sc="1" el="1786" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1787" ordinal="1728" sl="1787" sc="1" el="1787" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1788" ordinal="1729" sl="1788" sc="1" el="1788" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1789" ordinal="1730" sl="1789" sc="1" el="1789" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1790" ordinal="1731" sl="1790" sc="1" el="1790" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1791" ordinal="1732" sl="1791" sc="1" el="1791" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1792" ordinal="1733" sl="1792" sc="1" el="1792" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1793" ordinal="1734" sl="1793" sc="1" el="1793" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1794" ordinal="1735" sl="1794" sc="1" el="1794" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1795" ordinal="1736" sl="1795" sc="1" el="1795" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1796" ordinal="1737" sl="1796" sc="1" el="1796" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1797" ordinal="1738" sl="1797" sc="1" el="1797" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1798" ordinal="1739" sl="1798" sc="1" el="1798" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1799" ordinal="1740" sl="1799" sc="1" el="1799" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1800" ordinal="1741" sl="1800" sc="1" el="1800" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1801" ordinal="1742" sl="1801" sc="1" el="1801" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1802" ordinal="1743" sl="1802" sc="1" el="1802" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1803" ordinal="1744" sl="1803" sc="1" el="1803" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1804" ordinal="1745" sl="1804" sc="1" el="1804" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1805" ordinal="1746" sl="1805" sc="1" el="1805" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1806" ordinal="1747" sl="1806" sc="1" el="1806" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1807" ordinal="1748" sl="1807" sc="1" el="1807" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1808" ordinal="1749" sl="1808" sc="1" el="1808" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1809" ordinal="1750" sl="1809" sc="1" el="1809" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1810" ordinal="1751" sl="1810" sc="1" el="1810" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1811" ordinal="1752" sl="1811" sc="1" el="1811" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1812" ordinal="1753" sl="1812" sc="1" el="1812" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1813" ordinal="1754" sl="1813" sc="1" el="1813" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1814" ordinal="1755" sl="1814" sc="1" el="1814" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1815" ordinal="1756" sl="1815" sc="1" el="1815" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1816" ordinal="1757" sl="1816" sc="1" el="1816" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1817" ordinal="1758" sl="1817" sc="1" el="1817" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1818" ordinal="1759" sl="1818" sc="1" el="1818" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1819" ordinal="1760" sl="1819" sc="1" el="1819" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1820" ordinal="1761" sl="1820" sc="1" el="1820" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1821" ordinal="1762" sl="1821" sc="1" el="1821" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1822" ordinal="1763" sl="1822" sc="1" el="1822" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1823" ordinal="1764" sl="1823" sc="1" el="1823" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1824" ordinal="1765" sl="1824" sc="1" el="1824" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1825" ordinal="1766" sl="1825" sc="1" el="1825" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1826" ordinal="1767" sl="1826" sc="1" el="1826" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1827" ordinal="1768" sl="1827" sc="1" el="1827" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1828" ordinal="1769" sl="1828" sc="1" el="1828" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1829" ordinal="1770" sl="1829" sc="1" el="1829" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1830" ordinal="1771" sl="1830" sc="1" el="1830" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1831" ordinal="1772" sl="1831" sc="1" el="1831" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1832" ordinal="1773" sl="1832" sc="1" el="1832" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1833" ordinal="1774" sl="1833" sc="1" el="1833" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1834" ordinal="1775" sl="1834" sc="1" el="1834" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1835" ordinal="1776" sl="1835" sc="1" el="1835" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1836" ordinal="1777" sl="1836" sc="1" el="1836" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1837" ordinal="1778" sl="1837" sc="1" el="1837" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1838" ordinal="1779" sl="1838" sc="1" el="1838" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1839" ordinal="1780" sl="1839" sc="1" el="1839" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1840" ordinal="1781" sl="1840" sc="1" el="1840" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1841" ordinal="1782" sl="1841" sc="1" el="1841" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1842" ordinal="1783" sl="1842" sc="1" el="1842" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1843" ordinal="1784" sl="1843" sc="1" el="1843" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1844" ordinal="1785" sl="1844" sc="1" el="1844" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1845" ordinal="1786" sl="1845" sc="1" el="1845" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1846" ordinal="1787" sl="1846" sc="1" el="1846" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1847" ordinal="1788" sl="1847" sc="1" el="1847" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1848" ordinal="1789" sl="1848" sc="1" el="1848" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1849" ordinal="1790" sl="1849" sc="1" el="1849" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1850" ordinal="1791" sl="1850" sc="1" el="1850" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1851" ordinal="1792" sl="1851" sc="1" el="1851" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1852" ordinal="1793" sl="1852" sc="1" el="1852" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1853" ordinal="1794" sl="1853" sc="1" el="1853" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1854" ordinal="1795" sl="1854" sc="1" el="1854" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1855" ordinal="1796" sl="1855" sc="1" el="1855" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1856" ordinal="1797" sl="1856" sc="1" el="1856" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1857" ordinal="1798" sl="1857" sc="1" el="1857" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1858" ordinal="1799" sl="1858" sc="1" el="1858" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1859" ordinal="1800" sl="1859" sc="1" el="1859" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1860" ordinal="1801" sl="1860" sc="1" el="1860" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1861" ordinal="1802" sl="1861" sc="1" el="1861" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1862" ordinal="1803" sl="1862" sc="1" el="1862" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1863" ordinal="1804" sl="1863" sc="1" el="1863" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1864" ordinal="1805" sl="1864" sc="1" el="1864" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1865" ordinal="1806" sl="1865" sc="1" el="1865" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1866" ordinal="1807" sl="1866" sc="1" el="1866" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1867" ordinal="1808" sl="1867" sc="1" el="1867" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1868" ordinal="1809" sl="1868" sc="1" el="1868" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1869" ordinal="1810" sl="1869" sc="1" el="1869" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1870" ordinal="1811" sl="1870" sc="1" el="1870" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1871" ordinal="1812" sl="1871" sc="1" el="1871" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1872" ordinal="1813" sl="1872" sc="1" el="1872" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1873" ordinal="1814" sl="1873" sc="1" el="1873" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1874" ordinal="1815" sl="1874" sc="1" el="1874" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1875" ordinal="1816" sl="1875" sc="1" el="1875" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1876" ordinal="1817" sl="1876" sc="1" el="1876" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1877" ordinal="1818" sl="1877" sc="1" el="1877" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1878" ordinal="1819" sl="1878" sc="1" el="1878" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1879" ordinal="1820" sl="1879" sc="1" el="1879" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1881" ordinal="1821" sl="1881" sc="1" el="1881" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1882" ordinal="1822" sl="1882" sc="1" el="1882" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1883" ordinal="1823" sl="1883" sc="1" el="1883" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1884" ordinal="1824" sl="1884" sc="1" el="1884" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1885" ordinal="1825" sl="1885" sc="1" el="1885" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1886" ordinal="1826" sl="1886" sc="1" el="1886" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1887" ordinal="1827" sl="1887" sc="1" el="1887" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1888" ordinal="1828" sl="1888" sc="1" el="1888" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1889" ordinal="1829" sl="1889" sc="1" el="1889" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1890" ordinal="1830" sl="1890" sc="1" el="1890" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1891" ordinal="1831" sl="1891" sc="1" el="1891" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1892" ordinal="1832" sl="1892" sc="1" el="1892" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1893" ordinal="1833" sl="1893" sc="1" el="1893" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1894" ordinal="1834" sl="1894" sc="1" el="1894" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1895" ordinal="1835" sl="1895" sc="1" el="1895" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1896" ordinal="1836" sl="1896" sc="1" el="1896" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1897" ordinal="1837" sl="1897" sc="1" el="1897" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1898" ordinal="1838" sl="1898" sc="1" el="1898" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1899" ordinal="1839" sl="1899" sc="1" el="1899" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1900" ordinal="1840" sl="1900" sc="1" el="1900" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1901" ordinal="1841" sl="1901" sc="1" el="1901" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1902" ordinal="1842" sl="1902" sc="1" el="1902" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1903" ordinal="1843" sl="1903" sc="1" el="1903" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1904" ordinal="1844" sl="1904" sc="1" el="1904" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1906" ordinal="1845" sl="1906" sc="1" el="1906" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1907" ordinal="1846" sl="1907" sc="1" el="1907" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1908" ordinal="1847" sl="1908" sc="1" el="1908" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1909" ordinal="1848" sl="1909" sc="1" el="1909" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1910" ordinal="1849" sl="1910" sc="1" el="1910" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1911" ordinal="1850" sl="1911" sc="1" el="1911" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1912" ordinal="1851" sl="1912" sc="1" el="1912" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1913" ordinal="1852" sl="1913" sc="1" el="1913" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1914" ordinal="1853" sl="1914" sc="1" el="1914" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1915" ordinal="1854" sl="1915" sc="1" el="1915" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1916" ordinal="1855" sl="1916" sc="1" el="1916" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1917" ordinal="1856" sl="1917" sc="1" el="1917" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1918" ordinal="1857" sl="1918" sc="1" el="1918" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1919" ordinal="1858" sl="1919" sc="1" el="1919" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1920" ordinal="1859" sl="1920" sc="1" el="1920" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1921" ordinal="1860" sl="1921" sc="1" el="1921" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1923" ordinal="1861" sl="1923" sc="1" el="1923" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1924" ordinal="1862" sl="1924" sc="1" el="1924" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1925" ordinal="1863" sl="1925" sc="1" el="1925" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1926" ordinal="1864" sl="1926" sc="1" el="1926" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1927" ordinal="1865" sl="1927" sc="1" el="1927" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1928" ordinal="1866" sl="1928" sc="1" el="1928" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1929" ordinal="1867" sl="1929" sc="1" el="1929" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1930" ordinal="1868" sl="1930" sc="1" el="1930" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1931" ordinal="1869" sl="1931" sc="1" el="1931" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1932" ordinal="1870" sl="1932" sc="1" el="1932" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1933" ordinal="1871" sl="1933" sc="1" el="1933" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1934" ordinal="1872" sl="1934" sc="1" el="1934" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1935" ordinal="1873" sl="1935" sc="1" el="1935" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1936" ordinal="1874" sl="1936" sc="1" el="1936" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1937" ordinal="1875" sl="1937" sc="1" el="1937" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1938" ordinal="1876" sl="1938" sc="1" el="1938" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1939" ordinal="1877" sl="1939" sc="1" el="1939" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1940" ordinal="1878" sl="1940" sc="1" el="1940" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1941" ordinal="1879" sl="1941" sc="1" el="1941" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1942" ordinal="1880" sl="1942" sc="1" el="1942" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1943" ordinal="1881" sl="1943" sc="1" el="1943" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1944" ordinal="1882" sl="1944" sc="1" el="1944" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1945" ordinal="1883" sl="1945" sc="1" el="1945" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1946" ordinal="1884" sl="1946" sc="1" el="1946" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1947" ordinal="1885" sl="1947" sc="1" el="1947" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1948" ordinal="1886" sl="1948" sc="1" el="1948" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1949" ordinal="1887" sl="1949" sc="1" el="1949" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1950" ordinal="1888" sl="1950" sc="1" el="1950" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1951" ordinal="1889" sl="1951" sc="1" el="1951" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1952" ordinal="1890" sl="1952" sc="1" el="1952" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1953" ordinal="1891" sl="1953" sc="1" el="1953" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1954" ordinal="1892" sl="1954" sc="1" el="1954" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1955" ordinal="1893" sl="1955" sc="1" el="1955" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1956" ordinal="1894" sl="1956" sc="1" el="1956" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1958" ordinal="1895" sl="1958" sc="1" el="1958" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1959" ordinal="1896" sl="1959" sc="1" el="1959" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1960" ordinal="1897" sl="1960" sc="1" el="1960" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1961" ordinal="1898" sl="1961" sc="1" el="1961" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1962" ordinal="1899" sl="1962" sc="1" el="1962" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1963" ordinal="1900" sl="1963" sc="1" el="1963" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1964" ordinal="1901" sl="1964" sc="1" el="1964" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1965" ordinal="1902" sl="1965" sc="1" el="1965" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1966" ordinal="1903" sl="1966" sc="1" el="1966" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1967" ordinal="1904" sl="1967" sc="1" el="1967" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1968" ordinal="1905" sl="1968" sc="1" el="1968" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1969" ordinal="1906" sl="1969" sc="1" el="1969" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1970" ordinal="1907" sl="1970" sc="1" el="1970" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1971" ordinal="1908" sl="1971" sc="1" el="1971" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1972" ordinal="1909" sl="1972" sc="1" el="1972" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1973" ordinal="1910" sl="1973" sc="1" el="1973" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1974" ordinal="1911" sl="1974" sc="1" el="1974" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1975" ordinal="1912" sl="1975" sc="1" el="1975" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1976" ordinal="1913" sl="1976" sc="1" el="1976" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1977" ordinal="1914" sl="1977" sc="1" el="1977" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1978" ordinal="1915" sl="1978" sc="1" el="1978" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1979" ordinal="1916" sl="1979" sc="1" el="1979" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1980" ordinal="1917" sl="1980" sc="1" el="1980" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1981" ordinal="1918" sl="1981" sc="1" el="1981" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1982" ordinal="1919" sl="1982" sc="1" el="1982" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1983" ordinal="1920" sl="1983" sc="1" el="1983" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1984" ordinal="1921" sl="1984" sc="1" el="1984" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1985" ordinal="1922" sl="1985" sc="1" el="1985" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1986" ordinal="1923" sl="1986" sc="1" el="1986" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1987" ordinal="1924" sl="1987" sc="1" el="1987" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1988" ordinal="1925" sl="1988" sc="1" el="1988" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1989" ordinal="1926" sl="1989" sc="1" el="1989" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1990" ordinal="1927" sl="1990" sc="1" el="1990" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1991" ordinal="1928" sl="1991" sc="1" el="1991" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1992" ordinal="1929" sl="1992" sc="1" el="1992" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1993" ordinal="1930" sl="1993" sc="1" el="1993" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1994" ordinal="1931" sl="1994" sc="1" el="1994" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1995" ordinal="1932" sl="1995" sc="1" el="1995" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1996" ordinal="1933" sl="1996" sc="1" el="1996" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1998" ordinal="1934" sl="1998" sc="1" el="1998" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="1999" ordinal="1935" sl="1999" sc="1" el="1999" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2000" ordinal="1936" sl="2000" sc="1" el="2000" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2001" ordinal="1937" sl="2001" sc="1" el="2001" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2002" ordinal="1938" sl="2002" sc="1" el="2002" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2003" ordinal="1939" sl="2003" sc="1" el="2003" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2004" ordinal="1940" sl="2004" sc="1" el="2004" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2005" ordinal="1941" sl="2005" sc="1" el="2005" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2006" ordinal="1942" sl="2006" sc="1" el="2006" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2007" ordinal="1943" sl="2007" sc="1" el="2007" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2008" ordinal="1944" sl="2008" sc="1" el="2008" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2009" ordinal="1945" sl="2009" sc="1" el="2009" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2010" ordinal="1946" sl="2010" sc="1" el="2010" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2011" ordinal="1947" sl="2011" sc="1" el="2011" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2012" ordinal="1948" sl="2012" sc="1" el="2012" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2013" ordinal="1949" sl="2013" sc="1" el="2013" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2014" ordinal="1950" sl="2014" sc="1" el="2014" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2015" ordinal="1951" sl="2015" sc="1" el="2015" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2016" ordinal="1952" sl="2016" sc="1" el="2016" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2017" ordinal="1953" sl="2017" sc="1" el="2017" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2018" ordinal="1954" sl="2018" sc="1" el="2018" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2019" ordinal="1955" sl="2019" sc="1" el="2019" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2020" ordinal="1956" sl="2020" sc="1" el="2020" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2021" ordinal="1957" sl="2021" sc="1" el="2021" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2022" ordinal="1958" sl="2022" sc="1" el="2022" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2023" ordinal="1959" sl="2023" sc="1" el="2023" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2024" ordinal="1960" sl="2024" sc="1" el="2024" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2025" ordinal="1961" sl="2025" sc="1" el="2025" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2026" ordinal="1962" sl="2026" sc="1" el="2026" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2027" ordinal="1963" sl="2027" sc="1" el="2027" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2028" ordinal="1964" sl="2028" sc="1" el="2028" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2029" ordinal="1965" sl="2029" sc="1" el="2029" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2030" ordinal="1966" sl="2030" sc="1" el="2030" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2031" ordinal="1967" sl="2031" sc="1" el="2031" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2032" ordinal="1968" sl="2032" sc="1" el="2032" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2033" ordinal="1969" sl="2033" sc="1" el="2033" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2034" ordinal="1970" sl="2034" sc="1" el="2034" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2035" ordinal="1971" sl="2035" sc="1" el="2035" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2036" ordinal="1972" sl="2036" sc="1" el="2036" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2037" ordinal="1973" sl="2037" sc="1" el="2037" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2038" ordinal="1974" sl="2038" sc="1" el="2038" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2039" ordinal="1975" sl="2039" sc="1" el="2039" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2040" ordinal="1976" sl="2040" sc="1" el="2040" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2041" ordinal="1977" sl="2041" sc="1" el="2041" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2042" ordinal="1978" sl="2042" sc="1" el="2042" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2043" ordinal="1979" sl="2043" sc="1" el="2043" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2044" ordinal="1980" sl="2044" sc="1" el="2044" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2045" ordinal="1981" sl="2045" sc="1" el="2045" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2046" ordinal="1982" sl="2046" sc="1" el="2046" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2047" ordinal="1983" sl="2047" sc="1" el="2047" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2048" ordinal="1984" sl="2048" sc="1" el="2048" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2049" ordinal="1985" sl="2049" sc="1" el="2049" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2050" ordinal="1986" sl="2050" sc="1" el="2050" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2051" ordinal="1987" sl="2051" sc="1" el="2051" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2052" ordinal="1988" sl="2052" sc="1" el="2052" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2053" ordinal="1989" sl="2053" sc="1" el="2053" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2054" ordinal="1990" sl="2054" sc="1" el="2054" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2055" ordinal="1991" sl="2055" sc="1" el="2055" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2056" ordinal="1992" sl="2056" sc="1" el="2056" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2057" ordinal="1993" sl="2057" sc="1" el="2057" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2058" ordinal="1994" sl="2058" sc="1" el="2058" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2060" ordinal="1995" sl="2060" sc="1" el="2060" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2061" ordinal="1996" sl="2061" sc="1" el="2061" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2062" ordinal="1997" sl="2062" sc="1" el="2062" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2063" ordinal="1998" sl="2063" sc="1" el="2063" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2064" ordinal="1999" sl="2064" sc="1" el="2064" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2065" ordinal="2000" sl="2065" sc="1" el="2065" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2066" ordinal="2001" sl="2066" sc="1" el="2066" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2067" ordinal="2002" sl="2067" sc="1" el="2067" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2068" ordinal="2003" sl="2068" sc="1" el="2068" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2069" ordinal="2004" sl="2069" sc="1" el="2069" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2070" ordinal="2005" sl="2070" sc="1" el="2070" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2071" ordinal="2006" sl="2071" sc="1" el="2071" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2072" ordinal="2007" sl="2072" sc="1" el="2072" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2073" ordinal="2008" sl="2073" sc="1" el="2073" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2074" ordinal="2009" sl="2074" sc="1" el="2074" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2075" ordinal="2010" sl="2075" sc="1" el="2075" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2076" ordinal="2011" sl="2076" sc="1" el="2076" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2077" ordinal="2012" sl="2077" sc="1" el="2077" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2078" ordinal="2013" sl="2078" sc="1" el="2078" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2079" ordinal="2014" sl="2079" sc="1" el="2079" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2080" ordinal="2015" sl="2080" sc="1" el="2080" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2081" ordinal="2016" sl="2081" sc="1" el="2081" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2082" ordinal="2017" sl="2082" sc="1" el="2082" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2083" ordinal="2018" sl="2083" sc="1" el="2083" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2084" ordinal="2019" sl="2084" sc="1" el="2084" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2085" ordinal="2020" sl="2085" sc="1" el="2085" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2086" ordinal="2021" sl="2086" sc="1" el="2086" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2088" ordinal="2022" sl="2088" sc="1" el="2088" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2089" ordinal="2023" sl="2089" sc="1" el="2089" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2090" ordinal="2024" sl="2090" sc="1" el="2090" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2091" ordinal="2025" sl="2091" sc="1" el="2091" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2092" ordinal="2026" sl="2092" sc="1" el="2092" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2093" ordinal="2027" sl="2093" sc="1" el="2093" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2094" ordinal="2028" sl="2094" sc="1" el="2094" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2095" ordinal="2029" sl="2095" sc="1" el="2095" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2096" ordinal="2030" sl="2096" sc="1" el="2096" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2097" ordinal="2031" sl="2097" sc="1" el="2097" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2098" ordinal="2032" sl="2098" sc="1" el="2098" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2099" ordinal="2033" sl="2099" sc="1" el="2099" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2100" ordinal="2034" sl="2100" sc="1" el="2100" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2101" ordinal="2035" sl="2101" sc="1" el="2101" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2102" ordinal="2036" sl="2102" sc="1" el="2102" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2103" ordinal="2037" sl="2103" sc="1" el="2103" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2104" ordinal="2038" sl="2104" sc="1" el="2104" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2105" ordinal="2039" sl="2105" sc="1" el="2105" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2106" ordinal="2040" sl="2106" sc="1" el="2106" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2108" ordinal="2041" sl="2108" sc="1" el="2108" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2109" ordinal="2042" sl="2109" sc="1" el="2109" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2110" ordinal="2043" sl="2110" sc="1" el="2110" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2111" ordinal="2044" sl="2111" sc="1" el="2111" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2112" ordinal="2045" sl="2112" sc="1" el="2112" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2113" ordinal="2046" sl="2113" sc="1" el="2113" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2114" ordinal="2047" sl="2114" sc="1" el="2114" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2115" ordinal="2048" sl="2115" sc="1" el="2115" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2116" ordinal="2049" sl="2116" sc="1" el="2116" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2117" ordinal="2050" sl="2117" sc="1" el="2117" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2118" ordinal="2051" sl="2118" sc="1" el="2118" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2119" ordinal="2052" sl="2119" sc="1" el="2119" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2120" ordinal="2053" sl="2120" sc="1" el="2120" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2121" ordinal="2054" sl="2121" sc="1" el="2121" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2122" ordinal="2055" sl="2122" sc="1" el="2122" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2123" ordinal="2056" sl="2123" sc="1" el="2123" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2124" ordinal="2057" sl="2124" sc="1" el="2124" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2125" ordinal="2058" sl="2125" sc="1" el="2125" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2126" ordinal="2059" sl="2126" sc="1" el="2126" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2127" ordinal="2060" sl="2127" sc="1" el="2127" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2128" ordinal="2061" sl="2128" sc="1" el="2128" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2129" ordinal="2062" sl="2129" sc="1" el="2129" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2130" ordinal="2063" sl="2130" sc="1" el="2130" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2131" ordinal="2064" sl="2131" sc="1" el="2131" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2132" ordinal="2065" sl="2132" sc="1" el="2132" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2133" ordinal="2066" sl="2133" sc="1" el="2133" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2134" ordinal="2067" sl="2134" sc="1" el="2134" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2135" ordinal="2068" sl="2135" sc="1" el="2135" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2136" ordinal="2069" sl="2136" sc="1" el="2136" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2138" ordinal="2070" sl="2138" sc="1" el="2138" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2139" ordinal="2071" sl="2139" sc="1" el="2139" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2140" ordinal="2072" sl="2140" sc="1" el="2140" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2141" ordinal="2073" sl="2141" sc="1" el="2141" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2142" ordinal="2074" sl="2142" sc="1" el="2142" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2143" ordinal="2075" sl="2143" sc="1" el="2143" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2144" ordinal="2076" sl="2144" sc="1" el="2144" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2145" ordinal="2077" sl="2145" sc="1" el="2145" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2146" ordinal="2078" sl="2146" sc="1" el="2146" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2147" ordinal="2079" sl="2147" sc="1" el="2147" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2148" ordinal="2080" sl="2148" sc="1" el="2148" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2149" ordinal="2081" sl="2149" sc="1" el="2149" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2150" ordinal="2082" sl="2150" sc="1" el="2150" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2151" ordinal="2083" sl="2151" sc="1" el="2151" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2152" ordinal="2084" sl="2152" sc="1" el="2152" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2153" ordinal="2085" sl="2153" sc="1" el="2153" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2154" ordinal="2086" sl="2154" sc="1" el="2154" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2155" ordinal="2087" sl="2155" sc="1" el="2155" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2156" ordinal="2088" sl="2156" sc="1" el="2156" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2157" ordinal="2089" sl="2157" sc="1" el="2157" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2158" ordinal="2090" sl="2158" sc="1" el="2158" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2159" ordinal="2091" sl="2159" sc="1" el="2159" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2160" ordinal="2092" sl="2160" sc="1" el="2160" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2161" ordinal="2093" sl="2161" sc="1" el="2161" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2162" ordinal="2094" sl="2162" sc="1" el="2162" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2163" ordinal="2095" sl="2163" sc="1" el="2163" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2164" ordinal="2096" sl="2164" sc="1" el="2164" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2165" ordinal="2097" sl="2165" sc="1" el="2165" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2166" ordinal="2098" sl="2166" sc="1" el="2166" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2167" ordinal="2099" sl="2167" sc="1" el="2167" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2168" ordinal="2100" sl="2168" sc="1" el="2168" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2169" ordinal="2101" sl="2169" sc="1" el="2169" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2171" ordinal="2102" sl="2171" sc="1" el="2171" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2172" ordinal="2103" sl="2172" sc="1" el="2172" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2173" ordinal="2104" sl="2173" sc="1" el="2173" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2174" ordinal="2105" sl="2174" sc="1" el="2174" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2175" ordinal="2106" sl="2175" sc="1" el="2175" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2176" ordinal="2107" sl="2176" sc="1" el="2176" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2177" ordinal="2108" sl="2177" sc="1" el="2177" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2178" ordinal="2109" sl="2178" sc="1" el="2178" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2179" ordinal="2110" sl="2179" sc="1" el="2179" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2180" ordinal="2111" sl="2180" sc="1" el="2180" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2181" ordinal="2112" sl="2181" sc="1" el="2181" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2182" ordinal="2113" sl="2182" sc="1" el="2182" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2183" ordinal="2114" sl="2183" sc="1" el="2183" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2184" ordinal="2115" sl="2184" sc="1" el="2184" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2185" ordinal="2116" sl="2185" sc="1" el="2185" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2186" ordinal="2117" sl="2186" sc="1" el="2186" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2187" ordinal="2118" sl="2187" sc="1" el="2187" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2188" ordinal="2119" sl="2188" sc="1" el="2188" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2189" ordinal="2120" sl="2189" sc="1" el="2189" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2190" ordinal="2121" sl="2190" sc="1" el="2190" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2191" ordinal="2122" sl="2191" sc="1" el="2191" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2192" ordinal="2123" sl="2192" sc="1" el="2192" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2193" ordinal="2124" sl="2193" sc="1" el="2193" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2194" ordinal="2125" sl="2194" sc="1" el="2194" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2196" ordinal="2126" sl="2196" sc="1" el="2196" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2197" ordinal="2127" sl="2197" sc="1" el="2197" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2198" ordinal="2128" sl="2198" sc="1" el="2198" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2199" ordinal="2129" sl="2199" sc="1" el="2199" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2200" ordinal="2130" sl="2200" sc="1" el="2200" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2201" ordinal="2131" sl="2201" sc="1" el="2201" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2202" ordinal="2132" sl="2202" sc="1" el="2202" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2203" ordinal="2133" sl="2203" sc="1" el="2203" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2204" ordinal="2134" sl="2204" sc="1" el="2204" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2205" ordinal="2135" sl="2205" sc="1" el="2205" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2206" ordinal="2136" sl="2206" sc="1" el="2206" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2207" ordinal="2137" sl="2207" sc="1" el="2207" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2208" ordinal="2138" sl="2208" sc="1" el="2208" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2209" ordinal="2139" sl="2209" sc="1" el="2209" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2210" ordinal="2140" sl="2210" sc="1" el="2210" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2211" ordinal="2141" sl="2211" sc="1" el="2211" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2212" ordinal="2142" sl="2212" sc="1" el="2212" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2213" ordinal="2143" sl="2213" sc="1" el="2213" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2214" ordinal="2144" sl="2214" sc="1" el="2214" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2215" ordinal="2145" sl="2215" sc="1" el="2215" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2216" ordinal="2146" sl="2216" sc="1" el="2216" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2217" ordinal="2147" sl="2217" sc="1" el="2217" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2218" ordinal="2148" sl="2218" sc="1" el="2218" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2219" ordinal="2149" sl="2219" sc="1" el="2219" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2221" ordinal="2150" sl="2221" sc="1" el="2221" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2222" ordinal="2151" sl="2222" sc="1" el="2222" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2223" ordinal="2152" sl="2223" sc="1" el="2223" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2224" ordinal="2153" sl="2224" sc="1" el="2224" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2225" ordinal="2154" sl="2225" sc="1" el="2225" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2226" ordinal="2155" sl="2226" sc="1" el="2226" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2227" ordinal="2156" sl="2227" sc="1" el="2227" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2228" ordinal="2157" sl="2228" sc="1" el="2228" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2229" ordinal="2158" sl="2229" sc="1" el="2229" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2230" ordinal="2159" sl="2230" sc="1" el="2230" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2231" ordinal="2160" sl="2231" sc="1" el="2231" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2232" ordinal="2161" sl="2232" sc="1" el="2232" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2233" ordinal="2162" sl="2233" sc="1" el="2233" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2234" ordinal="2163" sl="2234" sc="1" el="2234" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2235" ordinal="2164" sl="2235" sc="1" el="2235" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2236" ordinal="2165" sl="2236" sc="1" el="2236" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2237" ordinal="2166" sl="2237" sc="1" el="2237" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2238" ordinal="2167" sl="2238" sc="1" el="2238" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2239" ordinal="2168" sl="2239" sc="1" el="2239" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2240" ordinal="2169" sl="2240" sc="1" el="2240" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2241" ordinal="2170" sl="2241" sc="1" el="2241" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2242" ordinal="2171" sl="2242" sc="1" el="2242" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2243" ordinal="2172" sl="2243" sc="1" el="2243" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2244" ordinal="2173" sl="2244" sc="1" el="2244" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2245" ordinal="2174" sl="2245" sc="1" el="2245" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2246" ordinal="2175" sl="2246" sc="1" el="2246" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2247" ordinal="2176" sl="2247" sc="1" el="2247" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2248" ordinal="2177" sl="2248" sc="1" el="2248" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2249" ordinal="2178" sl="2249" sc="1" el="2249" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2250" ordinal="2179" sl="2250" sc="1" el="2250" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2251" ordinal="2180" sl="2251" sc="1" el="2251" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2252" ordinal="2181" sl="2252" sc="1" el="2252" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2254" ordinal="2182" sl="2254" sc="1" el="2254" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2255" ordinal="2183" sl="2255" sc="1" el="2255" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2256" ordinal="2184" sl="2256" sc="1" el="2256" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2257" ordinal="2185" sl="2257" sc="1" el="2257" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2258" ordinal="2186" sl="2258" sc="1" el="2258" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2259" ordinal="2187" sl="2259" sc="1" el="2259" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2260" ordinal="2188" sl="2260" sc="1" el="2260" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2261" ordinal="2189" sl="2261" sc="1" el="2261" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2262" ordinal="2190" sl="2262" sc="1" el="2262" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2263" ordinal="2191" sl="2263" sc="1" el="2263" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2264" ordinal="2192" sl="2264" sc="1" el="2264" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2265" ordinal="2193" sl="2265" sc="1" el="2265" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2266" ordinal="2194" sl="2266" sc="1" el="2266" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2267" ordinal="2195" sl="2267" sc="1" el="2267" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2268" ordinal="2196" sl="2268" sc="1" el="2268" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2269" ordinal="2197" sl="2269" sc="1" el="2269" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2270" ordinal="2198" sl="2270" sc="1" el="2270" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2271" ordinal="2199" sl="2271" sc="1" el="2271" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2272" ordinal="2200" sl="2272" sc="1" el="2272" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2273" ordinal="2201" sl="2273" sc="1" el="2273" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2274" ordinal="2202" sl="2274" sc="1" el="2274" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2275" ordinal="2203" sl="2275" sc="1" el="2275" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2276" ordinal="2204" sl="2276" sc="1" el="2276" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2277" ordinal="2205" sl="2277" sc="1" el="2277" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2279" ordinal="2206" sl="2279" sc="1" el="2279" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2280" ordinal="2207" sl="2280" sc="1" el="2280" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2281" ordinal="2208" sl="2281" sc="1" el="2281" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2282" ordinal="2209" sl="2282" sc="1" el="2282" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2283" ordinal="2210" sl="2283" sc="1" el="2283" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2284" ordinal="2211" sl="2284" sc="1" el="2284" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2285" ordinal="2212" sl="2285" sc="1" el="2285" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2286" ordinal="2213" sl="2286" sc="1" el="2286" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2287" ordinal="2214" sl="2287" sc="1" el="2287" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2288" ordinal="2215" sl="2288" sc="1" el="2288" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2289" ordinal="2216" sl="2289" sc="1" el="2289" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2290" ordinal="2217" sl="2290" sc="1" el="2290" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2291" ordinal="2218" sl="2291" sc="1" el="2291" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2292" ordinal="2219" sl="2292" sc="1" el="2292" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2293" ordinal="2220" sl="2293" sc="1" el="2293" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2294" ordinal="2221" sl="2294" sc="1" el="2294" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2295" ordinal="2222" sl="2295" sc="1" el="2295" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2296" ordinal="2223" sl="2296" sc="1" el="2296" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2297" ordinal="2224" sl="2297" sc="1" el="2297" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2298" ordinal="2225" sl="2298" sc="1" el="2298" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2299" ordinal="2226" sl="2299" sc="1" el="2299" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2300" ordinal="2227" sl="2300" sc="1" el="2300" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2301" ordinal="2228" sl="2301" sc="1" el="2301" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2302" ordinal="2229" sl="2302" sc="1" el="2302" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2303" ordinal="2230" sl="2303" sc="1" el="2303" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2304" ordinal="2231" sl="2304" sc="1" el="2304" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2305" ordinal="2232" sl="2305" sc="1" el="2305" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2306" ordinal="2233" sl="2306" sc="1" el="2306" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2307" ordinal="2234" sl="2307" sc="1" el="2307" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2308" ordinal="2235" sl="2308" sc="1" el="2308" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2309" ordinal="2236" sl="2309" sc="1" el="2309" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2310" ordinal="2237" sl="2310" sc="1" el="2310" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2311" ordinal="2238" sl="2311" sc="1" el="2311" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2312" ordinal="2239" sl="2312" sc="1" el="2312" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2313" ordinal="2240" sl="2313" sc="1" el="2313" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2314" ordinal="2241" sl="2314" sc="1" el="2314" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2315" ordinal="2242" sl="2315" sc="1" el="2315" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2316" ordinal="2243" sl="2316" sc="1" el="2316" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2317" ordinal="2244" sl="2317" sc="1" el="2317" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2318" ordinal="2245" sl="2318" sc="1" el="2318" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2319" ordinal="2246" sl="2319" sc="1" el="2319" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2320" ordinal="2247" sl="2320" sc="1" el="2320" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2321" ordinal="2248" sl="2321" sc="1" el="2321" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2322" ordinal="2249" sl="2322" sc="1" el="2322" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2323" ordinal="2250" sl="2323" sc="1" el="2323" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2325" ordinal="2251" sl="2325" sc="1" el="2325" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2326" ordinal="2252" sl="2326" sc="1" el="2326" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2327" ordinal="2253" sl="2327" sc="1" el="2327" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2328" ordinal="2254" sl="2328" sc="1" el="2328" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2329" ordinal="2255" sl="2329" sc="1" el="2329" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2330" ordinal="2256" sl="2330" sc="1" el="2330" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2331" ordinal="2257" sl="2331" sc="1" el="2331" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2332" ordinal="2258" sl="2332" sc="1" el="2332" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2333" ordinal="2259" sl="2333" sc="1" el="2333" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2334" ordinal="2260" sl="2334" sc="1" el="2334" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2335" ordinal="2261" sl="2335" sc="1" el="2335" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2336" ordinal="2262" sl="2336" sc="1" el="2336" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2337" ordinal="2263" sl="2337" sc="1" el="2337" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2338" ordinal="2264" sl="2338" sc="1" el="2338" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2339" ordinal="2265" sl="2339" sc="1" el="2339" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2340" ordinal="2266" sl="2340" sc="1" el="2340" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2341" ordinal="2267" sl="2341" sc="1" el="2341" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2342" ordinal="2268" sl="2342" sc="1" el="2342" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2343" ordinal="2269" sl="2343" sc="1" el="2343" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2344" ordinal="2270" sl="2344" sc="1" el="2344" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2345" ordinal="2271" sl="2345" sc="1" el="2345" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2346" ordinal="2272" sl="2346" sc="1" el="2346" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2347" ordinal="2273" sl="2347" sc="1" el="2347" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2348" ordinal="2274" sl="2348" sc="1" el="2348" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2349" ordinal="2275" sl="2349" sc="1" el="2349" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2350" ordinal="2276" sl="2350" sc="1" el="2350" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2351" ordinal="2277" sl="2351" sc="1" el="2351" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2352" ordinal="2278" sl="2352" sc="1" el="2352" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2353" ordinal="2279" sl="2353" sc="1" el="2353" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2354" ordinal="2280" sl="2354" sc="1" el="2354" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2355" ordinal="2281" sl="2355" sc="1" el="2355" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2356" ordinal="2282" sl="2356" sc="1" el="2356" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2357" ordinal="2283" sl="2357" sc="1" el="2357" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2358" ordinal="2284" sl="2358" sc="1" el="2358" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2360" ordinal="2285" sl="2360" sc="1" el="2360" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2361" ordinal="2286" sl="2361" sc="1" el="2361" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2362" ordinal="2287" sl="2362" sc="1" el="2362" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2363" ordinal="2288" sl="2363" sc="1" el="2363" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2364" ordinal="2289" sl="2364" sc="1" el="2364" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2365" ordinal="2290" sl="2365" sc="1" el="2365" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2366" ordinal="2291" sl="2366" sc="1" el="2366" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2367" ordinal="2292" sl="2367" sc="1" el="2367" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2368" ordinal="2293" sl="2368" sc="1" el="2368" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2369" ordinal="2294" sl="2369" sc="1" el="2369" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2370" ordinal="2295" sl="2370" sc="1" el="2370" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2371" ordinal="2296" sl="2371" sc="1" el="2371" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2372" ordinal="2297" sl="2372" sc="1" el="2372" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2373" ordinal="2298" sl="2373" sc="1" el="2373" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2374" ordinal="2299" sl="2374" sc="1" el="2374" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2375" ordinal="2300" sl="2375" sc="1" el="2375" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2376" ordinal="2301" sl="2376" sc="1" el="2376" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2377" ordinal="2302" sl="2377" sc="1" el="2377" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2378" ordinal="2303" sl="2378" sc="1" el="2378" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2379" ordinal="2304" sl="2379" sc="1" el="2379" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2380" ordinal="2305" sl="2380" sc="1" el="2380" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2381" ordinal="2306" sl="2381" sc="1" el="2381" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2382" ordinal="2307" sl="2382" sc="1" el="2382" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2383" ordinal="2308" sl="2383" sc="1" el="2383" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2384" ordinal="2309" sl="2384" sc="1" el="2384" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2385" ordinal="2310" sl="2385" sc="1" el="2385" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2386" ordinal="2311" sl="2386" sc="1" el="2386" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2387" ordinal="2312" sl="2387" sc="1" el="2387" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2388" ordinal="2313" sl="2388" sc="1" el="2388" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2389" ordinal="2314" sl="2389" sc="1" el="2389" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2390" ordinal="2315" sl="2390" sc="1" el="2390" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2391" ordinal="2316" sl="2391" sc="1" el="2391" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2393" ordinal="2317" sl="2393" sc="1" el="2393" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2394" ordinal="2318" sl="2394" sc="1" el="2394" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2395" ordinal="2319" sl="2395" sc="1" el="2395" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2396" ordinal="2320" sl="2396" sc="1" el="2396" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2397" ordinal="2321" sl="2397" sc="1" el="2397" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2398" ordinal="2322" sl="2398" sc="1" el="2398" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2399" ordinal="2323" sl="2399" sc="1" el="2399" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2400" ordinal="2324" sl="2400" sc="1" el="2400" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2401" ordinal="2325" sl="2401" sc="1" el="2401" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2402" ordinal="2326" sl="2402" sc="1" el="2402" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2403" ordinal="2327" sl="2403" sc="1" el="2403" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2404" ordinal="2328" sl="2404" sc="1" el="2404" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2405" ordinal="2329" sl="2405" sc="1" el="2405" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2406" ordinal="2330" sl="2406" sc="1" el="2406" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2407" ordinal="2331" sl="2407" sc="1" el="2407" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2408" ordinal="2332" sl="2408" sc="1" el="2408" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2409" ordinal="2333" sl="2409" sc="1" el="2409" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2410" ordinal="2334" sl="2410" sc="1" el="2410" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2411" ordinal="2335" sl="2411" sc="1" el="2411" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2412" ordinal="2336" sl="2412" sc="1" el="2412" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2413" ordinal="2337" sl="2413" sc="1" el="2413" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2414" ordinal="2338" sl="2414" sc="1" el="2414" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2416" ordinal="2339" sl="2416" sc="1" el="2416" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2417" ordinal="2340" sl="2417" sc="1" el="2417" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2418" ordinal="2341" sl="2418" sc="1" el="2418" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2419" ordinal="2342" sl="2419" sc="1" el="2419" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2420" ordinal="2343" sl="2420" sc="1" el="2420" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2421" ordinal="2344" sl="2421" sc="1" el="2421" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2422" ordinal="2345" sl="2422" sc="1" el="2422" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2423" ordinal="2346" sl="2423" sc="1" el="2423" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2424" ordinal="2347" sl="2424" sc="1" el="2424" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2425" ordinal="2348" sl="2425" sc="1" el="2425" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2426" ordinal="2349" sl="2426" sc="1" el="2426" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2427" ordinal="2350" sl="2427" sc="1" el="2427" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2428" ordinal="2351" sl="2428" sc="1" el="2428" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2429" ordinal="2352" sl="2429" sc="1" el="2429" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2430" ordinal="2353" sl="2430" sc="1" el="2430" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2431" ordinal="2354" sl="2431" sc="1" el="2431" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2432" ordinal="2355" sl="2432" sc="1" el="2432" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2433" ordinal="2356" sl="2433" sc="1" el="2433" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2434" ordinal="2357" sl="2434" sc="1" el="2434" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2435" ordinal="2358" sl="2435" sc="1" el="2435" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2436" ordinal="2359" sl="2436" sc="1" el="2436" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2437" ordinal="2360" sl="2437" sc="1" el="2437" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2438" ordinal="2361" sl="2438" sc="1" el="2438" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2439" ordinal="2362" sl="2439" sc="1" el="2439" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2440" ordinal="2363" sl="2440" sc="1" el="2440" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2441" ordinal="2364" sl="2441" sc="1" el="2441" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2442" ordinal="2365" sl="2442" sc="1" el="2442" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2443" ordinal="2366" sl="2443" sc="1" el="2443" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2444" ordinal="2367" sl="2444" sc="1" el="2444" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2445" ordinal="2368" sl="2445" sc="1" el="2445" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2446" ordinal="2369" sl="2446" sc="1" el="2446" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2447" ordinal="2370" sl="2447" sc="1" el="2447" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2448" ordinal="2371" sl="2448" sc="1" el="2448" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2449" ordinal="2372" sl="2449" sc="1" el="2449" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2450" ordinal="2373" sl="2450" sc="1" el="2450" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2451" ordinal="2374" sl="2451" sc="1" el="2451" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2453" ordinal="2375" sl="2453" sc="1" el="2453" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2454" ordinal="2376" sl="2454" sc="1" el="2454" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2455" ordinal="2377" sl="2455" sc="1" el="2455" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2456" ordinal="2378" sl="2456" sc="1" el="2456" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2457" ordinal="2379" sl="2457" sc="1" el="2457" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2458" ordinal="2380" sl="2458" sc="1" el="2458" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2459" ordinal="2381" sl="2459" sc="1" el="2459" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2460" ordinal="2382" sl="2460" sc="1" el="2460" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2461" ordinal="2383" sl="2461" sc="1" el="2461" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2462" ordinal="2384" sl="2462" sc="1" el="2462" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2463" ordinal="2385" sl="2463" sc="1" el="2463" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2464" ordinal="2386" sl="2464" sc="1" el="2464" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2465" ordinal="2387" sl="2465" sc="1" el="2465" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2466" ordinal="2388" sl="2466" sc="1" el="2466" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2467" ordinal="2389" sl="2467" sc="1" el="2467" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2468" ordinal="2390" sl="2468" sc="1" el="2468" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2469" ordinal="2391" sl="2469" sc="1" el="2469" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2470" ordinal="2392" sl="2470" sc="1" el="2470" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2471" ordinal="2393" sl="2471" sc="1" el="2471" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2472" ordinal="2394" sl="2472" sc="1" el="2472" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2473" ordinal="2395" sl="2473" sc="1" el="2473" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2474" ordinal="2396" sl="2474" sc="1" el="2474" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2475" ordinal="2397" sl="2475" sc="1" el="2475" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2476" ordinal="2398" sl="2476" sc="1" el="2476" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2477" ordinal="2399" sl="2477" sc="1" el="2477" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2478" ordinal="2400" sl="2478" sc="1" el="2478" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2479" ordinal="2401" sl="2479" sc="1" el="2479" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2481" ordinal="2402" sl="2481" sc="1" el="2481" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2482" ordinal="2403" sl="2482" sc="1" el="2482" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2483" ordinal="2404" sl="2483" sc="1" el="2483" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2484" ordinal="2405" sl="2484" sc="1" el="2484" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2485" ordinal="2406" sl="2485" sc="1" el="2485" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2486" ordinal="2407" sl="2486" sc="1" el="2486" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2487" ordinal="2408" sl="2487" sc="1" el="2487" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2488" ordinal="2409" sl="2488" sc="1" el="2488" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2489" ordinal="2410" sl="2489" sc="1" el="2489" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2490" ordinal="2411" sl="2490" sc="1" el="2490" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2491" ordinal="2412" sl="2491" sc="1" el="2491" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2492" ordinal="2413" sl="2492" sc="1" el="2492" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2493" ordinal="2414" sl="2493" sc="1" el="2493" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2494" ordinal="2415" sl="2494" sc="1" el="2494" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2495" ordinal="2416" sl="2495" sc="1" el="2495" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2496" ordinal="2417" sl="2496" sc="1" el="2496" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2497" ordinal="2418" sl="2497" sc="1" el="2497" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2498" ordinal="2419" sl="2498" sc="1" el="2498" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2499" ordinal="2420" sl="2499" sc="1" el="2499" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2500" ordinal="2421" sl="2500" sc="1" el="2500" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2501" ordinal="2422" sl="2501" sc="1" el="2501" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2502" ordinal="2423" sl="2502" sc="1" el="2502" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2503" ordinal="2424" sl="2503" sc="1" el="2503" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2504" ordinal="2425" sl="2504" sc="1" el="2504" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2505" ordinal="2426" sl="2505" sc="1" el="2505" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2506" ordinal="2427" sl="2506" sc="1" el="2506" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2507" ordinal="2428" sl="2507" sc="1" el="2507" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2508" ordinal="2429" sl="2508" sc="1" el="2508" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2509" ordinal="2430" sl="2509" sc="1" el="2509" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2510" ordinal="2431" sl="2510" sc="1" el="2510" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2511" ordinal="2432" sl="2511" sc="1" el="2511" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2512" ordinal="2433" sl="2512" sc="1" el="2512" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2513" ordinal="2434" sl="2513" sc="1" el="2513" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2514" ordinal="2435" sl="2514" sc="1" el="2514" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2515" ordinal="2436" sl="2515" sc="1" el="2515" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2516" ordinal="2437" sl="2516" sc="1" el="2516" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2517" ordinal="2438" sl="2517" sc="1" el="2517" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2518" ordinal="2439" sl="2518" sc="1" el="2518" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2519" ordinal="2440" sl="2519" sc="1" el="2519" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2520" ordinal="2441" sl="2520" sc="1" el="2520" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2521" ordinal="2442" sl="2521" sc="1" el="2521" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2522" ordinal="2443" sl="2522" sc="1" el="2522" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2523" ordinal="2444" sl="2523" sc="1" el="2523" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2524" ordinal="2445" sl="2524" sc="1" el="2524" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2525" ordinal="2446" sl="2525" sc="1" el="2525" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2526" ordinal="2447" sl="2526" sc="1" el="2526" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2527" ordinal="2448" sl="2527" sc="1" el="2527" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2528" ordinal="2449" sl="2528" sc="1" el="2528" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2529" ordinal="2450" sl="2529" sc="1" el="2529" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2530" ordinal="2451" sl="2530" sc="1" el="2530" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2531" ordinal="2452" sl="2531" sc="1" el="2531" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2532" ordinal="2453" sl="2532" sc="1" el="2532" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2533" ordinal="2454" sl="2533" sc="1" el="2533" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2534" ordinal="2455" sl="2534" sc="1" el="2534" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2535" ordinal="2456" sl="2535" sc="1" el="2535" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2536" ordinal="2457" sl="2536" sc="1" el="2536" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2537" ordinal="2458" sl="2537" sc="1" el="2537" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2538" ordinal="2459" sl="2538" sc="1" el="2538" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2539" ordinal="2460" sl="2539" sc="1" el="2539" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2540" ordinal="2461" sl="2540" sc="1" el="2540" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2541" ordinal="2462" sl="2541" sc="1" el="2541" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2542" ordinal="2463" sl="2542" sc="1" el="2542" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2543" ordinal="2464" sl="2543" sc="1" el="2543" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2544" ordinal="2465" sl="2544" sc="1" el="2544" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2545" ordinal="2466" sl="2545" sc="1" el="2545" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2546" ordinal="2467" sl="2546" sc="1" el="2546" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2547" ordinal="2468" sl="2547" sc="1" el="2547" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2548" ordinal="2469" sl="2548" sc="1" el="2548" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2549" ordinal="2470" sl="2549" sc="1" el="2549" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2550" ordinal="2471" sl="2550" sc="1" el="2550" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2551" ordinal="2472" sl="2551" sc="1" el="2551" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2552" ordinal="2473" sl="2552" sc="1" el="2552" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2553" ordinal="2474" sl="2553" sc="1" el="2553" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2554" ordinal="2475" sl="2554" sc="1" el="2554" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2555" ordinal="2476" sl="2555" sc="1" el="2555" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2556" ordinal="2477" sl="2556" sc="1" el="2556" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2557" ordinal="2478" sl="2557" sc="1" el="2557" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2558" ordinal="2479" sl="2558" sc="1" el="2558" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2559" ordinal="2480" sl="2559" sc="1" el="2559" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2560" ordinal="2481" sl="2560" sc="1" el="2560" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2561" ordinal="2482" sl="2561" sc="1" el="2561" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2562" ordinal="2483" sl="2562" sc="1" el="2562" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2563" ordinal="2484" sl="2563" sc="1" el="2563" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2564" ordinal="2485" sl="2564" sc="1" el="2564" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2565" ordinal="2486" sl="2565" sc="1" el="2565" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2566" ordinal="2487" sl="2566" sc="1" el="2566" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2567" ordinal="2488" sl="2567" sc="1" el="2567" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2568" ordinal="2489" sl="2568" sc="1" el="2568" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2569" ordinal="2490" sl="2569" sc="1" el="2569" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2570" ordinal="2491" sl="2570" sc="1" el="2570" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2571" ordinal="2492" sl="2571" sc="1" el="2571" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2572" ordinal="2493" sl="2572" sc="1" el="2572" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2573" ordinal="2494" sl="2573" sc="1" el="2573" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2574" ordinal="2495" sl="2574" sc="1" el="2574" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2575" ordinal="2496" sl="2575" sc="1" el="2575" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2576" ordinal="2497" sl="2576" sc="1" el="2576" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2577" ordinal="2498" sl="2577" sc="1" el="2577" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2578" ordinal="2499" sl="2578" sc="1" el="2578" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2580" ordinal="2500" sl="2580" sc="1" el="2580" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2581" ordinal="2501" sl="2581" sc="1" el="2581" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2582" ordinal="2502" sl="2582" sc="1" el="2582" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2583" ordinal="2503" sl="2583" sc="1" el="2583" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2584" ordinal="2504" sl="2584" sc="1" el="2584" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2585" ordinal="2505" sl="2585" sc="1" el="2585" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2586" ordinal="2506" sl="2586" sc="1" el="2586" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2587" ordinal="2507" sl="2587" sc="1" el="2587" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2588" ordinal="2508" sl="2588" sc="1" el="2588" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2589" ordinal="2509" sl="2589" sc="1" el="2589" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2590" ordinal="2510" sl="2590" sc="1" el="2590" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2591" ordinal="2511" sl="2591" sc="1" el="2591" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2592" ordinal="2512" sl="2592" sc="1" el="2592" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2593" ordinal="2513" sl="2593" sc="1" el="2593" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2594" ordinal="2514" sl="2594" sc="1" el="2594" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2595" ordinal="2515" sl="2595" sc="1" el="2595" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2596" ordinal="2516" sl="2596" sc="1" el="2596" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2597" ordinal="2517" sl="2597" sc="1" el="2597" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2598" ordinal="2518" sl="2598" sc="1" el="2598" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2599" ordinal="2519" sl="2599" sc="1" el="2599" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2600" ordinal="2520" sl="2600" sc="1" el="2600" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2601" ordinal="2521" sl="2601" sc="1" el="2601" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2603" ordinal="2522" sl="2603" sc="1" el="2603" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2604" ordinal="2523" sl="2604" sc="1" el="2604" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2605" ordinal="2524" sl="2605" sc="1" el="2605" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2606" ordinal="2525" sl="2606" sc="1" el="2606" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2607" ordinal="2526" sl="2607" sc="1" el="2607" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2608" ordinal="2527" sl="2608" sc="1" el="2608" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2609" ordinal="2528" sl="2609" sc="1" el="2609" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2610" ordinal="2529" sl="2610" sc="1" el="2610" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2611" ordinal="2530" sl="2611" sc="1" el="2611" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2612" ordinal="2531" sl="2612" sc="1" el="2612" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2613" ordinal="2532" sl="2613" sc="1" el="2613" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2614" ordinal="2533" sl="2614" sc="1" el="2614" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2615" ordinal="2534" sl="2615" sc="1" el="2615" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2616" ordinal="2535" sl="2616" sc="1" el="2616" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2617" ordinal="2536" sl="2617" sc="1" el="2617" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2618" ordinal="2537" sl="2618" sc="1" el="2618" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2619" ordinal="2538" sl="2619" sc="1" el="2619" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2620" ordinal="2539" sl="2620" sc="1" el="2620" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2621" ordinal="2540" sl="2621" sc="1" el="2621" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2622" ordinal="2541" sl="2622" sc="1" el="2622" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2623" ordinal="2542" sl="2623" sc="1" el="2623" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2624" ordinal="2543" sl="2624" sc="1" el="2624" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2625" ordinal="2544" sl="2625" sc="1" el="2625" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2626" ordinal="2545" sl="2626" sc="1" el="2626" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2628" ordinal="2546" sl="2628" sc="1" el="2628" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2629" ordinal="2547" sl="2629" sc="1" el="2629" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2630" ordinal="2548" sl="2630" sc="1" el="2630" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2631" ordinal="2549" sl="2631" sc="1" el="2631" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2632" ordinal="2550" sl="2632" sc="1" el="2632" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2633" ordinal="2551" sl="2633" sc="1" el="2633" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2634" ordinal="2552" sl="2634" sc="1" el="2634" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2635" ordinal="2553" sl="2635" sc="1" el="2635" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2636" ordinal="2554" sl="2636" sc="1" el="2636" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2637" ordinal="2555" sl="2637" sc="1" el="2637" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2638" ordinal="2556" sl="2638" sc="1" el="2638" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2639" ordinal="2557" sl="2639" sc="1" el="2639" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2640" ordinal="2558" sl="2640" sc="1" el="2640" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2641" ordinal="2559" sl="2641" sc="1" el="2641" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2642" ordinal="2560" sl="2642" sc="1" el="2642" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2643" ordinal="2561" sl="2643" sc="1" el="2643" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2644" ordinal="2562" sl="2644" sc="1" el="2644" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2645" ordinal="2563" sl="2645" sc="1" el="2645" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2646" ordinal="2564" sl="2646" sc="1" el="2646" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2647" ordinal="2565" sl="2647" sc="1" el="2647" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2648" ordinal="2566" sl="2648" sc="1" el="2648" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2649" ordinal="2567" sl="2649" sc="1" el="2649" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2650" ordinal="2568" sl="2650" sc="1" el="2650" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2651" ordinal="2569" sl="2651" sc="1" el="2651" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2652" ordinal="2570" sl="2652" sc="1" el="2652" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2653" ordinal="2571" sl="2653" sc="1" el="2653" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2654" ordinal="2572" sl="2654" sc="1" el="2654" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2655" ordinal="2573" sl="2655" sc="1" el="2655" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2656" ordinal="2574" sl="2656" sc="1" el="2656" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2657" ordinal="2575" sl="2657" sc="1" el="2657" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2658" ordinal="2576" sl="2658" sc="1" el="2658" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2659" ordinal="2577" sl="2659" sc="1" el="2659" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2660" ordinal="2578" sl="2660" sc="1" el="2660" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2662" ordinal="2579" sl="2662" sc="1" el="2662" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2663" ordinal="2580" sl="2663" sc="1" el="2663" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2664" ordinal="2581" sl="2664" sc="1" el="2664" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2665" ordinal="2582" sl="2665" sc="1" el="2665" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2666" ordinal="2583" sl="2666" sc="1" el="2666" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2667" ordinal="2584" sl="2667" sc="1" el="2667" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2668" ordinal="2585" sl="2668" sc="1" el="2668" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2669" ordinal="2586" sl="2669" sc="1" el="2669" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2670" ordinal="2587" sl="2670" sc="1" el="2670" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2671" ordinal="2588" sl="2671" sc="1" el="2671" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2672" ordinal="2589" sl="2672" sc="1" el="2672" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2673" ordinal="2590" sl="2673" sc="1" el="2673" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2674" ordinal="2591" sl="2674" sc="1" el="2674" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2675" ordinal="2592" sl="2675" sc="1" el="2675" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2676" ordinal="2593" sl="2676" sc="1" el="2676" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2677" ordinal="2594" sl="2677" sc="1" el="2677" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2678" ordinal="2595" sl="2678" sc="1" el="2678" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2679" ordinal="2596" sl="2679" sc="1" el="2679" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2680" ordinal="2597" sl="2680" sc="1" el="2680" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2681" ordinal="2598" sl="2681" sc="1" el="2681" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2682" ordinal="2599" sl="2682" sc="1" el="2682" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2683" ordinal="2600" sl="2683" sc="1" el="2683" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2684" ordinal="2601" sl="2684" sc="1" el="2684" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2685" ordinal="2602" sl="2685" sc="1" el="2685" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2687" ordinal="2603" sl="2687" sc="1" el="2687" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2688" ordinal="2604" sl="2688" sc="1" el="2688" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2689" ordinal="2605" sl="2689" sc="1" el="2689" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2690" ordinal="2606" sl="2690" sc="1" el="2690" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2691" ordinal="2607" sl="2691" sc="1" el="2691" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2692" ordinal="2608" sl="2692" sc="1" el="2692" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2693" ordinal="2609" sl="2693" sc="1" el="2693" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2694" ordinal="2610" sl="2694" sc="1" el="2694" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2695" ordinal="2611" sl="2695" sc="1" el="2695" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2696" ordinal="2612" sl="2696" sc="1" el="2696" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2697" ordinal="2613" sl="2697" sc="1" el="2697" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2698" ordinal="2614" sl="2698" sc="1" el="2698" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2699" ordinal="2615" sl="2699" sc="1" el="2699" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2700" ordinal="2616" sl="2700" sc="1" el="2700" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2701" ordinal="2617" sl="2701" sc="1" el="2701" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2702" ordinal="2618" sl="2702" sc="1" el="2702" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2703" ordinal="2619" sl="2703" sc="1" el="2703" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2704" ordinal="2620" sl="2704" sc="1" el="2704" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2705" ordinal="2621" sl="2705" sc="1" el="2705" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2706" ordinal="2622" sl="2706" sc="1" el="2706" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2707" ordinal="2623" sl="2707" sc="1" el="2707" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2708" ordinal="2624" sl="2708" sc="1" el="2708" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2710" ordinal="2625" sl="2710" sc="1" el="2710" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2711" ordinal="2626" sl="2711" sc="1" el="2711" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2712" ordinal="2627" sl="2712" sc="1" el="2712" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2713" ordinal="2628" sl="2713" sc="1" el="2713" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2714" ordinal="2629" sl="2714" sc="1" el="2714" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2715" ordinal="2630" sl="2715" sc="1" el="2715" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2716" ordinal="2631" sl="2716" sc="1" el="2716" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2717" ordinal="2632" sl="2717" sc="1" el="2717" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2718" ordinal="2633" sl="2718" sc="1" el="2718" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2719" ordinal="2634" sl="2719" sc="1" el="2719" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2720" ordinal="2635" sl="2720" sc="1" el="2720" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2721" ordinal="2636" sl="2721" sc="1" el="2721" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2722" ordinal="2637" sl="2722" sc="1" el="2722" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2723" ordinal="2638" sl="2723" sc="1" el="2723" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2724" ordinal="2639" sl="2724" sc="1" el="2724" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2725" ordinal="2640" sl="2725" sc="1" el="2725" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2726" ordinal="2641" sl="2726" sc="1" el="2726" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2727" ordinal="2642" sl="2727" sc="1" el="2727" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2728" ordinal="2643" sl="2728" sc="1" el="2728" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2729" ordinal="2644" sl="2729" sc="1" el="2729" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2730" ordinal="2645" sl="2730" sc="1" el="2730" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2731" ordinal="2646" sl="2731" sc="1" el="2731" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2733" ordinal="2647" sl="2733" sc="1" el="2733" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2734" ordinal="2648" sl="2734" sc="1" el="2734" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2735" ordinal="2649" sl="2735" sc="1" el="2735" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2736" ordinal="2650" sl="2736" sc="1" el="2736" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2737" ordinal="2651" sl="2737" sc="1" el="2737" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2738" ordinal="2652" sl="2738" sc="1" el="2738" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2739" ordinal="2653" sl="2739" sc="1" el="2739" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2740" ordinal="2654" sl="2740" sc="1" el="2740" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2741" ordinal="2655" sl="2741" sc="1" el="2741" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2742" ordinal="2656" sl="2742" sc="1" el="2742" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2743" ordinal="2657" sl="2743" sc="1" el="2743" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2744" ordinal="2658" sl="2744" sc="1" el="2744" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2746" ordinal="2659" sl="2746" sc="1" el="2746" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2747" ordinal="2660" sl="2747" sc="1" el="2747" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2748" ordinal="2661" sl="2748" sc="1" el="2748" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2749" ordinal="2662" sl="2749" sc="1" el="2749" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2750" ordinal="2663" sl="2750" sc="1" el="2750" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2751" ordinal="2664" sl="2751" sc="1" el="2751" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2752" ordinal="2665" sl="2752" sc="1" el="2752" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2753" ordinal="2666" sl="2753" sc="1" el="2753" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2754" ordinal="2667" sl="2754" sc="1" el="2754" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2755" ordinal="2668" sl="2755" sc="1" el="2755" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2756" ordinal="2669" sl="2756" sc="1" el="2756" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2757" ordinal="2670" sl="2757" sc="1" el="2757" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2758" ordinal="2671" sl="2758" sc="1" el="2758" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2759" ordinal="2672" sl="2759" sc="1" el="2759" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2760" ordinal="2673" sl="2760" sc="1" el="2760" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2761" ordinal="2674" sl="2761" sc="1" el="2761" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2762" ordinal="2675" sl="2762" sc="1" el="2762" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2763" ordinal="2676" sl="2763" sc="1" el="2763" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2764" ordinal="2677" sl="2764" sc="1" el="2764" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2765" ordinal="2678" sl="2765" sc="1" el="2765" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2766" ordinal="2679" sl="2766" sc="1" el="2766" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2767" ordinal="2680" sl="2767" sc="1" el="2767" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2768" ordinal="2681" sl="2768" sc="1" el="2768" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2769" ordinal="2682" sl="2769" sc="1" el="2769" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2770" ordinal="2683" sl="2770" sc="1" el="2770" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2771" ordinal="2684" sl="2771" sc="1" el="2771" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2772" ordinal="2685" sl="2772" sc="1" el="2772" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2773" ordinal="2686" sl="2773" sc="1" el="2773" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2774" ordinal="2687" sl="2774" sc="1" el="2774" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2775" ordinal="2688" sl="2775" sc="1" el="2775" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2776" ordinal="2689" sl="2776" sc="1" el="2776" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2777" ordinal="2690" sl="2777" sc="1" el="2777" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2778" ordinal="2691" sl="2778" sc="1" el="2778" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2779" ordinal="2692" sl="2779" sc="1" el="2779" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2780" ordinal="2693" sl="2780" sc="1" el="2780" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2781" ordinal="2694" sl="2781" sc="1" el="2781" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2782" ordinal="2695" sl="2782" sc="1" el="2782" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2783" ordinal="2696" sl="2783" sc="1" el="2783" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2784" ordinal="2697" sl="2784" sc="1" el="2784" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2785" ordinal="2698" sl="2785" sc="1" el="2785" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2786" ordinal="2699" sl="2786" sc="1" el="2786" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2787" ordinal="2700" sl="2787" sc="1" el="2787" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2788" ordinal="2701" sl="2788" sc="1" el="2788" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2789" ordinal="2702" sl="2789" sc="1" el="2789" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2790" ordinal="2703" sl="2790" sc="1" el="2790" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2791" ordinal="2704" sl="2791" sc="1" el="2791" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2792" ordinal="2705" sl="2792" sc="1" el="2792" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2793" ordinal="2706" sl="2793" sc="1" el="2793" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2794" ordinal="2707" sl="2794" sc="1" el="2794" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2795" ordinal="2708" sl="2795" sc="1" el="2795" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2796" ordinal="2709" sl="2796" sc="1" el="2796" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2797" ordinal="2710" sl="2797" sc="1" el="2797" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2798" ordinal="2711" sl="2798" sc="1" el="2798" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2799" ordinal="2712" sl="2799" sc="1" el="2799" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2800" ordinal="2713" sl="2800" sc="1" el="2800" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2801" ordinal="2714" sl="2801" sc="1" el="2801" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2802" ordinal="2715" sl="2802" sc="1" el="2802" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2803" ordinal="2716" sl="2803" sc="1" el="2803" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2804" ordinal="2717" sl="2804" sc="1" el="2804" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2805" ordinal="2718" sl="2805" sc="1" el="2805" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2806" ordinal="2719" sl="2806" sc="1" el="2806" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2807" ordinal="2720" sl="2807" sc="1" el="2807" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2808" ordinal="2721" sl="2808" sc="1" el="2808" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2809" ordinal="2722" sl="2809" sc="1" el="2809" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2810" ordinal="2723" sl="2810" sc="1" el="2810" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2811" ordinal="2724" sl="2811" sc="1" el="2811" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2812" ordinal="2725" sl="2812" sc="1" el="2812" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2813" ordinal="2726" sl="2813" sc="1" el="2813" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2814" ordinal="2727" sl="2814" sc="1" el="2814" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2815" ordinal="2728" sl="2815" sc="1" el="2815" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2816" ordinal="2729" sl="2816" sc="1" el="2816" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2817" ordinal="2730" sl="2817" sc="1" el="2817" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2818" ordinal="2731" sl="2818" sc="1" el="2818" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2819" ordinal="2732" sl="2819" sc="1" el="2819" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2820" ordinal="2733" sl="2820" sc="1" el="2820" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2821" ordinal="2734" sl="2821" sc="1" el="2821" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2822" ordinal="2735" sl="2822" sc="1" el="2822" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2823" ordinal="2736" sl="2823" sc="1" el="2823" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2824" ordinal="2737" sl="2824" sc="1" el="2824" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2825" ordinal="2738" sl="2825" sc="1" el="2825" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2826" ordinal="2739" sl="2826" sc="1" el="2826" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2827" ordinal="2740" sl="2827" sc="1" el="2827" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2828" ordinal="2741" sl="2828" sc="1" el="2828" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2829" ordinal="2742" sl="2829" sc="1" el="2829" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2830" ordinal="2743" sl="2830" sc="1" el="2830" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2831" ordinal="2744" sl="2831" sc="1" el="2831" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2832" ordinal="2745" sl="2832" sc="1" el="2832" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2833" ordinal="2746" sl="2833" sc="1" el="2833" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2834" ordinal="2747" sl="2834" sc="1" el="2834" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2835" ordinal="2748" sl="2835" sc="1" el="2835" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2836" ordinal="2749" sl="2836" sc="1" el="2836" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2837" ordinal="2750" sl="2837" sc="1" el="2837" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2838" ordinal="2751" sl="2838" sc="1" el="2838" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2839" ordinal="2752" sl="2839" sc="1" el="2839" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2840" ordinal="2753" sl="2840" sc="1" el="2840" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2841" ordinal="2754" sl="2841" sc="1" el="2841" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2842" ordinal="2755" sl="2842" sc="1" el="2842" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2843" ordinal="2756" sl="2843" sc="1" el="2843" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2845" ordinal="2757" sl="2845" sc="1" el="2845" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2846" ordinal="2758" sl="2846" sc="1" el="2846" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2847" ordinal="2759" sl="2847" sc="1" el="2847" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2848" ordinal="2760" sl="2848" sc="1" el="2848" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2849" ordinal="2761" sl="2849" sc="1" el="2849" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2850" ordinal="2762" sl="2850" sc="1" el="2850" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2851" ordinal="2763" sl="2851" sc="1" el="2851" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2852" ordinal="2764" sl="2852" sc="1" el="2852" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2853" ordinal="2765" sl="2853" sc="1" el="2853" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2854" ordinal="2766" sl="2854" sc="1" el="2854" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2855" ordinal="2767" sl="2855" sc="1" el="2855" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2856" ordinal="2768" sl="2856" sc="1" el="2856" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2857" ordinal="2769" sl="2857" sc="1" el="2857" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2858" ordinal="2770" sl="2858" sc="1" el="2858" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2859" ordinal="2771" sl="2859" sc="1" el="2859" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2860" ordinal="2772" sl="2860" sc="1" el="2860" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2861" ordinal="2773" sl="2861" sc="1" el="2861" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2862" ordinal="2774" sl="2862" sc="1" el="2862" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2863" ordinal="2775" sl="2863" sc="1" el="2863" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2864" ordinal="2776" sl="2864" sc="1" el="2864" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2865" ordinal="2777" sl="2865" sc="1" el="2865" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2866" ordinal="2778" sl="2866" sc="1" el="2866" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2867" ordinal="2779" sl="2867" sc="1" el="2867" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2868" ordinal="2780" sl="2868" sc="1" el="2868" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2869" ordinal="2781" sl="2869" sc="1" el="2869" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2870" ordinal="2782" sl="2870" sc="1" el="2870" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2871" ordinal="2783" sl="2871" sc="1" el="2871" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2872" ordinal="2784" sl="2872" sc="1" el="2872" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2873" ordinal="2785" sl="2873" sc="1" el="2873" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2874" ordinal="2786" sl="2874" sc="1" el="2874" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2875" ordinal="2787" sl="2875" sc="1" el="2875" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2876" ordinal="2788" sl="2876" sc="1" el="2876" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2877" ordinal="2789" sl="2877" sc="1" el="2877" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2878" ordinal="2790" sl="2878" sc="1" el="2878" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2879" ordinal="2791" sl="2879" sc="1" el="2879" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2880" ordinal="2792" sl="2880" sc="1" el="2880" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2881" ordinal="2793" sl="2881" sc="1" el="2881" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2882" ordinal="2794" sl="2882" sc="1" el="2882" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2883" ordinal="2795" sl="2883" sc="1" el="2883" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2884" ordinal="2796" sl="2884" sc="1" el="2884" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2885" ordinal="2797" sl="2885" sc="1" el="2885" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2886" ordinal="2798" sl="2886" sc="1" el="2886" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2887" ordinal="2799" sl="2887" sc="1" el="2887" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2888" ordinal="2800" sl="2888" sc="1" el="2888" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2889" ordinal="2801" sl="2889" sc="1" el="2889" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2890" ordinal="2802" sl="2890" sc="1" el="2890" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2891" ordinal="2803" sl="2891" sc="1" el="2891" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2892" ordinal="2804" sl="2892" sc="1" el="2892" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2894" ordinal="2805" sl="2894" sc="1" el="2894" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2895" ordinal="2806" sl="2895" sc="1" el="2895" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2896" ordinal="2807" sl="2896" sc="1" el="2896" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2897" ordinal="2808" sl="2897" sc="1" el="2897" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2898" ordinal="2809" sl="2898" sc="1" el="2898" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2899" ordinal="2810" sl="2899" sc="1" el="2899" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2900" ordinal="2811" sl="2900" sc="1" el="2900" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2901" ordinal="2812" sl="2901" sc="1" el="2901" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2902" ordinal="2813" sl="2902" sc="1" el="2902" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2904" ordinal="2814" sl="2904" sc="1" el="2904" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2905" ordinal="2815" sl="2905" sc="1" el="2905" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2906" ordinal="2816" sl="2906" sc="1" el="2906" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2907" ordinal="2817" sl="2907" sc="1" el="2907" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2908" ordinal="2818" sl="2908" sc="1" el="2908" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2909" ordinal="2819" sl="2909" sc="1" el="2909" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2910" ordinal="2820" sl="2910" sc="1" el="2910" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2911" ordinal="2821" sl="2911" sc="1" el="2911" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2912" ordinal="2822" sl="2912" sc="1" el="2912" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2913" ordinal="2823" sl="2913" sc="1" el="2913" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2915" ordinal="2824" sl="2915" sc="1" el="2915" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2916" ordinal="2825" sl="2916" sc="1" el="2916" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2917" ordinal="2826" sl="2917" sc="1" el="2917" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2918" ordinal="2827" sl="2918" sc="1" el="2918" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2919" ordinal="2828" sl="2919" sc="1" el="2919" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2920" ordinal="2829" sl="2920" sc="1" el="2920" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2921" ordinal="2830" sl="2921" sc="1" el="2921" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2922" ordinal="2831" sl="2922" sc="1" el="2922" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2923" ordinal="2832" sl="2923" sc="1" el="2923" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2924" ordinal="2833" sl="2924" sc="1" el="2924" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2925" ordinal="2834" sl="2925" sc="1" el="2925" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2926" ordinal="2835" sl="2926" sc="1" el="2926" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2927" ordinal="2836" sl="2927" sc="1" el="2927" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2928" ordinal="2837" sl="2928" sc="1" el="2928" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2929" ordinal="2838" sl="2929" sc="1" el="2929" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2930" ordinal="2839" sl="2930" sc="1" el="2930" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2931" ordinal="2840" sl="2931" sc="1" el="2931" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2932" ordinal="2841" sl="2932" sc="1" el="2932" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2933" ordinal="2842" sl="2933" sc="1" el="2933" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2934" ordinal="2843" sl="2934" sc="1" el="2934" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2935" ordinal="2844" sl="2935" sc="1" el="2935" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2936" ordinal="2845" sl="2936" sc="1" el="2936" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2937" ordinal="2846" sl="2937" sc="1" el="2937" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2938" ordinal="2847" sl="2938" sc="1" el="2938" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2939" ordinal="2848" sl="2939" sc="1" el="2939" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2940" ordinal="2849" sl="2940" sc="1" el="2940" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2941" ordinal="2850" sl="2941" sc="1" el="2941" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2942" ordinal="2851" sl="2942" sc="1" el="2942" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2943" ordinal="2852" sl="2943" sc="1" el="2943" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2944" ordinal="2853" sl="2944" sc="1" el="2944" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2946" ordinal="2854" sl="2946" sc="1" el="2946" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2947" ordinal="2855" sl="2947" sc="1" el="2947" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2948" ordinal="2856" sl="2948" sc="1" el="2948" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2949" ordinal="2857" sl="2949" sc="1" el="2949" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2950" ordinal="2858" sl="2950" sc="1" el="2950" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2951" ordinal="2859" sl="2951" sc="1" el="2951" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2952" ordinal="2860" sl="2952" sc="1" el="2952" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2953" ordinal="2861" sl="2953" sc="1" el="2953" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2954" ordinal="2862" sl="2954" sc="1" el="2954" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2955" ordinal="2863" sl="2955" sc="1" el="2955" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2956" ordinal="2864" sl="2956" sc="1" el="2956" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2957" ordinal="2865" sl="2957" sc="1" el="2957" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2958" ordinal="2866" sl="2958" sc="1" el="2958" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2959" ordinal="2867" sl="2959" sc="1" el="2959" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2960" ordinal="2868" sl="2960" sc="1" el="2960" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2961" ordinal="2869" sl="2961" sc="1" el="2961" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2962" ordinal="2870" sl="2962" sc="1" el="2962" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2963" ordinal="2871" sl="2963" sc="1" el="2963" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2965" ordinal="2872" sl="2965" sc="1" el="2965" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2966" ordinal="2873" sl="2966" sc="1" el="2966" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2967" ordinal="2874" sl="2967" sc="1" el="2967" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2968" ordinal="2875" sl="2968" sc="1" el="2968" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2969" ordinal="2876" sl="2969" sc="1" el="2969" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2970" ordinal="2877" sl="2970" sc="1" el="2970" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2971" ordinal="2878" sl="2971" sc="1" el="2971" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2972" ordinal="2879" sl="2972" sc="1" el="2972" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2973" ordinal="2880" sl="2973" sc="1" el="2973" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2974" ordinal="2881" sl="2974" sc="1" el="2974" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2975" ordinal="2882" sl="2975" sc="1" el="2975" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2976" ordinal="2883" sl="2976" sc="1" el="2976" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2977" ordinal="2884" sl="2977" sc="1" el="2977" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2978" ordinal="2885" sl="2978" sc="1" el="2978" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2979" ordinal="2886" sl="2979" sc="1" el="2979" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2980" ordinal="2887" sl="2980" sc="1" el="2980" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2981" ordinal="2888" sl="2981" sc="1" el="2981" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2982" ordinal="2889" sl="2982" sc="1" el="2982" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2983" ordinal="2890" sl="2983" sc="1" el="2983" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2984" ordinal="2891" sl="2984" sc="1" el="2984" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2985" ordinal="2892" sl="2985" sc="1" el="2985" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2986" ordinal="2893" sl="2986" sc="1" el="2986" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2987" ordinal="2894" sl="2987" sc="1" el="2987" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2988" ordinal="2895" sl="2988" sc="1" el="2988" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2989" ordinal="2896" sl="2989" sc="1" el="2989" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2991" ordinal="2897" sl="2991" sc="1" el="2991" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2992" ordinal="2898" sl="2992" sc="1" el="2992" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2993" ordinal="2899" sl="2993" sc="1" el="2993" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2994" ordinal="2900" sl="2994" sc="1" el="2994" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2995" ordinal="2901" sl="2995" sc="1" el="2995" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2996" ordinal="2902" sl="2996" sc="1" el="2996" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2997" ordinal="2903" sl="2997" sc="1" el="2997" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2998" ordinal="2904" sl="2998" sc="1" el="2998" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="2999" ordinal="2905" sl="2999" sc="1" el="2999" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3000" ordinal="2906" sl="3000" sc="1" el="3000" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3001" ordinal="2907" sl="3001" sc="1" el="3001" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3002" ordinal="2908" sl="3002" sc="1" el="3002" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3003" ordinal="2909" sl="3003" sc="1" el="3003" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3004" ordinal="2910" sl="3004" sc="1" el="3004" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3005" ordinal="2911" sl="3005" sc="1" el="3005" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3006" ordinal="2912" sl="3006" sc="1" el="3006" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3007" ordinal="2913" sl="3007" sc="1" el="3007" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3008" ordinal="2914" sl="3008" sc="1" el="3008" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3010" ordinal="2915" sl="3010" sc="1" el="3010" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3011" ordinal="2916" sl="3011" sc="1" el="3011" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3012" ordinal="2917" sl="3012" sc="1" el="3012" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3013" ordinal="2918" sl="3013" sc="1" el="3013" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3014" ordinal="2919" sl="3014" sc="1" el="3014" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3015" ordinal="2920" sl="3015" sc="1" el="3015" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3016" ordinal="2921" sl="3016" sc="1" el="3016" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3017" ordinal="2922" sl="3017" sc="1" el="3017" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3018" ordinal="2923" sl="3018" sc="1" el="3018" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3019" ordinal="2924" sl="3019" sc="1" el="3019" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3020" ordinal="2925" sl="3020" sc="1" el="3020" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3021" ordinal="2926" sl="3021" sc="1" el="3021" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3022" ordinal="2927" sl="3022" sc="1" el="3022" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3023" ordinal="2928" sl="3023" sc="1" el="3023" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3024" ordinal="2929" sl="3024" sc="1" el="3024" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3025" ordinal="2930" sl="3025" sc="1" el="3025" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3026" ordinal="2931" sl="3026" sc="1" el="3026" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3027" ordinal="2932" sl="3027" sc="1" el="3027" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3029" ordinal="2933" sl="3029" sc="1" el="3029" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3030" ordinal="2934" sl="3030" sc="1" el="3030" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3031" ordinal="2935" sl="3031" sc="1" el="3031" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3032" ordinal="2936" sl="3032" sc="1" el="3032" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3033" ordinal="2937" sl="3033" sc="1" el="3033" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3034" ordinal="2938" sl="3034" sc="1" el="3034" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3035" ordinal="2939" sl="3035" sc="1" el="3035" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3036" ordinal="2940" sl="3036" sc="1" el="3036" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3037" ordinal="2941" sl="3037" sc="1" el="3037" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3038" ordinal="2942" sl="3038" sc="1" el="3038" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3039" ordinal="2943" sl="3039" sc="1" el="3039" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3040" ordinal="2944" sl="3040" sc="1" el="3040" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3041" ordinal="2945" sl="3041" sc="1" el="3041" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3042" ordinal="2946" sl="3042" sc="1" el="3042" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3043" ordinal="2947" sl="3043" sc="1" el="3043" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3044" ordinal="2948" sl="3044" sc="1" el="3044" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3045" ordinal="2949" sl="3045" sc="1" el="3045" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3046" ordinal="2950" sl="3046" sc="1" el="3046" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3048" ordinal="2951" sl="3048" sc="1" el="3048" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3049" ordinal="2952" sl="3049" sc="1" el="3049" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3050" ordinal="2953" sl="3050" sc="1" el="3050" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3051" ordinal="2954" sl="3051" sc="1" el="3051" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3052" ordinal="2955" sl="3052" sc="1" el="3052" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3053" ordinal="2956" sl="3053" sc="1" el="3053" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3054" ordinal="2957" sl="3054" sc="1" el="3054" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3055" ordinal="2958" sl="3055" sc="1" el="3055" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3056" ordinal="2959" sl="3056" sc="1" el="3056" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3057" ordinal="2960" sl="3057" sc="1" el="3057" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3058" ordinal="2961" sl="3058" sc="1" el="3058" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3059" ordinal="2962" sl="3059" sc="1" el="3059" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3060" ordinal="2963" sl="3060" sc="1" el="3060" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3061" ordinal="2964" sl="3061" sc="1" el="3061" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3062" ordinal="2965" sl="3062" sc="1" el="3062" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3063" ordinal="2966" sl="3063" sc="1" el="3063" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3064" ordinal="2967" sl="3064" sc="1" el="3064" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3065" ordinal="2968" sl="3065" sc="1" el="3065" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3067" ordinal="2969" sl="3067" sc="1" el="3067" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3068" ordinal="2970" sl="3068" sc="1" el="3068" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3069" ordinal="2971" sl="3069" sc="1" el="3069" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3070" ordinal="2972" sl="3070" sc="1" el="3070" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3071" ordinal="2973" sl="3071" sc="1" el="3071" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3072" ordinal="2974" sl="3072" sc="1" el="3072" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3073" ordinal="2975" sl="3073" sc="1" el="3073" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3074" ordinal="2976" sl="3074" sc="1" el="3074" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3075" ordinal="2977" sl="3075" sc="1" el="3075" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3076" ordinal="2978" sl="3076" sc="1" el="3076" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3078" ordinal="2979" sl="3078" sc="1" el="3078" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3079" ordinal="2980" sl="3079" sc="1" el="3079" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3080" ordinal="2981" sl="3080" sc="1" el="3080" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3081" ordinal="2982" sl="3081" sc="1" el="3081" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3082" ordinal="2983" sl="3082" sc="1" el="3082" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3083" ordinal="2984" sl="3083" sc="1" el="3083" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3084" ordinal="2985" sl="3084" sc="1" el="3084" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3085" ordinal="2986" sl="3085" sc="1" el="3085" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3086" ordinal="2987" sl="3086" sc="1" el="3086" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3087" ordinal="2988" sl="3087" sc="1" el="3087" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3088" ordinal="2989" sl="3088" sc="1" el="3088" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3089" ordinal="2990" sl="3089" sc="1" el="3089" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3090" ordinal="2991" sl="3090" sc="1" el="3090" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3091" ordinal="2992" sl="3091" sc="1" el="3091" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3092" ordinal="2993" sl="3092" sc="1" el="3092" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3093" ordinal="2994" sl="3093" sc="1" el="3093" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3094" ordinal="2995" sl="3094" sc="1" el="3094" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3095" ordinal="2996" sl="3095" sc="1" el="3095" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3096" ordinal="2997" sl="3096" sc="1" el="3096" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3097" ordinal="2998" sl="3097" sc="1" el="3097" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3098" ordinal="2999" sl="3098" sc="1" el="3098" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3099" ordinal="3000" sl="3099" sc="1" el="3099" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3100" ordinal="3001" sl="3100" sc="1" el="3100" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3101" ordinal="3002" sl="3101" sc="1" el="3101" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3103" ordinal="3003" sl="3103" sc="1" el="3103" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3104" ordinal="3004" sl="3104" sc="1" el="3104" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3105" ordinal="3005" sl="3105" sc="1" el="3105" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3106" ordinal="3006" sl="3106" sc="1" el="3106" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3107" ordinal="3007" sl="3107" sc="1" el="3107" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3108" ordinal="3008" sl="3108" sc="1" el="3108" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3109" ordinal="3009" sl="3109" sc="1" el="3109" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3110" ordinal="3010" sl="3110" sc="1" el="3110" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3111" ordinal="3011" sl="3111" sc="1" el="3111" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3112" ordinal="3012" sl="3112" sc="1" el="3112" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3114" ordinal="3013" sl="3114" sc="1" el="3114" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3115" ordinal="3014" sl="3115" sc="1" el="3115" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3116" ordinal="3015" sl="3116" sc="1" el="3116" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3117" ordinal="3016" sl="3117" sc="1" el="3117" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3118" ordinal="3017" sl="3118" sc="1" el="3118" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3119" ordinal="3018" sl="3119" sc="1" el="3119" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3120" ordinal="3019" sl="3120" sc="1" el="3120" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3121" ordinal="3020" sl="3121" sc="1" el="3121" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3122" ordinal="3021" sl="3122" sc="1" el="3122" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3123" ordinal="3022" sl="3123" sc="1" el="3123" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3124" ordinal="3023" sl="3124" sc="1" el="3124" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3125" ordinal="3024" sl="3125" sc="1" el="3125" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3126" ordinal="3025" sl="3126" sc="1" el="3126" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3127" ordinal="3026" sl="3127" sc="1" el="3127" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3128" ordinal="3027" sl="3128" sc="1" el="3128" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3129" ordinal="3028" sl="3129" sc="1" el="3129" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3130" ordinal="3029" sl="3130" sc="1" el="3130" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3131" ordinal="3030" sl="3131" sc="1" el="3131" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3133" ordinal="3031" sl="3133" sc="1" el="3133" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3134" ordinal="3032" sl="3134" sc="1" el="3134" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3135" ordinal="3033" sl="3135" sc="1" el="3135" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3136" ordinal="3034" sl="3136" sc="1" el="3136" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3137" ordinal="3035" sl="3137" sc="1" el="3137" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3138" ordinal="3036" sl="3138" sc="1" el="3138" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3139" ordinal="3037" sl="3139" sc="1" el="3139" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3140" ordinal="3038" sl="3140" sc="1" el="3140" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3141" ordinal="3039" sl="3141" sc="1" el="3141" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3142" ordinal="3040" sl="3142" sc="1" el="3142" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3144" ordinal="3041" sl="3144" sc="1" el="3144" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3145" ordinal="3042" sl="3145" sc="1" el="3145" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3146" ordinal="3043" sl="3146" sc="1" el="3146" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3147" ordinal="3044" sl="3147" sc="1" el="3147" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3148" ordinal="3045" sl="3148" sc="1" el="3148" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3149" ordinal="3046" sl="3149" sc="1" el="3149" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3150" ordinal="3047" sl="3150" sc="1" el="3150" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3151" ordinal="3048" sl="3151" sc="1" el="3151" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3152" ordinal="3049" sl="3152" sc="1" el="3152" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3153" ordinal="3050" sl="3153" sc="1" el="3153" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3154" ordinal="3051" sl="3154" sc="1" el="3154" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3155" ordinal="3052" sl="3155" sc="1" el="3155" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3156" ordinal="3053" sl="3156" sc="1" el="3156" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3157" ordinal="3054" sl="3157" sc="1" el="3157" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3158" ordinal="3055" sl="3158" sc="1" el="3158" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3159" ordinal="3056" sl="3159" sc="1" el="3159" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3160" ordinal="3057" sl="3160" sc="1" el="3160" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3161" ordinal="3058" sl="3161" sc="1" el="3161" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3163" ordinal="3059" sl="3163" sc="1" el="3163" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3164" ordinal="3060" sl="3164" sc="1" el="3164" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3165" ordinal="3061" sl="3165" sc="1" el="3165" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3166" ordinal="3062" sl="3166" sc="1" el="3166" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3167" ordinal="3063" sl="3167" sc="1" el="3167" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3168" ordinal="3064" sl="3168" sc="1" el="3168" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3169" ordinal="3065" sl="3169" sc="1" el="3169" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3170" ordinal="3066" sl="3170" sc="1" el="3170" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3171" ordinal="3067" sl="3171" sc="1" el="3171" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3172" ordinal="3068" sl="3172" sc="1" el="3172" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3173" ordinal="3069" sl="3173" sc="1" el="3173" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3174" ordinal="3070" sl="3174" sc="1" el="3174" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3175" ordinal="3071" sl="3175" sc="1" el="3175" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3176" ordinal="3072" sl="3176" sc="1" el="3176" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3177" ordinal="3073" sl="3177" sc="1" el="3177" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3178" ordinal="3074" sl="3178" sc="1" el="3178" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3180" ordinal="3075" sl="3180" sc="1" el="3180" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3181" ordinal="3076" sl="3181" sc="1" el="3181" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3182" ordinal="3077" sl="3182" sc="1" el="3182" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3183" ordinal="3078" sl="3183" sc="1" el="3183" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3184" ordinal="3079" sl="3184" sc="1" el="3184" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3185" ordinal="3080" sl="3185" sc="1" el="3185" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3186" ordinal="3081" sl="3186" sc="1" el="3186" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3187" ordinal="3082" sl="3187" sc="1" el="3187" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3188" ordinal="3083" sl="3188" sc="1" el="3188" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3189" ordinal="3084" sl="3189" sc="1" el="3189" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3190" ordinal="3085" sl="3190" sc="1" el="3190" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3191" ordinal="3086" sl="3191" sc="1" el="3191" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3192" ordinal="3087" sl="3192" sc="1" el="3192" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3193" ordinal="3088" sl="3193" sc="1" el="3193" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3194" ordinal="3089" sl="3194" sc="1" el="3194" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3195" ordinal="3090" sl="3195" sc="1" el="3195" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3196" ordinal="3091" sl="3196" sc="1" el="3196" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3197" ordinal="3092" sl="3197" sc="1" el="3197" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3198" ordinal="3093" sl="3198" sc="1" el="3198" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3199" ordinal="3094" sl="3199" sc="1" el="3199" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3200" ordinal="3095" sl="3200" sc="1" el="3200" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3201" ordinal="3096" sl="3201" sc="1" el="3201" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3202" ordinal="3097" sl="3202" sc="1" el="3202" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3203" ordinal="3098" sl="3203" sc="1" el="3203" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3205" ordinal="3099" sl="3205" sc="1" el="3205" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3206" ordinal="3100" sl="3206" sc="1" el="3206" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3207" ordinal="3101" sl="3207" sc="1" el="3207" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3208" ordinal="3102" sl="3208" sc="1" el="3208" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3209" ordinal="3103" sl="3209" sc="1" el="3209" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3210" ordinal="3104" sl="3210" sc="1" el="3210" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3211" ordinal="3105" sl="3211" sc="1" el="3211" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3212" ordinal="3106" sl="3212" sc="1" el="3212" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3213" ordinal="3107" sl="3213" sc="1" el="3213" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3214" ordinal="3108" sl="3214" sc="1" el="3214" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3215" ordinal="3109" sl="3215" sc="1" el="3215" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3216" ordinal="3110" sl="3216" sc="1" el="3216" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3217" ordinal="3111" sl="3217" sc="1" el="3217" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3218" ordinal="3112" sl="3218" sc="1" el="3218" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3219" ordinal="3113" sl="3219" sc="1" el="3219" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3220" ordinal="3114" sl="3220" sc="1" el="3220" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3221" ordinal="3115" sl="3221" sc="1" el="3221" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3222" ordinal="3116" sl="3222" sc="1" el="3222" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3224" ordinal="3117" sl="3224" sc="1" el="3224" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3225" ordinal="3118" sl="3225" sc="1" el="3225" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3226" ordinal="3119" sl="3226" sc="1" el="3226" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3227" ordinal="3120" sl="3227" sc="1" el="3227" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3228" ordinal="3121" sl="3228" sc="1" el="3228" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3229" ordinal="3122" sl="3229" sc="1" el="3229" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3230" ordinal="3123" sl="3230" sc="1" el="3230" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3231" ordinal="3124" sl="3231" sc="1" el="3231" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3232" ordinal="3125" sl="3232" sc="1" el="3232" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3233" ordinal="3126" sl="3233" sc="1" el="3233" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3234" ordinal="3127" sl="3234" sc="1" el="3234" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3235" ordinal="3128" sl="3235" sc="1" el="3235" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3236" ordinal="3129" sl="3236" sc="1" el="3236" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3237" ordinal="3130" sl="3237" sc="1" el="3237" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3238" ordinal="3131" sl="3238" sc="1" el="3238" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3239" ordinal="3132" sl="3239" sc="1" el="3239" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3240" ordinal="3133" sl="3240" sc="1" el="3240" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3241" ordinal="3134" sl="3241" sc="1" el="3241" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3242" ordinal="3135" sl="3242" sc="1" el="3242" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3243" ordinal="3136" sl="3243" sc="1" el="3243" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3244" ordinal="3137" sl="3244" sc="1" el="3244" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3245" ordinal="3138" sl="3245" sc="1" el="3245" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3246" ordinal="3139" sl="3246" sc="1" el="3246" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3247" ordinal="3140" sl="3247" sc="1" el="3247" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3248" ordinal="3141" sl="3248" sc="1" el="3248" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3250" ordinal="3142" sl="3250" sc="1" el="3250" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3251" ordinal="3143" sl="3251" sc="1" el="3251" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3252" ordinal="3144" sl="3252" sc="1" el="3252" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3253" ordinal="3145" sl="3253" sc="1" el="3253" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3254" ordinal="3146" sl="3254" sc="1" el="3254" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3255" ordinal="3147" sl="3255" sc="1" el="3255" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3256" ordinal="3148" sl="3256" sc="1" el="3256" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3257" ordinal="3149" sl="3257" sc="1" el="3257" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3258" ordinal="3150" sl="3258" sc="1" el="3258" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3259" ordinal="3151" sl="3259" sc="1" el="3259" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3260" ordinal="3152" sl="3260" sc="1" el="3260" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3261" ordinal="3153" sl="3261" sc="1" el="3261" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3262" ordinal="3154" sl="3262" sc="1" el="3262" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3263" ordinal="3155" sl="3263" sc="1" el="3263" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3264" ordinal="3156" sl="3264" sc="1" el="3264" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3265" ordinal="3157" sl="3265" sc="1" el="3265" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3267" ordinal="3158" sl="3267" sc="1" el="3267" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3268" ordinal="3159" sl="3268" sc="1" el="3268" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3269" ordinal="3160" sl="3269" sc="1" el="3269" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3270" ordinal="3161" sl="3270" sc="1" el="3270" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3271" ordinal="3162" sl="3271" sc="1" el="3271" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3272" ordinal="3163" sl="3272" sc="1" el="3272" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3273" ordinal="3164" sl="3273" sc="1" el="3273" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3274" ordinal="3165" sl="3274" sc="1" el="3274" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3275" ordinal="3166" sl="3275" sc="1" el="3275" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3276" ordinal="3167" sl="3276" sc="1" el="3276" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3277" ordinal="3168" sl="3277" sc="1" el="3277" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3278" ordinal="3169" sl="3278" sc="1" el="3278" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3279" ordinal="3170" sl="3279" sc="1" el="3279" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3280" ordinal="3171" sl="3280" sc="1" el="3280" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3281" ordinal="3172" sl="3281" sc="1" el="3281" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3282" ordinal="3173" sl="3282" sc="1" el="3282" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3283" ordinal="3174" sl="3283" sc="1" el="3283" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3284" ordinal="3175" sl="3284" sc="1" el="3284" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3286" ordinal="3176" sl="3286" sc="1" el="3286" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3287" ordinal="3177" sl="3287" sc="1" el="3287" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3288" ordinal="3178" sl="3288" sc="1" el="3288" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3289" ordinal="3179" sl="3289" sc="1" el="3289" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3290" ordinal="3180" sl="3290" sc="1" el="3290" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3291" ordinal="3181" sl="3291" sc="1" el="3291" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3292" ordinal="3182" sl="3292" sc="1" el="3292" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3293" ordinal="3183" sl="3293" sc="1" el="3293" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3294" ordinal="3184" sl="3294" sc="1" el="3294" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3295" ordinal="3185" sl="3295" sc="1" el="3295" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3296" ordinal="3186" sl="3296" sc="1" el="3296" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3297" ordinal="3187" sl="3297" sc="1" el="3297" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3298" ordinal="3188" sl="3298" sc="1" el="3298" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3299" ordinal="3189" sl="3299" sc="1" el="3299" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3300" ordinal="3190" sl="3300" sc="1" el="3300" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3301" ordinal="3191" sl="3301" sc="1" el="3301" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3302" ordinal="3192" sl="3302" sc="1" el="3302" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3303" ordinal="3193" sl="3303" sc="1" el="3303" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3305" ordinal="3194" sl="3305" sc="1" el="3305" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3306" ordinal="3195" sl="3306" sc="1" el="3306" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3307" ordinal="3196" sl="3307" sc="1" el="3307" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3308" ordinal="3197" sl="3308" sc="1" el="3308" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3309" ordinal="3198" sl="3309" sc="1" el="3309" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3310" ordinal="3199" sl="3310" sc="1" el="3310" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3311" ordinal="3200" sl="3311" sc="1" el="3311" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3312" ordinal="3201" sl="3312" sc="1" el="3312" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3313" ordinal="3202" sl="3313" sc="1" el="3313" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3314" ordinal="3203" sl="3314" sc="1" el="3314" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3316" ordinal="3204" sl="3316" sc="1" el="3316" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3317" ordinal="3205" sl="3317" sc="1" el="3317" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3318" ordinal="3206" sl="3318" sc="1" el="3318" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3319" ordinal="3207" sl="3319" sc="1" el="3319" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3320" ordinal="3208" sl="3320" sc="1" el="3320" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3321" ordinal="3209" sl="3321" sc="1" el="3321" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3322" ordinal="3210" sl="3322" sc="1" el="3322" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3323" ordinal="3211" sl="3323" sc="1" el="3323" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3324" ordinal="3212" sl="3324" sc="1" el="3324" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3326" ordinal="3213" sl="3326" sc="1" el="3326" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3327" ordinal="3214" sl="3327" sc="1" el="3327" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3328" ordinal="3215" sl="3328" sc="1" el="3328" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3329" ordinal="3216" sl="3329" sc="1" el="3329" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3330" ordinal="3217" sl="3330" sc="1" el="3330" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3331" ordinal="3218" sl="3331" sc="1" el="3331" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3332" ordinal="3219" sl="3332" sc="1" el="3332" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3333" ordinal="3220" sl="3333" sc="1" el="3333" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3334" ordinal="3221" sl="3334" sc="1" el="3334" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3335" ordinal="3222" sl="3335" sc="1" el="3335" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3336" ordinal="3223" sl="3336" sc="1" el="3336" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3337" ordinal="3224" sl="3337" sc="1" el="3337" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3338" ordinal="3225" sl="3338" sc="1" el="3338" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3339" ordinal="3226" sl="3339" sc="1" el="3339" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3340" ordinal="3227" sl="3340" sc="1" el="3340" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3341" ordinal="3228" sl="3341" sc="1" el="3341" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3342" ordinal="3229" sl="3342" sc="1" el="3342" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3343" ordinal="3230" sl="3343" sc="1" el="3343" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3345" ordinal="3231" sl="3345" sc="1" el="3345" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3346" ordinal="3232" sl="3346" sc="1" el="3346" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3347" ordinal="3233" sl="3347" sc="1" el="3347" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3348" ordinal="3234" sl="3348" sc="1" el="3348" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3349" ordinal="3235" sl="3349" sc="1" el="3349" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3350" ordinal="3236" sl="3350" sc="1" el="3350" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3351" ordinal="3237" sl="3351" sc="1" el="3351" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3352" ordinal="3238" sl="3352" sc="1" el="3352" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3353" ordinal="3239" sl="3353" sc="1" el="3353" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3354" ordinal="3240" sl="3354" sc="1" el="3354" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3356" ordinal="3241" sl="3356" sc="1" el="3356" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3357" ordinal="3242" sl="3357" sc="1" el="3357" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3358" ordinal="3243" sl="3358" sc="1" el="3358" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3359" ordinal="3244" sl="3359" sc="1" el="3359" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3360" ordinal="3245" sl="3360" sc="1" el="3360" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3361" ordinal="3246" sl="3361" sc="1" el="3361" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3362" ordinal="3247" sl="3362" sc="1" el="3362" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3363" ordinal="3248" sl="3363" sc="1" el="3363" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3364" ordinal="3249" sl="3364" sc="1" el="3364" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3365" ordinal="3250" sl="3365" sc="1" el="3365" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3366" ordinal="3251" sl="3366" sc="1" el="3366" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3367" ordinal="3252" sl="3367" sc="1" el="3367" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3368" ordinal="3253" sl="3368" sc="1" el="3368" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3369" ordinal="3254" sl="3369" sc="1" el="3369" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3370" ordinal="3255" sl="3370" sc="1" el="3370" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3371" ordinal="3256" sl="3371" sc="1" el="3371" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3372" ordinal="3257" sl="3372" sc="1" el="3372" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3373" ordinal="3258" sl="3373" sc="1" el="3373" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3375" ordinal="3259" sl="3375" sc="1" el="3375" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3376" ordinal="3260" sl="3376" sc="1" el="3376" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3377" ordinal="3261" sl="3377" sc="1" el="3377" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3378" ordinal="3262" sl="3378" sc="1" el="3378" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3379" ordinal="3263" sl="3379" sc="1" el="3379" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3380" ordinal="3264" sl="3380" sc="1" el="3380" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3381" ordinal="3265" sl="3381" sc="1" el="3381" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3382" ordinal="3266" sl="3382" sc="1" el="3382" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3383" ordinal="3267" sl="3383" sc="1" el="3383" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3384" ordinal="3268" sl="3384" sc="1" el="3384" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3386" ordinal="3269" sl="3386" sc="1" el="3386" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3387" ordinal="3270" sl="3387" sc="1" el="3387" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3388" ordinal="3271" sl="3388" sc="1" el="3388" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3389" ordinal="3272" sl="3389" sc="1" el="3389" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3390" ordinal="3273" sl="3390" sc="1" el="3390" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3391" ordinal="3274" sl="3391" sc="1" el="3391" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3392" ordinal="3275" sl="3392" sc="1" el="3392" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3393" ordinal="3276" sl="3393" sc="1" el="3393" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3394" ordinal="3277" sl="3394" sc="1" el="3394" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3395" ordinal="3278" sl="3395" sc="1" el="3395" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3396" ordinal="3279" sl="3396" sc="1" el="3396" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3397" ordinal="3280" sl="3397" sc="1" el="3397" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3398" ordinal="3281" sl="3398" sc="1" el="3398" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3399" ordinal="3282" sl="3399" sc="1" el="3399" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3400" ordinal="3283" sl="3400" sc="1" el="3400" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3401" ordinal="3284" sl="3401" sc="1" el="3401" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3402" ordinal="3285" sl="3402" sc="1" el="3402" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3403" ordinal="3286" sl="3403" sc="1" el="3403" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3405" ordinal="3287" sl="3405" sc="1" el="3405" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3406" ordinal="3288" sl="3406" sc="1" el="3406" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3407" ordinal="3289" sl="3407" sc="1" el="3407" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3408" ordinal="3290" sl="3408" sc="1" el="3408" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3409" ordinal="3291" sl="3409" sc="1" el="3409" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3410" ordinal="3292" sl="3410" sc="1" el="3410" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3411" ordinal="3293" sl="3411" sc="1" el="3411" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3412" ordinal="3294" sl="3412" sc="1" el="3412" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3413" ordinal="3295" sl="3413" sc="1" el="3413" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3414" ordinal="3296" sl="3414" sc="1" el="3414" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3416" ordinal="3297" sl="3416" sc="1" el="3416" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3417" ordinal="3298" sl="3417" sc="1" el="3417" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3418" ordinal="3299" sl="3418" sc="1" el="3418" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3419" ordinal="3300" sl="3419" sc="1" el="3419" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3420" ordinal="3301" sl="3420" sc="1" el="3420" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3421" ordinal="3302" sl="3421" sc="1" el="3421" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3422" ordinal="3303" sl="3422" sc="1" el="3422" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3423" ordinal="3304" sl="3423" sc="1" el="3423" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3424" ordinal="3305" sl="3424" sc="1" el="3424" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3425" ordinal="3306" sl="3425" sc="1" el="3425" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3426" ordinal="3307" sl="3426" sc="1" el="3426" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3427" ordinal="3308" sl="3427" sc="1" el="3427" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3428" ordinal="3309" sl="3428" sc="1" el="3428" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3429" ordinal="3310" sl="3429" sc="1" el="3429" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3430" ordinal="3311" sl="3430" sc="1" el="3430" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3431" ordinal="3312" sl="3431" sc="1" el="3431" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3432" ordinal="3313" sl="3432" sc="1" el="3432" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3433" ordinal="3314" sl="3433" sc="1" el="3433" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3435" ordinal="3315" sl="3435" sc="1" el="3435" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3436" ordinal="3316" sl="3436" sc="1" el="3436" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3437" ordinal="3317" sl="3437" sc="1" el="3437" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3438" ordinal="3318" sl="3438" sc="1" el="3438" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3439" ordinal="3319" sl="3439" sc="1" el="3439" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3440" ordinal="3320" sl="3440" sc="1" el="3440" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3441" ordinal="3321" sl="3441" sc="1" el="3441" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3442" ordinal="3322" sl="3442" sc="1" el="3442" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3443" ordinal="3323" sl="3443" sc="1" el="3443" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3444" ordinal="3324" sl="3444" sc="1" el="3444" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3445" ordinal="3325" sl="3445" sc="1" el="3445" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3446" ordinal="3326" sl="3446" sc="1" el="3446" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3447" ordinal="3327" sl="3447" sc="1" el="3447" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3448" ordinal="3328" sl="3448" sc="1" el="3448" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3449" ordinal="3329" sl="3449" sc="1" el="3449" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3450" ordinal="3330" sl="3450" sc="1" el="3450" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3451" ordinal="3331" sl="3451" sc="1" el="3451" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3452" ordinal="3332" sl="3452" sc="1" el="3452" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3454" ordinal="3333" sl="3454" sc="1" el="3454" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3455" ordinal="3334" sl="3455" sc="1" el="3455" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3456" ordinal="3335" sl="3456" sc="1" el="3456" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3457" ordinal="3336" sl="3457" sc="1" el="3457" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3458" ordinal="3337" sl="3458" sc="1" el="3458" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3459" ordinal="3338" sl="3459" sc="1" el="3459" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3460" ordinal="3339" sl="3460" sc="1" el="3460" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3461" ordinal="3340" sl="3461" sc="1" el="3461" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3462" ordinal="3341" sl="3462" sc="1" el="3462" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3463" ordinal="3342" sl="3463" sc="1" el="3463" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3464" ordinal="3343" sl="3464" sc="1" el="3464" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3465" ordinal="3344" sl="3465" sc="1" el="3465" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3466" ordinal="3345" sl="3466" sc="1" el="3466" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3467" ordinal="3346" sl="3467" sc="1" el="3467" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3468" ordinal="3347" sl="3468" sc="1" el="3468" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3469" ordinal="3348" sl="3469" sc="1" el="3469" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3470" ordinal="3349" sl="3470" sc="1" el="3470" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3471" ordinal="3350" sl="3471" sc="1" el="3471" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3472" ordinal="3351" sl="3472" sc="1" el="3472" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3473" ordinal="3352" sl="3473" sc="1" el="3473" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3474" ordinal="3353" sl="3474" sc="1" el="3474" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3475" ordinal="3354" sl="3475" sc="1" el="3475" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3476" ordinal="3355" sl="3476" sc="1" el="3476" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3477" ordinal="3356" sl="3477" sc="1" el="3477" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3478" ordinal="3357" sl="3478" sc="1" el="3478" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3479" ordinal="3358" sl="3479" sc="1" el="3479" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3481" ordinal="3359" sl="3481" sc="1" el="3481" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3482" ordinal="3360" sl="3482" sc="1" el="3482" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3483" ordinal="3361" sl="3483" sc="1" el="3483" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3484" ordinal="3362" sl="3484" sc="1" el="3484" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3485" ordinal="3363" sl="3485" sc="1" el="3485" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3486" ordinal="3364" sl="3486" sc="1" el="3486" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3487" ordinal="3365" sl="3487" sc="1" el="3487" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3488" ordinal="3366" sl="3488" sc="1" el="3488" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3489" ordinal="3367" sl="3489" sc="1" el="3489" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3490" ordinal="3368" sl="3490" sc="1" el="3490" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3492" ordinal="3369" sl="3492" sc="1" el="3492" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3493" ordinal="3370" sl="3493" sc="1" el="3493" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3494" ordinal="3371" sl="3494" sc="1" el="3494" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3495" ordinal="3372" sl="3495" sc="1" el="3495" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3496" ordinal="3373" sl="3496" sc="1" el="3496" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3497" ordinal="3374" sl="3497" sc="1" el="3497" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3498" ordinal="3375" sl="3498" sc="1" el="3498" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3499" ordinal="3376" sl="3499" sc="1" el="3499" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3500" ordinal="3377" sl="3500" sc="1" el="3500" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3501" ordinal="3378" sl="3501" sc="1" el="3501" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3502" ordinal="3379" sl="3502" sc="1" el="3502" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3503" ordinal="3380" sl="3503" sc="1" el="3503" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3504" ordinal="3381" sl="3504" sc="1" el="3504" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3505" ordinal="3382" sl="3505" sc="1" el="3505" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3506" ordinal="3383" sl="3506" sc="1" el="3506" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3507" ordinal="3384" sl="3507" sc="1" el="3507" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3508" ordinal="3385" sl="3508" sc="1" el="3508" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3509" ordinal="3386" sl="3509" sc="1" el="3509" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3511" ordinal="3387" sl="3511" sc="1" el="3511" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3512" ordinal="3388" sl="3512" sc="1" el="3512" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3513" ordinal="3389" sl="3513" sc="1" el="3513" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3514" ordinal="3390" sl="3514" sc="1" el="3514" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3515" ordinal="3391" sl="3515" sc="1" el="3515" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3516" ordinal="3392" sl="3516" sc="1" el="3516" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3517" ordinal="3393" sl="3517" sc="1" el="3517" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3518" ordinal="3394" sl="3518" sc="1" el="3518" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3519" ordinal="3395" sl="3519" sc="1" el="3519" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3520" ordinal="3396" sl="3520" sc="1" el="3520" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3522" ordinal="3397" sl="3522" sc="1" el="3522" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3523" ordinal="3398" sl="3523" sc="1" el="3523" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3524" ordinal="3399" sl="3524" sc="1" el="3524" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3525" ordinal="3400" sl="3525" sc="1" el="3525" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3526" ordinal="3401" sl="3526" sc="1" el="3526" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3527" ordinal="3402" sl="3527" sc="1" el="3527" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3528" ordinal="3403" sl="3528" sc="1" el="3528" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3529" ordinal="3404" sl="3529" sc="1" el="3529" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3530" ordinal="3405" sl="3530" sc="1" el="3530" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3531" ordinal="3406" sl="3531" sc="1" el="3531" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3533" ordinal="3407" sl="3533" sc="1" el="3533" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3534" ordinal="3408" sl="3534" sc="1" el="3534" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3535" ordinal="3409" sl="3535" sc="1" el="3535" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3536" ordinal="3410" sl="3536" sc="1" el="3536" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3537" ordinal="3411" sl="3537" sc="1" el="3537" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3538" ordinal="3412" sl="3538" sc="1" el="3538" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3539" ordinal="3413" sl="3539" sc="1" el="3539" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3540" ordinal="3414" sl="3540" sc="1" el="3540" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3541" ordinal="3415" sl="3541" sc="1" el="3541" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3542" ordinal="3416" sl="3542" sc="1" el="3542" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3543" ordinal="3417" sl="3543" sc="1" el="3543" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3544" ordinal="3418" sl="3544" sc="1" el="3544" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3545" ordinal="3419" sl="3545" sc="1" el="3545" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3546" ordinal="3420" sl="3546" sc="1" el="3546" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3547" ordinal="3421" sl="3547" sc="1" el="3547" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3548" ordinal="3422" sl="3548" sc="1" el="3548" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3549" ordinal="3423" sl="3549" sc="1" el="3549" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3550" ordinal="3424" sl="3550" sc="1" el="3550" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3552" ordinal="3425" sl="3552" sc="1" el="3552" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3553" ordinal="3426" sl="3553" sc="1" el="3553" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3554" ordinal="3427" sl="3554" sc="1" el="3554" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3555" ordinal="3428" sl="3555" sc="1" el="3555" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3556" ordinal="3429" sl="3556" sc="1" el="3556" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3557" ordinal="3430" sl="3557" sc="1" el="3557" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3558" ordinal="3431" sl="3558" sc="1" el="3558" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3559" ordinal="3432" sl="3559" sc="1" el="3559" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3560" ordinal="3433" sl="3560" sc="1" el="3560" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3561" ordinal="3434" sl="3561" sc="1" el="3561" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3562" ordinal="3435" sl="3562" sc="1" el="3562" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3563" ordinal="3436" sl="3563" sc="1" el="3563" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3564" ordinal="3437" sl="3564" sc="1" el="3564" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3565" ordinal="3438" sl="3565" sc="1" el="3565" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3566" ordinal="3439" sl="3566" sc="1" el="3566" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3567" ordinal="3440" sl="3567" sc="1" el="3567" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3568" ordinal="3441" sl="3568" sc="1" el="3568" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3569" ordinal="3442" sl="3569" sc="1" el="3569" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3571" ordinal="3443" sl="3571" sc="1" el="3571" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3572" ordinal="3444" sl="3572" sc="1" el="3572" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3573" ordinal="3445" sl="3573" sc="1" el="3573" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3574" ordinal="3446" sl="3574" sc="1" el="3574" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3575" ordinal="3447" sl="3575" sc="1" el="3575" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3576" ordinal="3448" sl="3576" sc="1" el="3576" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3577" ordinal="3449" sl="3577" sc="1" el="3577" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3578" ordinal="3450" sl="3578" sc="1" el="3578" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3579" ordinal="3451" sl="3579" sc="1" el="3579" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3580" ordinal="3452" sl="3580" sc="1" el="3580" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3582" ordinal="3453" sl="3582" sc="1" el="3582" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3583" ordinal="3454" sl="3583" sc="1" el="3583" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3584" ordinal="3455" sl="3584" sc="1" el="3584" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3585" ordinal="3456" sl="3585" sc="1" el="3585" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3586" ordinal="3457" sl="3586" sc="1" el="3586" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3587" ordinal="3458" sl="3587" sc="1" el="3587" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3588" ordinal="3459" sl="3588" sc="1" el="3588" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3589" ordinal="3460" sl="3589" sc="1" el="3589" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3590" ordinal="3461" sl="3590" sc="1" el="3590" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3591" ordinal="3462" sl="3591" sc="1" el="3591" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3592" ordinal="3463" sl="3592" sc="1" el="3592" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3593" ordinal="3464" sl="3593" sc="1" el="3593" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3594" ordinal="3465" sl="3594" sc="1" el="3594" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3595" ordinal="3466" sl="3595" sc="1" el="3595" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3596" ordinal="3467" sl="3596" sc="1" el="3596" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3597" ordinal="3468" sl="3597" sc="1" el="3597" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3598" ordinal="3469" sl="3598" sc="1" el="3598" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3599" ordinal="3470" sl="3599" sc="1" el="3599" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3601" ordinal="3471" sl="3601" sc="1" el="3601" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3602" ordinal="3472" sl="3602" sc="1" el="3602" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3603" ordinal="3473" sl="3603" sc="1" el="3603" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3604" ordinal="3474" sl="3604" sc="1" el="3604" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3605" ordinal="3475" sl="3605" sc="1" el="3605" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3606" ordinal="3476" sl="3606" sc="1" el="3606" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3607" ordinal="3477" sl="3607" sc="1" el="3607" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3608" ordinal="3478" sl="3608" sc="1" el="3608" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3609" ordinal="3479" sl="3609" sc="1" el="3609" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3610" ordinal="3480" sl="3610" sc="1" el="3610" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3611" ordinal="3481" sl="3611" sc="1" el="3611" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3612" ordinal="3482" sl="3612" sc="1" el="3612" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3613" ordinal="3483" sl="3613" sc="1" el="3613" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3614" ordinal="3484" sl="3614" sc="1" el="3614" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3615" ordinal="3485" sl="3615" sc="1" el="3615" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3616" ordinal="3486" sl="3616" sc="1" el="3616" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3617" ordinal="3487" sl="3617" sc="1" el="3617" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3618" ordinal="3488" sl="3618" sc="1" el="3618" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3620" ordinal="3489" sl="3620" sc="1" el="3620" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3621" ordinal="3490" sl="3621" sc="1" el="3621" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3622" ordinal="3491" sl="3622" sc="1" el="3622" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3623" ordinal="3492" sl="3623" sc="1" el="3623" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3624" ordinal="3493" sl="3624" sc="1" el="3624" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3625" ordinal="3494" sl="3625" sc="1" el="3625" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3626" ordinal="3495" sl="3626" sc="1" el="3626" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3627" ordinal="3496" sl="3627" sc="1" el="3627" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3628" ordinal="3497" sl="3628" sc="1" el="3628" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3629" ordinal="3498" sl="3629" sc="1" el="3629" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3631" ordinal="3499" sl="3631" sc="1" el="3631" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3632" ordinal="3500" sl="3632" sc="1" el="3632" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3633" ordinal="3501" sl="3633" sc="1" el="3633" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3634" ordinal="3502" sl="3634" sc="1" el="3634" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3635" ordinal="3503" sl="3635" sc="1" el="3635" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3636" ordinal="3504" sl="3636" sc="1" el="3636" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3637" ordinal="3505" sl="3637" sc="1" el="3637" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3638" ordinal="3506" sl="3638" sc="1" el="3638" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3639" ordinal="3507" sl="3639" sc="1" el="3639" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3640" ordinal="3508" sl="3640" sc="1" el="3640" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3641" ordinal="3509" sl="3641" sc="1" el="3641" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3642" ordinal="3510" sl="3642" sc="1" el="3642" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3643" ordinal="3511" sl="3643" sc="1" el="3643" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3644" ordinal="3512" sl="3644" sc="1" el="3644" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3645" ordinal="3513" sl="3645" sc="1" el="3645" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3646" ordinal="3514" sl="3646" sc="1" el="3646" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3648" ordinal="3515" sl="3648" sc="1" el="3648" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3649" ordinal="3516" sl="3649" sc="1" el="3649" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3650" ordinal="3517" sl="3650" sc="1" el="3650" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3651" ordinal="3518" sl="3651" sc="1" el="3651" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3652" ordinal="3519" sl="3652" sc="1" el="3652" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3653" ordinal="3520" sl="3653" sc="1" el="3653" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3654" ordinal="3521" sl="3654" sc="1" el="3654" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3655" ordinal="3522" sl="3655" sc="1" el="3655" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3656" ordinal="3523" sl="3656" sc="1" el="3656" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3657" ordinal="3524" sl="3657" sc="1" el="3657" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3658" ordinal="3525" sl="3658" sc="1" el="3658" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3659" ordinal="3526" sl="3659" sc="1" el="3659" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3660" ordinal="3527" sl="3660" sc="1" el="3660" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3661" ordinal="3528" sl="3661" sc="1" el="3661" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3662" ordinal="3529" sl="3662" sc="1" el="3662" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3663" ordinal="3530" sl="3663" sc="1" el="3663" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3664" ordinal="3531" sl="3664" sc="1" el="3664" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3665" ordinal="3532" sl="3665" sc="1" el="3665" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3667" ordinal="3533" sl="3667" sc="1" el="3667" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3668" ordinal="3534" sl="3668" sc="1" el="3668" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3669" ordinal="3535" sl="3669" sc="1" el="3669" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3670" ordinal="3536" sl="3670" sc="1" el="3670" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3671" ordinal="3537" sl="3671" sc="1" el="3671" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3672" ordinal="3538" sl="3672" sc="1" el="3672" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3674" ordinal="3539" sl="3674" sc="1" el="3674" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3675" ordinal="3540" sl="3675" sc="1" el="3675" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3676" ordinal="3541" sl="3676" sc="1" el="3676" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3677" ordinal="3542" sl="3677" sc="1" el="3677" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3679" ordinal="3543" sl="3679" sc="1" el="3679" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3680" ordinal="3544" sl="3680" sc="1" el="3680" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3681" ordinal="3545" sl="3681" sc="1" el="3681" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3682" ordinal="3546" sl="3682" sc="1" el="3682" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3684" ordinal="3547" sl="3684" sc="1" el="3684" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3685" ordinal="3548" sl="3685" sc="1" el="3685" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3686" ordinal="3549" sl="3686" sc="1" el="3686" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3687" ordinal="3550" sl="3687" sc="1" el="3687" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3688" ordinal="3551" sl="3688" sc="1" el="3688" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3689" ordinal="3552" sl="3689" sc="1" el="3689" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3691" ordinal="3553" sl="3691" sc="1" el="3691" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3692" ordinal="3554" sl="3692" sc="1" el="3692" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3693" ordinal="3555" sl="3693" sc="1" el="3693" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3694" ordinal="3556" sl="3694" sc="1" el="3694" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3695" ordinal="3557" sl="3695" sc="1" el="3695" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3696" ordinal="3558" sl="3696" sc="1" el="3696" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3697" ordinal="3559" sl="3697" sc="1" el="3697" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3698" ordinal="3560" sl="3698" sc="1" el="3698" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3699" ordinal="3561" sl="3699" sc="1" el="3699" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3700" ordinal="3562" sl="3700" sc="1" el="3700" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3701" ordinal="3563" sl="3701" sc="1" el="3701" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3702" ordinal="3564" sl="3702" sc="1" el="3702" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3703" ordinal="3565" sl="3703" sc="1" el="3703" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3704" ordinal="3566" sl="3704" sc="1" el="3704" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3705" ordinal="3567" sl="3705" sc="1" el="3705" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3706" ordinal="3568" sl="3706" sc="1" el="3706" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3707" ordinal="3569" sl="3707" sc="1" el="3707" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3708" ordinal="3570" sl="3708" sc="1" el="3708" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3709" ordinal="3571" sl="3709" sc="1" el="3709" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3710" ordinal="3572" sl="3710" sc="1" el="3710" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3711" ordinal="3573" sl="3711" sc="1" el="3711" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3712" ordinal="3574" sl="3712" sc="1" el="3712" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3713" ordinal="3575" sl="3713" sc="1" el="3713" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3714" ordinal="3576" sl="3714" sc="1" el="3714" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3715" ordinal="3577" sl="3715" sc="1" el="3715" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3716" ordinal="3578" sl="3716" sc="1" el="3716" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3717" ordinal="3579" sl="3717" sc="1" el="3717" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3718" ordinal="3580" sl="3718" sc="1" el="3718" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3719" ordinal="3581" sl="3719" sc="1" el="3719" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3720" ordinal="3582" sl="3720" sc="1" el="3720" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3721" ordinal="3583" sl="3721" sc="1" el="3721" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3722" ordinal="3584" sl="3722" sc="1" el="3722" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3723" ordinal="3585" sl="3723" sc="1" el="3723" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3724" ordinal="3586" sl="3724" sc="1" el="3724" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3725" ordinal="3587" sl="3725" sc="1" el="3725" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3726" ordinal="3588" sl="3726" sc="1" el="3726" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3727" ordinal="3589" sl="3727" sc="1" el="3727" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3728" ordinal="3590" sl="3728" sc="1" el="3728" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3730" ordinal="3591" sl="3730" sc="1" el="3730" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3731" ordinal="3592" sl="3731" sc="1" el="3731" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3732" ordinal="3593" sl="3732" sc="1" el="3732" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3733" ordinal="3594" sl="3733" sc="1" el="3733" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3734" ordinal="3595" sl="3734" sc="1" el="3734" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3735" ordinal="3596" sl="3735" sc="1" el="3735" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3736" ordinal="3597" sl="3736" sc="1" el="3736" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3737" ordinal="3598" sl="3737" sc="1" el="3737" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3739" ordinal="3599" sl="3739" sc="1" el="3739" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3740" ordinal="3600" sl="3740" sc="1" el="3740" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3741" ordinal="3601" sl="3741" sc="1" el="3741" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3742" ordinal="3602" sl="3742" sc="1" el="3742" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3744" ordinal="3603" sl="3744" sc="1" el="3744" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3745" ordinal="3604" sl="3745" sc="1" el="3745" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3746" ordinal="3605" sl="3746" sc="1" el="3746" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3747" ordinal="3606" sl="3747" sc="1" el="3747" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3748" ordinal="3607" sl="3748" sc="1" el="3748" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3749" ordinal="3608" sl="3749" sc="1" el="3749" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3750" ordinal="3609" sl="3750" sc="1" el="3750" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3751" ordinal="3610" sl="3751" sc="1" el="3751" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3752" ordinal="3611" sl="3752" sc="1" el="3752" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3753" ordinal="3612" sl="3753" sc="1" el="3753" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3754" ordinal="3613" sl="3754" sc="1" el="3754" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3755" ordinal="3614" sl="3755" sc="1" el="3755" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3756" ordinal="3615" sl="3756" sc="1" el="3756" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3757" ordinal="3616" sl="3757" sc="1" el="3757" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3758" ordinal="3617" sl="3758" sc="1" el="3758" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3759" ordinal="3618" sl="3759" sc="1" el="3759" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3760" ordinal="3619" sl="3760" sc="1" el="3760" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3761" ordinal="3620" sl="3761" sc="1" el="3761" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3763" ordinal="3621" sl="3763" sc="1" el="3763" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3764" ordinal="3622" sl="3764" sc="1" el="3764" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3765" ordinal="3623" sl="3765" sc="1" el="3765" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3766" ordinal="3624" sl="3766" sc="1" el="3766" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3767" ordinal="3625" sl="3767" sc="1" el="3767" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3768" ordinal="3626" sl="3768" sc="1" el="3768" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3769" ordinal="3627" sl="3769" sc="1" el="3769" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3770" ordinal="3628" sl="3770" sc="1" el="3770" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3771" ordinal="3629" sl="3771" sc="1" el="3771" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3772" ordinal="3630" sl="3772" sc="1" el="3772" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3774" ordinal="3631" sl="3774" sc="1" el="3774" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3775" ordinal="3632" sl="3775" sc="1" el="3775" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3776" ordinal="3633" sl="3776" sc="1" el="3776" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3777" ordinal="3634" sl="3777" sc="1" el="3777" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3778" ordinal="3635" sl="3778" sc="1" el="3778" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3779" ordinal="3636" sl="3779" sc="1" el="3779" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3780" ordinal="3637" sl="3780" sc="1" el="3780" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3781" ordinal="3638" sl="3781" sc="1" el="3781" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3782" ordinal="3639" sl="3782" sc="1" el="3782" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3783" ordinal="3640" sl="3783" sc="1" el="3783" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3784" ordinal="3641" sl="3784" sc="1" el="3784" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3785" ordinal="3642" sl="3785" sc="1" el="3785" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3786" ordinal="3643" sl="3786" sc="1" el="3786" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3787" ordinal="3644" sl="3787" sc="1" el="3787" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3788" ordinal="3645" sl="3788" sc="1" el="3788" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3789" ordinal="3646" sl="3789" sc="1" el="3789" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3790" ordinal="3647" sl="3790" sc="1" el="3790" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3791" ordinal="3648" sl="3791" sc="1" el="3791" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3792" ordinal="3649" sl="3792" sc="1" el="3792" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3793" ordinal="3650" sl="3793" sc="1" el="3793" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3794" ordinal="3651" sl="3794" sc="1" el="3794" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3795" ordinal="3652" sl="3795" sc="1" el="3795" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3797" ordinal="3653" sl="3797" sc="1" el="3797" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3798" ordinal="3654" sl="3798" sc="1" el="3798" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3799" ordinal="3655" sl="3799" sc="1" el="3799" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3800" ordinal="3656" sl="3800" sc="1" el="3800" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3801" ordinal="3657" sl="3801" sc="1" el="3801" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3802" ordinal="3658" sl="3802" sc="1" el="3802" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3803" ordinal="3659" sl="3803" sc="1" el="3803" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3804" ordinal="3660" sl="3804" sc="1" el="3804" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3806" ordinal="3661" sl="3806" sc="1" el="3806" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3807" ordinal="3662" sl="3807" sc="1" el="3807" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3808" ordinal="3663" sl="3808" sc="1" el="3808" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3809" ordinal="3664" sl="3809" sc="1" el="3809" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3810" ordinal="3665" sl="3810" sc="1" el="3810" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3811" ordinal="3666" sl="3811" sc="1" el="3811" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3813" ordinal="3667" sl="3813" sc="1" el="3813" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3814" ordinal="3668" sl="3814" sc="1" el="3814" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3815" ordinal="3669" sl="3815" sc="1" el="3815" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3816" ordinal="3670" sl="3816" sc="1" el="3816" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3817" ordinal="3671" sl="3817" sc="1" el="3817" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3818" ordinal="3672" sl="3818" sc="1" el="3818" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3819" ordinal="3673" sl="3819" sc="1" el="3819" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3820" ordinal="3674" sl="3820" sc="1" el="3820" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3821" ordinal="3675" sl="3821" sc="1" el="3821" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3822" ordinal="3676" sl="3822" sc="1" el="3822" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3823" ordinal="3677" sl="3823" sc="1" el="3823" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3824" ordinal="3678" sl="3824" sc="1" el="3824" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3825" ordinal="3679" sl="3825" sc="1" el="3825" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3826" ordinal="3680" sl="3826" sc="1" el="3826" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3828" ordinal="3681" sl="3828" sc="1" el="3828" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3829" ordinal="3682" sl="3829" sc="1" el="3829" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3830" ordinal="3683" sl="3830" sc="1" el="3830" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3831" ordinal="3684" sl="3831" sc="1" el="3831" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3833" ordinal="3685" sl="3833" sc="1" el="3833" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3834" ordinal="3686" sl="3834" sc="1" el="3834" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3835" ordinal="3687" sl="3835" sc="1" el="3835" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3836" ordinal="3688" sl="3836" sc="1" el="3836" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3837" ordinal="3689" sl="3837" sc="1" el="3837" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3838" ordinal="3690" sl="3838" sc="1" el="3838" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3839" ordinal="3691" sl="3839" sc="1" el="3839" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3840" ordinal="3692" sl="3840" sc="1" el="3840" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3842" ordinal="3693" sl="3842" sc="1" el="3842" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3843" ordinal="3694" sl="3843" sc="1" el="3843" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3844" ordinal="3695" sl="3844" sc="1" el="3844" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3845" ordinal="3696" sl="3845" sc="1" el="3845" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3847" ordinal="3697" sl="3847" sc="1" el="3847" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3848" ordinal="3698" sl="3848" sc="1" el="3848" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3849" ordinal="3699" sl="3849" sc="1" el="3849" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3850" ordinal="3700" sl="3850" sc="1" el="3850" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3852" ordinal="3701" sl="3852" sc="1" el="3852" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3853" ordinal="3702" sl="3853" sc="1" el="3853" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3854" ordinal="3703" sl="3854" sc="1" el="3854" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3855" ordinal="3704" sl="3855" sc="1" el="3855" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3856" ordinal="3705" sl="3856" sc="1" el="3856" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3857" ordinal="3706" sl="3857" sc="1" el="3857" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3858" ordinal="3707" sl="3858" sc="1" el="3858" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3859" ordinal="3708" sl="3859" sc="1" el="3859" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3861" ordinal="3709" sl="3861" sc="1" el="3861" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3862" ordinal="3710" sl="3862" sc="1" el="3862" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3863" ordinal="3711" sl="3863" sc="1" el="3863" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3864" ordinal="3712" sl="3864" sc="1" el="3864" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3866" ordinal="3713" sl="3866" sc="1" el="3866" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3867" ordinal="3714" sl="3867" sc="1" el="3867" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3868" ordinal="3715" sl="3868" sc="1" el="3868" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3869" ordinal="3716" sl="3869" sc="1" el="3869" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3870" ordinal="3717" sl="3870" sc="1" el="3870" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3871" ordinal="3718" sl="3871" sc="1" el="3871" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3873" ordinal="3719" sl="3873" sc="1" el="3873" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3874" ordinal="3720" sl="3874" sc="1" el="3874" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3875" ordinal="3721" sl="3875" sc="1" el="3875" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3876" ordinal="3722" sl="3876" sc="1" el="3876" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3877" ordinal="3723" sl="3877" sc="1" el="3877" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3878" ordinal="3724" sl="3878" sc="1" el="3878" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3879" ordinal="3725" sl="3879" sc="1" el="3879" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3880" ordinal="3726" sl="3880" sc="1" el="3880" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3881" ordinal="3727" sl="3881" sc="1" el="3881" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3882" ordinal="3728" sl="3882" sc="1" el="3882" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3883" ordinal="3729" sl="3883" sc="1" el="3883" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3884" ordinal="3730" sl="3884" sc="1" el="3884" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3886" ordinal="3731" sl="3886" sc="1" el="3886" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3887" ordinal="3732" sl="3887" sc="1" el="3887" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3888" ordinal="3733" sl="3888" sc="1" el="3888" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3889" ordinal="3734" sl="3889" sc="1" el="3889" ec="2" bec="0" bev="0" fileid="83" /> <SequencePoint vc="0" uspid="3891" ordinal="3735" sl="3891" sc="1" el="3891" ec="2" bec="0" bev="0" fileid="83" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="17" ec="1" el="3891" bec="0" bev="0" fileid="83" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="13" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Database.Migrations.Aphrodite3</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Migrations.Aphrodite3::Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)</Name> <FileRef uid="84" /> <SequencePoints> <SequencePoint vc="0" uspid="8" ordinal="0" sl="8" sc="1" el="8" ec="2" bec="0" bev="0" fileid="84" /> <SequencePoint vc="0" uspid="9" ordinal="1" sl="9" sc="1" el="9" ec="2" bec="0" bev="0" fileid="84" /> <SequencePoint vc="0" uspid="10" ordinal="2" sl="10" sc="1" el="10" ec="2" bec="0" bev="0" fileid="84" /> <SequencePoint vc="0" uspid="11" ordinal="3" sl="11" sc="1" el="11" ec="2" bec="0" bev="0" fileid="84" /> <SequencePoint vc="0" uspid="12" ordinal="4" sl="12" sc="1" el="12" ec="2" bec="0" bev="0" fileid="84" /> <SequencePoint vc="0" uspid="13" ordinal="5" sl="13" sc="1" el="13" ec="2" bec="0" bev="0" fileid="84" /> <SequencePoint vc="0" uspid="14" ordinal="6" sl="14" sc="1" el="14" ec="2" bec="0" bev="0" fileid="84" /> <SequencePoint vc="0" uspid="15" ordinal="7" sl="15" sc="1" el="15" ec="2" bec="0" bev="0" fileid="84" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="8" ec="1" el="15" bec="0" bev="0" fileid="84" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Migrations.Aphrodite3::Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)</Name> <FileRef uid="84" /> <SequencePoints> <SequencePoint vc="0" uspid="18" ordinal="0" sl="18" sc="1" el="18" ec="2" bec="0" bev="0" fileid="84" /> <SequencePoint vc="0" uspid="19" ordinal="1" sl="19" sc="1" el="19" ec="2" bec="0" bev="0" fileid="84" /> <SequencePoint vc="0" uspid="20" ordinal="2" sl="20" sc="1" el="20" ec="2" bec="0" bev="0" fileid="84" /> <SequencePoint vc="0" uspid="21" ordinal="3" sl="21" sc="1" el="21" ec="2" bec="0" bev="0" fileid="84" /> <SequencePoint vc="0" uspid="22" ordinal="4" sl="22" sc="1" el="22" ec="2" bec="0" bev="0" fileid="84" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="18" ec="1" el="22" bec="0" bev="0" fileid="84" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3740" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Migrations.Aphrodite3</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3740" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Migrations.Aphrodite3::BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)</Name> <FileRef uid="85" /> <SequencePoints> <SequencePoint vc="0" uspid="17" ordinal="0" sl="17" sc="1" el="17" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="19" ordinal="1" sl="19" sc="1" el="19" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="20" ordinal="2" sl="20" sc="1" el="20" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="21" ordinal="3" sl="21" sc="1" el="21" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="22" ordinal="4" sl="22" sc="1" el="22" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="24" ordinal="5" sl="24" sc="1" el="24" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="25" ordinal="6" sl="25" sc="1" el="25" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="26" ordinal="7" sl="26" sc="1" el="26" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="27" ordinal="8" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="28" ordinal="9" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="29" ordinal="10" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="30" ordinal="11" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="31" ordinal="12" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="32" ordinal="13" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="33" ordinal="14" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="34" ordinal="15" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="35" ordinal="16" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="36" ordinal="17" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="37" ordinal="18" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="38" ordinal="19" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="39" ordinal="20" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="40" ordinal="21" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="41" ordinal="22" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="42" ordinal="23" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="43" ordinal="24" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="44" ordinal="25" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="45" ordinal="26" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="46" ordinal="27" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="47" ordinal="28" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="48" ordinal="29" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="49" ordinal="30" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="50" ordinal="31" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="51" ordinal="32" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="52" ordinal="33" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="53" ordinal="34" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="54" ordinal="35" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="55" ordinal="36" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="56" ordinal="37" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="57" ordinal="38" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="58" ordinal="39" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="59" ordinal="40" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="60" ordinal="41" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="61" ordinal="42" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="62" ordinal="43" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="63" ordinal="44" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="64" ordinal="45" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="65" ordinal="46" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="66" ordinal="47" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="67" ordinal="48" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="68" ordinal="49" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="69" ordinal="50" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="70" ordinal="51" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="71" ordinal="52" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="72" ordinal="53" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="73" ordinal="54" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="74" ordinal="55" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="75" ordinal="56" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="76" ordinal="57" sl="76" sc="1" el="76" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="77" ordinal="58" sl="77" sc="1" el="77" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="78" ordinal="59" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="79" ordinal="60" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="80" ordinal="61" sl="80" sc="1" el="80" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="81" ordinal="62" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="82" ordinal="63" sl="82" sc="1" el="82" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="83" ordinal="64" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="85" ordinal="65" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="86" ordinal="66" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="87" ordinal="67" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="88" ordinal="68" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="89" ordinal="69" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="90" ordinal="70" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="91" ordinal="71" sl="91" sc="1" el="91" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="92" ordinal="72" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="93" ordinal="73" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="94" ordinal="74" sl="94" sc="1" el="94" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="95" ordinal="75" sl="95" sc="1" el="95" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="96" ordinal="76" sl="96" sc="1" el="96" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="97" ordinal="77" sl="97" sc="1" el="97" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="98" ordinal="78" sl="98" sc="1" el="98" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="99" ordinal="79" sl="99" sc="1" el="99" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="100" ordinal="80" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="101" ordinal="81" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="103" ordinal="82" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="104" ordinal="83" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="105" ordinal="84" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="106" ordinal="85" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="107" ordinal="86" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="108" ordinal="87" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="109" ordinal="88" sl="109" sc="1" el="109" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="110" ordinal="89" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="111" ordinal="90" sl="111" sc="1" el="111" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="112" ordinal="91" sl="112" sc="1" el="112" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="113" ordinal="92" sl="113" sc="1" el="113" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="114" ordinal="93" sl="114" sc="1" el="114" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="115" ordinal="94" sl="115" sc="1" el="115" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="116" ordinal="95" sl="116" sc="1" el="116" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="117" ordinal="96" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="118" ordinal="97" sl="118" sc="1" el="118" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="119" ordinal="98" sl="119" sc="1" el="119" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="120" ordinal="99" sl="120" sc="1" el="120" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="121" ordinal="100" sl="121" sc="1" el="121" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="122" ordinal="101" sl="122" sc="1" el="122" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="124" ordinal="102" sl="124" sc="1" el="124" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="125" ordinal="103" sl="125" sc="1" el="125" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="126" ordinal="104" sl="126" sc="1" el="126" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="127" ordinal="105" sl="127" sc="1" el="127" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="128" ordinal="106" sl="128" sc="1" el="128" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="129" ordinal="107" sl="129" sc="1" el="129" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="130" ordinal="108" sl="130" sc="1" el="130" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="131" ordinal="109" sl="131" sc="1" el="131" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="132" ordinal="110" sl="132" sc="1" el="132" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="133" ordinal="111" sl="133" sc="1" el="133" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="134" ordinal="112" sl="134" sc="1" el="134" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="135" ordinal="113" sl="135" sc="1" el="135" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="136" ordinal="114" sl="136" sc="1" el="136" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="137" ordinal="115" sl="137" sc="1" el="137" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="138" ordinal="116" sl="138" sc="1" el="138" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="139" ordinal="117" sl="139" sc="1" el="139" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="140" ordinal="118" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="141" ordinal="119" sl="141" sc="1" el="141" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="142" ordinal="120" sl="142" sc="1" el="142" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="143" ordinal="121" sl="143" sc="1" el="143" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="144" ordinal="122" sl="144" sc="1" el="144" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="145" ordinal="123" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="146" ordinal="124" sl="146" sc="1" el="146" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="147" ordinal="125" sl="147" sc="1" el="147" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="148" ordinal="126" sl="148" sc="1" el="148" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="149" ordinal="127" sl="149" sc="1" el="149" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="150" ordinal="128" sl="150" sc="1" el="150" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="151" ordinal="129" sl="151" sc="1" el="151" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="152" ordinal="130" sl="152" sc="1" el="152" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="153" ordinal="131" sl="153" sc="1" el="153" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="154" ordinal="132" sl="154" sc="1" el="154" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="156" ordinal="133" sl="156" sc="1" el="156" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="157" ordinal="134" sl="157" sc="1" el="157" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="158" ordinal="135" sl="158" sc="1" el="158" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="159" ordinal="136" sl="159" sc="1" el="159" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="160" ordinal="137" sl="160" sc="1" el="160" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="161" ordinal="138" sl="161" sc="1" el="161" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="162" ordinal="139" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="163" ordinal="140" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="164" ordinal="141" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="165" ordinal="142" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="166" ordinal="143" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="167" ordinal="144" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="168" ordinal="145" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="169" ordinal="146" sl="169" sc="1" el="169" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="170" ordinal="147" sl="170" sc="1" el="170" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="171" ordinal="148" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="172" ordinal="149" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="173" ordinal="150" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="174" ordinal="151" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="175" ordinal="152" sl="175" sc="1" el="175" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="176" ordinal="153" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="177" ordinal="154" sl="177" sc="1" el="177" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="178" ordinal="155" sl="178" sc="1" el="178" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="179" ordinal="156" sl="179" sc="1" el="179" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="180" ordinal="157" sl="180" sc="1" el="180" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="181" ordinal="158" sl="181" sc="1" el="181" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="182" ordinal="159" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="183" ordinal="160" sl="183" sc="1" el="183" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="184" ordinal="161" sl="184" sc="1" el="184" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="185" ordinal="162" sl="185" sc="1" el="185" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="186" ordinal="163" sl="186" sc="1" el="186" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="187" ordinal="164" sl="187" sc="1" el="187" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="188" ordinal="165" sl="188" sc="1" el="188" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="189" ordinal="166" sl="189" sc="1" el="189" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="190" ordinal="167" sl="190" sc="1" el="190" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="191" ordinal="168" sl="191" sc="1" el="191" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="192" ordinal="169" sl="192" sc="1" el="192" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="193" ordinal="170" sl="193" sc="1" el="193" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="194" ordinal="171" sl="194" sc="1" el="194" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="195" ordinal="172" sl="195" sc="1" el="195" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="196" ordinal="173" sl="196" sc="1" el="196" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="197" ordinal="174" sl="197" sc="1" el="197" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="198" ordinal="175" sl="198" sc="1" el="198" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="199" ordinal="176" sl="199" sc="1" el="199" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="200" ordinal="177" sl="200" sc="1" el="200" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="201" ordinal="178" sl="201" sc="1" el="201" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="202" ordinal="179" sl="202" sc="1" el="202" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="203" ordinal="180" sl="203" sc="1" el="203" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="204" ordinal="181" sl="204" sc="1" el="204" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="205" ordinal="182" sl="205" sc="1" el="205" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="206" ordinal="183" sl="206" sc="1" el="206" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="207" ordinal="184" sl="207" sc="1" el="207" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="208" ordinal="185" sl="208" sc="1" el="208" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="209" ordinal="186" sl="209" sc="1" el="209" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="210" ordinal="187" sl="210" sc="1" el="210" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="212" ordinal="188" sl="212" sc="1" el="212" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="213" ordinal="189" sl="213" sc="1" el="213" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="214" ordinal="190" sl="214" sc="1" el="214" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="215" ordinal="191" sl="215" sc="1" el="215" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="216" ordinal="192" sl="216" sc="1" el="216" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="217" ordinal="193" sl="217" sc="1" el="217" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="218" ordinal="194" sl="218" sc="1" el="218" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="219" ordinal="195" sl="219" sc="1" el="219" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="220" ordinal="196" sl="220" sc="1" el="220" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="221" ordinal="197" sl="221" sc="1" el="221" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="222" ordinal="198" sl="222" sc="1" el="222" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="223" ordinal="199" sl="223" sc="1" el="223" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="224" ordinal="200" sl="224" sc="1" el="224" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="225" ordinal="201" sl="225" sc="1" el="225" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="226" ordinal="202" sl="226" sc="1" el="226" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="227" ordinal="203" sl="227" sc="1" el="227" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="228" ordinal="204" sl="228" sc="1" el="228" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="229" ordinal="205" sl="229" sc="1" el="229" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="230" ordinal="206" sl="230" sc="1" el="230" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="231" ordinal="207" sl="231" sc="1" el="231" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="232" ordinal="208" sl="232" sc="1" el="232" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="233" ordinal="209" sl="233" sc="1" el="233" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="234" ordinal="210" sl="234" sc="1" el="234" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="235" ordinal="211" sl="235" sc="1" el="235" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="236" ordinal="212" sl="236" sc="1" el="236" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="237" ordinal="213" sl="237" sc="1" el="237" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="238" ordinal="214" sl="238" sc="1" el="238" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="239" ordinal="215" sl="239" sc="1" el="239" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="240" ordinal="216" sl="240" sc="1" el="240" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="241" ordinal="217" sl="241" sc="1" el="241" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="242" ordinal="218" sl="242" sc="1" el="242" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="243" ordinal="219" sl="243" sc="1" el="243" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="244" ordinal="220" sl="244" sc="1" el="244" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="245" ordinal="221" sl="245" sc="1" el="245" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="246" ordinal="222" sl="246" sc="1" el="246" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="247" ordinal="223" sl="247" sc="1" el="247" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="248" ordinal="224" sl="248" sc="1" el="248" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="249" ordinal="225" sl="249" sc="1" el="249" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="250" ordinal="226" sl="250" sc="1" el="250" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="252" ordinal="227" sl="252" sc="1" el="252" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="253" ordinal="228" sl="253" sc="1" el="253" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="254" ordinal="229" sl="254" sc="1" el="254" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="255" ordinal="230" sl="255" sc="1" el="255" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="256" ordinal="231" sl="256" sc="1" el="256" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="257" ordinal="232" sl="257" sc="1" el="257" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="258" ordinal="233" sl="258" sc="1" el="258" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="259" ordinal="234" sl="259" sc="1" el="259" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="260" ordinal="235" sl="260" sc="1" el="260" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="261" ordinal="236" sl="261" sc="1" el="261" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="262" ordinal="237" sl="262" sc="1" el="262" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="263" ordinal="238" sl="263" sc="1" el="263" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="264" ordinal="239" sl="264" sc="1" el="264" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="265" ordinal="240" sl="265" sc="1" el="265" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="266" ordinal="241" sl="266" sc="1" el="266" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="267" ordinal="242" sl="267" sc="1" el="267" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="268" ordinal="243" sl="268" sc="1" el="268" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="269" ordinal="244" sl="269" sc="1" el="269" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="270" ordinal="245" sl="270" sc="1" el="270" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="271" ordinal="246" sl="271" sc="1" el="271" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="272" ordinal="247" sl="272" sc="1" el="272" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="273" ordinal="248" sl="273" sc="1" el="273" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="274" ordinal="249" sl="274" sc="1" el="274" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="275" ordinal="250" sl="275" sc="1" el="275" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="276" ordinal="251" sl="276" sc="1" el="276" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="277" ordinal="252" sl="277" sc="1" el="277" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="278" ordinal="253" sl="278" sc="1" el="278" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="279" ordinal="254" sl="279" sc="1" el="279" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="280" ordinal="255" sl="280" sc="1" el="280" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="281" ordinal="256" sl="281" sc="1" el="281" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="282" ordinal="257" sl="282" sc="1" el="282" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="283" ordinal="258" sl="283" sc="1" el="283" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="284" ordinal="259" sl="284" sc="1" el="284" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="285" ordinal="260" sl="285" sc="1" el="285" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="286" ordinal="261" sl="286" sc="1" el="286" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="287" ordinal="262" sl="287" sc="1" el="287" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="288" ordinal="263" sl="288" sc="1" el="288" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="289" ordinal="264" sl="289" sc="1" el="289" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="291" ordinal="265" sl="291" sc="1" el="291" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="292" ordinal="266" sl="292" sc="1" el="292" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="293" ordinal="267" sl="293" sc="1" el="293" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="294" ordinal="268" sl="294" sc="1" el="294" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="295" ordinal="269" sl="295" sc="1" el="295" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="296" ordinal="270" sl="296" sc="1" el="296" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="297" ordinal="271" sl="297" sc="1" el="297" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="298" ordinal="272" sl="298" sc="1" el="298" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="299" ordinal="273" sl="299" sc="1" el="299" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="300" ordinal="274" sl="300" sc="1" el="300" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="301" ordinal="275" sl="301" sc="1" el="301" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="302" ordinal="276" sl="302" sc="1" el="302" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="303" ordinal="277" sl="303" sc="1" el="303" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="304" ordinal="278" sl="304" sc="1" el="304" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="305" ordinal="279" sl="305" sc="1" el="305" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="306" ordinal="280" sl="306" sc="1" el="306" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="307" ordinal="281" sl="307" sc="1" el="307" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="308" ordinal="282" sl="308" sc="1" el="308" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="309" ordinal="283" sl="309" sc="1" el="309" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="310" ordinal="284" sl="310" sc="1" el="310" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="311" ordinal="285" sl="311" sc="1" el="311" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="312" ordinal="286" sl="312" sc="1" el="312" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="313" ordinal="287" sl="313" sc="1" el="313" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="314" ordinal="288" sl="314" sc="1" el="314" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="315" ordinal="289" sl="315" sc="1" el="315" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="316" ordinal="290" sl="316" sc="1" el="316" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="317" ordinal="291" sl="317" sc="1" el="317" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="318" ordinal="292" sl="318" sc="1" el="318" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="319" ordinal="293" sl="319" sc="1" el="319" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="320" ordinal="294" sl="320" sc="1" el="320" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="321" ordinal="295" sl="321" sc="1" el="321" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="322" ordinal="296" sl="322" sc="1" el="322" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="323" ordinal="297" sl="323" sc="1" el="323" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="324" ordinal="298" sl="324" sc="1" el="324" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="325" ordinal="299" sl="325" sc="1" el="325" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="326" ordinal="300" sl="326" sc="1" el="326" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="327" ordinal="301" sl="327" sc="1" el="327" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="328" ordinal="302" sl="328" sc="1" el="328" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="329" ordinal="303" sl="329" sc="1" el="329" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="330" ordinal="304" sl="330" sc="1" el="330" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="331" ordinal="305" sl="331" sc="1" el="331" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="332" ordinal="306" sl="332" sc="1" el="332" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="333" ordinal="307" sl="333" sc="1" el="333" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="334" ordinal="308" sl="334" sc="1" el="334" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="335" ordinal="309" sl="335" sc="1" el="335" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="336" ordinal="310" sl="336" sc="1" el="336" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="337" ordinal="311" sl="337" sc="1" el="337" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="338" ordinal="312" sl="338" sc="1" el="338" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="339" ordinal="313" sl="339" sc="1" el="339" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="340" ordinal="314" sl="340" sc="1" el="340" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="341" ordinal="315" sl="341" sc="1" el="341" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="342" ordinal="316" sl="342" sc="1" el="342" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="343" ordinal="317" sl="343" sc="1" el="343" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="344" ordinal="318" sl="344" sc="1" el="344" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="345" ordinal="319" sl="345" sc="1" el="345" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="346" ordinal="320" sl="346" sc="1" el="346" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="347" ordinal="321" sl="347" sc="1" el="347" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="348" ordinal="322" sl="348" sc="1" el="348" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="349" ordinal="323" sl="349" sc="1" el="349" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="350" ordinal="324" sl="350" sc="1" el="350" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="351" ordinal="325" sl="351" sc="1" el="351" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="352" ordinal="326" sl="352" sc="1" el="352" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="353" ordinal="327" sl="353" sc="1" el="353" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="354" ordinal="328" sl="354" sc="1" el="354" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="355" ordinal="329" sl="355" sc="1" el="355" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="356" ordinal="330" sl="356" sc="1" el="356" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="357" ordinal="331" sl="357" sc="1" el="357" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="358" ordinal="332" sl="358" sc="1" el="358" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="359" ordinal="333" sl="359" sc="1" el="359" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="360" ordinal="334" sl="360" sc="1" el="360" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="361" ordinal="335" sl="361" sc="1" el="361" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="362" ordinal="336" sl="362" sc="1" el="362" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="363" ordinal="337" sl="363" sc="1" el="363" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="364" ordinal="338" sl="364" sc="1" el="364" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="365" ordinal="339" sl="365" sc="1" el="365" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="366" ordinal="340" sl="366" sc="1" el="366" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="367" ordinal="341" sl="367" sc="1" el="367" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="368" ordinal="342" sl="368" sc="1" el="368" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="369" ordinal="343" sl="369" sc="1" el="369" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="370" ordinal="344" sl="370" sc="1" el="370" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="371" ordinal="345" sl="371" sc="1" el="371" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="372" ordinal="346" sl="372" sc="1" el="372" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="373" ordinal="347" sl="373" sc="1" el="373" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="374" ordinal="348" sl="374" sc="1" el="374" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="375" ordinal="349" sl="375" sc="1" el="375" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="376" ordinal="350" sl="376" sc="1" el="376" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="377" ordinal="351" sl="377" sc="1" el="377" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="378" ordinal="352" sl="378" sc="1" el="378" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="379" ordinal="353" sl="379" sc="1" el="379" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="380" ordinal="354" sl="380" sc="1" el="380" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="381" ordinal="355" sl="381" sc="1" el="381" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="382" ordinal="356" sl="382" sc="1" el="382" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="383" ordinal="357" sl="383" sc="1" el="383" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="384" ordinal="358" sl="384" sc="1" el="384" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="385" ordinal="359" sl="385" sc="1" el="385" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="386" ordinal="360" sl="386" sc="1" el="386" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="387" ordinal="361" sl="387" sc="1" el="387" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="388" ordinal="362" sl="388" sc="1" el="388" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="389" ordinal="363" sl="389" sc="1" el="389" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="390" ordinal="364" sl="390" sc="1" el="390" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="391" ordinal="365" sl="391" sc="1" el="391" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="392" ordinal="366" sl="392" sc="1" el="392" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="393" ordinal="367" sl="393" sc="1" el="393" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="394" ordinal="368" sl="394" sc="1" el="394" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="395" ordinal="369" sl="395" sc="1" el="395" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="396" ordinal="370" sl="396" sc="1" el="396" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="397" ordinal="371" sl="397" sc="1" el="397" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="398" ordinal="372" sl="398" sc="1" el="398" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="399" ordinal="373" sl="399" sc="1" el="399" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="400" ordinal="374" sl="400" sc="1" el="400" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="401" ordinal="375" sl="401" sc="1" el="401" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="402" ordinal="376" sl="402" sc="1" el="402" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="403" ordinal="377" sl="403" sc="1" el="403" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="404" ordinal="378" sl="404" sc="1" el="404" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="405" ordinal="379" sl="405" sc="1" el="405" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="406" ordinal="380" sl="406" sc="1" el="406" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="407" ordinal="381" sl="407" sc="1" el="407" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="408" ordinal="382" sl="408" sc="1" el="408" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="409" ordinal="383" sl="409" sc="1" el="409" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="410" ordinal="384" sl="410" sc="1" el="410" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="411" ordinal="385" sl="411" sc="1" el="411" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="412" ordinal="386" sl="412" sc="1" el="412" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="413" ordinal="387" sl="413" sc="1" el="413" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="414" ordinal="388" sl="414" sc="1" el="414" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="415" ordinal="389" sl="415" sc="1" el="415" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="416" ordinal="390" sl="416" sc="1" el="416" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="417" ordinal="391" sl="417" sc="1" el="417" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="418" ordinal="392" sl="418" sc="1" el="418" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="419" ordinal="393" sl="419" sc="1" el="419" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="420" ordinal="394" sl="420" sc="1" el="420" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="421" ordinal="395" sl="421" sc="1" el="421" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="422" ordinal="396" sl="422" sc="1" el="422" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="423" ordinal="397" sl="423" sc="1" el="423" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="424" ordinal="398" sl="424" sc="1" el="424" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="425" ordinal="399" sl="425" sc="1" el="425" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="426" ordinal="400" sl="426" sc="1" el="426" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="427" ordinal="401" sl="427" sc="1" el="427" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="428" ordinal="402" sl="428" sc="1" el="428" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="429" ordinal="403" sl="429" sc="1" el="429" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="430" ordinal="404" sl="430" sc="1" el="430" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="431" ordinal="405" sl="431" sc="1" el="431" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="432" ordinal="406" sl="432" sc="1" el="432" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="433" ordinal="407" sl="433" sc="1" el="433" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="434" ordinal="408" sl="434" sc="1" el="434" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="435" ordinal="409" sl="435" sc="1" el="435" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="436" ordinal="410" sl="436" sc="1" el="436" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="437" ordinal="411" sl="437" sc="1" el="437" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="438" ordinal="412" sl="438" sc="1" el="438" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="439" ordinal="413" sl="439" sc="1" el="439" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="440" ordinal="414" sl="440" sc="1" el="440" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="441" ordinal="415" sl="441" sc="1" el="441" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="442" ordinal="416" sl="442" sc="1" el="442" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="443" ordinal="417" sl="443" sc="1" el="443" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="444" ordinal="418" sl="444" sc="1" el="444" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="445" ordinal="419" sl="445" sc="1" el="445" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="446" ordinal="420" sl="446" sc="1" el="446" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="447" ordinal="421" sl="447" sc="1" el="447" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="448" ordinal="422" sl="448" sc="1" el="448" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="449" ordinal="423" sl="449" sc="1" el="449" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="450" ordinal="424" sl="450" sc="1" el="450" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="451" ordinal="425" sl="451" sc="1" el="451" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="452" ordinal="426" sl="452" sc="1" el="452" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="453" ordinal="427" sl="453" sc="1" el="453" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="454" ordinal="428" sl="454" sc="1" el="454" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="455" ordinal="429" sl="455" sc="1" el="455" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="456" ordinal="430" sl="456" sc="1" el="456" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="457" ordinal="431" sl="457" sc="1" el="457" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="458" ordinal="432" sl="458" sc="1" el="458" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="459" ordinal="433" sl="459" sc="1" el="459" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="460" ordinal="434" sl="460" sc="1" el="460" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="461" ordinal="435" sl="461" sc="1" el="461" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="462" ordinal="436" sl="462" sc="1" el="462" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="463" ordinal="437" sl="463" sc="1" el="463" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="464" ordinal="438" sl="464" sc="1" el="464" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="465" ordinal="439" sl="465" sc="1" el="465" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="466" ordinal="440" sl="466" sc="1" el="466" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="467" ordinal="441" sl="467" sc="1" el="467" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="468" ordinal="442" sl="468" sc="1" el="468" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="469" ordinal="443" sl="469" sc="1" el="469" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="470" ordinal="444" sl="470" sc="1" el="470" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="471" ordinal="445" sl="471" sc="1" el="471" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="472" ordinal="446" sl="472" sc="1" el="472" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="473" ordinal="447" sl="473" sc="1" el="473" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="474" ordinal="448" sl="474" sc="1" el="474" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="476" ordinal="449" sl="476" sc="1" el="476" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="477" ordinal="450" sl="477" sc="1" el="477" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="478" ordinal="451" sl="478" sc="1" el="478" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="479" ordinal="452" sl="479" sc="1" el="479" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="480" ordinal="453" sl="480" sc="1" el="480" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="481" ordinal="454" sl="481" sc="1" el="481" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="482" ordinal="455" sl="482" sc="1" el="482" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="483" ordinal="456" sl="483" sc="1" el="483" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="484" ordinal="457" sl="484" sc="1" el="484" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="485" ordinal="458" sl="485" sc="1" el="485" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="486" ordinal="459" sl="486" sc="1" el="486" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="487" ordinal="460" sl="487" sc="1" el="487" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="488" ordinal="461" sl="488" sc="1" el="488" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="489" ordinal="462" sl="489" sc="1" el="489" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="490" ordinal="463" sl="490" sc="1" el="490" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="491" ordinal="464" sl="491" sc="1" el="491" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="492" ordinal="465" sl="492" sc="1" el="492" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="493" ordinal="466" sl="493" sc="1" el="493" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="494" ordinal="467" sl="494" sc="1" el="494" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="496" ordinal="468" sl="496" sc="1" el="496" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="497" ordinal="469" sl="497" sc="1" el="497" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="498" ordinal="470" sl="498" sc="1" el="498" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="499" ordinal="471" sl="499" sc="1" el="499" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="500" ordinal="472" sl="500" sc="1" el="500" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="501" ordinal="473" sl="501" sc="1" el="501" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="502" ordinal="474" sl="502" sc="1" el="502" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="503" ordinal="475" sl="503" sc="1" el="503" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="504" ordinal="476" sl="504" sc="1" el="504" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="505" ordinal="477" sl="505" sc="1" el="505" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="506" ordinal="478" sl="506" sc="1" el="506" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="507" ordinal="479" sl="507" sc="1" el="507" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="508" ordinal="480" sl="508" sc="1" el="508" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="509" ordinal="481" sl="509" sc="1" el="509" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="510" ordinal="482" sl="510" sc="1" el="510" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="511" ordinal="483" sl="511" sc="1" el="511" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="512" ordinal="484" sl="512" sc="1" el="512" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="513" ordinal="485" sl="513" sc="1" el="513" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="514" ordinal="486" sl="514" sc="1" el="514" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="515" ordinal="487" sl="515" sc="1" el="515" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="516" ordinal="488" sl="516" sc="1" el="516" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="517" ordinal="489" sl="517" sc="1" el="517" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="519" ordinal="490" sl="519" sc="1" el="519" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="520" ordinal="491" sl="520" sc="1" el="520" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="521" ordinal="492" sl="521" sc="1" el="521" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="522" ordinal="493" sl="522" sc="1" el="522" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="523" ordinal="494" sl="523" sc="1" el="523" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="524" ordinal="495" sl="524" sc="1" el="524" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="525" ordinal="496" sl="525" sc="1" el="525" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="526" ordinal="497" sl="526" sc="1" el="526" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="527" ordinal="498" sl="527" sc="1" el="527" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="528" ordinal="499" sl="528" sc="1" el="528" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="529" ordinal="500" sl="529" sc="1" el="529" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="530" ordinal="501" sl="530" sc="1" el="530" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="531" ordinal="502" sl="531" sc="1" el="531" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="532" ordinal="503" sl="532" sc="1" el="532" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="533" ordinal="504" sl="533" sc="1" el="533" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="534" ordinal="505" sl="534" sc="1" el="534" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="535" ordinal="506" sl="535" sc="1" el="535" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="536" ordinal="507" sl="536" sc="1" el="536" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="537" ordinal="508" sl="537" sc="1" el="537" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="538" ordinal="509" sl="538" sc="1" el="538" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="539" ordinal="510" sl="539" sc="1" el="539" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="540" ordinal="511" sl="540" sc="1" el="540" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="541" ordinal="512" sl="541" sc="1" el="541" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="543" ordinal="513" sl="543" sc="1" el="543" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="544" ordinal="514" sl="544" sc="1" el="544" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="545" ordinal="515" sl="545" sc="1" el="545" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="546" ordinal="516" sl="546" sc="1" el="546" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="547" ordinal="517" sl="547" sc="1" el="547" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="548" ordinal="518" sl="548" sc="1" el="548" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="549" ordinal="519" sl="549" sc="1" el="549" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="550" ordinal="520" sl="550" sc="1" el="550" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="551" ordinal="521" sl="551" sc="1" el="551" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="552" ordinal="522" sl="552" sc="1" el="552" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="553" ordinal="523" sl="553" sc="1" el="553" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="554" ordinal="524" sl="554" sc="1" el="554" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="555" ordinal="525" sl="555" sc="1" el="555" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="556" ordinal="526" sl="556" sc="1" el="556" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="557" ordinal="527" sl="557" sc="1" el="557" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="558" ordinal="528" sl="558" sc="1" el="558" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="559" ordinal="529" sl="559" sc="1" el="559" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="560" ordinal="530" sl="560" sc="1" el="560" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="561" ordinal="531" sl="561" sc="1" el="561" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="563" ordinal="532" sl="563" sc="1" el="563" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="564" ordinal="533" sl="564" sc="1" el="564" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="565" ordinal="534" sl="565" sc="1" el="565" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="566" ordinal="535" sl="566" sc="1" el="566" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="567" ordinal="536" sl="567" sc="1" el="567" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="568" ordinal="537" sl="568" sc="1" el="568" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="569" ordinal="538" sl="569" sc="1" el="569" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="570" ordinal="539" sl="570" sc="1" el="570" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="571" ordinal="540" sl="571" sc="1" el="571" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="572" ordinal="541" sl="572" sc="1" el="572" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="573" ordinal="542" sl="573" sc="1" el="573" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="574" ordinal="543" sl="574" sc="1" el="574" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="575" ordinal="544" sl="575" sc="1" el="575" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="576" ordinal="545" sl="576" sc="1" el="576" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="577" ordinal="546" sl="577" sc="1" el="577" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="578" ordinal="547" sl="578" sc="1" el="578" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="579" ordinal="548" sl="579" sc="1" el="579" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="580" ordinal="549" sl="580" sc="1" el="580" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="581" ordinal="550" sl="581" sc="1" el="581" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="582" ordinal="551" sl="582" sc="1" el="582" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="583" ordinal="552" sl="583" sc="1" el="583" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="584" ordinal="553" sl="584" sc="1" el="584" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="585" ordinal="554" sl="585" sc="1" el="585" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="586" ordinal="555" sl="586" sc="1" el="586" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="587" ordinal="556" sl="587" sc="1" el="587" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="589" ordinal="557" sl="589" sc="1" el="589" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="590" ordinal="558" sl="590" sc="1" el="590" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="591" ordinal="559" sl="591" sc="1" el="591" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="592" ordinal="560" sl="592" sc="1" el="592" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="593" ordinal="561" sl="593" sc="1" el="593" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="594" ordinal="562" sl="594" sc="1" el="594" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="595" ordinal="563" sl="595" sc="1" el="595" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="596" ordinal="564" sl="596" sc="1" el="596" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="597" ordinal="565" sl="597" sc="1" el="597" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="598" ordinal="566" sl="598" sc="1" el="598" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="599" ordinal="567" sl="599" sc="1" el="599" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="600" ordinal="568" sl="600" sc="1" el="600" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="601" ordinal="569" sl="601" sc="1" el="601" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="602" ordinal="570" sl="602" sc="1" el="602" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="603" ordinal="571" sl="603" sc="1" el="603" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="604" ordinal="572" sl="604" sc="1" el="604" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="605" ordinal="573" sl="605" sc="1" el="605" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="606" ordinal="574" sl="606" sc="1" el="606" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="607" ordinal="575" sl="607" sc="1" el="607" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="608" ordinal="576" sl="608" sc="1" el="608" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="609" ordinal="577" sl="609" sc="1" el="609" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="610" ordinal="578" sl="610" sc="1" el="610" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="611" ordinal="579" sl="611" sc="1" el="611" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="612" ordinal="580" sl="612" sc="1" el="612" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="613" ordinal="581" sl="613" sc="1" el="613" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="614" ordinal="582" sl="614" sc="1" el="614" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="615" ordinal="583" sl="615" sc="1" el="615" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="616" ordinal="584" sl="616" sc="1" el="616" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="617" ordinal="585" sl="617" sc="1" el="617" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="618" ordinal="586" sl="618" sc="1" el="618" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="619" ordinal="587" sl="619" sc="1" el="619" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="620" ordinal="588" sl="620" sc="1" el="620" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="622" ordinal="589" sl="622" sc="1" el="622" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="623" ordinal="590" sl="623" sc="1" el="623" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="624" ordinal="591" sl="624" sc="1" el="624" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="625" ordinal="592" sl="625" sc="1" el="625" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="626" ordinal="593" sl="626" sc="1" el="626" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="627" ordinal="594" sl="627" sc="1" el="627" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="628" ordinal="595" sl="628" sc="1" el="628" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="629" ordinal="596" sl="629" sc="1" el="629" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="630" ordinal="597" sl="630" sc="1" el="630" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="631" ordinal="598" sl="631" sc="1" el="631" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="632" ordinal="599" sl="632" sc="1" el="632" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="633" ordinal="600" sl="633" sc="1" el="633" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="634" ordinal="601" sl="634" sc="1" el="634" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="635" ordinal="602" sl="635" sc="1" el="635" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="636" ordinal="603" sl="636" sc="1" el="636" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="637" ordinal="604" sl="637" sc="1" el="637" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="638" ordinal="605" sl="638" sc="1" el="638" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="639" ordinal="606" sl="639" sc="1" el="639" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="640" ordinal="607" sl="640" sc="1" el="640" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="641" ordinal="608" sl="641" sc="1" el="641" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="642" ordinal="609" sl="642" sc="1" el="642" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="643" ordinal="610" sl="643" sc="1" el="643" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="644" ordinal="611" sl="644" sc="1" el="644" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="646" ordinal="612" sl="646" sc="1" el="646" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="647" ordinal="613" sl="647" sc="1" el="647" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="648" ordinal="614" sl="648" sc="1" el="648" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="649" ordinal="615" sl="649" sc="1" el="649" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="650" ordinal="616" sl="650" sc="1" el="650" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="651" ordinal="617" sl="651" sc="1" el="651" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="652" ordinal="618" sl="652" sc="1" el="652" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="653" ordinal="619" sl="653" sc="1" el="653" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="654" ordinal="620" sl="654" sc="1" el="654" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="655" ordinal="621" sl="655" sc="1" el="655" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="656" ordinal="622" sl="656" sc="1" el="656" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="657" ordinal="623" sl="657" sc="1" el="657" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="658" ordinal="624" sl="658" sc="1" el="658" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="659" ordinal="625" sl="659" sc="1" el="659" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="660" ordinal="626" sl="660" sc="1" el="660" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="661" ordinal="627" sl="661" sc="1" el="661" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="662" ordinal="628" sl="662" sc="1" el="662" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="663" ordinal="629" sl="663" sc="1" el="663" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="664" ordinal="630" sl="664" sc="1" el="664" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="665" ordinal="631" sl="665" sc="1" el="665" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="666" ordinal="632" sl="666" sc="1" el="666" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="667" ordinal="633" sl="667" sc="1" el="667" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="668" ordinal="634" sl="668" sc="1" el="668" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="669" ordinal="635" sl="669" sc="1" el="669" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="670" ordinal="636" sl="670" sc="1" el="670" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="671" ordinal="637" sl="671" sc="1" el="671" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="672" ordinal="638" sl="672" sc="1" el="672" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="673" ordinal="639" sl="673" sc="1" el="673" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="674" ordinal="640" sl="674" sc="1" el="674" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="675" ordinal="641" sl="675" sc="1" el="675" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="676" ordinal="642" sl="676" sc="1" el="676" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="677" ordinal="643" sl="677" sc="1" el="677" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="678" ordinal="644" sl="678" sc="1" el="678" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="679" ordinal="645" sl="679" sc="1" el="679" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="680" ordinal="646" sl="680" sc="1" el="680" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="681" ordinal="647" sl="681" sc="1" el="681" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="682" ordinal="648" sl="682" sc="1" el="682" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="683" ordinal="649" sl="683" sc="1" el="683" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="684" ordinal="650" sl="684" sc="1" el="684" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="685" ordinal="651" sl="685" sc="1" el="685" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="686" ordinal="652" sl="686" sc="1" el="686" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="687" ordinal="653" sl="687" sc="1" el="687" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="688" ordinal="654" sl="688" sc="1" el="688" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="689" ordinal="655" sl="689" sc="1" el="689" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="690" ordinal="656" sl="690" sc="1" el="690" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="691" ordinal="657" sl="691" sc="1" el="691" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="692" ordinal="658" sl="692" sc="1" el="692" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="693" ordinal="659" sl="693" sc="1" el="693" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="694" ordinal="660" sl="694" sc="1" el="694" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="695" ordinal="661" sl="695" sc="1" el="695" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="696" ordinal="662" sl="696" sc="1" el="696" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="697" ordinal="663" sl="697" sc="1" el="697" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="698" ordinal="664" sl="698" sc="1" el="698" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="699" ordinal="665" sl="699" sc="1" el="699" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="700" ordinal="666" sl="700" sc="1" el="700" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="701" ordinal="667" sl="701" sc="1" el="701" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="702" ordinal="668" sl="702" sc="1" el="702" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="703" ordinal="669" sl="703" sc="1" el="703" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="704" ordinal="670" sl="704" sc="1" el="704" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="706" ordinal="671" sl="706" sc="1" el="706" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="707" ordinal="672" sl="707" sc="1" el="707" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="708" ordinal="673" sl="708" sc="1" el="708" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="709" ordinal="674" sl="709" sc="1" el="709" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="710" ordinal="675" sl="710" sc="1" el="710" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="711" ordinal="676" sl="711" sc="1" el="711" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="712" ordinal="677" sl="712" sc="1" el="712" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="713" ordinal="678" sl="713" sc="1" el="713" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="714" ordinal="679" sl="714" sc="1" el="714" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="715" ordinal="680" sl="715" sc="1" el="715" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="716" ordinal="681" sl="716" sc="1" el="716" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="717" ordinal="682" sl="717" sc="1" el="717" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="718" ordinal="683" sl="718" sc="1" el="718" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="719" ordinal="684" sl="719" sc="1" el="719" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="720" ordinal="685" sl="720" sc="1" el="720" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="721" ordinal="686" sl="721" sc="1" el="721" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="722" ordinal="687" sl="722" sc="1" el="722" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="723" ordinal="688" sl="723" sc="1" el="723" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="724" ordinal="689" sl="724" sc="1" el="724" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="725" ordinal="690" sl="725" sc="1" el="725" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="726" ordinal="691" sl="726" sc="1" el="726" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="727" ordinal="692" sl="727" sc="1" el="727" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="728" ordinal="693" sl="728" sc="1" el="728" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="729" ordinal="694" sl="729" sc="1" el="729" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="730" ordinal="695" sl="730" sc="1" el="730" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="731" ordinal="696" sl="731" sc="1" el="731" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="732" ordinal="697" sl="732" sc="1" el="732" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="733" ordinal="698" sl="733" sc="1" el="733" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="734" ordinal="699" sl="734" sc="1" el="734" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="735" ordinal="700" sl="735" sc="1" el="735" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="736" ordinal="701" sl="736" sc="1" el="736" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="737" ordinal="702" sl="737" sc="1" el="737" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="738" ordinal="703" sl="738" sc="1" el="738" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="739" ordinal="704" sl="739" sc="1" el="739" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="741" ordinal="705" sl="741" sc="1" el="741" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="742" ordinal="706" sl="742" sc="1" el="742" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="743" ordinal="707" sl="743" sc="1" el="743" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="744" ordinal="708" sl="744" sc="1" el="744" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="745" ordinal="709" sl="745" sc="1" el="745" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="746" ordinal="710" sl="746" sc="1" el="746" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="747" ordinal="711" sl="747" sc="1" el="747" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="748" ordinal="712" sl="748" sc="1" el="748" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="749" ordinal="713" sl="749" sc="1" el="749" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="750" ordinal="714" sl="750" sc="1" el="750" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="751" ordinal="715" sl="751" sc="1" el="751" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="752" ordinal="716" sl="752" sc="1" el="752" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="753" ordinal="717" sl="753" sc="1" el="753" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="754" ordinal="718" sl="754" sc="1" el="754" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="755" ordinal="719" sl="755" sc="1" el="755" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="756" ordinal="720" sl="756" sc="1" el="756" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="757" ordinal="721" sl="757" sc="1" el="757" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="758" ordinal="722" sl="758" sc="1" el="758" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="759" ordinal="723" sl="759" sc="1" el="759" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="760" ordinal="724" sl="760" sc="1" el="760" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="761" ordinal="725" sl="761" sc="1" el="761" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="762" ordinal="726" sl="762" sc="1" el="762" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="763" ordinal="727" sl="763" sc="1" el="763" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="764" ordinal="728" sl="764" sc="1" el="764" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="765" ordinal="729" sl="765" sc="1" el="765" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="766" ordinal="730" sl="766" sc="1" el="766" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="768" ordinal="731" sl="768" sc="1" el="768" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="769" ordinal="732" sl="769" sc="1" el="769" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="770" ordinal="733" sl="770" sc="1" el="770" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="771" ordinal="734" sl="771" sc="1" el="771" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="772" ordinal="735" sl="772" sc="1" el="772" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="773" ordinal="736" sl="773" sc="1" el="773" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="774" ordinal="737" sl="774" sc="1" el="774" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="775" ordinal="738" sl="775" sc="1" el="775" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="776" ordinal="739" sl="776" sc="1" el="776" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="777" ordinal="740" sl="777" sc="1" el="777" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="778" ordinal="741" sl="778" sc="1" el="778" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="779" ordinal="742" sl="779" sc="1" el="779" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="780" ordinal="743" sl="780" sc="1" el="780" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="781" ordinal="744" sl="781" sc="1" el="781" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="782" ordinal="745" sl="782" sc="1" el="782" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="783" ordinal="746" sl="783" sc="1" el="783" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="784" ordinal="747" sl="784" sc="1" el="784" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="785" ordinal="748" sl="785" sc="1" el="785" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="786" ordinal="749" sl="786" sc="1" el="786" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="787" ordinal="750" sl="787" sc="1" el="787" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="788" ordinal="751" sl="788" sc="1" el="788" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="789" ordinal="752" sl="789" sc="1" el="789" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="790" ordinal="753" sl="790" sc="1" el="790" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="791" ordinal="754" sl="791" sc="1" el="791" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="792" ordinal="755" sl="792" sc="1" el="792" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="794" ordinal="756" sl="794" sc="1" el="794" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="795" ordinal="757" sl="795" sc="1" el="795" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="796" ordinal="758" sl="796" sc="1" el="796" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="797" ordinal="759" sl="797" sc="1" el="797" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="798" ordinal="760" sl="798" sc="1" el="798" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="799" ordinal="761" sl="799" sc="1" el="799" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="800" ordinal="762" sl="800" sc="1" el="800" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="801" ordinal="763" sl="801" sc="1" el="801" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="802" ordinal="764" sl="802" sc="1" el="802" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="803" ordinal="765" sl="803" sc="1" el="803" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="804" ordinal="766" sl="804" sc="1" el="804" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="805" ordinal="767" sl="805" sc="1" el="805" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="806" ordinal="768" sl="806" sc="1" el="806" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="807" ordinal="769" sl="807" sc="1" el="807" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="808" ordinal="770" sl="808" sc="1" el="808" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="809" ordinal="771" sl="809" sc="1" el="809" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="810" ordinal="772" sl="810" sc="1" el="810" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="811" ordinal="773" sl="811" sc="1" el="811" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="812" ordinal="774" sl="812" sc="1" el="812" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="813" ordinal="775" sl="813" sc="1" el="813" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="814" ordinal="776" sl="814" sc="1" el="814" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="815" ordinal="777" sl="815" sc="1" el="815" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="816" ordinal="778" sl="816" sc="1" el="816" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="817" ordinal="779" sl="817" sc="1" el="817" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="818" ordinal="780" sl="818" sc="1" el="818" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="820" ordinal="781" sl="820" sc="1" el="820" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="821" ordinal="782" sl="821" sc="1" el="821" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="822" ordinal="783" sl="822" sc="1" el="822" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="823" ordinal="784" sl="823" sc="1" el="823" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="824" ordinal="785" sl="824" sc="1" el="824" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="825" ordinal="786" sl="825" sc="1" el="825" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="826" ordinal="787" sl="826" sc="1" el="826" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="827" ordinal="788" sl="827" sc="1" el="827" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="828" ordinal="789" sl="828" sc="1" el="828" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="829" ordinal="790" sl="829" sc="1" el="829" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="830" ordinal="791" sl="830" sc="1" el="830" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="831" ordinal="792" sl="831" sc="1" el="831" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="832" ordinal="793" sl="832" sc="1" el="832" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="833" ordinal="794" sl="833" sc="1" el="833" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="834" ordinal="795" sl="834" sc="1" el="834" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="835" ordinal="796" sl="835" sc="1" el="835" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="836" ordinal="797" sl="836" sc="1" el="836" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="837" ordinal="798" sl="837" sc="1" el="837" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="838" ordinal="799" sl="838" sc="1" el="838" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="839" ordinal="800" sl="839" sc="1" el="839" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="840" ordinal="801" sl="840" sc="1" el="840" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="841" ordinal="802" sl="841" sc="1" el="841" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="842" ordinal="803" sl="842" sc="1" el="842" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="843" ordinal="804" sl="843" sc="1" el="843" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="844" ordinal="805" sl="844" sc="1" el="844" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="846" ordinal="806" sl="846" sc="1" el="846" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="847" ordinal="807" sl="847" sc="1" el="847" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="848" ordinal="808" sl="848" sc="1" el="848" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="849" ordinal="809" sl="849" sc="1" el="849" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="850" ordinal="810" sl="850" sc="1" el="850" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="851" ordinal="811" sl="851" sc="1" el="851" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="852" ordinal="812" sl="852" sc="1" el="852" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="853" ordinal="813" sl="853" sc="1" el="853" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="854" ordinal="814" sl="854" sc="1" el="854" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="855" ordinal="815" sl="855" sc="1" el="855" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="856" ordinal="816" sl="856" sc="1" el="856" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="857" ordinal="817" sl="857" sc="1" el="857" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="858" ordinal="818" sl="858" sc="1" el="858" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="859" ordinal="819" sl="859" sc="1" el="859" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="860" ordinal="820" sl="860" sc="1" el="860" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="861" ordinal="821" sl="861" sc="1" el="861" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="862" ordinal="822" sl="862" sc="1" el="862" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="863" ordinal="823" sl="863" sc="1" el="863" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="864" ordinal="824" sl="864" sc="1" el="864" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="865" ordinal="825" sl="865" sc="1" el="865" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="866" ordinal="826" sl="866" sc="1" el="866" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="867" ordinal="827" sl="867" sc="1" el="867" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="868" ordinal="828" sl="868" sc="1" el="868" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="869" ordinal="829" sl="869" sc="1" el="869" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="870" ordinal="830" sl="870" sc="1" el="870" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="872" ordinal="831" sl="872" sc="1" el="872" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="873" ordinal="832" sl="873" sc="1" el="873" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="874" ordinal="833" sl="874" sc="1" el="874" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="875" ordinal="834" sl="875" sc="1" el="875" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="876" ordinal="835" sl="876" sc="1" el="876" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="877" ordinal="836" sl="877" sc="1" el="877" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="878" ordinal="837" sl="878" sc="1" el="878" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="879" ordinal="838" sl="879" sc="1" el="879" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="880" ordinal="839" sl="880" sc="1" el="880" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="881" ordinal="840" sl="881" sc="1" el="881" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="882" ordinal="841" sl="882" sc="1" el="882" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="883" ordinal="842" sl="883" sc="1" el="883" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="884" ordinal="843" sl="884" sc="1" el="884" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="885" ordinal="844" sl="885" sc="1" el="885" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="886" ordinal="845" sl="886" sc="1" el="886" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="887" ordinal="846" sl="887" sc="1" el="887" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="888" ordinal="847" sl="888" sc="1" el="888" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="889" ordinal="848" sl="889" sc="1" el="889" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="890" ordinal="849" sl="890" sc="1" el="890" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="891" ordinal="850" sl="891" sc="1" el="891" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="892" ordinal="851" sl="892" sc="1" el="892" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="893" ordinal="852" sl="893" sc="1" el="893" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="894" ordinal="853" sl="894" sc="1" el="894" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="895" ordinal="854" sl="895" sc="1" el="895" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="896" ordinal="855" sl="896" sc="1" el="896" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="898" ordinal="856" sl="898" sc="1" el="898" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="899" ordinal="857" sl="899" sc="1" el="899" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="900" ordinal="858" sl="900" sc="1" el="900" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="901" ordinal="859" sl="901" sc="1" el="901" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="902" ordinal="860" sl="902" sc="1" el="902" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="903" ordinal="861" sl="903" sc="1" el="903" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="904" ordinal="862" sl="904" sc="1" el="904" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="905" ordinal="863" sl="905" sc="1" el="905" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="906" ordinal="864" sl="906" sc="1" el="906" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="907" ordinal="865" sl="907" sc="1" el="907" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="908" ordinal="866" sl="908" sc="1" el="908" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="909" ordinal="867" sl="909" sc="1" el="909" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="910" ordinal="868" sl="910" sc="1" el="910" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="911" ordinal="869" sl="911" sc="1" el="911" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="912" ordinal="870" sl="912" sc="1" el="912" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="913" ordinal="871" sl="913" sc="1" el="913" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="914" ordinal="872" sl="914" sc="1" el="914" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="915" ordinal="873" sl="915" sc="1" el="915" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="916" ordinal="874" sl="916" sc="1" el="916" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="917" ordinal="875" sl="917" sc="1" el="917" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="918" ordinal="876" sl="918" sc="1" el="918" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="919" ordinal="877" sl="919" sc="1" el="919" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="920" ordinal="878" sl="920" sc="1" el="920" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="921" ordinal="879" sl="921" sc="1" el="921" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="922" ordinal="880" sl="922" sc="1" el="922" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="924" ordinal="881" sl="924" sc="1" el="924" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="925" ordinal="882" sl="925" sc="1" el="925" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="926" ordinal="883" sl="926" sc="1" el="926" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="927" ordinal="884" sl="927" sc="1" el="927" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="928" ordinal="885" sl="928" sc="1" el="928" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="929" ordinal="886" sl="929" sc="1" el="929" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="930" ordinal="887" sl="930" sc="1" el="930" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="931" ordinal="888" sl="931" sc="1" el="931" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="932" ordinal="889" sl="932" sc="1" el="932" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="933" ordinal="890" sl="933" sc="1" el="933" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="934" ordinal="891" sl="934" sc="1" el="934" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="935" ordinal="892" sl="935" sc="1" el="935" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="936" ordinal="893" sl="936" sc="1" el="936" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="937" ordinal="894" sl="937" sc="1" el="937" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="938" ordinal="895" sl="938" sc="1" el="938" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="939" ordinal="896" sl="939" sc="1" el="939" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="940" ordinal="897" sl="940" sc="1" el="940" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="941" ordinal="898" sl="941" sc="1" el="941" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="942" ordinal="899" sl="942" sc="1" el="942" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="943" ordinal="900" sl="943" sc="1" el="943" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="944" ordinal="901" sl="944" sc="1" el="944" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="945" ordinal="902" sl="945" sc="1" el="945" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="946" ordinal="903" sl="946" sc="1" el="946" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="947" ordinal="904" sl="947" sc="1" el="947" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="948" ordinal="905" sl="948" sc="1" el="948" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="950" ordinal="906" sl="950" sc="1" el="950" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="951" ordinal="907" sl="951" sc="1" el="951" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="952" ordinal="908" sl="952" sc="1" el="952" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="953" ordinal="909" sl="953" sc="1" el="953" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="954" ordinal="910" sl="954" sc="1" el="954" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="955" ordinal="911" sl="955" sc="1" el="955" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="956" ordinal="912" sl="956" sc="1" el="956" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="957" ordinal="913" sl="957" sc="1" el="957" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="958" ordinal="914" sl="958" sc="1" el="958" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="959" ordinal="915" sl="959" sc="1" el="959" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="960" ordinal="916" sl="960" sc="1" el="960" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="961" ordinal="917" sl="961" sc="1" el="961" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="962" ordinal="918" sl="962" sc="1" el="962" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="963" ordinal="919" sl="963" sc="1" el="963" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="964" ordinal="920" sl="964" sc="1" el="964" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="965" ordinal="921" sl="965" sc="1" el="965" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="966" ordinal="922" sl="966" sc="1" el="966" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="967" ordinal="923" sl="967" sc="1" el="967" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="968" ordinal="924" sl="968" sc="1" el="968" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="969" ordinal="925" sl="969" sc="1" el="969" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="970" ordinal="926" sl="970" sc="1" el="970" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="971" ordinal="927" sl="971" sc="1" el="971" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="972" ordinal="928" sl="972" sc="1" el="972" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="973" ordinal="929" sl="973" sc="1" el="973" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="974" ordinal="930" sl="974" sc="1" el="974" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="976" ordinal="931" sl="976" sc="1" el="976" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="977" ordinal="932" sl="977" sc="1" el="977" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="978" ordinal="933" sl="978" sc="1" el="978" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="979" ordinal="934" sl="979" sc="1" el="979" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="980" ordinal="935" sl="980" sc="1" el="980" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="981" ordinal="936" sl="981" sc="1" el="981" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="982" ordinal="937" sl="982" sc="1" el="982" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="983" ordinal="938" sl="983" sc="1" el="983" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="984" ordinal="939" sl="984" sc="1" el="984" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="985" ordinal="940" sl="985" sc="1" el="985" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="986" ordinal="941" sl="986" sc="1" el="986" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="987" ordinal="942" sl="987" sc="1" el="987" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="988" ordinal="943" sl="988" sc="1" el="988" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="989" ordinal="944" sl="989" sc="1" el="989" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="990" ordinal="945" sl="990" sc="1" el="990" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="991" ordinal="946" sl="991" sc="1" el="991" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="992" ordinal="947" sl="992" sc="1" el="992" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="993" ordinal="948" sl="993" sc="1" el="993" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="994" ordinal="949" sl="994" sc="1" el="994" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="995" ordinal="950" sl="995" sc="1" el="995" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="996" ordinal="951" sl="996" sc="1" el="996" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="997" ordinal="952" sl="997" sc="1" el="997" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="998" ordinal="953" sl="998" sc="1" el="998" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="999" ordinal="954" sl="999" sc="1" el="999" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1000" ordinal="955" sl="1000" sc="1" el="1000" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1002" ordinal="956" sl="1002" sc="1" el="1002" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1003" ordinal="957" sl="1003" sc="1" el="1003" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1004" ordinal="958" sl="1004" sc="1" el="1004" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1005" ordinal="959" sl="1005" sc="1" el="1005" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1006" ordinal="960" sl="1006" sc="1" el="1006" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1007" ordinal="961" sl="1007" sc="1" el="1007" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1008" ordinal="962" sl="1008" sc="1" el="1008" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1009" ordinal="963" sl="1009" sc="1" el="1009" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1010" ordinal="964" sl="1010" sc="1" el="1010" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1011" ordinal="965" sl="1011" sc="1" el="1011" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1012" ordinal="966" sl="1012" sc="1" el="1012" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1013" ordinal="967" sl="1013" sc="1" el="1013" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1014" ordinal="968" sl="1014" sc="1" el="1014" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1015" ordinal="969" sl="1015" sc="1" el="1015" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1016" ordinal="970" sl="1016" sc="1" el="1016" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1017" ordinal="971" sl="1017" sc="1" el="1017" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1018" ordinal="972" sl="1018" sc="1" el="1018" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1019" ordinal="973" sl="1019" sc="1" el="1019" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1020" ordinal="974" sl="1020" sc="1" el="1020" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1021" ordinal="975" sl="1021" sc="1" el="1021" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1022" ordinal="976" sl="1022" sc="1" el="1022" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1023" ordinal="977" sl="1023" sc="1" el="1023" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1024" ordinal="978" sl="1024" sc="1" el="1024" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1025" ordinal="979" sl="1025" sc="1" el="1025" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1026" ordinal="980" sl="1026" sc="1" el="1026" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1028" ordinal="981" sl="1028" sc="1" el="1028" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1029" ordinal="982" sl="1029" sc="1" el="1029" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1030" ordinal="983" sl="1030" sc="1" el="1030" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1031" ordinal="984" sl="1031" sc="1" el="1031" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1032" ordinal="985" sl="1032" sc="1" el="1032" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1033" ordinal="986" sl="1033" sc="1" el="1033" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1034" ordinal="987" sl="1034" sc="1" el="1034" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1035" ordinal="988" sl="1035" sc="1" el="1035" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1036" ordinal="989" sl="1036" sc="1" el="1036" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1037" ordinal="990" sl="1037" sc="1" el="1037" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1038" ordinal="991" sl="1038" sc="1" el="1038" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1039" ordinal="992" sl="1039" sc="1" el="1039" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1040" ordinal="993" sl="1040" sc="1" el="1040" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1041" ordinal="994" sl="1041" sc="1" el="1041" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1042" ordinal="995" sl="1042" sc="1" el="1042" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1043" ordinal="996" sl="1043" sc="1" el="1043" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1044" ordinal="997" sl="1044" sc="1" el="1044" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1045" ordinal="998" sl="1045" sc="1" el="1045" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1046" ordinal="999" sl="1046" sc="1" el="1046" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1047" ordinal="1000" sl="1047" sc="1" el="1047" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1048" ordinal="1001" sl="1048" sc="1" el="1048" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1049" ordinal="1002" sl="1049" sc="1" el="1049" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1050" ordinal="1003" sl="1050" sc="1" el="1050" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1051" ordinal="1004" sl="1051" sc="1" el="1051" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1052" ordinal="1005" sl="1052" sc="1" el="1052" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1053" ordinal="1006" sl="1053" sc="1" el="1053" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1055" ordinal="1007" sl="1055" sc="1" el="1055" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1056" ordinal="1008" sl="1056" sc="1" el="1056" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1057" ordinal="1009" sl="1057" sc="1" el="1057" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1058" ordinal="1010" sl="1058" sc="1" el="1058" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1059" ordinal="1011" sl="1059" sc="1" el="1059" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1060" ordinal="1012" sl="1060" sc="1" el="1060" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1061" ordinal="1013" sl="1061" sc="1" el="1061" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1062" ordinal="1014" sl="1062" sc="1" el="1062" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1063" ordinal="1015" sl="1063" sc="1" el="1063" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1064" ordinal="1016" sl="1064" sc="1" el="1064" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1065" ordinal="1017" sl="1065" sc="1" el="1065" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1066" ordinal="1018" sl="1066" sc="1" el="1066" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1067" ordinal="1019" sl="1067" sc="1" el="1067" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1068" ordinal="1020" sl="1068" sc="1" el="1068" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1069" ordinal="1021" sl="1069" sc="1" el="1069" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1070" ordinal="1022" sl="1070" sc="1" el="1070" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1071" ordinal="1023" sl="1071" sc="1" el="1071" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1072" ordinal="1024" sl="1072" sc="1" el="1072" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1073" ordinal="1025" sl="1073" sc="1" el="1073" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1074" ordinal="1026" sl="1074" sc="1" el="1074" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1075" ordinal="1027" sl="1075" sc="1" el="1075" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1076" ordinal="1028" sl="1076" sc="1" el="1076" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1077" ordinal="1029" sl="1077" sc="1" el="1077" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1078" ordinal="1030" sl="1078" sc="1" el="1078" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1079" ordinal="1031" sl="1079" sc="1" el="1079" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1080" ordinal="1032" sl="1080" sc="1" el="1080" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1081" ordinal="1033" sl="1081" sc="1" el="1081" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1082" ordinal="1034" sl="1082" sc="1" el="1082" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1083" ordinal="1035" sl="1083" sc="1" el="1083" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1084" ordinal="1036" sl="1084" sc="1" el="1084" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1085" ordinal="1037" sl="1085" sc="1" el="1085" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1086" ordinal="1038" sl="1086" sc="1" el="1086" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1087" ordinal="1039" sl="1087" sc="1" el="1087" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1088" ordinal="1040" sl="1088" sc="1" el="1088" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1089" ordinal="1041" sl="1089" sc="1" el="1089" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1090" ordinal="1042" sl="1090" sc="1" el="1090" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1091" ordinal="1043" sl="1091" sc="1" el="1091" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1092" ordinal="1044" sl="1092" sc="1" el="1092" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1093" ordinal="1045" sl="1093" sc="1" el="1093" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1094" ordinal="1046" sl="1094" sc="1" el="1094" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1095" ordinal="1047" sl="1095" sc="1" el="1095" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1096" ordinal="1048" sl="1096" sc="1" el="1096" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1097" ordinal="1049" sl="1097" sc="1" el="1097" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1098" ordinal="1050" sl="1098" sc="1" el="1098" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1099" ordinal="1051" sl="1099" sc="1" el="1099" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1100" ordinal="1052" sl="1100" sc="1" el="1100" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1101" ordinal="1053" sl="1101" sc="1" el="1101" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1102" ordinal="1054" sl="1102" sc="1" el="1102" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1103" ordinal="1055" sl="1103" sc="1" el="1103" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1104" ordinal="1056" sl="1104" sc="1" el="1104" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1105" ordinal="1057" sl="1105" sc="1" el="1105" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1106" ordinal="1058" sl="1106" sc="1" el="1106" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1107" ordinal="1059" sl="1107" sc="1" el="1107" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1108" ordinal="1060" sl="1108" sc="1" el="1108" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1109" ordinal="1061" sl="1109" sc="1" el="1109" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1110" ordinal="1062" sl="1110" sc="1" el="1110" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1111" ordinal="1063" sl="1111" sc="1" el="1111" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1112" ordinal="1064" sl="1112" sc="1" el="1112" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1113" ordinal="1065" sl="1113" sc="1" el="1113" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1114" ordinal="1066" sl="1114" sc="1" el="1114" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1115" ordinal="1067" sl="1115" sc="1" el="1115" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1116" ordinal="1068" sl="1116" sc="1" el="1116" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1117" ordinal="1069" sl="1117" sc="1" el="1117" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1118" ordinal="1070" sl="1118" sc="1" el="1118" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1119" ordinal="1071" sl="1119" sc="1" el="1119" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1120" ordinal="1072" sl="1120" sc="1" el="1120" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1121" ordinal="1073" sl="1121" sc="1" el="1121" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1122" ordinal="1074" sl="1122" sc="1" el="1122" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1123" ordinal="1075" sl="1123" sc="1" el="1123" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1124" ordinal="1076" sl="1124" sc="1" el="1124" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1125" ordinal="1077" sl="1125" sc="1" el="1125" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1126" ordinal="1078" sl="1126" sc="1" el="1126" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1127" ordinal="1079" sl="1127" sc="1" el="1127" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1128" ordinal="1080" sl="1128" sc="1" el="1128" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1129" ordinal="1081" sl="1129" sc="1" el="1129" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1130" ordinal="1082" sl="1130" sc="1" el="1130" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1131" ordinal="1083" sl="1131" sc="1" el="1131" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1132" ordinal="1084" sl="1132" sc="1" el="1132" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1133" ordinal="1085" sl="1133" sc="1" el="1133" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1134" ordinal="1086" sl="1134" sc="1" el="1134" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1135" ordinal="1087" sl="1135" sc="1" el="1135" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1136" ordinal="1088" sl="1136" sc="1" el="1136" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1137" ordinal="1089" sl="1137" sc="1" el="1137" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1138" ordinal="1090" sl="1138" sc="1" el="1138" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1139" ordinal="1091" sl="1139" sc="1" el="1139" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1140" ordinal="1092" sl="1140" sc="1" el="1140" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1141" ordinal="1093" sl="1141" sc="1" el="1141" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1142" ordinal="1094" sl="1142" sc="1" el="1142" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1143" ordinal="1095" sl="1143" sc="1" el="1143" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1144" ordinal="1096" sl="1144" sc="1" el="1144" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1145" ordinal="1097" sl="1145" sc="1" el="1145" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1146" ordinal="1098" sl="1146" sc="1" el="1146" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1147" ordinal="1099" sl="1147" sc="1" el="1147" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1148" ordinal="1100" sl="1148" sc="1" el="1148" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1149" ordinal="1101" sl="1149" sc="1" el="1149" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1150" ordinal="1102" sl="1150" sc="1" el="1150" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1151" ordinal="1103" sl="1151" sc="1" el="1151" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1152" ordinal="1104" sl="1152" sc="1" el="1152" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1153" ordinal="1105" sl="1153" sc="1" el="1153" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1154" ordinal="1106" sl="1154" sc="1" el="1154" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1155" ordinal="1107" sl="1155" sc="1" el="1155" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1156" ordinal="1108" sl="1156" sc="1" el="1156" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1157" ordinal="1109" sl="1157" sc="1" el="1157" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1158" ordinal="1110" sl="1158" sc="1" el="1158" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1159" ordinal="1111" sl="1159" sc="1" el="1159" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1160" ordinal="1112" sl="1160" sc="1" el="1160" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1161" ordinal="1113" sl="1161" sc="1" el="1161" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1162" ordinal="1114" sl="1162" sc="1" el="1162" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1163" ordinal="1115" sl="1163" sc="1" el="1163" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1164" ordinal="1116" sl="1164" sc="1" el="1164" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1165" ordinal="1117" sl="1165" sc="1" el="1165" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1166" ordinal="1118" sl="1166" sc="1" el="1166" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1167" ordinal="1119" sl="1167" sc="1" el="1167" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1168" ordinal="1120" sl="1168" sc="1" el="1168" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1169" ordinal="1121" sl="1169" sc="1" el="1169" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1170" ordinal="1122" sl="1170" sc="1" el="1170" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1171" ordinal="1123" sl="1171" sc="1" el="1171" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1172" ordinal="1124" sl="1172" sc="1" el="1172" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1173" ordinal="1125" sl="1173" sc="1" el="1173" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1174" ordinal="1126" sl="1174" sc="1" el="1174" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1175" ordinal="1127" sl="1175" sc="1" el="1175" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1176" ordinal="1128" sl="1176" sc="1" el="1176" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1177" ordinal="1129" sl="1177" sc="1" el="1177" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1178" ordinal="1130" sl="1178" sc="1" el="1178" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1179" ordinal="1131" sl="1179" sc="1" el="1179" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1180" ordinal="1132" sl="1180" sc="1" el="1180" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1181" ordinal="1133" sl="1181" sc="1" el="1181" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1182" ordinal="1134" sl="1182" sc="1" el="1182" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1183" ordinal="1135" sl="1183" sc="1" el="1183" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1184" ordinal="1136" sl="1184" sc="1" el="1184" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1185" ordinal="1137" sl="1185" sc="1" el="1185" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1186" ordinal="1138" sl="1186" sc="1" el="1186" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1187" ordinal="1139" sl="1187" sc="1" el="1187" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1188" ordinal="1140" sl="1188" sc="1" el="1188" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1189" ordinal="1141" sl="1189" sc="1" el="1189" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1190" ordinal="1142" sl="1190" sc="1" el="1190" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1191" ordinal="1143" sl="1191" sc="1" el="1191" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1192" ordinal="1144" sl="1192" sc="1" el="1192" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1193" ordinal="1145" sl="1193" sc="1" el="1193" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1194" ordinal="1146" sl="1194" sc="1" el="1194" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1195" ordinal="1147" sl="1195" sc="1" el="1195" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1196" ordinal="1148" sl="1196" sc="1" el="1196" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1197" ordinal="1149" sl="1197" sc="1" el="1197" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1198" ordinal="1150" sl="1198" sc="1" el="1198" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1199" ordinal="1151" sl="1199" sc="1" el="1199" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1200" ordinal="1152" sl="1200" sc="1" el="1200" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1201" ordinal="1153" sl="1201" sc="1" el="1201" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1202" ordinal="1154" sl="1202" sc="1" el="1202" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1203" ordinal="1155" sl="1203" sc="1" el="1203" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1204" ordinal="1156" sl="1204" sc="1" el="1204" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1205" ordinal="1157" sl="1205" sc="1" el="1205" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1206" ordinal="1158" sl="1206" sc="1" el="1206" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1207" ordinal="1159" sl="1207" sc="1" el="1207" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1208" ordinal="1160" sl="1208" sc="1" el="1208" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1209" ordinal="1161" sl="1209" sc="1" el="1209" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1210" ordinal="1162" sl="1210" sc="1" el="1210" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1211" ordinal="1163" sl="1211" sc="1" el="1211" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1212" ordinal="1164" sl="1212" sc="1" el="1212" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1213" ordinal="1165" sl="1213" sc="1" el="1213" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1214" ordinal="1166" sl="1214" sc="1" el="1214" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1215" ordinal="1167" sl="1215" sc="1" el="1215" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1216" ordinal="1168" sl="1216" sc="1" el="1216" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1217" ordinal="1169" sl="1217" sc="1" el="1217" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1218" ordinal="1170" sl="1218" sc="1" el="1218" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1219" ordinal="1171" sl="1219" sc="1" el="1219" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1220" ordinal="1172" sl="1220" sc="1" el="1220" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1221" ordinal="1173" sl="1221" sc="1" el="1221" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1222" ordinal="1174" sl="1222" sc="1" el="1222" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1223" ordinal="1175" sl="1223" sc="1" el="1223" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1224" ordinal="1176" sl="1224" sc="1" el="1224" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1225" ordinal="1177" sl="1225" sc="1" el="1225" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1226" ordinal="1178" sl="1226" sc="1" el="1226" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1227" ordinal="1179" sl="1227" sc="1" el="1227" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1228" ordinal="1180" sl="1228" sc="1" el="1228" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1229" ordinal="1181" sl="1229" sc="1" el="1229" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1230" ordinal="1182" sl="1230" sc="1" el="1230" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1231" ordinal="1183" sl="1231" sc="1" el="1231" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1232" ordinal="1184" sl="1232" sc="1" el="1232" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1233" ordinal="1185" sl="1233" sc="1" el="1233" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1234" ordinal="1186" sl="1234" sc="1" el="1234" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1235" ordinal="1187" sl="1235" sc="1" el="1235" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1236" ordinal="1188" sl="1236" sc="1" el="1236" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1237" ordinal="1189" sl="1237" sc="1" el="1237" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1238" ordinal="1190" sl="1238" sc="1" el="1238" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1239" ordinal="1191" sl="1239" sc="1" el="1239" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1240" ordinal="1192" sl="1240" sc="1" el="1240" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1241" ordinal="1193" sl="1241" sc="1" el="1241" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1242" ordinal="1194" sl="1242" sc="1" el="1242" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1243" ordinal="1195" sl="1243" sc="1" el="1243" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1244" ordinal="1196" sl="1244" sc="1" el="1244" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1245" ordinal="1197" sl="1245" sc="1" el="1245" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1246" ordinal="1198" sl="1246" sc="1" el="1246" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1247" ordinal="1199" sl="1247" sc="1" el="1247" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1248" ordinal="1200" sl="1248" sc="1" el="1248" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1249" ordinal="1201" sl="1249" sc="1" el="1249" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1250" ordinal="1202" sl="1250" sc="1" el="1250" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1251" ordinal="1203" sl="1251" sc="1" el="1251" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1252" ordinal="1204" sl="1252" sc="1" el="1252" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1253" ordinal="1205" sl="1253" sc="1" el="1253" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1254" ordinal="1206" sl="1254" sc="1" el="1254" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1255" ordinal="1207" sl="1255" sc="1" el="1255" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1256" ordinal="1208" sl="1256" sc="1" el="1256" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1257" ordinal="1209" sl="1257" sc="1" el="1257" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1258" ordinal="1210" sl="1258" sc="1" el="1258" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1259" ordinal="1211" sl="1259" sc="1" el="1259" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1260" ordinal="1212" sl="1260" sc="1" el="1260" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1261" ordinal="1213" sl="1261" sc="1" el="1261" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1262" ordinal="1214" sl="1262" sc="1" el="1262" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1263" ordinal="1215" sl="1263" sc="1" el="1263" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1264" ordinal="1216" sl="1264" sc="1" el="1264" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1265" ordinal="1217" sl="1265" sc="1" el="1265" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1266" ordinal="1218" sl="1266" sc="1" el="1266" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1267" ordinal="1219" sl="1267" sc="1" el="1267" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1268" ordinal="1220" sl="1268" sc="1" el="1268" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1269" ordinal="1221" sl="1269" sc="1" el="1269" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1270" ordinal="1222" sl="1270" sc="1" el="1270" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1271" ordinal="1223" sl="1271" sc="1" el="1271" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1272" ordinal="1224" sl="1272" sc="1" el="1272" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1273" ordinal="1225" sl="1273" sc="1" el="1273" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1274" ordinal="1226" sl="1274" sc="1" el="1274" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1275" ordinal="1227" sl="1275" sc="1" el="1275" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1276" ordinal="1228" sl="1276" sc="1" el="1276" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1277" ordinal="1229" sl="1277" sc="1" el="1277" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1278" ordinal="1230" sl="1278" sc="1" el="1278" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1279" ordinal="1231" sl="1279" sc="1" el="1279" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1280" ordinal="1232" sl="1280" sc="1" el="1280" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1281" ordinal="1233" sl="1281" sc="1" el="1281" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1282" ordinal="1234" sl="1282" sc="1" el="1282" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1283" ordinal="1235" sl="1283" sc="1" el="1283" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1284" ordinal="1236" sl="1284" sc="1" el="1284" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1285" ordinal="1237" sl="1285" sc="1" el="1285" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1286" ordinal="1238" sl="1286" sc="1" el="1286" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1287" ordinal="1239" sl="1287" sc="1" el="1287" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1288" ordinal="1240" sl="1288" sc="1" el="1288" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1289" ordinal="1241" sl="1289" sc="1" el="1289" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1290" ordinal="1242" sl="1290" sc="1" el="1290" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1291" ordinal="1243" sl="1291" sc="1" el="1291" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1292" ordinal="1244" sl="1292" sc="1" el="1292" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1293" ordinal="1245" sl="1293" sc="1" el="1293" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1294" ordinal="1246" sl="1294" sc="1" el="1294" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1295" ordinal="1247" sl="1295" sc="1" el="1295" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1296" ordinal="1248" sl="1296" sc="1" el="1296" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1297" ordinal="1249" sl="1297" sc="1" el="1297" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1298" ordinal="1250" sl="1298" sc="1" el="1298" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1299" ordinal="1251" sl="1299" sc="1" el="1299" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1301" ordinal="1252" sl="1301" sc="1" el="1301" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1302" ordinal="1253" sl="1302" sc="1" el="1302" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1303" ordinal="1254" sl="1303" sc="1" el="1303" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1304" ordinal="1255" sl="1304" sc="1" el="1304" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1305" ordinal="1256" sl="1305" sc="1" el="1305" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1306" ordinal="1257" sl="1306" sc="1" el="1306" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1307" ordinal="1258" sl="1307" sc="1" el="1307" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1308" ordinal="1259" sl="1308" sc="1" el="1308" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1309" ordinal="1260" sl="1309" sc="1" el="1309" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1310" ordinal="1261" sl="1310" sc="1" el="1310" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1311" ordinal="1262" sl="1311" sc="1" el="1311" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1312" ordinal="1263" sl="1312" sc="1" el="1312" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1313" ordinal="1264" sl="1313" sc="1" el="1313" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1314" ordinal="1265" sl="1314" sc="1" el="1314" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1315" ordinal="1266" sl="1315" sc="1" el="1315" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1316" ordinal="1267" sl="1316" sc="1" el="1316" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1317" ordinal="1268" sl="1317" sc="1" el="1317" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1318" ordinal="1269" sl="1318" sc="1" el="1318" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1319" ordinal="1270" sl="1319" sc="1" el="1319" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1320" ordinal="1271" sl="1320" sc="1" el="1320" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1321" ordinal="1272" sl="1321" sc="1" el="1321" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1322" ordinal="1273" sl="1322" sc="1" el="1322" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1323" ordinal="1274" sl="1323" sc="1" el="1323" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1324" ordinal="1275" sl="1324" sc="1" el="1324" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1325" ordinal="1276" sl="1325" sc="1" el="1325" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1326" ordinal="1277" sl="1326" sc="1" el="1326" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1327" ordinal="1278" sl="1327" sc="1" el="1327" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1328" ordinal="1279" sl="1328" sc="1" el="1328" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1329" ordinal="1280" sl="1329" sc="1" el="1329" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1330" ordinal="1281" sl="1330" sc="1" el="1330" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1331" ordinal="1282" sl="1331" sc="1" el="1331" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1332" ordinal="1283" sl="1332" sc="1" el="1332" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1333" ordinal="1284" sl="1333" sc="1" el="1333" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1334" ordinal="1285" sl="1334" sc="1" el="1334" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1335" ordinal="1286" sl="1335" sc="1" el="1335" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1336" ordinal="1287" sl="1336" sc="1" el="1336" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1337" ordinal="1288" sl="1337" sc="1" el="1337" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1338" ordinal="1289" sl="1338" sc="1" el="1338" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1339" ordinal="1290" sl="1339" sc="1" el="1339" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1340" ordinal="1291" sl="1340" sc="1" el="1340" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1341" ordinal="1292" sl="1341" sc="1" el="1341" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1342" ordinal="1293" sl="1342" sc="1" el="1342" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1343" ordinal="1294" sl="1343" sc="1" el="1343" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1344" ordinal="1295" sl="1344" sc="1" el="1344" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1345" ordinal="1296" sl="1345" sc="1" el="1345" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1346" ordinal="1297" sl="1346" sc="1" el="1346" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1348" ordinal="1298" sl="1348" sc="1" el="1348" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1349" ordinal="1299" sl="1349" sc="1" el="1349" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1350" ordinal="1300" sl="1350" sc="1" el="1350" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1351" ordinal="1301" sl="1351" sc="1" el="1351" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1352" ordinal="1302" sl="1352" sc="1" el="1352" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1353" ordinal="1303" sl="1353" sc="1" el="1353" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1354" ordinal="1304" sl="1354" sc="1" el="1354" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1355" ordinal="1305" sl="1355" sc="1" el="1355" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1356" ordinal="1306" sl="1356" sc="1" el="1356" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1357" ordinal="1307" sl="1357" sc="1" el="1357" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1358" ordinal="1308" sl="1358" sc="1" el="1358" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1359" ordinal="1309" sl="1359" sc="1" el="1359" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1360" ordinal="1310" sl="1360" sc="1" el="1360" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1361" ordinal="1311" sl="1361" sc="1" el="1361" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1362" ordinal="1312" sl="1362" sc="1" el="1362" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1363" ordinal="1313" sl="1363" sc="1" el="1363" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1364" ordinal="1314" sl="1364" sc="1" el="1364" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1365" ordinal="1315" sl="1365" sc="1" el="1365" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1366" ordinal="1316" sl="1366" sc="1" el="1366" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1367" ordinal="1317" sl="1367" sc="1" el="1367" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1368" ordinal="1318" sl="1368" sc="1" el="1368" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1369" ordinal="1319" sl="1369" sc="1" el="1369" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1370" ordinal="1320" sl="1370" sc="1" el="1370" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1371" ordinal="1321" sl="1371" sc="1" el="1371" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1372" ordinal="1322" sl="1372" sc="1" el="1372" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1373" ordinal="1323" sl="1373" sc="1" el="1373" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1374" ordinal="1324" sl="1374" sc="1" el="1374" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1375" ordinal="1325" sl="1375" sc="1" el="1375" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1376" ordinal="1326" sl="1376" sc="1" el="1376" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1377" ordinal="1327" sl="1377" sc="1" el="1377" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1378" ordinal="1328" sl="1378" sc="1" el="1378" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1379" ordinal="1329" sl="1379" sc="1" el="1379" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1380" ordinal="1330" sl="1380" sc="1" el="1380" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1381" ordinal="1331" sl="1381" sc="1" el="1381" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1382" ordinal="1332" sl="1382" sc="1" el="1382" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1383" ordinal="1333" sl="1383" sc="1" el="1383" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1384" ordinal="1334" sl="1384" sc="1" el="1384" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1385" ordinal="1335" sl="1385" sc="1" el="1385" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1386" ordinal="1336" sl="1386" sc="1" el="1386" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1387" ordinal="1337" sl="1387" sc="1" el="1387" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1388" ordinal="1338" sl="1388" sc="1" el="1388" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1389" ordinal="1339" sl="1389" sc="1" el="1389" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1390" ordinal="1340" sl="1390" sc="1" el="1390" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1391" ordinal="1341" sl="1391" sc="1" el="1391" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1392" ordinal="1342" sl="1392" sc="1" el="1392" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1393" ordinal="1343" sl="1393" sc="1" el="1393" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1394" ordinal="1344" sl="1394" sc="1" el="1394" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1395" ordinal="1345" sl="1395" sc="1" el="1395" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1396" ordinal="1346" sl="1396" sc="1" el="1396" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1397" ordinal="1347" sl="1397" sc="1" el="1397" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1398" ordinal="1348" sl="1398" sc="1" el="1398" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1399" ordinal="1349" sl="1399" sc="1" el="1399" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1400" ordinal="1350" sl="1400" sc="1" el="1400" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1401" ordinal="1351" sl="1401" sc="1" el="1401" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1402" ordinal="1352" sl="1402" sc="1" el="1402" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1403" ordinal="1353" sl="1403" sc="1" el="1403" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1404" ordinal="1354" sl="1404" sc="1" el="1404" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1405" ordinal="1355" sl="1405" sc="1" el="1405" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1406" ordinal="1356" sl="1406" sc="1" el="1406" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1407" ordinal="1357" sl="1407" sc="1" el="1407" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1408" ordinal="1358" sl="1408" sc="1" el="1408" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1409" ordinal="1359" sl="1409" sc="1" el="1409" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1410" ordinal="1360" sl="1410" sc="1" el="1410" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1411" ordinal="1361" sl="1411" sc="1" el="1411" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1412" ordinal="1362" sl="1412" sc="1" el="1412" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1413" ordinal="1363" sl="1413" sc="1" el="1413" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1414" ordinal="1364" sl="1414" sc="1" el="1414" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1415" ordinal="1365" sl="1415" sc="1" el="1415" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1416" ordinal="1366" sl="1416" sc="1" el="1416" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1417" ordinal="1367" sl="1417" sc="1" el="1417" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1418" ordinal="1368" sl="1418" sc="1" el="1418" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1419" ordinal="1369" sl="1419" sc="1" el="1419" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1420" ordinal="1370" sl="1420" sc="1" el="1420" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1421" ordinal="1371" sl="1421" sc="1" el="1421" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1422" ordinal="1372" sl="1422" sc="1" el="1422" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1423" ordinal="1373" sl="1423" sc="1" el="1423" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1424" ordinal="1374" sl="1424" sc="1" el="1424" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1425" ordinal="1375" sl="1425" sc="1" el="1425" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1426" ordinal="1376" sl="1426" sc="1" el="1426" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1427" ordinal="1377" sl="1427" sc="1" el="1427" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1428" ordinal="1378" sl="1428" sc="1" el="1428" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1429" ordinal="1379" sl="1429" sc="1" el="1429" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1430" ordinal="1380" sl="1430" sc="1" el="1430" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1431" ordinal="1381" sl="1431" sc="1" el="1431" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1432" ordinal="1382" sl="1432" sc="1" el="1432" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1433" ordinal="1383" sl="1433" sc="1" el="1433" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1434" ordinal="1384" sl="1434" sc="1" el="1434" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1435" ordinal="1385" sl="1435" sc="1" el="1435" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1436" ordinal="1386" sl="1436" sc="1" el="1436" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1437" ordinal="1387" sl="1437" sc="1" el="1437" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1439" ordinal="1388" sl="1439" sc="1" el="1439" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1440" ordinal="1389" sl="1440" sc="1" el="1440" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1441" ordinal="1390" sl="1441" sc="1" el="1441" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1442" ordinal="1391" sl="1442" sc="1" el="1442" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1443" ordinal="1392" sl="1443" sc="1" el="1443" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1444" ordinal="1393" sl="1444" sc="1" el="1444" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1445" ordinal="1394" sl="1445" sc="1" el="1445" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1446" ordinal="1395" sl="1446" sc="1" el="1446" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1447" ordinal="1396" sl="1447" sc="1" el="1447" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1448" ordinal="1397" sl="1448" sc="1" el="1448" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1449" ordinal="1398" sl="1449" sc="1" el="1449" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1450" ordinal="1399" sl="1450" sc="1" el="1450" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1451" ordinal="1400" sl="1451" sc="1" el="1451" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1452" ordinal="1401" sl="1452" sc="1" el="1452" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1453" ordinal="1402" sl="1453" sc="1" el="1453" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1454" ordinal="1403" sl="1454" sc="1" el="1454" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1455" ordinal="1404" sl="1455" sc="1" el="1455" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1456" ordinal="1405" sl="1456" sc="1" el="1456" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1457" ordinal="1406" sl="1457" sc="1" el="1457" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1458" ordinal="1407" sl="1458" sc="1" el="1458" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1459" ordinal="1408" sl="1459" sc="1" el="1459" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1460" ordinal="1409" sl="1460" sc="1" el="1460" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1461" ordinal="1410" sl="1461" sc="1" el="1461" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1462" ordinal="1411" sl="1462" sc="1" el="1462" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1464" ordinal="1412" sl="1464" sc="1" el="1464" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1465" ordinal="1413" sl="1465" sc="1" el="1465" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1466" ordinal="1414" sl="1466" sc="1" el="1466" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1467" ordinal="1415" sl="1467" sc="1" el="1467" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1468" ordinal="1416" sl="1468" sc="1" el="1468" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1469" ordinal="1417" sl="1469" sc="1" el="1469" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1470" ordinal="1418" sl="1470" sc="1" el="1470" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1471" ordinal="1419" sl="1471" sc="1" el="1471" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1472" ordinal="1420" sl="1472" sc="1" el="1472" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1473" ordinal="1421" sl="1473" sc="1" el="1473" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1474" ordinal="1422" sl="1474" sc="1" el="1474" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1475" ordinal="1423" sl="1475" sc="1" el="1475" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1476" ordinal="1424" sl="1476" sc="1" el="1476" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1477" ordinal="1425" sl="1477" sc="1" el="1477" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1478" ordinal="1426" sl="1478" sc="1" el="1478" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1479" ordinal="1427" sl="1479" sc="1" el="1479" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1480" ordinal="1428" sl="1480" sc="1" el="1480" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1481" ordinal="1429" sl="1481" sc="1" el="1481" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1482" ordinal="1430" sl="1482" sc="1" el="1482" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1483" ordinal="1431" sl="1483" sc="1" el="1483" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1484" ordinal="1432" sl="1484" sc="1" el="1484" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1485" ordinal="1433" sl="1485" sc="1" el="1485" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1486" ordinal="1434" sl="1486" sc="1" el="1486" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1487" ordinal="1435" sl="1487" sc="1" el="1487" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1488" ordinal="1436" sl="1488" sc="1" el="1488" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1489" ordinal="1437" sl="1489" sc="1" el="1489" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1490" ordinal="1438" sl="1490" sc="1" el="1490" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1491" ordinal="1439" sl="1491" sc="1" el="1491" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1492" ordinal="1440" sl="1492" sc="1" el="1492" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1493" ordinal="1441" sl="1493" sc="1" el="1493" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1494" ordinal="1442" sl="1494" sc="1" el="1494" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1495" ordinal="1443" sl="1495" sc="1" el="1495" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1496" ordinal="1444" sl="1496" sc="1" el="1496" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1497" ordinal="1445" sl="1497" sc="1" el="1497" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1499" ordinal="1446" sl="1499" sc="1" el="1499" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1500" ordinal="1447" sl="1500" sc="1" el="1500" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1501" ordinal="1448" sl="1501" sc="1" el="1501" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1502" ordinal="1449" sl="1502" sc="1" el="1502" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1503" ordinal="1450" sl="1503" sc="1" el="1503" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1504" ordinal="1451" sl="1504" sc="1" el="1504" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1505" ordinal="1452" sl="1505" sc="1" el="1505" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1506" ordinal="1453" sl="1506" sc="1" el="1506" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1507" ordinal="1454" sl="1507" sc="1" el="1507" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1508" ordinal="1455" sl="1508" sc="1" el="1508" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1509" ordinal="1456" sl="1509" sc="1" el="1509" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1510" ordinal="1457" sl="1510" sc="1" el="1510" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1511" ordinal="1458" sl="1511" sc="1" el="1511" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1512" ordinal="1459" sl="1512" sc="1" el="1512" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1513" ordinal="1460" sl="1513" sc="1" el="1513" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1514" ordinal="1461" sl="1514" sc="1" el="1514" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1515" ordinal="1462" sl="1515" sc="1" el="1515" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1516" ordinal="1463" sl="1516" sc="1" el="1516" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1517" ordinal="1464" sl="1517" sc="1" el="1517" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1518" ordinal="1465" sl="1518" sc="1" el="1518" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1519" ordinal="1466" sl="1519" sc="1" el="1519" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1520" ordinal="1467" sl="1520" sc="1" el="1520" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1521" ordinal="1468" sl="1521" sc="1" el="1521" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1522" ordinal="1469" sl="1522" sc="1" el="1522" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1523" ordinal="1470" sl="1523" sc="1" el="1523" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1524" ordinal="1471" sl="1524" sc="1" el="1524" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1525" ordinal="1472" sl="1525" sc="1" el="1525" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1526" ordinal="1473" sl="1526" sc="1" el="1526" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1527" ordinal="1474" sl="1527" sc="1" el="1527" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1528" ordinal="1475" sl="1528" sc="1" el="1528" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1529" ordinal="1476" sl="1529" sc="1" el="1529" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1530" ordinal="1477" sl="1530" sc="1" el="1530" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1531" ordinal="1478" sl="1531" sc="1" el="1531" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1532" ordinal="1479" sl="1532" sc="1" el="1532" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1533" ordinal="1480" sl="1533" sc="1" el="1533" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1534" ordinal="1481" sl="1534" sc="1" el="1534" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1535" ordinal="1482" sl="1535" sc="1" el="1535" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1536" ordinal="1483" sl="1536" sc="1" el="1536" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1537" ordinal="1484" sl="1537" sc="1" el="1537" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1538" ordinal="1485" sl="1538" sc="1" el="1538" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1539" ordinal="1486" sl="1539" sc="1" el="1539" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1540" ordinal="1487" sl="1540" sc="1" el="1540" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1541" ordinal="1488" sl="1541" sc="1" el="1541" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1542" ordinal="1489" sl="1542" sc="1" el="1542" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1543" ordinal="1490" sl="1543" sc="1" el="1543" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1544" ordinal="1491" sl="1544" sc="1" el="1544" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1545" ordinal="1492" sl="1545" sc="1" el="1545" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1546" ordinal="1493" sl="1546" sc="1" el="1546" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1548" ordinal="1494" sl="1548" sc="1" el="1548" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1549" ordinal="1495" sl="1549" sc="1" el="1549" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1550" ordinal="1496" sl="1550" sc="1" el="1550" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1551" ordinal="1497" sl="1551" sc="1" el="1551" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1552" ordinal="1498" sl="1552" sc="1" el="1552" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1553" ordinal="1499" sl="1553" sc="1" el="1553" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1554" ordinal="1500" sl="1554" sc="1" el="1554" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1555" ordinal="1501" sl="1555" sc="1" el="1555" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1556" ordinal="1502" sl="1556" sc="1" el="1556" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1557" ordinal="1503" sl="1557" sc="1" el="1557" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1558" ordinal="1504" sl="1558" sc="1" el="1558" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1559" ordinal="1505" sl="1559" sc="1" el="1559" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1560" ordinal="1506" sl="1560" sc="1" el="1560" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1561" ordinal="1507" sl="1561" sc="1" el="1561" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1562" ordinal="1508" sl="1562" sc="1" el="1562" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1563" ordinal="1509" sl="1563" sc="1" el="1563" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1564" ordinal="1510" sl="1564" sc="1" el="1564" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1565" ordinal="1511" sl="1565" sc="1" el="1565" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1566" ordinal="1512" sl="1566" sc="1" el="1566" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1567" ordinal="1513" sl="1567" sc="1" el="1567" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1568" ordinal="1514" sl="1568" sc="1" el="1568" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1569" ordinal="1515" sl="1569" sc="1" el="1569" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1570" ordinal="1516" sl="1570" sc="1" el="1570" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1571" ordinal="1517" sl="1571" sc="1" el="1571" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1572" ordinal="1518" sl="1572" sc="1" el="1572" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1573" ordinal="1519" sl="1573" sc="1" el="1573" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1575" ordinal="1520" sl="1575" sc="1" el="1575" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1576" ordinal="1521" sl="1576" sc="1" el="1576" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1577" ordinal="1522" sl="1577" sc="1" el="1577" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1578" ordinal="1523" sl="1578" sc="1" el="1578" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1579" ordinal="1524" sl="1579" sc="1" el="1579" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1580" ordinal="1525" sl="1580" sc="1" el="1580" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1581" ordinal="1526" sl="1581" sc="1" el="1581" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1582" ordinal="1527" sl="1582" sc="1" el="1582" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1583" ordinal="1528" sl="1583" sc="1" el="1583" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1584" ordinal="1529" sl="1584" sc="1" el="1584" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1585" ordinal="1530" sl="1585" sc="1" el="1585" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1586" ordinal="1531" sl="1586" sc="1" el="1586" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1587" ordinal="1532" sl="1587" sc="1" el="1587" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1588" ordinal="1533" sl="1588" sc="1" el="1588" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1589" ordinal="1534" sl="1589" sc="1" el="1589" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1590" ordinal="1535" sl="1590" sc="1" el="1590" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1591" ordinal="1536" sl="1591" sc="1" el="1591" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1592" ordinal="1537" sl="1592" sc="1" el="1592" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1593" ordinal="1538" sl="1593" sc="1" el="1593" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1594" ordinal="1539" sl="1594" sc="1" el="1594" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1595" ordinal="1540" sl="1595" sc="1" el="1595" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1596" ordinal="1541" sl="1596" sc="1" el="1596" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1598" ordinal="1542" sl="1598" sc="1" el="1598" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1599" ordinal="1543" sl="1599" sc="1" el="1599" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1600" ordinal="1544" sl="1600" sc="1" el="1600" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1601" ordinal="1545" sl="1601" sc="1" el="1601" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1602" ordinal="1546" sl="1602" sc="1" el="1602" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1603" ordinal="1547" sl="1603" sc="1" el="1603" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1604" ordinal="1548" sl="1604" sc="1" el="1604" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1605" ordinal="1549" sl="1605" sc="1" el="1605" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1606" ordinal="1550" sl="1606" sc="1" el="1606" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1607" ordinal="1551" sl="1607" sc="1" el="1607" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1608" ordinal="1552" sl="1608" sc="1" el="1608" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1609" ordinal="1553" sl="1609" sc="1" el="1609" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1610" ordinal="1554" sl="1610" sc="1" el="1610" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1611" ordinal="1555" sl="1611" sc="1" el="1611" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1612" ordinal="1556" sl="1612" sc="1" el="1612" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1613" ordinal="1557" sl="1613" sc="1" el="1613" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1614" ordinal="1558" sl="1614" sc="1" el="1614" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1615" ordinal="1559" sl="1615" sc="1" el="1615" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1616" ordinal="1560" sl="1616" sc="1" el="1616" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1617" ordinal="1561" sl="1617" sc="1" el="1617" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1618" ordinal="1562" sl="1618" sc="1" el="1618" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1619" ordinal="1563" sl="1619" sc="1" el="1619" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1620" ordinal="1564" sl="1620" sc="1" el="1620" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1621" ordinal="1565" sl="1621" sc="1" el="1621" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1622" ordinal="1566" sl="1622" sc="1" el="1622" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1623" ordinal="1567" sl="1623" sc="1" el="1623" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1624" ordinal="1568" sl="1624" sc="1" el="1624" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1625" ordinal="1569" sl="1625" sc="1" el="1625" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1626" ordinal="1570" sl="1626" sc="1" el="1626" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1627" ordinal="1571" sl="1627" sc="1" el="1627" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1628" ordinal="1572" sl="1628" sc="1" el="1628" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1629" ordinal="1573" sl="1629" sc="1" el="1629" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1630" ordinal="1574" sl="1630" sc="1" el="1630" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1631" ordinal="1575" sl="1631" sc="1" el="1631" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1632" ordinal="1576" sl="1632" sc="1" el="1632" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1633" ordinal="1577" sl="1633" sc="1" el="1633" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1634" ordinal="1578" sl="1634" sc="1" el="1634" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1635" ordinal="1579" sl="1635" sc="1" el="1635" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1636" ordinal="1580" sl="1636" sc="1" el="1636" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1637" ordinal="1581" sl="1637" sc="1" el="1637" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1638" ordinal="1582" sl="1638" sc="1" el="1638" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1639" ordinal="1583" sl="1639" sc="1" el="1639" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1640" ordinal="1584" sl="1640" sc="1" el="1640" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1641" ordinal="1585" sl="1641" sc="1" el="1641" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1642" ordinal="1586" sl="1642" sc="1" el="1642" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1643" ordinal="1587" sl="1643" sc="1" el="1643" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1644" ordinal="1588" sl="1644" sc="1" el="1644" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1645" ordinal="1589" sl="1645" sc="1" el="1645" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1646" ordinal="1590" sl="1646" sc="1" el="1646" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1647" ordinal="1591" sl="1647" sc="1" el="1647" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1648" ordinal="1592" sl="1648" sc="1" el="1648" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1649" ordinal="1593" sl="1649" sc="1" el="1649" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1650" ordinal="1594" sl="1650" sc="1" el="1650" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1651" ordinal="1595" sl="1651" sc="1" el="1651" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1652" ordinal="1596" sl="1652" sc="1" el="1652" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1653" ordinal="1597" sl="1653" sc="1" el="1653" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1654" ordinal="1598" sl="1654" sc="1" el="1654" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1655" ordinal="1599" sl="1655" sc="1" el="1655" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1656" ordinal="1600" sl="1656" sc="1" el="1656" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1657" ordinal="1601" sl="1657" sc="1" el="1657" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1658" ordinal="1602" sl="1658" sc="1" el="1658" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1659" ordinal="1603" sl="1659" sc="1" el="1659" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1660" ordinal="1604" sl="1660" sc="1" el="1660" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1661" ordinal="1605" sl="1661" sc="1" el="1661" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1662" ordinal="1606" sl="1662" sc="1" el="1662" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1663" ordinal="1607" sl="1663" sc="1" el="1663" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1664" ordinal="1608" sl="1664" sc="1" el="1664" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1665" ordinal="1609" sl="1665" sc="1" el="1665" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1666" ordinal="1610" sl="1666" sc="1" el="1666" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1667" ordinal="1611" sl="1667" sc="1" el="1667" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1669" ordinal="1612" sl="1669" sc="1" el="1669" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1670" ordinal="1613" sl="1670" sc="1" el="1670" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1671" ordinal="1614" sl="1671" sc="1" el="1671" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1672" ordinal="1615" sl="1672" sc="1" el="1672" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1673" ordinal="1616" sl="1673" sc="1" el="1673" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1674" ordinal="1617" sl="1674" sc="1" el="1674" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1675" ordinal="1618" sl="1675" sc="1" el="1675" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1676" ordinal="1619" sl="1676" sc="1" el="1676" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1677" ordinal="1620" sl="1677" sc="1" el="1677" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1678" ordinal="1621" sl="1678" sc="1" el="1678" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1679" ordinal="1622" sl="1679" sc="1" el="1679" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1680" ordinal="1623" sl="1680" sc="1" el="1680" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1681" ordinal="1624" sl="1681" sc="1" el="1681" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1682" ordinal="1625" sl="1682" sc="1" el="1682" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1683" ordinal="1626" sl="1683" sc="1" el="1683" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1684" ordinal="1627" sl="1684" sc="1" el="1684" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1685" ordinal="1628" sl="1685" sc="1" el="1685" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1686" ordinal="1629" sl="1686" sc="1" el="1686" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1687" ordinal="1630" sl="1687" sc="1" el="1687" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1688" ordinal="1631" sl="1688" sc="1" el="1688" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1689" ordinal="1632" sl="1689" sc="1" el="1689" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1690" ordinal="1633" sl="1690" sc="1" el="1690" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1691" ordinal="1634" sl="1691" sc="1" el="1691" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1692" ordinal="1635" sl="1692" sc="1" el="1692" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1693" ordinal="1636" sl="1693" sc="1" el="1693" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1694" ordinal="1637" sl="1694" sc="1" el="1694" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1695" ordinal="1638" sl="1695" sc="1" el="1695" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1696" ordinal="1639" sl="1696" sc="1" el="1696" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1697" ordinal="1640" sl="1697" sc="1" el="1697" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1698" ordinal="1641" sl="1698" sc="1" el="1698" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1699" ordinal="1642" sl="1699" sc="1" el="1699" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1700" ordinal="1643" sl="1700" sc="1" el="1700" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1701" ordinal="1644" sl="1701" sc="1" el="1701" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1702" ordinal="1645" sl="1702" sc="1" el="1702" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1704" ordinal="1646" sl="1704" sc="1" el="1704" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1705" ordinal="1647" sl="1705" sc="1" el="1705" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1706" ordinal="1648" sl="1706" sc="1" el="1706" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1707" ordinal="1649" sl="1707" sc="1" el="1707" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1708" ordinal="1650" sl="1708" sc="1" el="1708" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1709" ordinal="1651" sl="1709" sc="1" el="1709" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1710" ordinal="1652" sl="1710" sc="1" el="1710" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1711" ordinal="1653" sl="1711" sc="1" el="1711" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1712" ordinal="1654" sl="1712" sc="1" el="1712" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1713" ordinal="1655" sl="1713" sc="1" el="1713" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1714" ordinal="1656" sl="1714" sc="1" el="1714" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1715" ordinal="1657" sl="1715" sc="1" el="1715" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1716" ordinal="1658" sl="1716" sc="1" el="1716" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1717" ordinal="1659" sl="1717" sc="1" el="1717" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1718" ordinal="1660" sl="1718" sc="1" el="1718" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1719" ordinal="1661" sl="1719" sc="1" el="1719" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1720" ordinal="1662" sl="1720" sc="1" el="1720" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1721" ordinal="1663" sl="1721" sc="1" el="1721" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1722" ordinal="1664" sl="1722" sc="1" el="1722" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1723" ordinal="1665" sl="1723" sc="1" el="1723" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1724" ordinal="1666" sl="1724" sc="1" el="1724" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1725" ordinal="1667" sl="1725" sc="1" el="1725" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1726" ordinal="1668" sl="1726" sc="1" el="1726" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1727" ordinal="1669" sl="1727" sc="1" el="1727" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1728" ordinal="1670" sl="1728" sc="1" el="1728" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1729" ordinal="1671" sl="1729" sc="1" el="1729" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1730" ordinal="1672" sl="1730" sc="1" el="1730" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1731" ordinal="1673" sl="1731" sc="1" el="1731" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1732" ordinal="1674" sl="1732" sc="1" el="1732" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1733" ordinal="1675" sl="1733" sc="1" el="1733" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1734" ordinal="1676" sl="1734" sc="1" el="1734" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1735" ordinal="1677" sl="1735" sc="1" el="1735" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1736" ordinal="1678" sl="1736" sc="1" el="1736" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1737" ordinal="1679" sl="1737" sc="1" el="1737" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1738" ordinal="1680" sl="1738" sc="1" el="1738" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1739" ordinal="1681" sl="1739" sc="1" el="1739" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1741" ordinal="1682" sl="1741" sc="1" el="1741" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1742" ordinal="1683" sl="1742" sc="1" el="1742" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1743" ordinal="1684" sl="1743" sc="1" el="1743" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1744" ordinal="1685" sl="1744" sc="1" el="1744" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1745" ordinal="1686" sl="1745" sc="1" el="1745" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1746" ordinal="1687" sl="1746" sc="1" el="1746" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1747" ordinal="1688" sl="1747" sc="1" el="1747" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1748" ordinal="1689" sl="1748" sc="1" el="1748" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1749" ordinal="1690" sl="1749" sc="1" el="1749" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1750" ordinal="1691" sl="1750" sc="1" el="1750" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1751" ordinal="1692" sl="1751" sc="1" el="1751" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1752" ordinal="1693" sl="1752" sc="1" el="1752" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1753" ordinal="1694" sl="1753" sc="1" el="1753" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1754" ordinal="1695" sl="1754" sc="1" el="1754" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1755" ordinal="1696" sl="1755" sc="1" el="1755" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1756" ordinal="1697" sl="1756" sc="1" el="1756" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1757" ordinal="1698" sl="1757" sc="1" el="1757" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1758" ordinal="1699" sl="1758" sc="1" el="1758" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1759" ordinal="1700" sl="1759" sc="1" el="1759" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1760" ordinal="1701" sl="1760" sc="1" el="1760" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1761" ordinal="1702" sl="1761" sc="1" el="1761" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1762" ordinal="1703" sl="1762" sc="1" el="1762" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1763" ordinal="1704" sl="1763" sc="1" el="1763" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1764" ordinal="1705" sl="1764" sc="1" el="1764" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1765" ordinal="1706" sl="1765" sc="1" el="1765" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1766" ordinal="1707" sl="1766" sc="1" el="1766" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1767" ordinal="1708" sl="1767" sc="1" el="1767" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1768" ordinal="1709" sl="1768" sc="1" el="1768" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1769" ordinal="1710" sl="1769" sc="1" el="1769" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1770" ordinal="1711" sl="1770" sc="1" el="1770" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1771" ordinal="1712" sl="1771" sc="1" el="1771" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1772" ordinal="1713" sl="1772" sc="1" el="1772" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1773" ordinal="1714" sl="1773" sc="1" el="1773" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1774" ordinal="1715" sl="1774" sc="1" el="1774" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1775" ordinal="1716" sl="1775" sc="1" el="1775" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1776" ordinal="1717" sl="1776" sc="1" el="1776" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1777" ordinal="1718" sl="1777" sc="1" el="1777" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1778" ordinal="1719" sl="1778" sc="1" el="1778" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1779" ordinal="1720" sl="1779" sc="1" el="1779" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1780" ordinal="1721" sl="1780" sc="1" el="1780" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1781" ordinal="1722" sl="1781" sc="1" el="1781" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1782" ordinal="1723" sl="1782" sc="1" el="1782" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1783" ordinal="1724" sl="1783" sc="1" el="1783" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1784" ordinal="1725" sl="1784" sc="1" el="1784" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1785" ordinal="1726" sl="1785" sc="1" el="1785" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1786" ordinal="1727" sl="1786" sc="1" el="1786" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1787" ordinal="1728" sl="1787" sc="1" el="1787" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1788" ordinal="1729" sl="1788" sc="1" el="1788" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1789" ordinal="1730" sl="1789" sc="1" el="1789" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1790" ordinal="1731" sl="1790" sc="1" el="1790" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1791" ordinal="1732" sl="1791" sc="1" el="1791" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1792" ordinal="1733" sl="1792" sc="1" el="1792" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1793" ordinal="1734" sl="1793" sc="1" el="1793" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1794" ordinal="1735" sl="1794" sc="1" el="1794" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1795" ordinal="1736" sl="1795" sc="1" el="1795" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1796" ordinal="1737" sl="1796" sc="1" el="1796" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1797" ordinal="1738" sl="1797" sc="1" el="1797" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1798" ordinal="1739" sl="1798" sc="1" el="1798" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1799" ordinal="1740" sl="1799" sc="1" el="1799" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1800" ordinal="1741" sl="1800" sc="1" el="1800" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1801" ordinal="1742" sl="1801" sc="1" el="1801" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1802" ordinal="1743" sl="1802" sc="1" el="1802" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1803" ordinal="1744" sl="1803" sc="1" el="1803" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1804" ordinal="1745" sl="1804" sc="1" el="1804" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1805" ordinal="1746" sl="1805" sc="1" el="1805" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1806" ordinal="1747" sl="1806" sc="1" el="1806" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1807" ordinal="1748" sl="1807" sc="1" el="1807" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1808" ordinal="1749" sl="1808" sc="1" el="1808" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1809" ordinal="1750" sl="1809" sc="1" el="1809" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1810" ordinal="1751" sl="1810" sc="1" el="1810" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1811" ordinal="1752" sl="1811" sc="1" el="1811" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1812" ordinal="1753" sl="1812" sc="1" el="1812" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1813" ordinal="1754" sl="1813" sc="1" el="1813" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1814" ordinal="1755" sl="1814" sc="1" el="1814" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1815" ordinal="1756" sl="1815" sc="1" el="1815" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1816" ordinal="1757" sl="1816" sc="1" el="1816" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1817" ordinal="1758" sl="1817" sc="1" el="1817" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1818" ordinal="1759" sl="1818" sc="1" el="1818" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1819" ordinal="1760" sl="1819" sc="1" el="1819" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1820" ordinal="1761" sl="1820" sc="1" el="1820" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1821" ordinal="1762" sl="1821" sc="1" el="1821" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1822" ordinal="1763" sl="1822" sc="1" el="1822" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1823" ordinal="1764" sl="1823" sc="1" el="1823" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1824" ordinal="1765" sl="1824" sc="1" el="1824" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1825" ordinal="1766" sl="1825" sc="1" el="1825" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1826" ordinal="1767" sl="1826" sc="1" el="1826" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1827" ordinal="1768" sl="1827" sc="1" el="1827" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1828" ordinal="1769" sl="1828" sc="1" el="1828" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1829" ordinal="1770" sl="1829" sc="1" el="1829" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1830" ordinal="1771" sl="1830" sc="1" el="1830" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1831" ordinal="1772" sl="1831" sc="1" el="1831" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1832" ordinal="1773" sl="1832" sc="1" el="1832" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1833" ordinal="1774" sl="1833" sc="1" el="1833" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1834" ordinal="1775" sl="1834" sc="1" el="1834" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1835" ordinal="1776" sl="1835" sc="1" el="1835" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1836" ordinal="1777" sl="1836" sc="1" el="1836" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1837" ordinal="1778" sl="1837" sc="1" el="1837" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1838" ordinal="1779" sl="1838" sc="1" el="1838" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1839" ordinal="1780" sl="1839" sc="1" el="1839" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1840" ordinal="1781" sl="1840" sc="1" el="1840" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1841" ordinal="1782" sl="1841" sc="1" el="1841" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1842" ordinal="1783" sl="1842" sc="1" el="1842" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1843" ordinal="1784" sl="1843" sc="1" el="1843" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1844" ordinal="1785" sl="1844" sc="1" el="1844" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1845" ordinal="1786" sl="1845" sc="1" el="1845" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1846" ordinal="1787" sl="1846" sc="1" el="1846" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1847" ordinal="1788" sl="1847" sc="1" el="1847" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1848" ordinal="1789" sl="1848" sc="1" el="1848" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1849" ordinal="1790" sl="1849" sc="1" el="1849" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1850" ordinal="1791" sl="1850" sc="1" el="1850" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1851" ordinal="1792" sl="1851" sc="1" el="1851" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1852" ordinal="1793" sl="1852" sc="1" el="1852" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1853" ordinal="1794" sl="1853" sc="1" el="1853" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1854" ordinal="1795" sl="1854" sc="1" el="1854" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1855" ordinal="1796" sl="1855" sc="1" el="1855" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1856" ordinal="1797" sl="1856" sc="1" el="1856" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1857" ordinal="1798" sl="1857" sc="1" el="1857" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1858" ordinal="1799" sl="1858" sc="1" el="1858" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1859" ordinal="1800" sl="1859" sc="1" el="1859" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1860" ordinal="1801" sl="1860" sc="1" el="1860" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1861" ordinal="1802" sl="1861" sc="1" el="1861" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1862" ordinal="1803" sl="1862" sc="1" el="1862" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1863" ordinal="1804" sl="1863" sc="1" el="1863" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1864" ordinal="1805" sl="1864" sc="1" el="1864" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1865" ordinal="1806" sl="1865" sc="1" el="1865" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1866" ordinal="1807" sl="1866" sc="1" el="1866" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1867" ordinal="1808" sl="1867" sc="1" el="1867" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1868" ordinal="1809" sl="1868" sc="1" el="1868" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1869" ordinal="1810" sl="1869" sc="1" el="1869" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1870" ordinal="1811" sl="1870" sc="1" el="1870" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1871" ordinal="1812" sl="1871" sc="1" el="1871" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1872" ordinal="1813" sl="1872" sc="1" el="1872" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1873" ordinal="1814" sl="1873" sc="1" el="1873" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1874" ordinal="1815" sl="1874" sc="1" el="1874" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1875" ordinal="1816" sl="1875" sc="1" el="1875" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1876" ordinal="1817" sl="1876" sc="1" el="1876" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1877" ordinal="1818" sl="1877" sc="1" el="1877" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1878" ordinal="1819" sl="1878" sc="1" el="1878" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1879" ordinal="1820" sl="1879" sc="1" el="1879" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1880" ordinal="1821" sl="1880" sc="1" el="1880" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1881" ordinal="1822" sl="1881" sc="1" el="1881" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1882" ordinal="1823" sl="1882" sc="1" el="1882" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1883" ordinal="1824" sl="1883" sc="1" el="1883" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1885" ordinal="1825" sl="1885" sc="1" el="1885" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1886" ordinal="1826" sl="1886" sc="1" el="1886" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1887" ordinal="1827" sl="1887" sc="1" el="1887" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1888" ordinal="1828" sl="1888" sc="1" el="1888" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1889" ordinal="1829" sl="1889" sc="1" el="1889" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1890" ordinal="1830" sl="1890" sc="1" el="1890" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1891" ordinal="1831" sl="1891" sc="1" el="1891" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1892" ordinal="1832" sl="1892" sc="1" el="1892" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1893" ordinal="1833" sl="1893" sc="1" el="1893" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1894" ordinal="1834" sl="1894" sc="1" el="1894" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1895" ordinal="1835" sl="1895" sc="1" el="1895" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1896" ordinal="1836" sl="1896" sc="1" el="1896" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1897" ordinal="1837" sl="1897" sc="1" el="1897" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1898" ordinal="1838" sl="1898" sc="1" el="1898" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1899" ordinal="1839" sl="1899" sc="1" el="1899" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1900" ordinal="1840" sl="1900" sc="1" el="1900" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1901" ordinal="1841" sl="1901" sc="1" el="1901" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1902" ordinal="1842" sl="1902" sc="1" el="1902" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1903" ordinal="1843" sl="1903" sc="1" el="1903" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1904" ordinal="1844" sl="1904" sc="1" el="1904" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1905" ordinal="1845" sl="1905" sc="1" el="1905" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1906" ordinal="1846" sl="1906" sc="1" el="1906" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1907" ordinal="1847" sl="1907" sc="1" el="1907" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1908" ordinal="1848" sl="1908" sc="1" el="1908" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1910" ordinal="1849" sl="1910" sc="1" el="1910" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1911" ordinal="1850" sl="1911" sc="1" el="1911" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1912" ordinal="1851" sl="1912" sc="1" el="1912" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1913" ordinal="1852" sl="1913" sc="1" el="1913" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1914" ordinal="1853" sl="1914" sc="1" el="1914" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1915" ordinal="1854" sl="1915" sc="1" el="1915" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1916" ordinal="1855" sl="1916" sc="1" el="1916" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1917" ordinal="1856" sl="1917" sc="1" el="1917" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1918" ordinal="1857" sl="1918" sc="1" el="1918" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1919" ordinal="1858" sl="1919" sc="1" el="1919" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1920" ordinal="1859" sl="1920" sc="1" el="1920" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1921" ordinal="1860" sl="1921" sc="1" el="1921" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1922" ordinal="1861" sl="1922" sc="1" el="1922" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1923" ordinal="1862" sl="1923" sc="1" el="1923" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1924" ordinal="1863" sl="1924" sc="1" el="1924" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1925" ordinal="1864" sl="1925" sc="1" el="1925" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1927" ordinal="1865" sl="1927" sc="1" el="1927" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1928" ordinal="1866" sl="1928" sc="1" el="1928" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1929" ordinal="1867" sl="1929" sc="1" el="1929" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1930" ordinal="1868" sl="1930" sc="1" el="1930" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1931" ordinal="1869" sl="1931" sc="1" el="1931" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1932" ordinal="1870" sl="1932" sc="1" el="1932" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1933" ordinal="1871" sl="1933" sc="1" el="1933" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1934" ordinal="1872" sl="1934" sc="1" el="1934" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1935" ordinal="1873" sl="1935" sc="1" el="1935" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1936" ordinal="1874" sl="1936" sc="1" el="1936" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1937" ordinal="1875" sl="1937" sc="1" el="1937" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1938" ordinal="1876" sl="1938" sc="1" el="1938" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1939" ordinal="1877" sl="1939" sc="1" el="1939" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1940" ordinal="1878" sl="1940" sc="1" el="1940" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1941" ordinal="1879" sl="1941" sc="1" el="1941" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1942" ordinal="1880" sl="1942" sc="1" el="1942" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1943" ordinal="1881" sl="1943" sc="1" el="1943" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1944" ordinal="1882" sl="1944" sc="1" el="1944" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1945" ordinal="1883" sl="1945" sc="1" el="1945" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1946" ordinal="1884" sl="1946" sc="1" el="1946" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1947" ordinal="1885" sl="1947" sc="1" el="1947" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1948" ordinal="1886" sl="1948" sc="1" el="1948" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1949" ordinal="1887" sl="1949" sc="1" el="1949" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1950" ordinal="1888" sl="1950" sc="1" el="1950" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1951" ordinal="1889" sl="1951" sc="1" el="1951" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1952" ordinal="1890" sl="1952" sc="1" el="1952" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1953" ordinal="1891" sl="1953" sc="1" el="1953" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1954" ordinal="1892" sl="1954" sc="1" el="1954" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1955" ordinal="1893" sl="1955" sc="1" el="1955" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1956" ordinal="1894" sl="1956" sc="1" el="1956" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1957" ordinal="1895" sl="1957" sc="1" el="1957" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1958" ordinal="1896" sl="1958" sc="1" el="1958" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1959" ordinal="1897" sl="1959" sc="1" el="1959" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1960" ordinal="1898" sl="1960" sc="1" el="1960" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1962" ordinal="1899" sl="1962" sc="1" el="1962" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1963" ordinal="1900" sl="1963" sc="1" el="1963" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1964" ordinal="1901" sl="1964" sc="1" el="1964" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1965" ordinal="1902" sl="1965" sc="1" el="1965" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1966" ordinal="1903" sl="1966" sc="1" el="1966" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1967" ordinal="1904" sl="1967" sc="1" el="1967" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1968" ordinal="1905" sl="1968" sc="1" el="1968" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1969" ordinal="1906" sl="1969" sc="1" el="1969" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1970" ordinal="1907" sl="1970" sc="1" el="1970" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1971" ordinal="1908" sl="1971" sc="1" el="1971" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1972" ordinal="1909" sl="1972" sc="1" el="1972" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1973" ordinal="1910" sl="1973" sc="1" el="1973" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1974" ordinal="1911" sl="1974" sc="1" el="1974" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1975" ordinal="1912" sl="1975" sc="1" el="1975" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1976" ordinal="1913" sl="1976" sc="1" el="1976" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1977" ordinal="1914" sl="1977" sc="1" el="1977" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1978" ordinal="1915" sl="1978" sc="1" el="1978" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1979" ordinal="1916" sl="1979" sc="1" el="1979" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1980" ordinal="1917" sl="1980" sc="1" el="1980" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1981" ordinal="1918" sl="1981" sc="1" el="1981" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1982" ordinal="1919" sl="1982" sc="1" el="1982" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1983" ordinal="1920" sl="1983" sc="1" el="1983" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1984" ordinal="1921" sl="1984" sc="1" el="1984" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1985" ordinal="1922" sl="1985" sc="1" el="1985" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1986" ordinal="1923" sl="1986" sc="1" el="1986" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1987" ordinal="1924" sl="1987" sc="1" el="1987" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1988" ordinal="1925" sl="1988" sc="1" el="1988" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1989" ordinal="1926" sl="1989" sc="1" el="1989" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1990" ordinal="1927" sl="1990" sc="1" el="1990" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1991" ordinal="1928" sl="1991" sc="1" el="1991" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1992" ordinal="1929" sl="1992" sc="1" el="1992" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1993" ordinal="1930" sl="1993" sc="1" el="1993" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1994" ordinal="1931" sl="1994" sc="1" el="1994" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1995" ordinal="1932" sl="1995" sc="1" el="1995" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1996" ordinal="1933" sl="1996" sc="1" el="1996" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1997" ordinal="1934" sl="1997" sc="1" el="1997" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1998" ordinal="1935" sl="1998" sc="1" el="1998" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="1999" ordinal="1936" sl="1999" sc="1" el="1999" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2000" ordinal="1937" sl="2000" sc="1" el="2000" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2002" ordinal="1938" sl="2002" sc="1" el="2002" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2003" ordinal="1939" sl="2003" sc="1" el="2003" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2004" ordinal="1940" sl="2004" sc="1" el="2004" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2005" ordinal="1941" sl="2005" sc="1" el="2005" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2006" ordinal="1942" sl="2006" sc="1" el="2006" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2007" ordinal="1943" sl="2007" sc="1" el="2007" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2008" ordinal="1944" sl="2008" sc="1" el="2008" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2009" ordinal="1945" sl="2009" sc="1" el="2009" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2010" ordinal="1946" sl="2010" sc="1" el="2010" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2011" ordinal="1947" sl="2011" sc="1" el="2011" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2012" ordinal="1948" sl="2012" sc="1" el="2012" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2013" ordinal="1949" sl="2013" sc="1" el="2013" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2014" ordinal="1950" sl="2014" sc="1" el="2014" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2015" ordinal="1951" sl="2015" sc="1" el="2015" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2016" ordinal="1952" sl="2016" sc="1" el="2016" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2017" ordinal="1953" sl="2017" sc="1" el="2017" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2018" ordinal="1954" sl="2018" sc="1" el="2018" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2019" ordinal="1955" sl="2019" sc="1" el="2019" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2020" ordinal="1956" sl="2020" sc="1" el="2020" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2021" ordinal="1957" sl="2021" sc="1" el="2021" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2022" ordinal="1958" sl="2022" sc="1" el="2022" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2023" ordinal="1959" sl="2023" sc="1" el="2023" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2024" ordinal="1960" sl="2024" sc="1" el="2024" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2025" ordinal="1961" sl="2025" sc="1" el="2025" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2026" ordinal="1962" sl="2026" sc="1" el="2026" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2027" ordinal="1963" sl="2027" sc="1" el="2027" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2028" ordinal="1964" sl="2028" sc="1" el="2028" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2029" ordinal="1965" sl="2029" sc="1" el="2029" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2030" ordinal="1966" sl="2030" sc="1" el="2030" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2031" ordinal="1967" sl="2031" sc="1" el="2031" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2032" ordinal="1968" sl="2032" sc="1" el="2032" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2033" ordinal="1969" sl="2033" sc="1" el="2033" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2034" ordinal="1970" sl="2034" sc="1" el="2034" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2035" ordinal="1971" sl="2035" sc="1" el="2035" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2036" ordinal="1972" sl="2036" sc="1" el="2036" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2037" ordinal="1973" sl="2037" sc="1" el="2037" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2038" ordinal="1974" sl="2038" sc="1" el="2038" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2039" ordinal="1975" sl="2039" sc="1" el="2039" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2040" ordinal="1976" sl="2040" sc="1" el="2040" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2041" ordinal="1977" sl="2041" sc="1" el="2041" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2042" ordinal="1978" sl="2042" sc="1" el="2042" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2043" ordinal="1979" sl="2043" sc="1" el="2043" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2044" ordinal="1980" sl="2044" sc="1" el="2044" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2045" ordinal="1981" sl="2045" sc="1" el="2045" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2046" ordinal="1982" sl="2046" sc="1" el="2046" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2047" ordinal="1983" sl="2047" sc="1" el="2047" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2048" ordinal="1984" sl="2048" sc="1" el="2048" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2049" ordinal="1985" sl="2049" sc="1" el="2049" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2050" ordinal="1986" sl="2050" sc="1" el="2050" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2051" ordinal="1987" sl="2051" sc="1" el="2051" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2052" ordinal="1988" sl="2052" sc="1" el="2052" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2053" ordinal="1989" sl="2053" sc="1" el="2053" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2054" ordinal="1990" sl="2054" sc="1" el="2054" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2055" ordinal="1991" sl="2055" sc="1" el="2055" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2056" ordinal="1992" sl="2056" sc="1" el="2056" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2057" ordinal="1993" sl="2057" sc="1" el="2057" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2058" ordinal="1994" sl="2058" sc="1" el="2058" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2059" ordinal="1995" sl="2059" sc="1" el="2059" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2060" ordinal="1996" sl="2060" sc="1" el="2060" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2061" ordinal="1997" sl="2061" sc="1" el="2061" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2062" ordinal="1998" sl="2062" sc="1" el="2062" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2064" ordinal="1999" sl="2064" sc="1" el="2064" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2065" ordinal="2000" sl="2065" sc="1" el="2065" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2066" ordinal="2001" sl="2066" sc="1" el="2066" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2067" ordinal="2002" sl="2067" sc="1" el="2067" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2068" ordinal="2003" sl="2068" sc="1" el="2068" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2069" ordinal="2004" sl="2069" sc="1" el="2069" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2070" ordinal="2005" sl="2070" sc="1" el="2070" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2071" ordinal="2006" sl="2071" sc="1" el="2071" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2072" ordinal="2007" sl="2072" sc="1" el="2072" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2073" ordinal="2008" sl="2073" sc="1" el="2073" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2074" ordinal="2009" sl="2074" sc="1" el="2074" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2075" ordinal="2010" sl="2075" sc="1" el="2075" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2076" ordinal="2011" sl="2076" sc="1" el="2076" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2077" ordinal="2012" sl="2077" sc="1" el="2077" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2078" ordinal="2013" sl="2078" sc="1" el="2078" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2079" ordinal="2014" sl="2079" sc="1" el="2079" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2080" ordinal="2015" sl="2080" sc="1" el="2080" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2081" ordinal="2016" sl="2081" sc="1" el="2081" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2082" ordinal="2017" sl="2082" sc="1" el="2082" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2083" ordinal="2018" sl="2083" sc="1" el="2083" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2084" ordinal="2019" sl="2084" sc="1" el="2084" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2085" ordinal="2020" sl="2085" sc="1" el="2085" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2086" ordinal="2021" sl="2086" sc="1" el="2086" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2087" ordinal="2022" sl="2087" sc="1" el="2087" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2088" ordinal="2023" sl="2088" sc="1" el="2088" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2089" ordinal="2024" sl="2089" sc="1" el="2089" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2090" ordinal="2025" sl="2090" sc="1" el="2090" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2092" ordinal="2026" sl="2092" sc="1" el="2092" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2093" ordinal="2027" sl="2093" sc="1" el="2093" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2094" ordinal="2028" sl="2094" sc="1" el="2094" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2095" ordinal="2029" sl="2095" sc="1" el="2095" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2096" ordinal="2030" sl="2096" sc="1" el="2096" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2097" ordinal="2031" sl="2097" sc="1" el="2097" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2098" ordinal="2032" sl="2098" sc="1" el="2098" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2099" ordinal="2033" sl="2099" sc="1" el="2099" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2100" ordinal="2034" sl="2100" sc="1" el="2100" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2101" ordinal="2035" sl="2101" sc="1" el="2101" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2102" ordinal="2036" sl="2102" sc="1" el="2102" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2103" ordinal="2037" sl="2103" sc="1" el="2103" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2104" ordinal="2038" sl="2104" sc="1" el="2104" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2105" ordinal="2039" sl="2105" sc="1" el="2105" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2106" ordinal="2040" sl="2106" sc="1" el="2106" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2107" ordinal="2041" sl="2107" sc="1" el="2107" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2108" ordinal="2042" sl="2108" sc="1" el="2108" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2109" ordinal="2043" sl="2109" sc="1" el="2109" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2110" ordinal="2044" sl="2110" sc="1" el="2110" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2112" ordinal="2045" sl="2112" sc="1" el="2112" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2113" ordinal="2046" sl="2113" sc="1" el="2113" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2114" ordinal="2047" sl="2114" sc="1" el="2114" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2115" ordinal="2048" sl="2115" sc="1" el="2115" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2116" ordinal="2049" sl="2116" sc="1" el="2116" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2117" ordinal="2050" sl="2117" sc="1" el="2117" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2118" ordinal="2051" sl="2118" sc="1" el="2118" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2119" ordinal="2052" sl="2119" sc="1" el="2119" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2120" ordinal="2053" sl="2120" sc="1" el="2120" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2121" ordinal="2054" sl="2121" sc="1" el="2121" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2122" ordinal="2055" sl="2122" sc="1" el="2122" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2123" ordinal="2056" sl="2123" sc="1" el="2123" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2124" ordinal="2057" sl="2124" sc="1" el="2124" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2125" ordinal="2058" sl="2125" sc="1" el="2125" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2126" ordinal="2059" sl="2126" sc="1" el="2126" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2127" ordinal="2060" sl="2127" sc="1" el="2127" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2128" ordinal="2061" sl="2128" sc="1" el="2128" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2129" ordinal="2062" sl="2129" sc="1" el="2129" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2130" ordinal="2063" sl="2130" sc="1" el="2130" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2131" ordinal="2064" sl="2131" sc="1" el="2131" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2132" ordinal="2065" sl="2132" sc="1" el="2132" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2133" ordinal="2066" sl="2133" sc="1" el="2133" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2134" ordinal="2067" sl="2134" sc="1" el="2134" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2135" ordinal="2068" sl="2135" sc="1" el="2135" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2136" ordinal="2069" sl="2136" sc="1" el="2136" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2137" ordinal="2070" sl="2137" sc="1" el="2137" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2138" ordinal="2071" sl="2138" sc="1" el="2138" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2139" ordinal="2072" sl="2139" sc="1" el="2139" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2140" ordinal="2073" sl="2140" sc="1" el="2140" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2142" ordinal="2074" sl="2142" sc="1" el="2142" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2143" ordinal="2075" sl="2143" sc="1" el="2143" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2144" ordinal="2076" sl="2144" sc="1" el="2144" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2145" ordinal="2077" sl="2145" sc="1" el="2145" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2146" ordinal="2078" sl="2146" sc="1" el="2146" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2147" ordinal="2079" sl="2147" sc="1" el="2147" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2148" ordinal="2080" sl="2148" sc="1" el="2148" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2149" ordinal="2081" sl="2149" sc="1" el="2149" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2150" ordinal="2082" sl="2150" sc="1" el="2150" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2151" ordinal="2083" sl="2151" sc="1" el="2151" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2152" ordinal="2084" sl="2152" sc="1" el="2152" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2153" ordinal="2085" sl="2153" sc="1" el="2153" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2154" ordinal="2086" sl="2154" sc="1" el="2154" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2155" ordinal="2087" sl="2155" sc="1" el="2155" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2156" ordinal="2088" sl="2156" sc="1" el="2156" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2157" ordinal="2089" sl="2157" sc="1" el="2157" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2158" ordinal="2090" sl="2158" sc="1" el="2158" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2159" ordinal="2091" sl="2159" sc="1" el="2159" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2160" ordinal="2092" sl="2160" sc="1" el="2160" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2161" ordinal="2093" sl="2161" sc="1" el="2161" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2162" ordinal="2094" sl="2162" sc="1" el="2162" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2163" ordinal="2095" sl="2163" sc="1" el="2163" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2164" ordinal="2096" sl="2164" sc="1" el="2164" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2165" ordinal="2097" sl="2165" sc="1" el="2165" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2166" ordinal="2098" sl="2166" sc="1" el="2166" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2167" ordinal="2099" sl="2167" sc="1" el="2167" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2168" ordinal="2100" sl="2168" sc="1" el="2168" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2169" ordinal="2101" sl="2169" sc="1" el="2169" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2170" ordinal="2102" sl="2170" sc="1" el="2170" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2171" ordinal="2103" sl="2171" sc="1" el="2171" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2172" ordinal="2104" sl="2172" sc="1" el="2172" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2173" ordinal="2105" sl="2173" sc="1" el="2173" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2175" ordinal="2106" sl="2175" sc="1" el="2175" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2176" ordinal="2107" sl="2176" sc="1" el="2176" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2177" ordinal="2108" sl="2177" sc="1" el="2177" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2178" ordinal="2109" sl="2178" sc="1" el="2178" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2179" ordinal="2110" sl="2179" sc="1" el="2179" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2180" ordinal="2111" sl="2180" sc="1" el="2180" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2181" ordinal="2112" sl="2181" sc="1" el="2181" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2182" ordinal="2113" sl="2182" sc="1" el="2182" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2183" ordinal="2114" sl="2183" sc="1" el="2183" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2184" ordinal="2115" sl="2184" sc="1" el="2184" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2185" ordinal="2116" sl="2185" sc="1" el="2185" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2186" ordinal="2117" sl="2186" sc="1" el="2186" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2187" ordinal="2118" sl="2187" sc="1" el="2187" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2188" ordinal="2119" sl="2188" sc="1" el="2188" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2189" ordinal="2120" sl="2189" sc="1" el="2189" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2190" ordinal="2121" sl="2190" sc="1" el="2190" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2191" ordinal="2122" sl="2191" sc="1" el="2191" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2192" ordinal="2123" sl="2192" sc="1" el="2192" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2193" ordinal="2124" sl="2193" sc="1" el="2193" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2194" ordinal="2125" sl="2194" sc="1" el="2194" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2195" ordinal="2126" sl="2195" sc="1" el="2195" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2196" ordinal="2127" sl="2196" sc="1" el="2196" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2197" ordinal="2128" sl="2197" sc="1" el="2197" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2198" ordinal="2129" sl="2198" sc="1" el="2198" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2200" ordinal="2130" sl="2200" sc="1" el="2200" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2201" ordinal="2131" sl="2201" sc="1" el="2201" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2202" ordinal="2132" sl="2202" sc="1" el="2202" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2203" ordinal="2133" sl="2203" sc="1" el="2203" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2204" ordinal="2134" sl="2204" sc="1" el="2204" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2205" ordinal="2135" sl="2205" sc="1" el="2205" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2206" ordinal="2136" sl="2206" sc="1" el="2206" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2207" ordinal="2137" sl="2207" sc="1" el="2207" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2208" ordinal="2138" sl="2208" sc="1" el="2208" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2209" ordinal="2139" sl="2209" sc="1" el="2209" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2210" ordinal="2140" sl="2210" sc="1" el="2210" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2211" ordinal="2141" sl="2211" sc="1" el="2211" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2212" ordinal="2142" sl="2212" sc="1" el="2212" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2213" ordinal="2143" sl="2213" sc="1" el="2213" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2214" ordinal="2144" sl="2214" sc="1" el="2214" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2215" ordinal="2145" sl="2215" sc="1" el="2215" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2216" ordinal="2146" sl="2216" sc="1" el="2216" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2217" ordinal="2147" sl="2217" sc="1" el="2217" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2218" ordinal="2148" sl="2218" sc="1" el="2218" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2219" ordinal="2149" sl="2219" sc="1" el="2219" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2220" ordinal="2150" sl="2220" sc="1" el="2220" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2221" ordinal="2151" sl="2221" sc="1" el="2221" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2222" ordinal="2152" sl="2222" sc="1" el="2222" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2223" ordinal="2153" sl="2223" sc="1" el="2223" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2225" ordinal="2154" sl="2225" sc="1" el="2225" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2226" ordinal="2155" sl="2226" sc="1" el="2226" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2227" ordinal="2156" sl="2227" sc="1" el="2227" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2228" ordinal="2157" sl="2228" sc="1" el="2228" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2229" ordinal="2158" sl="2229" sc="1" el="2229" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2230" ordinal="2159" sl="2230" sc="1" el="2230" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2231" ordinal="2160" sl="2231" sc="1" el="2231" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2232" ordinal="2161" sl="2232" sc="1" el="2232" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2233" ordinal="2162" sl="2233" sc="1" el="2233" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2234" ordinal="2163" sl="2234" sc="1" el="2234" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2235" ordinal="2164" sl="2235" sc="1" el="2235" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2236" ordinal="2165" sl="2236" sc="1" el="2236" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2237" ordinal="2166" sl="2237" sc="1" el="2237" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2238" ordinal="2167" sl="2238" sc="1" el="2238" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2239" ordinal="2168" sl="2239" sc="1" el="2239" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2240" ordinal="2169" sl="2240" sc="1" el="2240" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2241" ordinal="2170" sl="2241" sc="1" el="2241" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2242" ordinal="2171" sl="2242" sc="1" el="2242" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2243" ordinal="2172" sl="2243" sc="1" el="2243" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2244" ordinal="2173" sl="2244" sc="1" el="2244" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2245" ordinal="2174" sl="2245" sc="1" el="2245" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2246" ordinal="2175" sl="2246" sc="1" el="2246" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2247" ordinal="2176" sl="2247" sc="1" el="2247" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2248" ordinal="2177" sl="2248" sc="1" el="2248" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2249" ordinal="2178" sl="2249" sc="1" el="2249" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2250" ordinal="2179" sl="2250" sc="1" el="2250" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2251" ordinal="2180" sl="2251" sc="1" el="2251" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2252" ordinal="2181" sl="2252" sc="1" el="2252" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2253" ordinal="2182" sl="2253" sc="1" el="2253" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2254" ordinal="2183" sl="2254" sc="1" el="2254" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2255" ordinal="2184" sl="2255" sc="1" el="2255" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2256" ordinal="2185" sl="2256" sc="1" el="2256" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2258" ordinal="2186" sl="2258" sc="1" el="2258" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2259" ordinal="2187" sl="2259" sc="1" el="2259" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2260" ordinal="2188" sl="2260" sc="1" el="2260" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2261" ordinal="2189" sl="2261" sc="1" el="2261" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2262" ordinal="2190" sl="2262" sc="1" el="2262" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2263" ordinal="2191" sl="2263" sc="1" el="2263" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2264" ordinal="2192" sl="2264" sc="1" el="2264" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2265" ordinal="2193" sl="2265" sc="1" el="2265" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2266" ordinal="2194" sl="2266" sc="1" el="2266" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2267" ordinal="2195" sl="2267" sc="1" el="2267" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2268" ordinal="2196" sl="2268" sc="1" el="2268" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2269" ordinal="2197" sl="2269" sc="1" el="2269" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2270" ordinal="2198" sl="2270" sc="1" el="2270" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2271" ordinal="2199" sl="2271" sc="1" el="2271" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2272" ordinal="2200" sl="2272" sc="1" el="2272" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2273" ordinal="2201" sl="2273" sc="1" el="2273" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2274" ordinal="2202" sl="2274" sc="1" el="2274" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2275" ordinal="2203" sl="2275" sc="1" el="2275" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2276" ordinal="2204" sl="2276" sc="1" el="2276" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2277" ordinal="2205" sl="2277" sc="1" el="2277" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2278" ordinal="2206" sl="2278" sc="1" el="2278" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2279" ordinal="2207" sl="2279" sc="1" el="2279" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2280" ordinal="2208" sl="2280" sc="1" el="2280" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2281" ordinal="2209" sl="2281" sc="1" el="2281" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2283" ordinal="2210" sl="2283" sc="1" el="2283" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2284" ordinal="2211" sl="2284" sc="1" el="2284" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2285" ordinal="2212" sl="2285" sc="1" el="2285" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2286" ordinal="2213" sl="2286" sc="1" el="2286" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2287" ordinal="2214" sl="2287" sc="1" el="2287" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2288" ordinal="2215" sl="2288" sc="1" el="2288" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2289" ordinal="2216" sl="2289" sc="1" el="2289" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2290" ordinal="2217" sl="2290" sc="1" el="2290" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2291" ordinal="2218" sl="2291" sc="1" el="2291" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2292" ordinal="2219" sl="2292" sc="1" el="2292" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2293" ordinal="2220" sl="2293" sc="1" el="2293" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2294" ordinal="2221" sl="2294" sc="1" el="2294" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2295" ordinal="2222" sl="2295" sc="1" el="2295" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2296" ordinal="2223" sl="2296" sc="1" el="2296" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2297" ordinal="2224" sl="2297" sc="1" el="2297" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2298" ordinal="2225" sl="2298" sc="1" el="2298" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2299" ordinal="2226" sl="2299" sc="1" el="2299" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2300" ordinal="2227" sl="2300" sc="1" el="2300" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2301" ordinal="2228" sl="2301" sc="1" el="2301" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2302" ordinal="2229" sl="2302" sc="1" el="2302" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2303" ordinal="2230" sl="2303" sc="1" el="2303" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2304" ordinal="2231" sl="2304" sc="1" el="2304" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2305" ordinal="2232" sl="2305" sc="1" el="2305" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2306" ordinal="2233" sl="2306" sc="1" el="2306" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2307" ordinal="2234" sl="2307" sc="1" el="2307" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2308" ordinal="2235" sl="2308" sc="1" el="2308" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2309" ordinal="2236" sl="2309" sc="1" el="2309" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2310" ordinal="2237" sl="2310" sc="1" el="2310" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2311" ordinal="2238" sl="2311" sc="1" el="2311" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2312" ordinal="2239" sl="2312" sc="1" el="2312" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2313" ordinal="2240" sl="2313" sc="1" el="2313" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2314" ordinal="2241" sl="2314" sc="1" el="2314" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2315" ordinal="2242" sl="2315" sc="1" el="2315" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2316" ordinal="2243" sl="2316" sc="1" el="2316" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2317" ordinal="2244" sl="2317" sc="1" el="2317" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2318" ordinal="2245" sl="2318" sc="1" el="2318" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2319" ordinal="2246" sl="2319" sc="1" el="2319" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2320" ordinal="2247" sl="2320" sc="1" el="2320" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2321" ordinal="2248" sl="2321" sc="1" el="2321" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2322" ordinal="2249" sl="2322" sc="1" el="2322" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2323" ordinal="2250" sl="2323" sc="1" el="2323" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2324" ordinal="2251" sl="2324" sc="1" el="2324" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2325" ordinal="2252" sl="2325" sc="1" el="2325" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2326" ordinal="2253" sl="2326" sc="1" el="2326" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2327" ordinal="2254" sl="2327" sc="1" el="2327" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2329" ordinal="2255" sl="2329" sc="1" el="2329" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2330" ordinal="2256" sl="2330" sc="1" el="2330" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2331" ordinal="2257" sl="2331" sc="1" el="2331" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2332" ordinal="2258" sl="2332" sc="1" el="2332" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2333" ordinal="2259" sl="2333" sc="1" el="2333" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2334" ordinal="2260" sl="2334" sc="1" el="2334" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2335" ordinal="2261" sl="2335" sc="1" el="2335" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2336" ordinal="2262" sl="2336" sc="1" el="2336" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2337" ordinal="2263" sl="2337" sc="1" el="2337" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2338" ordinal="2264" sl="2338" sc="1" el="2338" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2339" ordinal="2265" sl="2339" sc="1" el="2339" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2340" ordinal="2266" sl="2340" sc="1" el="2340" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2341" ordinal="2267" sl="2341" sc="1" el="2341" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2342" ordinal="2268" sl="2342" sc="1" el="2342" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2343" ordinal="2269" sl="2343" sc="1" el="2343" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2344" ordinal="2270" sl="2344" sc="1" el="2344" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2345" ordinal="2271" sl="2345" sc="1" el="2345" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2346" ordinal="2272" sl="2346" sc="1" el="2346" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2347" ordinal="2273" sl="2347" sc="1" el="2347" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2348" ordinal="2274" sl="2348" sc="1" el="2348" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2349" ordinal="2275" sl="2349" sc="1" el="2349" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2350" ordinal="2276" sl="2350" sc="1" el="2350" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2351" ordinal="2277" sl="2351" sc="1" el="2351" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2352" ordinal="2278" sl="2352" sc="1" el="2352" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2353" ordinal="2279" sl="2353" sc="1" el="2353" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2354" ordinal="2280" sl="2354" sc="1" el="2354" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2355" ordinal="2281" sl="2355" sc="1" el="2355" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2356" ordinal="2282" sl="2356" sc="1" el="2356" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2357" ordinal="2283" sl="2357" sc="1" el="2357" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2358" ordinal="2284" sl="2358" sc="1" el="2358" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2359" ordinal="2285" sl="2359" sc="1" el="2359" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2360" ordinal="2286" sl="2360" sc="1" el="2360" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2361" ordinal="2287" sl="2361" sc="1" el="2361" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2362" ordinal="2288" sl="2362" sc="1" el="2362" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2364" ordinal="2289" sl="2364" sc="1" el="2364" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2365" ordinal="2290" sl="2365" sc="1" el="2365" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2366" ordinal="2291" sl="2366" sc="1" el="2366" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2367" ordinal="2292" sl="2367" sc="1" el="2367" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2368" ordinal="2293" sl="2368" sc="1" el="2368" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2369" ordinal="2294" sl="2369" sc="1" el="2369" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2370" ordinal="2295" sl="2370" sc="1" el="2370" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2371" ordinal="2296" sl="2371" sc="1" el="2371" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2372" ordinal="2297" sl="2372" sc="1" el="2372" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2373" ordinal="2298" sl="2373" sc="1" el="2373" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2374" ordinal="2299" sl="2374" sc="1" el="2374" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2375" ordinal="2300" sl="2375" sc="1" el="2375" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2376" ordinal="2301" sl="2376" sc="1" el="2376" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2377" ordinal="2302" sl="2377" sc="1" el="2377" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2378" ordinal="2303" sl="2378" sc="1" el="2378" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2379" ordinal="2304" sl="2379" sc="1" el="2379" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2380" ordinal="2305" sl="2380" sc="1" el="2380" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2381" ordinal="2306" sl="2381" sc="1" el="2381" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2382" ordinal="2307" sl="2382" sc="1" el="2382" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2383" ordinal="2308" sl="2383" sc="1" el="2383" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2384" ordinal="2309" sl="2384" sc="1" el="2384" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2385" ordinal="2310" sl="2385" sc="1" el="2385" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2386" ordinal="2311" sl="2386" sc="1" el="2386" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2387" ordinal="2312" sl="2387" sc="1" el="2387" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2388" ordinal="2313" sl="2388" sc="1" el="2388" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2389" ordinal="2314" sl="2389" sc="1" el="2389" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2390" ordinal="2315" sl="2390" sc="1" el="2390" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2391" ordinal="2316" sl="2391" sc="1" el="2391" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2392" ordinal="2317" sl="2392" sc="1" el="2392" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2393" ordinal="2318" sl="2393" sc="1" el="2393" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2394" ordinal="2319" sl="2394" sc="1" el="2394" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2395" ordinal="2320" sl="2395" sc="1" el="2395" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2397" ordinal="2321" sl="2397" sc="1" el="2397" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2398" ordinal="2322" sl="2398" sc="1" el="2398" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2399" ordinal="2323" sl="2399" sc="1" el="2399" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2400" ordinal="2324" sl="2400" sc="1" el="2400" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2401" ordinal="2325" sl="2401" sc="1" el="2401" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2402" ordinal="2326" sl="2402" sc="1" el="2402" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2403" ordinal="2327" sl="2403" sc="1" el="2403" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2404" ordinal="2328" sl="2404" sc="1" el="2404" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2405" ordinal="2329" sl="2405" sc="1" el="2405" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2406" ordinal="2330" sl="2406" sc="1" el="2406" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2407" ordinal="2331" sl="2407" sc="1" el="2407" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2408" ordinal="2332" sl="2408" sc="1" el="2408" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2409" ordinal="2333" sl="2409" sc="1" el="2409" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2410" ordinal="2334" sl="2410" sc="1" el="2410" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2411" ordinal="2335" sl="2411" sc="1" el="2411" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2412" ordinal="2336" sl="2412" sc="1" el="2412" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2413" ordinal="2337" sl="2413" sc="1" el="2413" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2414" ordinal="2338" sl="2414" sc="1" el="2414" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2415" ordinal="2339" sl="2415" sc="1" el="2415" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2416" ordinal="2340" sl="2416" sc="1" el="2416" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2417" ordinal="2341" sl="2417" sc="1" el="2417" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2418" ordinal="2342" sl="2418" sc="1" el="2418" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2420" ordinal="2343" sl="2420" sc="1" el="2420" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2421" ordinal="2344" sl="2421" sc="1" el="2421" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2422" ordinal="2345" sl="2422" sc="1" el="2422" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2423" ordinal="2346" sl="2423" sc="1" el="2423" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2424" ordinal="2347" sl="2424" sc="1" el="2424" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2425" ordinal="2348" sl="2425" sc="1" el="2425" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2426" ordinal="2349" sl="2426" sc="1" el="2426" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2427" ordinal="2350" sl="2427" sc="1" el="2427" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2428" ordinal="2351" sl="2428" sc="1" el="2428" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2429" ordinal="2352" sl="2429" sc="1" el="2429" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2430" ordinal="2353" sl="2430" sc="1" el="2430" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2431" ordinal="2354" sl="2431" sc="1" el="2431" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2432" ordinal="2355" sl="2432" sc="1" el="2432" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2433" ordinal="2356" sl="2433" sc="1" el="2433" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2434" ordinal="2357" sl="2434" sc="1" el="2434" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2435" ordinal="2358" sl="2435" sc="1" el="2435" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2436" ordinal="2359" sl="2436" sc="1" el="2436" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2437" ordinal="2360" sl="2437" sc="1" el="2437" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2438" ordinal="2361" sl="2438" sc="1" el="2438" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2439" ordinal="2362" sl="2439" sc="1" el="2439" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2440" ordinal="2363" sl="2440" sc="1" el="2440" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2441" ordinal="2364" sl="2441" sc="1" el="2441" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2442" ordinal="2365" sl="2442" sc="1" el="2442" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2443" ordinal="2366" sl="2443" sc="1" el="2443" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2444" ordinal="2367" sl="2444" sc="1" el="2444" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2445" ordinal="2368" sl="2445" sc="1" el="2445" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2446" ordinal="2369" sl="2446" sc="1" el="2446" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2447" ordinal="2370" sl="2447" sc="1" el="2447" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2448" ordinal="2371" sl="2448" sc="1" el="2448" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2449" ordinal="2372" sl="2449" sc="1" el="2449" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2450" ordinal="2373" sl="2450" sc="1" el="2450" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2451" ordinal="2374" sl="2451" sc="1" el="2451" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2452" ordinal="2375" sl="2452" sc="1" el="2452" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2453" ordinal="2376" sl="2453" sc="1" el="2453" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2454" ordinal="2377" sl="2454" sc="1" el="2454" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2455" ordinal="2378" sl="2455" sc="1" el="2455" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2457" ordinal="2379" sl="2457" sc="1" el="2457" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2458" ordinal="2380" sl="2458" sc="1" el="2458" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2459" ordinal="2381" sl="2459" sc="1" el="2459" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2460" ordinal="2382" sl="2460" sc="1" el="2460" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2461" ordinal="2383" sl="2461" sc="1" el="2461" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2462" ordinal="2384" sl="2462" sc="1" el="2462" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2463" ordinal="2385" sl="2463" sc="1" el="2463" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2464" ordinal="2386" sl="2464" sc="1" el="2464" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2465" ordinal="2387" sl="2465" sc="1" el="2465" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2466" ordinal="2388" sl="2466" sc="1" el="2466" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2467" ordinal="2389" sl="2467" sc="1" el="2467" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2468" ordinal="2390" sl="2468" sc="1" el="2468" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2469" ordinal="2391" sl="2469" sc="1" el="2469" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2470" ordinal="2392" sl="2470" sc="1" el="2470" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2471" ordinal="2393" sl="2471" sc="1" el="2471" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2472" ordinal="2394" sl="2472" sc="1" el="2472" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2473" ordinal="2395" sl="2473" sc="1" el="2473" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2474" ordinal="2396" sl="2474" sc="1" el="2474" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2475" ordinal="2397" sl="2475" sc="1" el="2475" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2476" ordinal="2398" sl="2476" sc="1" el="2476" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2477" ordinal="2399" sl="2477" sc="1" el="2477" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2478" ordinal="2400" sl="2478" sc="1" el="2478" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2479" ordinal="2401" sl="2479" sc="1" el="2479" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2480" ordinal="2402" sl="2480" sc="1" el="2480" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2481" ordinal="2403" sl="2481" sc="1" el="2481" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2482" ordinal="2404" sl="2482" sc="1" el="2482" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2483" ordinal="2405" sl="2483" sc="1" el="2483" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2485" ordinal="2406" sl="2485" sc="1" el="2485" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2486" ordinal="2407" sl="2486" sc="1" el="2486" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2487" ordinal="2408" sl="2487" sc="1" el="2487" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2488" ordinal="2409" sl="2488" sc="1" el="2488" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2489" ordinal="2410" sl="2489" sc="1" el="2489" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2490" ordinal="2411" sl="2490" sc="1" el="2490" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2491" ordinal="2412" sl="2491" sc="1" el="2491" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2492" ordinal="2413" sl="2492" sc="1" el="2492" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2493" ordinal="2414" sl="2493" sc="1" el="2493" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2494" ordinal="2415" sl="2494" sc="1" el="2494" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2495" ordinal="2416" sl="2495" sc="1" el="2495" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2496" ordinal="2417" sl="2496" sc="1" el="2496" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2497" ordinal="2418" sl="2497" sc="1" el="2497" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2498" ordinal="2419" sl="2498" sc="1" el="2498" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2499" ordinal="2420" sl="2499" sc="1" el="2499" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2500" ordinal="2421" sl="2500" sc="1" el="2500" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2501" ordinal="2422" sl="2501" sc="1" el="2501" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2502" ordinal="2423" sl="2502" sc="1" el="2502" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2503" ordinal="2424" sl="2503" sc="1" el="2503" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2504" ordinal="2425" sl="2504" sc="1" el="2504" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2505" ordinal="2426" sl="2505" sc="1" el="2505" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2506" ordinal="2427" sl="2506" sc="1" el="2506" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2507" ordinal="2428" sl="2507" sc="1" el="2507" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2508" ordinal="2429" sl="2508" sc="1" el="2508" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2509" ordinal="2430" sl="2509" sc="1" el="2509" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2510" ordinal="2431" sl="2510" sc="1" el="2510" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2511" ordinal="2432" sl="2511" sc="1" el="2511" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2512" ordinal="2433" sl="2512" sc="1" el="2512" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2513" ordinal="2434" sl="2513" sc="1" el="2513" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2514" ordinal="2435" sl="2514" sc="1" el="2514" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2515" ordinal="2436" sl="2515" sc="1" el="2515" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2516" ordinal="2437" sl="2516" sc="1" el="2516" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2517" ordinal="2438" sl="2517" sc="1" el="2517" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2518" ordinal="2439" sl="2518" sc="1" el="2518" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2519" ordinal="2440" sl="2519" sc="1" el="2519" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2520" ordinal="2441" sl="2520" sc="1" el="2520" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2521" ordinal="2442" sl="2521" sc="1" el="2521" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2522" ordinal="2443" sl="2522" sc="1" el="2522" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2523" ordinal="2444" sl="2523" sc="1" el="2523" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2524" ordinal="2445" sl="2524" sc="1" el="2524" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2525" ordinal="2446" sl="2525" sc="1" el="2525" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2526" ordinal="2447" sl="2526" sc="1" el="2526" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2527" ordinal="2448" sl="2527" sc="1" el="2527" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2528" ordinal="2449" sl="2528" sc="1" el="2528" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2529" ordinal="2450" sl="2529" sc="1" el="2529" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2530" ordinal="2451" sl="2530" sc="1" el="2530" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2531" ordinal="2452" sl="2531" sc="1" el="2531" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2532" ordinal="2453" sl="2532" sc="1" el="2532" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2533" ordinal="2454" sl="2533" sc="1" el="2533" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2534" ordinal="2455" sl="2534" sc="1" el="2534" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2535" ordinal="2456" sl="2535" sc="1" el="2535" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2536" ordinal="2457" sl="2536" sc="1" el="2536" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2537" ordinal="2458" sl="2537" sc="1" el="2537" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2538" ordinal="2459" sl="2538" sc="1" el="2538" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2539" ordinal="2460" sl="2539" sc="1" el="2539" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2540" ordinal="2461" sl="2540" sc="1" el="2540" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2541" ordinal="2462" sl="2541" sc="1" el="2541" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2542" ordinal="2463" sl="2542" sc="1" el="2542" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2543" ordinal="2464" sl="2543" sc="1" el="2543" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2544" ordinal="2465" sl="2544" sc="1" el="2544" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2545" ordinal="2466" sl="2545" sc="1" el="2545" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2546" ordinal="2467" sl="2546" sc="1" el="2546" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2547" ordinal="2468" sl="2547" sc="1" el="2547" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2548" ordinal="2469" sl="2548" sc="1" el="2548" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2549" ordinal="2470" sl="2549" sc="1" el="2549" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2550" ordinal="2471" sl="2550" sc="1" el="2550" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2551" ordinal="2472" sl="2551" sc="1" el="2551" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2552" ordinal="2473" sl="2552" sc="1" el="2552" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2553" ordinal="2474" sl="2553" sc="1" el="2553" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2554" ordinal="2475" sl="2554" sc="1" el="2554" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2555" ordinal="2476" sl="2555" sc="1" el="2555" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2556" ordinal="2477" sl="2556" sc="1" el="2556" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2557" ordinal="2478" sl="2557" sc="1" el="2557" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2558" ordinal="2479" sl="2558" sc="1" el="2558" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2559" ordinal="2480" sl="2559" sc="1" el="2559" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2560" ordinal="2481" sl="2560" sc="1" el="2560" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2561" ordinal="2482" sl="2561" sc="1" el="2561" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2562" ordinal="2483" sl="2562" sc="1" el="2562" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2563" ordinal="2484" sl="2563" sc="1" el="2563" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2564" ordinal="2485" sl="2564" sc="1" el="2564" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2565" ordinal="2486" sl="2565" sc="1" el="2565" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2566" ordinal="2487" sl="2566" sc="1" el="2566" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2567" ordinal="2488" sl="2567" sc="1" el="2567" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2568" ordinal="2489" sl="2568" sc="1" el="2568" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2569" ordinal="2490" sl="2569" sc="1" el="2569" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2570" ordinal="2491" sl="2570" sc="1" el="2570" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2571" ordinal="2492" sl="2571" sc="1" el="2571" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2572" ordinal="2493" sl="2572" sc="1" el="2572" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2573" ordinal="2494" sl="2573" sc="1" el="2573" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2574" ordinal="2495" sl="2574" sc="1" el="2574" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2575" ordinal="2496" sl="2575" sc="1" el="2575" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2576" ordinal="2497" sl="2576" sc="1" el="2576" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2577" ordinal="2498" sl="2577" sc="1" el="2577" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2578" ordinal="2499" sl="2578" sc="1" el="2578" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2579" ordinal="2500" sl="2579" sc="1" el="2579" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2580" ordinal="2501" sl="2580" sc="1" el="2580" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2581" ordinal="2502" sl="2581" sc="1" el="2581" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2582" ordinal="2503" sl="2582" sc="1" el="2582" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2584" ordinal="2504" sl="2584" sc="1" el="2584" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2585" ordinal="2505" sl="2585" sc="1" el="2585" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2586" ordinal="2506" sl="2586" sc="1" el="2586" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2587" ordinal="2507" sl="2587" sc="1" el="2587" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2588" ordinal="2508" sl="2588" sc="1" el="2588" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2589" ordinal="2509" sl="2589" sc="1" el="2589" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2590" ordinal="2510" sl="2590" sc="1" el="2590" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2591" ordinal="2511" sl="2591" sc="1" el="2591" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2592" ordinal="2512" sl="2592" sc="1" el="2592" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2593" ordinal="2513" sl="2593" sc="1" el="2593" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2594" ordinal="2514" sl="2594" sc="1" el="2594" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2595" ordinal="2515" sl="2595" sc="1" el="2595" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2596" ordinal="2516" sl="2596" sc="1" el="2596" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2597" ordinal="2517" sl="2597" sc="1" el="2597" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2598" ordinal="2518" sl="2598" sc="1" el="2598" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2599" ordinal="2519" sl="2599" sc="1" el="2599" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2600" ordinal="2520" sl="2600" sc="1" el="2600" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2601" ordinal="2521" sl="2601" sc="1" el="2601" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2602" ordinal="2522" sl="2602" sc="1" el="2602" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2603" ordinal="2523" sl="2603" sc="1" el="2603" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2604" ordinal="2524" sl="2604" sc="1" el="2604" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2605" ordinal="2525" sl="2605" sc="1" el="2605" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2607" ordinal="2526" sl="2607" sc="1" el="2607" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2608" ordinal="2527" sl="2608" sc="1" el="2608" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2609" ordinal="2528" sl="2609" sc="1" el="2609" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2610" ordinal="2529" sl="2610" sc="1" el="2610" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2611" ordinal="2530" sl="2611" sc="1" el="2611" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2612" ordinal="2531" sl="2612" sc="1" el="2612" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2613" ordinal="2532" sl="2613" sc="1" el="2613" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2614" ordinal="2533" sl="2614" sc="1" el="2614" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2615" ordinal="2534" sl="2615" sc="1" el="2615" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2616" ordinal="2535" sl="2616" sc="1" el="2616" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2617" ordinal="2536" sl="2617" sc="1" el="2617" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2618" ordinal="2537" sl="2618" sc="1" el="2618" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2619" ordinal="2538" sl="2619" sc="1" el="2619" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2620" ordinal="2539" sl="2620" sc="1" el="2620" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2621" ordinal="2540" sl="2621" sc="1" el="2621" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2622" ordinal="2541" sl="2622" sc="1" el="2622" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2623" ordinal="2542" sl="2623" sc="1" el="2623" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2624" ordinal="2543" sl="2624" sc="1" el="2624" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2625" ordinal="2544" sl="2625" sc="1" el="2625" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2626" ordinal="2545" sl="2626" sc="1" el="2626" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2627" ordinal="2546" sl="2627" sc="1" el="2627" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2628" ordinal="2547" sl="2628" sc="1" el="2628" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2629" ordinal="2548" sl="2629" sc="1" el="2629" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2630" ordinal="2549" sl="2630" sc="1" el="2630" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2632" ordinal="2550" sl="2632" sc="1" el="2632" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2633" ordinal="2551" sl="2633" sc="1" el="2633" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2634" ordinal="2552" sl="2634" sc="1" el="2634" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2635" ordinal="2553" sl="2635" sc="1" el="2635" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2636" ordinal="2554" sl="2636" sc="1" el="2636" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2637" ordinal="2555" sl="2637" sc="1" el="2637" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2638" ordinal="2556" sl="2638" sc="1" el="2638" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2639" ordinal="2557" sl="2639" sc="1" el="2639" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2640" ordinal="2558" sl="2640" sc="1" el="2640" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2641" ordinal="2559" sl="2641" sc="1" el="2641" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2642" ordinal="2560" sl="2642" sc="1" el="2642" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2643" ordinal="2561" sl="2643" sc="1" el="2643" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2644" ordinal="2562" sl="2644" sc="1" el="2644" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2645" ordinal="2563" sl="2645" sc="1" el="2645" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2646" ordinal="2564" sl="2646" sc="1" el="2646" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2647" ordinal="2565" sl="2647" sc="1" el="2647" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2648" ordinal="2566" sl="2648" sc="1" el="2648" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2649" ordinal="2567" sl="2649" sc="1" el="2649" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2650" ordinal="2568" sl="2650" sc="1" el="2650" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2651" ordinal="2569" sl="2651" sc="1" el="2651" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2652" ordinal="2570" sl="2652" sc="1" el="2652" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2653" ordinal="2571" sl="2653" sc="1" el="2653" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2654" ordinal="2572" sl="2654" sc="1" el="2654" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2655" ordinal="2573" sl="2655" sc="1" el="2655" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2656" ordinal="2574" sl="2656" sc="1" el="2656" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2657" ordinal="2575" sl="2657" sc="1" el="2657" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2658" ordinal="2576" sl="2658" sc="1" el="2658" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2659" ordinal="2577" sl="2659" sc="1" el="2659" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2660" ordinal="2578" sl="2660" sc="1" el="2660" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2661" ordinal="2579" sl="2661" sc="1" el="2661" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2662" ordinal="2580" sl="2662" sc="1" el="2662" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2663" ordinal="2581" sl="2663" sc="1" el="2663" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2664" ordinal="2582" sl="2664" sc="1" el="2664" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2666" ordinal="2583" sl="2666" sc="1" el="2666" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2667" ordinal="2584" sl="2667" sc="1" el="2667" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2668" ordinal="2585" sl="2668" sc="1" el="2668" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2669" ordinal="2586" sl="2669" sc="1" el="2669" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2670" ordinal="2587" sl="2670" sc="1" el="2670" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2671" ordinal="2588" sl="2671" sc="1" el="2671" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2672" ordinal="2589" sl="2672" sc="1" el="2672" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2673" ordinal="2590" sl="2673" sc="1" el="2673" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2674" ordinal="2591" sl="2674" sc="1" el="2674" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2675" ordinal="2592" sl="2675" sc="1" el="2675" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2676" ordinal="2593" sl="2676" sc="1" el="2676" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2677" ordinal="2594" sl="2677" sc="1" el="2677" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2678" ordinal="2595" sl="2678" sc="1" el="2678" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2679" ordinal="2596" sl="2679" sc="1" el="2679" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2680" ordinal="2597" sl="2680" sc="1" el="2680" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2681" ordinal="2598" sl="2681" sc="1" el="2681" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2682" ordinal="2599" sl="2682" sc="1" el="2682" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2683" ordinal="2600" sl="2683" sc="1" el="2683" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2684" ordinal="2601" sl="2684" sc="1" el="2684" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2685" ordinal="2602" sl="2685" sc="1" el="2685" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2686" ordinal="2603" sl="2686" sc="1" el="2686" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2687" ordinal="2604" sl="2687" sc="1" el="2687" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2688" ordinal="2605" sl="2688" sc="1" el="2688" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2689" ordinal="2606" sl="2689" sc="1" el="2689" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2691" ordinal="2607" sl="2691" sc="1" el="2691" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2692" ordinal="2608" sl="2692" sc="1" el="2692" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2693" ordinal="2609" sl="2693" sc="1" el="2693" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2694" ordinal="2610" sl="2694" sc="1" el="2694" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2695" ordinal="2611" sl="2695" sc="1" el="2695" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2696" ordinal="2612" sl="2696" sc="1" el="2696" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2697" ordinal="2613" sl="2697" sc="1" el="2697" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2698" ordinal="2614" sl="2698" sc="1" el="2698" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2699" ordinal="2615" sl="2699" sc="1" el="2699" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2700" ordinal="2616" sl="2700" sc="1" el="2700" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2701" ordinal="2617" sl="2701" sc="1" el="2701" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2702" ordinal="2618" sl="2702" sc="1" el="2702" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2703" ordinal="2619" sl="2703" sc="1" el="2703" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2704" ordinal="2620" sl="2704" sc="1" el="2704" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2705" ordinal="2621" sl="2705" sc="1" el="2705" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2706" ordinal="2622" sl="2706" sc="1" el="2706" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2707" ordinal="2623" sl="2707" sc="1" el="2707" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2708" ordinal="2624" sl="2708" sc="1" el="2708" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2709" ordinal="2625" sl="2709" sc="1" el="2709" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2710" ordinal="2626" sl="2710" sc="1" el="2710" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2711" ordinal="2627" sl="2711" sc="1" el="2711" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2712" ordinal="2628" sl="2712" sc="1" el="2712" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2714" ordinal="2629" sl="2714" sc="1" el="2714" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2715" ordinal="2630" sl="2715" sc="1" el="2715" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2716" ordinal="2631" sl="2716" sc="1" el="2716" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2717" ordinal="2632" sl="2717" sc="1" el="2717" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2718" ordinal="2633" sl="2718" sc="1" el="2718" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2719" ordinal="2634" sl="2719" sc="1" el="2719" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2720" ordinal="2635" sl="2720" sc="1" el="2720" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2721" ordinal="2636" sl="2721" sc="1" el="2721" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2722" ordinal="2637" sl="2722" sc="1" el="2722" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2723" ordinal="2638" sl="2723" sc="1" el="2723" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2724" ordinal="2639" sl="2724" sc="1" el="2724" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2725" ordinal="2640" sl="2725" sc="1" el="2725" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2726" ordinal="2641" sl="2726" sc="1" el="2726" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2727" ordinal="2642" sl="2727" sc="1" el="2727" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2728" ordinal="2643" sl="2728" sc="1" el="2728" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2729" ordinal="2644" sl="2729" sc="1" el="2729" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2730" ordinal="2645" sl="2730" sc="1" el="2730" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2731" ordinal="2646" sl="2731" sc="1" el="2731" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2732" ordinal="2647" sl="2732" sc="1" el="2732" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2733" ordinal="2648" sl="2733" sc="1" el="2733" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2734" ordinal="2649" sl="2734" sc="1" el="2734" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2735" ordinal="2650" sl="2735" sc="1" el="2735" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2737" ordinal="2651" sl="2737" sc="1" el="2737" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2738" ordinal="2652" sl="2738" sc="1" el="2738" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2739" ordinal="2653" sl="2739" sc="1" el="2739" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2740" ordinal="2654" sl="2740" sc="1" el="2740" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2741" ordinal="2655" sl="2741" sc="1" el="2741" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2742" ordinal="2656" sl="2742" sc="1" el="2742" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2743" ordinal="2657" sl="2743" sc="1" el="2743" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2744" ordinal="2658" sl="2744" sc="1" el="2744" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2745" ordinal="2659" sl="2745" sc="1" el="2745" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2746" ordinal="2660" sl="2746" sc="1" el="2746" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2747" ordinal="2661" sl="2747" sc="1" el="2747" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2748" ordinal="2662" sl="2748" sc="1" el="2748" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2750" ordinal="2663" sl="2750" sc="1" el="2750" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2751" ordinal="2664" sl="2751" sc="1" el="2751" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2752" ordinal="2665" sl="2752" sc="1" el="2752" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2753" ordinal="2666" sl="2753" sc="1" el="2753" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2754" ordinal="2667" sl="2754" sc="1" el="2754" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2755" ordinal="2668" sl="2755" sc="1" el="2755" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2756" ordinal="2669" sl="2756" sc="1" el="2756" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2757" ordinal="2670" sl="2757" sc="1" el="2757" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2758" ordinal="2671" sl="2758" sc="1" el="2758" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2759" ordinal="2672" sl="2759" sc="1" el="2759" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2760" ordinal="2673" sl="2760" sc="1" el="2760" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2761" ordinal="2674" sl="2761" sc="1" el="2761" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2762" ordinal="2675" sl="2762" sc="1" el="2762" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2763" ordinal="2676" sl="2763" sc="1" el="2763" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2764" ordinal="2677" sl="2764" sc="1" el="2764" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2765" ordinal="2678" sl="2765" sc="1" el="2765" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2766" ordinal="2679" sl="2766" sc="1" el="2766" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2767" ordinal="2680" sl="2767" sc="1" el="2767" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2768" ordinal="2681" sl="2768" sc="1" el="2768" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2769" ordinal="2682" sl="2769" sc="1" el="2769" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2770" ordinal="2683" sl="2770" sc="1" el="2770" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2771" ordinal="2684" sl="2771" sc="1" el="2771" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2772" ordinal="2685" sl="2772" sc="1" el="2772" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2773" ordinal="2686" sl="2773" sc="1" el="2773" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2774" ordinal="2687" sl="2774" sc="1" el="2774" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2775" ordinal="2688" sl="2775" sc="1" el="2775" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2776" ordinal="2689" sl="2776" sc="1" el="2776" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2777" ordinal="2690" sl="2777" sc="1" el="2777" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2778" ordinal="2691" sl="2778" sc="1" el="2778" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2779" ordinal="2692" sl="2779" sc="1" el="2779" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2780" ordinal="2693" sl="2780" sc="1" el="2780" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2781" ordinal="2694" sl="2781" sc="1" el="2781" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2782" ordinal="2695" sl="2782" sc="1" el="2782" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2783" ordinal="2696" sl="2783" sc="1" el="2783" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2784" ordinal="2697" sl="2784" sc="1" el="2784" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2785" ordinal="2698" sl="2785" sc="1" el="2785" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2786" ordinal="2699" sl="2786" sc="1" el="2786" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2787" ordinal="2700" sl="2787" sc="1" el="2787" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2788" ordinal="2701" sl="2788" sc="1" el="2788" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2789" ordinal="2702" sl="2789" sc="1" el="2789" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2790" ordinal="2703" sl="2790" sc="1" el="2790" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2791" ordinal="2704" sl="2791" sc="1" el="2791" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2792" ordinal="2705" sl="2792" sc="1" el="2792" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2793" ordinal="2706" sl="2793" sc="1" el="2793" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2794" ordinal="2707" sl="2794" sc="1" el="2794" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2795" ordinal="2708" sl="2795" sc="1" el="2795" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2796" ordinal="2709" sl="2796" sc="1" el="2796" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2797" ordinal="2710" sl="2797" sc="1" el="2797" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2798" ordinal="2711" sl="2798" sc="1" el="2798" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2799" ordinal="2712" sl="2799" sc="1" el="2799" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2800" ordinal="2713" sl="2800" sc="1" el="2800" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2801" ordinal="2714" sl="2801" sc="1" el="2801" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2802" ordinal="2715" sl="2802" sc="1" el="2802" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2803" ordinal="2716" sl="2803" sc="1" el="2803" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2804" ordinal="2717" sl="2804" sc="1" el="2804" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2805" ordinal="2718" sl="2805" sc="1" el="2805" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2806" ordinal="2719" sl="2806" sc="1" el="2806" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2807" ordinal="2720" sl="2807" sc="1" el="2807" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2808" ordinal="2721" sl="2808" sc="1" el="2808" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2809" ordinal="2722" sl="2809" sc="1" el="2809" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2810" ordinal="2723" sl="2810" sc="1" el="2810" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2811" ordinal="2724" sl="2811" sc="1" el="2811" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2812" ordinal="2725" sl="2812" sc="1" el="2812" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2813" ordinal="2726" sl="2813" sc="1" el="2813" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2814" ordinal="2727" sl="2814" sc="1" el="2814" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2815" ordinal="2728" sl="2815" sc="1" el="2815" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2816" ordinal="2729" sl="2816" sc="1" el="2816" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2817" ordinal="2730" sl="2817" sc="1" el="2817" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2818" ordinal="2731" sl="2818" sc="1" el="2818" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2819" ordinal="2732" sl="2819" sc="1" el="2819" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2820" ordinal="2733" sl="2820" sc="1" el="2820" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2821" ordinal="2734" sl="2821" sc="1" el="2821" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2822" ordinal="2735" sl="2822" sc="1" el="2822" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2823" ordinal="2736" sl="2823" sc="1" el="2823" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2824" ordinal="2737" sl="2824" sc="1" el="2824" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2825" ordinal="2738" sl="2825" sc="1" el="2825" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2826" ordinal="2739" sl="2826" sc="1" el="2826" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2827" ordinal="2740" sl="2827" sc="1" el="2827" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2828" ordinal="2741" sl="2828" sc="1" el="2828" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2829" ordinal="2742" sl="2829" sc="1" el="2829" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2830" ordinal="2743" sl="2830" sc="1" el="2830" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2831" ordinal="2744" sl="2831" sc="1" el="2831" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2832" ordinal="2745" sl="2832" sc="1" el="2832" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2833" ordinal="2746" sl="2833" sc="1" el="2833" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2834" ordinal="2747" sl="2834" sc="1" el="2834" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2835" ordinal="2748" sl="2835" sc="1" el="2835" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2836" ordinal="2749" sl="2836" sc="1" el="2836" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2837" ordinal="2750" sl="2837" sc="1" el="2837" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2838" ordinal="2751" sl="2838" sc="1" el="2838" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2839" ordinal="2752" sl="2839" sc="1" el="2839" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2840" ordinal="2753" sl="2840" sc="1" el="2840" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2841" ordinal="2754" sl="2841" sc="1" el="2841" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2842" ordinal="2755" sl="2842" sc="1" el="2842" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2843" ordinal="2756" sl="2843" sc="1" el="2843" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2844" ordinal="2757" sl="2844" sc="1" el="2844" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2845" ordinal="2758" sl="2845" sc="1" el="2845" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2846" ordinal="2759" sl="2846" sc="1" el="2846" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2847" ordinal="2760" sl="2847" sc="1" el="2847" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2849" ordinal="2761" sl="2849" sc="1" el="2849" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2850" ordinal="2762" sl="2850" sc="1" el="2850" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2851" ordinal="2763" sl="2851" sc="1" el="2851" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2852" ordinal="2764" sl="2852" sc="1" el="2852" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2853" ordinal="2765" sl="2853" sc="1" el="2853" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2854" ordinal="2766" sl="2854" sc="1" el="2854" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2855" ordinal="2767" sl="2855" sc="1" el="2855" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2856" ordinal="2768" sl="2856" sc="1" el="2856" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2857" ordinal="2769" sl="2857" sc="1" el="2857" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2858" ordinal="2770" sl="2858" sc="1" el="2858" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2859" ordinal="2771" sl="2859" sc="1" el="2859" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2860" ordinal="2772" sl="2860" sc="1" el="2860" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2861" ordinal="2773" sl="2861" sc="1" el="2861" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2862" ordinal="2774" sl="2862" sc="1" el="2862" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2863" ordinal="2775" sl="2863" sc="1" el="2863" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2864" ordinal="2776" sl="2864" sc="1" el="2864" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2865" ordinal="2777" sl="2865" sc="1" el="2865" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2866" ordinal="2778" sl="2866" sc="1" el="2866" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2867" ordinal="2779" sl="2867" sc="1" el="2867" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2868" ordinal="2780" sl="2868" sc="1" el="2868" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2869" ordinal="2781" sl="2869" sc="1" el="2869" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2870" ordinal="2782" sl="2870" sc="1" el="2870" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2871" ordinal="2783" sl="2871" sc="1" el="2871" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2872" ordinal="2784" sl="2872" sc="1" el="2872" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2873" ordinal="2785" sl="2873" sc="1" el="2873" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2874" ordinal="2786" sl="2874" sc="1" el="2874" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2875" ordinal="2787" sl="2875" sc="1" el="2875" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2876" ordinal="2788" sl="2876" sc="1" el="2876" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2877" ordinal="2789" sl="2877" sc="1" el="2877" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2878" ordinal="2790" sl="2878" sc="1" el="2878" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2879" ordinal="2791" sl="2879" sc="1" el="2879" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2880" ordinal="2792" sl="2880" sc="1" el="2880" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2881" ordinal="2793" sl="2881" sc="1" el="2881" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2882" ordinal="2794" sl="2882" sc="1" el="2882" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2883" ordinal="2795" sl="2883" sc="1" el="2883" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2884" ordinal="2796" sl="2884" sc="1" el="2884" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2885" ordinal="2797" sl="2885" sc="1" el="2885" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2886" ordinal="2798" sl="2886" sc="1" el="2886" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2887" ordinal="2799" sl="2887" sc="1" el="2887" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2888" ordinal="2800" sl="2888" sc="1" el="2888" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2889" ordinal="2801" sl="2889" sc="1" el="2889" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2890" ordinal="2802" sl="2890" sc="1" el="2890" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2891" ordinal="2803" sl="2891" sc="1" el="2891" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2892" ordinal="2804" sl="2892" sc="1" el="2892" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2893" ordinal="2805" sl="2893" sc="1" el="2893" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2894" ordinal="2806" sl="2894" sc="1" el="2894" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2895" ordinal="2807" sl="2895" sc="1" el="2895" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2896" ordinal="2808" sl="2896" sc="1" el="2896" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2898" ordinal="2809" sl="2898" sc="1" el="2898" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2899" ordinal="2810" sl="2899" sc="1" el="2899" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2900" ordinal="2811" sl="2900" sc="1" el="2900" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2901" ordinal="2812" sl="2901" sc="1" el="2901" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2902" ordinal="2813" sl="2902" sc="1" el="2902" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2903" ordinal="2814" sl="2903" sc="1" el="2903" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2904" ordinal="2815" sl="2904" sc="1" el="2904" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2905" ordinal="2816" sl="2905" sc="1" el="2905" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2906" ordinal="2817" sl="2906" sc="1" el="2906" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2908" ordinal="2818" sl="2908" sc="1" el="2908" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2909" ordinal="2819" sl="2909" sc="1" el="2909" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2910" ordinal="2820" sl="2910" sc="1" el="2910" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2911" ordinal="2821" sl="2911" sc="1" el="2911" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2912" ordinal="2822" sl="2912" sc="1" el="2912" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2913" ordinal="2823" sl="2913" sc="1" el="2913" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2914" ordinal="2824" sl="2914" sc="1" el="2914" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2915" ordinal="2825" sl="2915" sc="1" el="2915" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2916" ordinal="2826" sl="2916" sc="1" el="2916" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2917" ordinal="2827" sl="2917" sc="1" el="2917" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2919" ordinal="2828" sl="2919" sc="1" el="2919" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2920" ordinal="2829" sl="2920" sc="1" el="2920" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2921" ordinal="2830" sl="2921" sc="1" el="2921" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2922" ordinal="2831" sl="2922" sc="1" el="2922" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2923" ordinal="2832" sl="2923" sc="1" el="2923" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2924" ordinal="2833" sl="2924" sc="1" el="2924" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2925" ordinal="2834" sl="2925" sc="1" el="2925" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2926" ordinal="2835" sl="2926" sc="1" el="2926" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2927" ordinal="2836" sl="2927" sc="1" el="2927" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2928" ordinal="2837" sl="2928" sc="1" el="2928" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2929" ordinal="2838" sl="2929" sc="1" el="2929" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2930" ordinal="2839" sl="2930" sc="1" el="2930" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2931" ordinal="2840" sl="2931" sc="1" el="2931" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2932" ordinal="2841" sl="2932" sc="1" el="2932" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2933" ordinal="2842" sl="2933" sc="1" el="2933" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2934" ordinal="2843" sl="2934" sc="1" el="2934" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2935" ordinal="2844" sl="2935" sc="1" el="2935" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2936" ordinal="2845" sl="2936" sc="1" el="2936" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2937" ordinal="2846" sl="2937" sc="1" el="2937" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2938" ordinal="2847" sl="2938" sc="1" el="2938" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2939" ordinal="2848" sl="2939" sc="1" el="2939" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2940" ordinal="2849" sl="2940" sc="1" el="2940" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2941" ordinal="2850" sl="2941" sc="1" el="2941" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2942" ordinal="2851" sl="2942" sc="1" el="2942" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2943" ordinal="2852" sl="2943" sc="1" el="2943" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2944" ordinal="2853" sl="2944" sc="1" el="2944" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2945" ordinal="2854" sl="2945" sc="1" el="2945" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2946" ordinal="2855" sl="2946" sc="1" el="2946" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2947" ordinal="2856" sl="2947" sc="1" el="2947" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2948" ordinal="2857" sl="2948" sc="1" el="2948" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2950" ordinal="2858" sl="2950" sc="1" el="2950" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2951" ordinal="2859" sl="2951" sc="1" el="2951" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2952" ordinal="2860" sl="2952" sc="1" el="2952" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2953" ordinal="2861" sl="2953" sc="1" el="2953" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2954" ordinal="2862" sl="2954" sc="1" el="2954" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2955" ordinal="2863" sl="2955" sc="1" el="2955" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2956" ordinal="2864" sl="2956" sc="1" el="2956" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2957" ordinal="2865" sl="2957" sc="1" el="2957" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2958" ordinal="2866" sl="2958" sc="1" el="2958" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2959" ordinal="2867" sl="2959" sc="1" el="2959" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2960" ordinal="2868" sl="2960" sc="1" el="2960" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2961" ordinal="2869" sl="2961" sc="1" el="2961" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2962" ordinal="2870" sl="2962" sc="1" el="2962" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2963" ordinal="2871" sl="2963" sc="1" el="2963" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2964" ordinal="2872" sl="2964" sc="1" el="2964" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2965" ordinal="2873" sl="2965" sc="1" el="2965" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2966" ordinal="2874" sl="2966" sc="1" el="2966" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2967" ordinal="2875" sl="2967" sc="1" el="2967" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2969" ordinal="2876" sl="2969" sc="1" el="2969" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2970" ordinal="2877" sl="2970" sc="1" el="2970" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2971" ordinal="2878" sl="2971" sc="1" el="2971" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2972" ordinal="2879" sl="2972" sc="1" el="2972" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2973" ordinal="2880" sl="2973" sc="1" el="2973" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2974" ordinal="2881" sl="2974" sc="1" el="2974" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2975" ordinal="2882" sl="2975" sc="1" el="2975" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2976" ordinal="2883" sl="2976" sc="1" el="2976" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2977" ordinal="2884" sl="2977" sc="1" el="2977" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2978" ordinal="2885" sl="2978" sc="1" el="2978" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2979" ordinal="2886" sl="2979" sc="1" el="2979" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2980" ordinal="2887" sl="2980" sc="1" el="2980" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2981" ordinal="2888" sl="2981" sc="1" el="2981" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2982" ordinal="2889" sl="2982" sc="1" el="2982" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2983" ordinal="2890" sl="2983" sc="1" el="2983" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2984" ordinal="2891" sl="2984" sc="1" el="2984" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2985" ordinal="2892" sl="2985" sc="1" el="2985" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2986" ordinal="2893" sl="2986" sc="1" el="2986" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2987" ordinal="2894" sl="2987" sc="1" el="2987" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2988" ordinal="2895" sl="2988" sc="1" el="2988" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2989" ordinal="2896" sl="2989" sc="1" el="2989" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2990" ordinal="2897" sl="2990" sc="1" el="2990" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2991" ordinal="2898" sl="2991" sc="1" el="2991" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2992" ordinal="2899" sl="2992" sc="1" el="2992" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2993" ordinal="2900" sl="2993" sc="1" el="2993" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2995" ordinal="2901" sl="2995" sc="1" el="2995" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2996" ordinal="2902" sl="2996" sc="1" el="2996" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2997" ordinal="2903" sl="2997" sc="1" el="2997" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2998" ordinal="2904" sl="2998" sc="1" el="2998" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="2999" ordinal="2905" sl="2999" sc="1" el="2999" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3000" ordinal="2906" sl="3000" sc="1" el="3000" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3001" ordinal="2907" sl="3001" sc="1" el="3001" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3002" ordinal="2908" sl="3002" sc="1" el="3002" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3003" ordinal="2909" sl="3003" sc="1" el="3003" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3004" ordinal="2910" sl="3004" sc="1" el="3004" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3005" ordinal="2911" sl="3005" sc="1" el="3005" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3006" ordinal="2912" sl="3006" sc="1" el="3006" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3007" ordinal="2913" sl="3007" sc="1" el="3007" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3008" ordinal="2914" sl="3008" sc="1" el="3008" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3009" ordinal="2915" sl="3009" sc="1" el="3009" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3010" ordinal="2916" sl="3010" sc="1" el="3010" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3011" ordinal="2917" sl="3011" sc="1" el="3011" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3012" ordinal="2918" sl="3012" sc="1" el="3012" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3014" ordinal="2919" sl="3014" sc="1" el="3014" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3015" ordinal="2920" sl="3015" sc="1" el="3015" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3016" ordinal="2921" sl="3016" sc="1" el="3016" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3017" ordinal="2922" sl="3017" sc="1" el="3017" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3018" ordinal="2923" sl="3018" sc="1" el="3018" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3019" ordinal="2924" sl="3019" sc="1" el="3019" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3020" ordinal="2925" sl="3020" sc="1" el="3020" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3021" ordinal="2926" sl="3021" sc="1" el="3021" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3022" ordinal="2927" sl="3022" sc="1" el="3022" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3023" ordinal="2928" sl="3023" sc="1" el="3023" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3024" ordinal="2929" sl="3024" sc="1" el="3024" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3025" ordinal="2930" sl="3025" sc="1" el="3025" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3026" ordinal="2931" sl="3026" sc="1" el="3026" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3027" ordinal="2932" sl="3027" sc="1" el="3027" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3028" ordinal="2933" sl="3028" sc="1" el="3028" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3029" ordinal="2934" sl="3029" sc="1" el="3029" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3030" ordinal="2935" sl="3030" sc="1" el="3030" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3031" ordinal="2936" sl="3031" sc="1" el="3031" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3033" ordinal="2937" sl="3033" sc="1" el="3033" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3034" ordinal="2938" sl="3034" sc="1" el="3034" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3035" ordinal="2939" sl="3035" sc="1" el="3035" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3036" ordinal="2940" sl="3036" sc="1" el="3036" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3037" ordinal="2941" sl="3037" sc="1" el="3037" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3038" ordinal="2942" sl="3038" sc="1" el="3038" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3039" ordinal="2943" sl="3039" sc="1" el="3039" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3040" ordinal="2944" sl="3040" sc="1" el="3040" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3041" ordinal="2945" sl="3041" sc="1" el="3041" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3042" ordinal="2946" sl="3042" sc="1" el="3042" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3043" ordinal="2947" sl="3043" sc="1" el="3043" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3044" ordinal="2948" sl="3044" sc="1" el="3044" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3045" ordinal="2949" sl="3045" sc="1" el="3045" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3046" ordinal="2950" sl="3046" sc="1" el="3046" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3047" ordinal="2951" sl="3047" sc="1" el="3047" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3048" ordinal="2952" sl="3048" sc="1" el="3048" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3049" ordinal="2953" sl="3049" sc="1" el="3049" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3050" ordinal="2954" sl="3050" sc="1" el="3050" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3052" ordinal="2955" sl="3052" sc="1" el="3052" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3053" ordinal="2956" sl="3053" sc="1" el="3053" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3054" ordinal="2957" sl="3054" sc="1" el="3054" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3055" ordinal="2958" sl="3055" sc="1" el="3055" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3056" ordinal="2959" sl="3056" sc="1" el="3056" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3057" ordinal="2960" sl="3057" sc="1" el="3057" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3058" ordinal="2961" sl="3058" sc="1" el="3058" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3059" ordinal="2962" sl="3059" sc="1" el="3059" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3060" ordinal="2963" sl="3060" sc="1" el="3060" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3061" ordinal="2964" sl="3061" sc="1" el="3061" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3062" ordinal="2965" sl="3062" sc="1" el="3062" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3063" ordinal="2966" sl="3063" sc="1" el="3063" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3064" ordinal="2967" sl="3064" sc="1" el="3064" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3065" ordinal="2968" sl="3065" sc="1" el="3065" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3066" ordinal="2969" sl="3066" sc="1" el="3066" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3067" ordinal="2970" sl="3067" sc="1" el="3067" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3068" ordinal="2971" sl="3068" sc="1" el="3068" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3069" ordinal="2972" sl="3069" sc="1" el="3069" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3071" ordinal="2973" sl="3071" sc="1" el="3071" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3072" ordinal="2974" sl="3072" sc="1" el="3072" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3073" ordinal="2975" sl="3073" sc="1" el="3073" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3074" ordinal="2976" sl="3074" sc="1" el="3074" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3075" ordinal="2977" sl="3075" sc="1" el="3075" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3076" ordinal="2978" sl="3076" sc="1" el="3076" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3077" ordinal="2979" sl="3077" sc="1" el="3077" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3078" ordinal="2980" sl="3078" sc="1" el="3078" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3079" ordinal="2981" sl="3079" sc="1" el="3079" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3080" ordinal="2982" sl="3080" sc="1" el="3080" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3082" ordinal="2983" sl="3082" sc="1" el="3082" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3083" ordinal="2984" sl="3083" sc="1" el="3083" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3084" ordinal="2985" sl="3084" sc="1" el="3084" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3085" ordinal="2986" sl="3085" sc="1" el="3085" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3086" ordinal="2987" sl="3086" sc="1" el="3086" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3087" ordinal="2988" sl="3087" sc="1" el="3087" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3088" ordinal="2989" sl="3088" sc="1" el="3088" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3089" ordinal="2990" sl="3089" sc="1" el="3089" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3090" ordinal="2991" sl="3090" sc="1" el="3090" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3091" ordinal="2992" sl="3091" sc="1" el="3091" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3092" ordinal="2993" sl="3092" sc="1" el="3092" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3093" ordinal="2994" sl="3093" sc="1" el="3093" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3094" ordinal="2995" sl="3094" sc="1" el="3094" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3095" ordinal="2996" sl="3095" sc="1" el="3095" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3096" ordinal="2997" sl="3096" sc="1" el="3096" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3097" ordinal="2998" sl="3097" sc="1" el="3097" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3098" ordinal="2999" sl="3098" sc="1" el="3098" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3099" ordinal="3000" sl="3099" sc="1" el="3099" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3100" ordinal="3001" sl="3100" sc="1" el="3100" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3101" ordinal="3002" sl="3101" sc="1" el="3101" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3102" ordinal="3003" sl="3102" sc="1" el="3102" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3103" ordinal="3004" sl="3103" sc="1" el="3103" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3104" ordinal="3005" sl="3104" sc="1" el="3104" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3105" ordinal="3006" sl="3105" sc="1" el="3105" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3107" ordinal="3007" sl="3107" sc="1" el="3107" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3108" ordinal="3008" sl="3108" sc="1" el="3108" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3109" ordinal="3009" sl="3109" sc="1" el="3109" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3110" ordinal="3010" sl="3110" sc="1" el="3110" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3111" ordinal="3011" sl="3111" sc="1" el="3111" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3112" ordinal="3012" sl="3112" sc="1" el="3112" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3113" ordinal="3013" sl="3113" sc="1" el="3113" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3114" ordinal="3014" sl="3114" sc="1" el="3114" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3115" ordinal="3015" sl="3115" sc="1" el="3115" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3116" ordinal="3016" sl="3116" sc="1" el="3116" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3118" ordinal="3017" sl="3118" sc="1" el="3118" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3119" ordinal="3018" sl="3119" sc="1" el="3119" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3120" ordinal="3019" sl="3120" sc="1" el="3120" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3121" ordinal="3020" sl="3121" sc="1" el="3121" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3122" ordinal="3021" sl="3122" sc="1" el="3122" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3123" ordinal="3022" sl="3123" sc="1" el="3123" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3124" ordinal="3023" sl="3124" sc="1" el="3124" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3125" ordinal="3024" sl="3125" sc="1" el="3125" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3126" ordinal="3025" sl="3126" sc="1" el="3126" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3127" ordinal="3026" sl="3127" sc="1" el="3127" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3128" ordinal="3027" sl="3128" sc="1" el="3128" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3129" ordinal="3028" sl="3129" sc="1" el="3129" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3130" ordinal="3029" sl="3130" sc="1" el="3130" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3131" ordinal="3030" sl="3131" sc="1" el="3131" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3132" ordinal="3031" sl="3132" sc="1" el="3132" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3133" ordinal="3032" sl="3133" sc="1" el="3133" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3134" ordinal="3033" sl="3134" sc="1" el="3134" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3135" ordinal="3034" sl="3135" sc="1" el="3135" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3137" ordinal="3035" sl="3137" sc="1" el="3137" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3138" ordinal="3036" sl="3138" sc="1" el="3138" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3139" ordinal="3037" sl="3139" sc="1" el="3139" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3140" ordinal="3038" sl="3140" sc="1" el="3140" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3141" ordinal="3039" sl="3141" sc="1" el="3141" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3142" ordinal="3040" sl="3142" sc="1" el="3142" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3143" ordinal="3041" sl="3143" sc="1" el="3143" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3144" ordinal="3042" sl="3144" sc="1" el="3144" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3145" ordinal="3043" sl="3145" sc="1" el="3145" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3146" ordinal="3044" sl="3146" sc="1" el="3146" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3148" ordinal="3045" sl="3148" sc="1" el="3148" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3149" ordinal="3046" sl="3149" sc="1" el="3149" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3150" ordinal="3047" sl="3150" sc="1" el="3150" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3151" ordinal="3048" sl="3151" sc="1" el="3151" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3152" ordinal="3049" sl="3152" sc="1" el="3152" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3153" ordinal="3050" sl="3153" sc="1" el="3153" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3154" ordinal="3051" sl="3154" sc="1" el="3154" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3155" ordinal="3052" sl="3155" sc="1" el="3155" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3156" ordinal="3053" sl="3156" sc="1" el="3156" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3157" ordinal="3054" sl="3157" sc="1" el="3157" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3158" ordinal="3055" sl="3158" sc="1" el="3158" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3159" ordinal="3056" sl="3159" sc="1" el="3159" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3160" ordinal="3057" sl="3160" sc="1" el="3160" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3161" ordinal="3058" sl="3161" sc="1" el="3161" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3162" ordinal="3059" sl="3162" sc="1" el="3162" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3163" ordinal="3060" sl="3163" sc="1" el="3163" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3164" ordinal="3061" sl="3164" sc="1" el="3164" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3165" ordinal="3062" sl="3165" sc="1" el="3165" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3167" ordinal="3063" sl="3167" sc="1" el="3167" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3168" ordinal="3064" sl="3168" sc="1" el="3168" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3169" ordinal="3065" sl="3169" sc="1" el="3169" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3170" ordinal="3066" sl="3170" sc="1" el="3170" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3171" ordinal="3067" sl="3171" sc="1" el="3171" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3172" ordinal="3068" sl="3172" sc="1" el="3172" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3173" ordinal="3069" sl="3173" sc="1" el="3173" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3174" ordinal="3070" sl="3174" sc="1" el="3174" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3175" ordinal="3071" sl="3175" sc="1" el="3175" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3176" ordinal="3072" sl="3176" sc="1" el="3176" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3177" ordinal="3073" sl="3177" sc="1" el="3177" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3178" ordinal="3074" sl="3178" sc="1" el="3178" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3179" ordinal="3075" sl="3179" sc="1" el="3179" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3180" ordinal="3076" sl="3180" sc="1" el="3180" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3181" ordinal="3077" sl="3181" sc="1" el="3181" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3182" ordinal="3078" sl="3182" sc="1" el="3182" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3184" ordinal="3079" sl="3184" sc="1" el="3184" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3185" ordinal="3080" sl="3185" sc="1" el="3185" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3186" ordinal="3081" sl="3186" sc="1" el="3186" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3187" ordinal="3082" sl="3187" sc="1" el="3187" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3188" ordinal="3083" sl="3188" sc="1" el="3188" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3189" ordinal="3084" sl="3189" sc="1" el="3189" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3190" ordinal="3085" sl="3190" sc="1" el="3190" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3191" ordinal="3086" sl="3191" sc="1" el="3191" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3192" ordinal="3087" sl="3192" sc="1" el="3192" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3193" ordinal="3088" sl="3193" sc="1" el="3193" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3194" ordinal="3089" sl="3194" sc="1" el="3194" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3195" ordinal="3090" sl="3195" sc="1" el="3195" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3196" ordinal="3091" sl="3196" sc="1" el="3196" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3197" ordinal="3092" sl="3197" sc="1" el="3197" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3198" ordinal="3093" sl="3198" sc="1" el="3198" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3199" ordinal="3094" sl="3199" sc="1" el="3199" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3200" ordinal="3095" sl="3200" sc="1" el="3200" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3201" ordinal="3096" sl="3201" sc="1" el="3201" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3202" ordinal="3097" sl="3202" sc="1" el="3202" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3203" ordinal="3098" sl="3203" sc="1" el="3203" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3204" ordinal="3099" sl="3204" sc="1" el="3204" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3205" ordinal="3100" sl="3205" sc="1" el="3205" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3206" ordinal="3101" sl="3206" sc="1" el="3206" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3207" ordinal="3102" sl="3207" sc="1" el="3207" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3209" ordinal="3103" sl="3209" sc="1" el="3209" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3210" ordinal="3104" sl="3210" sc="1" el="3210" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3211" ordinal="3105" sl="3211" sc="1" el="3211" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3212" ordinal="3106" sl="3212" sc="1" el="3212" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3213" ordinal="3107" sl="3213" sc="1" el="3213" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3214" ordinal="3108" sl="3214" sc="1" el="3214" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3215" ordinal="3109" sl="3215" sc="1" el="3215" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3216" ordinal="3110" sl="3216" sc="1" el="3216" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3217" ordinal="3111" sl="3217" sc="1" el="3217" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3218" ordinal="3112" sl="3218" sc="1" el="3218" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3219" ordinal="3113" sl="3219" sc="1" el="3219" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3220" ordinal="3114" sl="3220" sc="1" el="3220" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3221" ordinal="3115" sl="3221" sc="1" el="3221" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3222" ordinal="3116" sl="3222" sc="1" el="3222" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3223" ordinal="3117" sl="3223" sc="1" el="3223" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3224" ordinal="3118" sl="3224" sc="1" el="3224" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3225" ordinal="3119" sl="3225" sc="1" el="3225" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3226" ordinal="3120" sl="3226" sc="1" el="3226" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3228" ordinal="3121" sl="3228" sc="1" el="3228" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3229" ordinal="3122" sl="3229" sc="1" el="3229" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3230" ordinal="3123" sl="3230" sc="1" el="3230" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3231" ordinal="3124" sl="3231" sc="1" el="3231" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3232" ordinal="3125" sl="3232" sc="1" el="3232" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3233" ordinal="3126" sl="3233" sc="1" el="3233" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3234" ordinal="3127" sl="3234" sc="1" el="3234" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3235" ordinal="3128" sl="3235" sc="1" el="3235" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3236" ordinal="3129" sl="3236" sc="1" el="3236" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3237" ordinal="3130" sl="3237" sc="1" el="3237" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3238" ordinal="3131" sl="3238" sc="1" el="3238" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3239" ordinal="3132" sl="3239" sc="1" el="3239" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3240" ordinal="3133" sl="3240" sc="1" el="3240" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3241" ordinal="3134" sl="3241" sc="1" el="3241" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3242" ordinal="3135" sl="3242" sc="1" el="3242" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3243" ordinal="3136" sl="3243" sc="1" el="3243" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3244" ordinal="3137" sl="3244" sc="1" el="3244" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3245" ordinal="3138" sl="3245" sc="1" el="3245" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3246" ordinal="3139" sl="3246" sc="1" el="3246" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3247" ordinal="3140" sl="3247" sc="1" el="3247" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3248" ordinal="3141" sl="3248" sc="1" el="3248" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3249" ordinal="3142" sl="3249" sc="1" el="3249" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3250" ordinal="3143" sl="3250" sc="1" el="3250" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3251" ordinal="3144" sl="3251" sc="1" el="3251" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3252" ordinal="3145" sl="3252" sc="1" el="3252" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3254" ordinal="3146" sl="3254" sc="1" el="3254" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3255" ordinal="3147" sl="3255" sc="1" el="3255" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3256" ordinal="3148" sl="3256" sc="1" el="3256" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3257" ordinal="3149" sl="3257" sc="1" el="3257" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3258" ordinal="3150" sl="3258" sc="1" el="3258" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3259" ordinal="3151" sl="3259" sc="1" el="3259" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3260" ordinal="3152" sl="3260" sc="1" el="3260" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3261" ordinal="3153" sl="3261" sc="1" el="3261" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3262" ordinal="3154" sl="3262" sc="1" el="3262" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3263" ordinal="3155" sl="3263" sc="1" el="3263" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3264" ordinal="3156" sl="3264" sc="1" el="3264" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3265" ordinal="3157" sl="3265" sc="1" el="3265" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3266" ordinal="3158" sl="3266" sc="1" el="3266" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3267" ordinal="3159" sl="3267" sc="1" el="3267" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3268" ordinal="3160" sl="3268" sc="1" el="3268" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3269" ordinal="3161" sl="3269" sc="1" el="3269" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3271" ordinal="3162" sl="3271" sc="1" el="3271" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3272" ordinal="3163" sl="3272" sc="1" el="3272" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3273" ordinal="3164" sl="3273" sc="1" el="3273" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3274" ordinal="3165" sl="3274" sc="1" el="3274" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3275" ordinal="3166" sl="3275" sc="1" el="3275" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3276" ordinal="3167" sl="3276" sc="1" el="3276" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3277" ordinal="3168" sl="3277" sc="1" el="3277" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3278" ordinal="3169" sl="3278" sc="1" el="3278" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3279" ordinal="3170" sl="3279" sc="1" el="3279" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3280" ordinal="3171" sl="3280" sc="1" el="3280" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3281" ordinal="3172" sl="3281" sc="1" el="3281" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3282" ordinal="3173" sl="3282" sc="1" el="3282" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3283" ordinal="3174" sl="3283" sc="1" el="3283" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3284" ordinal="3175" sl="3284" sc="1" el="3284" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3285" ordinal="3176" sl="3285" sc="1" el="3285" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3286" ordinal="3177" sl="3286" sc="1" el="3286" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3287" ordinal="3178" sl="3287" sc="1" el="3287" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3288" ordinal="3179" sl="3288" sc="1" el="3288" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3290" ordinal="3180" sl="3290" sc="1" el="3290" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3291" ordinal="3181" sl="3291" sc="1" el="3291" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3292" ordinal="3182" sl="3292" sc="1" el="3292" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3293" ordinal="3183" sl="3293" sc="1" el="3293" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3294" ordinal="3184" sl="3294" sc="1" el="3294" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3295" ordinal="3185" sl="3295" sc="1" el="3295" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3296" ordinal="3186" sl="3296" sc="1" el="3296" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3297" ordinal="3187" sl="3297" sc="1" el="3297" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3298" ordinal="3188" sl="3298" sc="1" el="3298" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3299" ordinal="3189" sl="3299" sc="1" el="3299" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3300" ordinal="3190" sl="3300" sc="1" el="3300" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3301" ordinal="3191" sl="3301" sc="1" el="3301" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3302" ordinal="3192" sl="3302" sc="1" el="3302" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3303" ordinal="3193" sl="3303" sc="1" el="3303" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3304" ordinal="3194" sl="3304" sc="1" el="3304" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3305" ordinal="3195" sl="3305" sc="1" el="3305" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3306" ordinal="3196" sl="3306" sc="1" el="3306" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3307" ordinal="3197" sl="3307" sc="1" el="3307" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3309" ordinal="3198" sl="3309" sc="1" el="3309" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3310" ordinal="3199" sl="3310" sc="1" el="3310" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3311" ordinal="3200" sl="3311" sc="1" el="3311" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3312" ordinal="3201" sl="3312" sc="1" el="3312" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3313" ordinal="3202" sl="3313" sc="1" el="3313" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3314" ordinal="3203" sl="3314" sc="1" el="3314" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3315" ordinal="3204" sl="3315" sc="1" el="3315" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3316" ordinal="3205" sl="3316" sc="1" el="3316" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3317" ordinal="3206" sl="3317" sc="1" el="3317" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3318" ordinal="3207" sl="3318" sc="1" el="3318" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3320" ordinal="3208" sl="3320" sc="1" el="3320" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3321" ordinal="3209" sl="3321" sc="1" el="3321" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3322" ordinal="3210" sl="3322" sc="1" el="3322" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3323" ordinal="3211" sl="3323" sc="1" el="3323" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3324" ordinal="3212" sl="3324" sc="1" el="3324" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3325" ordinal="3213" sl="3325" sc="1" el="3325" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3326" ordinal="3214" sl="3326" sc="1" el="3326" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3327" ordinal="3215" sl="3327" sc="1" el="3327" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3328" ordinal="3216" sl="3328" sc="1" el="3328" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3330" ordinal="3217" sl="3330" sc="1" el="3330" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3331" ordinal="3218" sl="3331" sc="1" el="3331" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3332" ordinal="3219" sl="3332" sc="1" el="3332" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3333" ordinal="3220" sl="3333" sc="1" el="3333" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3334" ordinal="3221" sl="3334" sc="1" el="3334" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3335" ordinal="3222" sl="3335" sc="1" el="3335" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3336" ordinal="3223" sl="3336" sc="1" el="3336" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3337" ordinal="3224" sl="3337" sc="1" el="3337" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3338" ordinal="3225" sl="3338" sc="1" el="3338" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3339" ordinal="3226" sl="3339" sc="1" el="3339" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3340" ordinal="3227" sl="3340" sc="1" el="3340" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3341" ordinal="3228" sl="3341" sc="1" el="3341" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3342" ordinal="3229" sl="3342" sc="1" el="3342" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3343" ordinal="3230" sl="3343" sc="1" el="3343" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3344" ordinal="3231" sl="3344" sc="1" el="3344" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3345" ordinal="3232" sl="3345" sc="1" el="3345" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3346" ordinal="3233" sl="3346" sc="1" el="3346" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3347" ordinal="3234" sl="3347" sc="1" el="3347" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3349" ordinal="3235" sl="3349" sc="1" el="3349" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3350" ordinal="3236" sl="3350" sc="1" el="3350" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3351" ordinal="3237" sl="3351" sc="1" el="3351" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3352" ordinal="3238" sl="3352" sc="1" el="3352" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3353" ordinal="3239" sl="3353" sc="1" el="3353" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3354" ordinal="3240" sl="3354" sc="1" el="3354" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3355" ordinal="3241" sl="3355" sc="1" el="3355" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3356" ordinal="3242" sl="3356" sc="1" el="3356" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3357" ordinal="3243" sl="3357" sc="1" el="3357" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3358" ordinal="3244" sl="3358" sc="1" el="3358" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3360" ordinal="3245" sl="3360" sc="1" el="3360" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3361" ordinal="3246" sl="3361" sc="1" el="3361" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3362" ordinal="3247" sl="3362" sc="1" el="3362" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3363" ordinal="3248" sl="3363" sc="1" el="3363" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3364" ordinal="3249" sl="3364" sc="1" el="3364" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3365" ordinal="3250" sl="3365" sc="1" el="3365" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3366" ordinal="3251" sl="3366" sc="1" el="3366" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3367" ordinal="3252" sl="3367" sc="1" el="3367" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3368" ordinal="3253" sl="3368" sc="1" el="3368" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3369" ordinal="3254" sl="3369" sc="1" el="3369" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3370" ordinal="3255" sl="3370" sc="1" el="3370" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3371" ordinal="3256" sl="3371" sc="1" el="3371" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3372" ordinal="3257" sl="3372" sc="1" el="3372" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3373" ordinal="3258" sl="3373" sc="1" el="3373" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3374" ordinal="3259" sl="3374" sc="1" el="3374" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3375" ordinal="3260" sl="3375" sc="1" el="3375" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3376" ordinal="3261" sl="3376" sc="1" el="3376" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3377" ordinal="3262" sl="3377" sc="1" el="3377" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3379" ordinal="3263" sl="3379" sc="1" el="3379" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3380" ordinal="3264" sl="3380" sc="1" el="3380" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3381" ordinal="3265" sl="3381" sc="1" el="3381" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3382" ordinal="3266" sl="3382" sc="1" el="3382" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3383" ordinal="3267" sl="3383" sc="1" el="3383" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3384" ordinal="3268" sl="3384" sc="1" el="3384" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3385" ordinal="3269" sl="3385" sc="1" el="3385" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3386" ordinal="3270" sl="3386" sc="1" el="3386" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3387" ordinal="3271" sl="3387" sc="1" el="3387" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3388" ordinal="3272" sl="3388" sc="1" el="3388" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3390" ordinal="3273" sl="3390" sc="1" el="3390" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3391" ordinal="3274" sl="3391" sc="1" el="3391" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3392" ordinal="3275" sl="3392" sc="1" el="3392" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3393" ordinal="3276" sl="3393" sc="1" el="3393" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3394" ordinal="3277" sl="3394" sc="1" el="3394" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3395" ordinal="3278" sl="3395" sc="1" el="3395" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3396" ordinal="3279" sl="3396" sc="1" el="3396" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3397" ordinal="3280" sl="3397" sc="1" el="3397" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3398" ordinal="3281" sl="3398" sc="1" el="3398" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3399" ordinal="3282" sl="3399" sc="1" el="3399" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3400" ordinal="3283" sl="3400" sc="1" el="3400" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3401" ordinal="3284" sl="3401" sc="1" el="3401" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3402" ordinal="3285" sl="3402" sc="1" el="3402" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3403" ordinal="3286" sl="3403" sc="1" el="3403" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3404" ordinal="3287" sl="3404" sc="1" el="3404" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3405" ordinal="3288" sl="3405" sc="1" el="3405" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3406" ordinal="3289" sl="3406" sc="1" el="3406" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3407" ordinal="3290" sl="3407" sc="1" el="3407" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3409" ordinal="3291" sl="3409" sc="1" el="3409" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3410" ordinal="3292" sl="3410" sc="1" el="3410" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3411" ordinal="3293" sl="3411" sc="1" el="3411" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3412" ordinal="3294" sl="3412" sc="1" el="3412" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3413" ordinal="3295" sl="3413" sc="1" el="3413" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3414" ordinal="3296" sl="3414" sc="1" el="3414" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3415" ordinal="3297" sl="3415" sc="1" el="3415" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3416" ordinal="3298" sl="3416" sc="1" el="3416" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3417" ordinal="3299" sl="3417" sc="1" el="3417" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3418" ordinal="3300" sl="3418" sc="1" el="3418" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3420" ordinal="3301" sl="3420" sc="1" el="3420" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3421" ordinal="3302" sl="3421" sc="1" el="3421" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3422" ordinal="3303" sl="3422" sc="1" el="3422" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3423" ordinal="3304" sl="3423" sc="1" el="3423" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3424" ordinal="3305" sl="3424" sc="1" el="3424" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3425" ordinal="3306" sl="3425" sc="1" el="3425" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3426" ordinal="3307" sl="3426" sc="1" el="3426" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3427" ordinal="3308" sl="3427" sc="1" el="3427" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3428" ordinal="3309" sl="3428" sc="1" el="3428" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3429" ordinal="3310" sl="3429" sc="1" el="3429" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3430" ordinal="3311" sl="3430" sc="1" el="3430" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3431" ordinal="3312" sl="3431" sc="1" el="3431" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3432" ordinal="3313" sl="3432" sc="1" el="3432" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3433" ordinal="3314" sl="3433" sc="1" el="3433" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3434" ordinal="3315" sl="3434" sc="1" el="3434" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3435" ordinal="3316" sl="3435" sc="1" el="3435" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3436" ordinal="3317" sl="3436" sc="1" el="3436" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3437" ordinal="3318" sl="3437" sc="1" el="3437" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3439" ordinal="3319" sl="3439" sc="1" el="3439" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3440" ordinal="3320" sl="3440" sc="1" el="3440" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3441" ordinal="3321" sl="3441" sc="1" el="3441" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3442" ordinal="3322" sl="3442" sc="1" el="3442" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3443" ordinal="3323" sl="3443" sc="1" el="3443" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3444" ordinal="3324" sl="3444" sc="1" el="3444" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3445" ordinal="3325" sl="3445" sc="1" el="3445" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3446" ordinal="3326" sl="3446" sc="1" el="3446" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3447" ordinal="3327" sl="3447" sc="1" el="3447" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3448" ordinal="3328" sl="3448" sc="1" el="3448" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3449" ordinal="3329" sl="3449" sc="1" el="3449" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3450" ordinal="3330" sl="3450" sc="1" el="3450" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3451" ordinal="3331" sl="3451" sc="1" el="3451" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3452" ordinal="3332" sl="3452" sc="1" el="3452" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3453" ordinal="3333" sl="3453" sc="1" el="3453" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3454" ordinal="3334" sl="3454" sc="1" el="3454" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3455" ordinal="3335" sl="3455" sc="1" el="3455" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3456" ordinal="3336" sl="3456" sc="1" el="3456" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3458" ordinal="3337" sl="3458" sc="1" el="3458" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3459" ordinal="3338" sl="3459" sc="1" el="3459" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3460" ordinal="3339" sl="3460" sc="1" el="3460" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3461" ordinal="3340" sl="3461" sc="1" el="3461" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3462" ordinal="3341" sl="3462" sc="1" el="3462" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3463" ordinal="3342" sl="3463" sc="1" el="3463" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3464" ordinal="3343" sl="3464" sc="1" el="3464" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3465" ordinal="3344" sl="3465" sc="1" el="3465" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3466" ordinal="3345" sl="3466" sc="1" el="3466" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3467" ordinal="3346" sl="3467" sc="1" el="3467" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3468" ordinal="3347" sl="3468" sc="1" el="3468" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3469" ordinal="3348" sl="3469" sc="1" el="3469" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3470" ordinal="3349" sl="3470" sc="1" el="3470" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3471" ordinal="3350" sl="3471" sc="1" el="3471" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3472" ordinal="3351" sl="3472" sc="1" el="3472" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3473" ordinal="3352" sl="3473" sc="1" el="3473" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3474" ordinal="3353" sl="3474" sc="1" el="3474" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3475" ordinal="3354" sl="3475" sc="1" el="3475" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3476" ordinal="3355" sl="3476" sc="1" el="3476" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3477" ordinal="3356" sl="3477" sc="1" el="3477" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3478" ordinal="3357" sl="3478" sc="1" el="3478" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3479" ordinal="3358" sl="3479" sc="1" el="3479" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3480" ordinal="3359" sl="3480" sc="1" el="3480" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3481" ordinal="3360" sl="3481" sc="1" el="3481" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3482" ordinal="3361" sl="3482" sc="1" el="3482" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3483" ordinal="3362" sl="3483" sc="1" el="3483" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3485" ordinal="3363" sl="3485" sc="1" el="3485" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3486" ordinal="3364" sl="3486" sc="1" el="3486" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3487" ordinal="3365" sl="3487" sc="1" el="3487" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3488" ordinal="3366" sl="3488" sc="1" el="3488" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3489" ordinal="3367" sl="3489" sc="1" el="3489" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3490" ordinal="3368" sl="3490" sc="1" el="3490" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3491" ordinal="3369" sl="3491" sc="1" el="3491" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3492" ordinal="3370" sl="3492" sc="1" el="3492" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3493" ordinal="3371" sl="3493" sc="1" el="3493" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3494" ordinal="3372" sl="3494" sc="1" el="3494" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3496" ordinal="3373" sl="3496" sc="1" el="3496" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3497" ordinal="3374" sl="3497" sc="1" el="3497" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3498" ordinal="3375" sl="3498" sc="1" el="3498" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3499" ordinal="3376" sl="3499" sc="1" el="3499" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3500" ordinal="3377" sl="3500" sc="1" el="3500" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3501" ordinal="3378" sl="3501" sc="1" el="3501" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3502" ordinal="3379" sl="3502" sc="1" el="3502" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3503" ordinal="3380" sl="3503" sc="1" el="3503" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3504" ordinal="3381" sl="3504" sc="1" el="3504" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3505" ordinal="3382" sl="3505" sc="1" el="3505" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3506" ordinal="3383" sl="3506" sc="1" el="3506" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3507" ordinal="3384" sl="3507" sc="1" el="3507" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3508" ordinal="3385" sl="3508" sc="1" el="3508" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3509" ordinal="3386" sl="3509" sc="1" el="3509" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3510" ordinal="3387" sl="3510" sc="1" el="3510" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3511" ordinal="3388" sl="3511" sc="1" el="3511" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3512" ordinal="3389" sl="3512" sc="1" el="3512" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3513" ordinal="3390" sl="3513" sc="1" el="3513" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3515" ordinal="3391" sl="3515" sc="1" el="3515" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3516" ordinal="3392" sl="3516" sc="1" el="3516" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3517" ordinal="3393" sl="3517" sc="1" el="3517" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3518" ordinal="3394" sl="3518" sc="1" el="3518" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3519" ordinal="3395" sl="3519" sc="1" el="3519" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3520" ordinal="3396" sl="3520" sc="1" el="3520" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3521" ordinal="3397" sl="3521" sc="1" el="3521" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3522" ordinal="3398" sl="3522" sc="1" el="3522" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3523" ordinal="3399" sl="3523" sc="1" el="3523" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3524" ordinal="3400" sl="3524" sc="1" el="3524" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3526" ordinal="3401" sl="3526" sc="1" el="3526" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3527" ordinal="3402" sl="3527" sc="1" el="3527" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3528" ordinal="3403" sl="3528" sc="1" el="3528" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3529" ordinal="3404" sl="3529" sc="1" el="3529" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3530" ordinal="3405" sl="3530" sc="1" el="3530" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3531" ordinal="3406" sl="3531" sc="1" el="3531" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3532" ordinal="3407" sl="3532" sc="1" el="3532" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3533" ordinal="3408" sl="3533" sc="1" el="3533" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3534" ordinal="3409" sl="3534" sc="1" el="3534" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3535" ordinal="3410" sl="3535" sc="1" el="3535" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3537" ordinal="3411" sl="3537" sc="1" el="3537" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3538" ordinal="3412" sl="3538" sc="1" el="3538" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3539" ordinal="3413" sl="3539" sc="1" el="3539" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3540" ordinal="3414" sl="3540" sc="1" el="3540" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3541" ordinal="3415" sl="3541" sc="1" el="3541" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3542" ordinal="3416" sl="3542" sc="1" el="3542" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3543" ordinal="3417" sl="3543" sc="1" el="3543" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3544" ordinal="3418" sl="3544" sc="1" el="3544" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3545" ordinal="3419" sl="3545" sc="1" el="3545" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3546" ordinal="3420" sl="3546" sc="1" el="3546" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3547" ordinal="3421" sl="3547" sc="1" el="3547" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3548" ordinal="3422" sl="3548" sc="1" el="3548" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3549" ordinal="3423" sl="3549" sc="1" el="3549" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3550" ordinal="3424" sl="3550" sc="1" el="3550" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3551" ordinal="3425" sl="3551" sc="1" el="3551" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3552" ordinal="3426" sl="3552" sc="1" el="3552" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3553" ordinal="3427" sl="3553" sc="1" el="3553" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3554" ordinal="3428" sl="3554" sc="1" el="3554" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3556" ordinal="3429" sl="3556" sc="1" el="3556" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3557" ordinal="3430" sl="3557" sc="1" el="3557" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3558" ordinal="3431" sl="3558" sc="1" el="3558" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3559" ordinal="3432" sl="3559" sc="1" el="3559" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3560" ordinal="3433" sl="3560" sc="1" el="3560" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3561" ordinal="3434" sl="3561" sc="1" el="3561" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3562" ordinal="3435" sl="3562" sc="1" el="3562" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3563" ordinal="3436" sl="3563" sc="1" el="3563" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3564" ordinal="3437" sl="3564" sc="1" el="3564" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3565" ordinal="3438" sl="3565" sc="1" el="3565" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3566" ordinal="3439" sl="3566" sc="1" el="3566" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3567" ordinal="3440" sl="3567" sc="1" el="3567" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3568" ordinal="3441" sl="3568" sc="1" el="3568" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3569" ordinal="3442" sl="3569" sc="1" el="3569" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3570" ordinal="3443" sl="3570" sc="1" el="3570" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3571" ordinal="3444" sl="3571" sc="1" el="3571" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3572" ordinal="3445" sl="3572" sc="1" el="3572" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3573" ordinal="3446" sl="3573" sc="1" el="3573" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3575" ordinal="3447" sl="3575" sc="1" el="3575" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3576" ordinal="3448" sl="3576" sc="1" el="3576" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3577" ordinal="3449" sl="3577" sc="1" el="3577" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3578" ordinal="3450" sl="3578" sc="1" el="3578" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3579" ordinal="3451" sl="3579" sc="1" el="3579" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3580" ordinal="3452" sl="3580" sc="1" el="3580" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3581" ordinal="3453" sl="3581" sc="1" el="3581" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3582" ordinal="3454" sl="3582" sc="1" el="3582" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3583" ordinal="3455" sl="3583" sc="1" el="3583" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3584" ordinal="3456" sl="3584" sc="1" el="3584" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3586" ordinal="3457" sl="3586" sc="1" el="3586" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3587" ordinal="3458" sl="3587" sc="1" el="3587" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3588" ordinal="3459" sl="3588" sc="1" el="3588" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3589" ordinal="3460" sl="3589" sc="1" el="3589" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3590" ordinal="3461" sl="3590" sc="1" el="3590" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3591" ordinal="3462" sl="3591" sc="1" el="3591" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3592" ordinal="3463" sl="3592" sc="1" el="3592" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3593" ordinal="3464" sl="3593" sc="1" el="3593" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3594" ordinal="3465" sl="3594" sc="1" el="3594" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3595" ordinal="3466" sl="3595" sc="1" el="3595" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3596" ordinal="3467" sl="3596" sc="1" el="3596" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3597" ordinal="3468" sl="3597" sc="1" el="3597" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3598" ordinal="3469" sl="3598" sc="1" el="3598" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3599" ordinal="3470" sl="3599" sc="1" el="3599" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3600" ordinal="3471" sl="3600" sc="1" el="3600" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3601" ordinal="3472" sl="3601" sc="1" el="3601" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3602" ordinal="3473" sl="3602" sc="1" el="3602" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3603" ordinal="3474" sl="3603" sc="1" el="3603" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3605" ordinal="3475" sl="3605" sc="1" el="3605" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3606" ordinal="3476" sl="3606" sc="1" el="3606" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3607" ordinal="3477" sl="3607" sc="1" el="3607" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3608" ordinal="3478" sl="3608" sc="1" el="3608" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3609" ordinal="3479" sl="3609" sc="1" el="3609" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3610" ordinal="3480" sl="3610" sc="1" el="3610" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3611" ordinal="3481" sl="3611" sc="1" el="3611" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3612" ordinal="3482" sl="3612" sc="1" el="3612" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3613" ordinal="3483" sl="3613" sc="1" el="3613" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3614" ordinal="3484" sl="3614" sc="1" el="3614" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3615" ordinal="3485" sl="3615" sc="1" el="3615" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3616" ordinal="3486" sl="3616" sc="1" el="3616" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3617" ordinal="3487" sl="3617" sc="1" el="3617" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3618" ordinal="3488" sl="3618" sc="1" el="3618" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3619" ordinal="3489" sl="3619" sc="1" el="3619" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3620" ordinal="3490" sl="3620" sc="1" el="3620" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3621" ordinal="3491" sl="3621" sc="1" el="3621" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3622" ordinal="3492" sl="3622" sc="1" el="3622" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3624" ordinal="3493" sl="3624" sc="1" el="3624" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3625" ordinal="3494" sl="3625" sc="1" el="3625" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3626" ordinal="3495" sl="3626" sc="1" el="3626" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3627" ordinal="3496" sl="3627" sc="1" el="3627" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3628" ordinal="3497" sl="3628" sc="1" el="3628" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3629" ordinal="3498" sl="3629" sc="1" el="3629" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3630" ordinal="3499" sl="3630" sc="1" el="3630" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3631" ordinal="3500" sl="3631" sc="1" el="3631" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3632" ordinal="3501" sl="3632" sc="1" el="3632" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3633" ordinal="3502" sl="3633" sc="1" el="3633" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3635" ordinal="3503" sl="3635" sc="1" el="3635" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3636" ordinal="3504" sl="3636" sc="1" el="3636" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3637" ordinal="3505" sl="3637" sc="1" el="3637" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3638" ordinal="3506" sl="3638" sc="1" el="3638" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3639" ordinal="3507" sl="3639" sc="1" el="3639" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3640" ordinal="3508" sl="3640" sc="1" el="3640" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3641" ordinal="3509" sl="3641" sc="1" el="3641" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3642" ordinal="3510" sl="3642" sc="1" el="3642" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3643" ordinal="3511" sl="3643" sc="1" el="3643" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3644" ordinal="3512" sl="3644" sc="1" el="3644" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3645" ordinal="3513" sl="3645" sc="1" el="3645" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3646" ordinal="3514" sl="3646" sc="1" el="3646" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3647" ordinal="3515" sl="3647" sc="1" el="3647" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3648" ordinal="3516" sl="3648" sc="1" el="3648" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3649" ordinal="3517" sl="3649" sc="1" el="3649" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3650" ordinal="3518" sl="3650" sc="1" el="3650" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3652" ordinal="3519" sl="3652" sc="1" el="3652" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3653" ordinal="3520" sl="3653" sc="1" el="3653" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3654" ordinal="3521" sl="3654" sc="1" el="3654" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3655" ordinal="3522" sl="3655" sc="1" el="3655" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3656" ordinal="3523" sl="3656" sc="1" el="3656" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3657" ordinal="3524" sl="3657" sc="1" el="3657" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3658" ordinal="3525" sl="3658" sc="1" el="3658" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3659" ordinal="3526" sl="3659" sc="1" el="3659" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3660" ordinal="3527" sl="3660" sc="1" el="3660" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3661" ordinal="3528" sl="3661" sc="1" el="3661" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3662" ordinal="3529" sl="3662" sc="1" el="3662" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3663" ordinal="3530" sl="3663" sc="1" el="3663" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3664" ordinal="3531" sl="3664" sc="1" el="3664" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3665" ordinal="3532" sl="3665" sc="1" el="3665" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3666" ordinal="3533" sl="3666" sc="1" el="3666" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3667" ordinal="3534" sl="3667" sc="1" el="3667" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3668" ordinal="3535" sl="3668" sc="1" el="3668" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3669" ordinal="3536" sl="3669" sc="1" el="3669" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3671" ordinal="3537" sl="3671" sc="1" el="3671" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3672" ordinal="3538" sl="3672" sc="1" el="3672" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3673" ordinal="3539" sl="3673" sc="1" el="3673" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3674" ordinal="3540" sl="3674" sc="1" el="3674" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3675" ordinal="3541" sl="3675" sc="1" el="3675" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3676" ordinal="3542" sl="3676" sc="1" el="3676" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3678" ordinal="3543" sl="3678" sc="1" el="3678" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3679" ordinal="3544" sl="3679" sc="1" el="3679" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3680" ordinal="3545" sl="3680" sc="1" el="3680" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3681" ordinal="3546" sl="3681" sc="1" el="3681" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3683" ordinal="3547" sl="3683" sc="1" el="3683" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3684" ordinal="3548" sl="3684" sc="1" el="3684" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3685" ordinal="3549" sl="3685" sc="1" el="3685" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3686" ordinal="3550" sl="3686" sc="1" el="3686" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3688" ordinal="3551" sl="3688" sc="1" el="3688" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3689" ordinal="3552" sl="3689" sc="1" el="3689" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3690" ordinal="3553" sl="3690" sc="1" el="3690" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3691" ordinal="3554" sl="3691" sc="1" el="3691" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3692" ordinal="3555" sl="3692" sc="1" el="3692" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3693" ordinal="3556" sl="3693" sc="1" el="3693" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3695" ordinal="3557" sl="3695" sc="1" el="3695" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3696" ordinal="3558" sl="3696" sc="1" el="3696" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3697" ordinal="3559" sl="3697" sc="1" el="3697" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3698" ordinal="3560" sl="3698" sc="1" el="3698" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3699" ordinal="3561" sl="3699" sc="1" el="3699" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3700" ordinal="3562" sl="3700" sc="1" el="3700" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3701" ordinal="3563" sl="3701" sc="1" el="3701" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3702" ordinal="3564" sl="3702" sc="1" el="3702" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3703" ordinal="3565" sl="3703" sc="1" el="3703" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3704" ordinal="3566" sl="3704" sc="1" el="3704" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3705" ordinal="3567" sl="3705" sc="1" el="3705" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3706" ordinal="3568" sl="3706" sc="1" el="3706" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3707" ordinal="3569" sl="3707" sc="1" el="3707" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3708" ordinal="3570" sl="3708" sc="1" el="3708" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3709" ordinal="3571" sl="3709" sc="1" el="3709" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3710" ordinal="3572" sl="3710" sc="1" el="3710" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3711" ordinal="3573" sl="3711" sc="1" el="3711" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3712" ordinal="3574" sl="3712" sc="1" el="3712" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3713" ordinal="3575" sl="3713" sc="1" el="3713" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3714" ordinal="3576" sl="3714" sc="1" el="3714" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3715" ordinal="3577" sl="3715" sc="1" el="3715" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3716" ordinal="3578" sl="3716" sc="1" el="3716" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3717" ordinal="3579" sl="3717" sc="1" el="3717" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3718" ordinal="3580" sl="3718" sc="1" el="3718" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3719" ordinal="3581" sl="3719" sc="1" el="3719" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3720" ordinal="3582" sl="3720" sc="1" el="3720" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3721" ordinal="3583" sl="3721" sc="1" el="3721" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3722" ordinal="3584" sl="3722" sc="1" el="3722" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3723" ordinal="3585" sl="3723" sc="1" el="3723" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3724" ordinal="3586" sl="3724" sc="1" el="3724" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3725" ordinal="3587" sl="3725" sc="1" el="3725" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3726" ordinal="3588" sl="3726" sc="1" el="3726" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3727" ordinal="3589" sl="3727" sc="1" el="3727" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3728" ordinal="3590" sl="3728" sc="1" el="3728" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3729" ordinal="3591" sl="3729" sc="1" el="3729" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3730" ordinal="3592" sl="3730" sc="1" el="3730" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3731" ordinal="3593" sl="3731" sc="1" el="3731" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3732" ordinal="3594" sl="3732" sc="1" el="3732" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3734" ordinal="3595" sl="3734" sc="1" el="3734" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3735" ordinal="3596" sl="3735" sc="1" el="3735" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3736" ordinal="3597" sl="3736" sc="1" el="3736" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3737" ordinal="3598" sl="3737" sc="1" el="3737" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3738" ordinal="3599" sl="3738" sc="1" el="3738" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3739" ordinal="3600" sl="3739" sc="1" el="3739" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3740" ordinal="3601" sl="3740" sc="1" el="3740" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3741" ordinal="3602" sl="3741" sc="1" el="3741" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3743" ordinal="3603" sl="3743" sc="1" el="3743" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3744" ordinal="3604" sl="3744" sc="1" el="3744" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3745" ordinal="3605" sl="3745" sc="1" el="3745" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3746" ordinal="3606" sl="3746" sc="1" el="3746" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3748" ordinal="3607" sl="3748" sc="1" el="3748" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3749" ordinal="3608" sl="3749" sc="1" el="3749" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3750" ordinal="3609" sl="3750" sc="1" el="3750" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3751" ordinal="3610" sl="3751" sc="1" el="3751" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3752" ordinal="3611" sl="3752" sc="1" el="3752" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3753" ordinal="3612" sl="3753" sc="1" el="3753" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3754" ordinal="3613" sl="3754" sc="1" el="3754" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3755" ordinal="3614" sl="3755" sc="1" el="3755" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3756" ordinal="3615" sl="3756" sc="1" el="3756" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3757" ordinal="3616" sl="3757" sc="1" el="3757" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3758" ordinal="3617" sl="3758" sc="1" el="3758" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3759" ordinal="3618" sl="3759" sc="1" el="3759" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3760" ordinal="3619" sl="3760" sc="1" el="3760" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3761" ordinal="3620" sl="3761" sc="1" el="3761" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3762" ordinal="3621" sl="3762" sc="1" el="3762" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3763" ordinal="3622" sl="3763" sc="1" el="3763" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3764" ordinal="3623" sl="3764" sc="1" el="3764" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3765" ordinal="3624" sl="3765" sc="1" el="3765" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3767" ordinal="3625" sl="3767" sc="1" el="3767" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3768" ordinal="3626" sl="3768" sc="1" el="3768" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3769" ordinal="3627" sl="3769" sc="1" el="3769" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3770" ordinal="3628" sl="3770" sc="1" el="3770" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3771" ordinal="3629" sl="3771" sc="1" el="3771" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3772" ordinal="3630" sl="3772" sc="1" el="3772" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3773" ordinal="3631" sl="3773" sc="1" el="3773" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3774" ordinal="3632" sl="3774" sc="1" el="3774" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3775" ordinal="3633" sl="3775" sc="1" el="3775" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3776" ordinal="3634" sl="3776" sc="1" el="3776" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3778" ordinal="3635" sl="3778" sc="1" el="3778" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3779" ordinal="3636" sl="3779" sc="1" el="3779" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3780" ordinal="3637" sl="3780" sc="1" el="3780" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3781" ordinal="3638" sl="3781" sc="1" el="3781" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3782" ordinal="3639" sl="3782" sc="1" el="3782" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3783" ordinal="3640" sl="3783" sc="1" el="3783" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3784" ordinal="3641" sl="3784" sc="1" el="3784" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3785" ordinal="3642" sl="3785" sc="1" el="3785" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3786" ordinal="3643" sl="3786" sc="1" el="3786" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3787" ordinal="3644" sl="3787" sc="1" el="3787" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3788" ordinal="3645" sl="3788" sc="1" el="3788" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3789" ordinal="3646" sl="3789" sc="1" el="3789" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3790" ordinal="3647" sl="3790" sc="1" el="3790" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3791" ordinal="3648" sl="3791" sc="1" el="3791" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3792" ordinal="3649" sl="3792" sc="1" el="3792" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3793" ordinal="3650" sl="3793" sc="1" el="3793" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3794" ordinal="3651" sl="3794" sc="1" el="3794" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3795" ordinal="3652" sl="3795" sc="1" el="3795" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3796" ordinal="3653" sl="3796" sc="1" el="3796" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3797" ordinal="3654" sl="3797" sc="1" el="3797" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3798" ordinal="3655" sl="3798" sc="1" el="3798" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3799" ordinal="3656" sl="3799" sc="1" el="3799" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3801" ordinal="3657" sl="3801" sc="1" el="3801" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3802" ordinal="3658" sl="3802" sc="1" el="3802" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3803" ordinal="3659" sl="3803" sc="1" el="3803" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3804" ordinal="3660" sl="3804" sc="1" el="3804" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3805" ordinal="3661" sl="3805" sc="1" el="3805" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3806" ordinal="3662" sl="3806" sc="1" el="3806" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3807" ordinal="3663" sl="3807" sc="1" el="3807" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3808" ordinal="3664" sl="3808" sc="1" el="3808" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3810" ordinal="3665" sl="3810" sc="1" el="3810" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3811" ordinal="3666" sl="3811" sc="1" el="3811" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3812" ordinal="3667" sl="3812" sc="1" el="3812" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3813" ordinal="3668" sl="3813" sc="1" el="3813" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3814" ordinal="3669" sl="3814" sc="1" el="3814" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3815" ordinal="3670" sl="3815" sc="1" el="3815" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3817" ordinal="3671" sl="3817" sc="1" el="3817" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3818" ordinal="3672" sl="3818" sc="1" el="3818" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3819" ordinal="3673" sl="3819" sc="1" el="3819" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3820" ordinal="3674" sl="3820" sc="1" el="3820" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3821" ordinal="3675" sl="3821" sc="1" el="3821" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3822" ordinal="3676" sl="3822" sc="1" el="3822" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3823" ordinal="3677" sl="3823" sc="1" el="3823" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3824" ordinal="3678" sl="3824" sc="1" el="3824" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3825" ordinal="3679" sl="3825" sc="1" el="3825" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3826" ordinal="3680" sl="3826" sc="1" el="3826" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3827" ordinal="3681" sl="3827" sc="1" el="3827" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3828" ordinal="3682" sl="3828" sc="1" el="3828" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3829" ordinal="3683" sl="3829" sc="1" el="3829" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3830" ordinal="3684" sl="3830" sc="1" el="3830" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3832" ordinal="3685" sl="3832" sc="1" el="3832" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3833" ordinal="3686" sl="3833" sc="1" el="3833" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3834" ordinal="3687" sl="3834" sc="1" el="3834" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3835" ordinal="3688" sl="3835" sc="1" el="3835" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3837" ordinal="3689" sl="3837" sc="1" el="3837" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3838" ordinal="3690" sl="3838" sc="1" el="3838" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3839" ordinal="3691" sl="3839" sc="1" el="3839" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3840" ordinal="3692" sl="3840" sc="1" el="3840" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3841" ordinal="3693" sl="3841" sc="1" el="3841" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3842" ordinal="3694" sl="3842" sc="1" el="3842" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3843" ordinal="3695" sl="3843" sc="1" el="3843" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3844" ordinal="3696" sl="3844" sc="1" el="3844" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3846" ordinal="3697" sl="3846" sc="1" el="3846" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3847" ordinal="3698" sl="3847" sc="1" el="3847" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3848" ordinal="3699" sl="3848" sc="1" el="3848" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3849" ordinal="3700" sl="3849" sc="1" el="3849" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3851" ordinal="3701" sl="3851" sc="1" el="3851" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3852" ordinal="3702" sl="3852" sc="1" el="3852" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3853" ordinal="3703" sl="3853" sc="1" el="3853" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3854" ordinal="3704" sl="3854" sc="1" el="3854" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3856" ordinal="3705" sl="3856" sc="1" el="3856" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3857" ordinal="3706" sl="3857" sc="1" el="3857" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3858" ordinal="3707" sl="3858" sc="1" el="3858" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3859" ordinal="3708" sl="3859" sc="1" el="3859" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3860" ordinal="3709" sl="3860" sc="1" el="3860" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3861" ordinal="3710" sl="3861" sc="1" el="3861" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3862" ordinal="3711" sl="3862" sc="1" el="3862" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3863" ordinal="3712" sl="3863" sc="1" el="3863" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3865" ordinal="3713" sl="3865" sc="1" el="3865" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3866" ordinal="3714" sl="3866" sc="1" el="3866" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3867" ordinal="3715" sl="3867" sc="1" el="3867" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3868" ordinal="3716" sl="3868" sc="1" el="3868" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3870" ordinal="3717" sl="3870" sc="1" el="3870" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3871" ordinal="3718" sl="3871" sc="1" el="3871" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3872" ordinal="3719" sl="3872" sc="1" el="3872" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3873" ordinal="3720" sl="3873" sc="1" el="3873" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3874" ordinal="3721" sl="3874" sc="1" el="3874" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3875" ordinal="3722" sl="3875" sc="1" el="3875" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3877" ordinal="3723" sl="3877" sc="1" el="3877" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3878" ordinal="3724" sl="3878" sc="1" el="3878" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3879" ordinal="3725" sl="3879" sc="1" el="3879" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3880" ordinal="3726" sl="3880" sc="1" el="3880" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3881" ordinal="3727" sl="3881" sc="1" el="3881" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3882" ordinal="3728" sl="3882" sc="1" el="3882" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3883" ordinal="3729" sl="3883" sc="1" el="3883" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3884" ordinal="3730" sl="3884" sc="1" el="3884" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3885" ordinal="3731" sl="3885" sc="1" el="3885" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3886" ordinal="3732" sl="3886" sc="1" el="3886" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3887" ordinal="3733" sl="3887" sc="1" el="3887" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3888" ordinal="3734" sl="3888" sc="1" el="3888" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3890" ordinal="3735" sl="3890" sc="1" el="3890" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3891" ordinal="3736" sl="3891" sc="1" el="3891" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3892" ordinal="3737" sl="3892" sc="1" el="3892" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3893" ordinal="3738" sl="3893" sc="1" el="3893" ec="2" bec="0" bev="0" fileid="85" /> <SequencePoint vc="0" uspid="3895" ordinal="3739" sl="3895" sc="1" el="3895" ec="2" bec="0" bev="0" fileid="85" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="17" ec="1" el="3895" bec="0" bev="0" fileid="85" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3740" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Migrations.NosCoreContextModelSnapshot</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3740" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Migrations.NosCoreContextModelSnapshot::BuildModel(Microsoft.EntityFrameworkCore.ModelBuilder)</Name> <FileRef uid="86" /> <SequencePoints> <SequencePoint vc="0" uspid="12" ordinal="0" sl="12" sc="1" el="12" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="14" ordinal="1" sl="14" sc="1" el="14" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="15" ordinal="2" sl="15" sc="1" el="15" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="16" ordinal="3" sl="16" sc="1" el="16" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="17" ordinal="4" sl="17" sc="1" el="17" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="19" ordinal="5" sl="19" sc="1" el="19" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="20" ordinal="6" sl="20" sc="1" el="20" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="21" ordinal="7" sl="21" sc="1" el="21" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="22" ordinal="8" sl="22" sc="1" el="22" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="23" ordinal="9" sl="23" sc="1" el="23" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="24" ordinal="10" sl="24" sc="1" el="24" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="25" ordinal="11" sl="25" sc="1" el="25" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="26" ordinal="12" sl="26" sc="1" el="26" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="27" ordinal="13" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="28" ordinal="14" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="29" ordinal="15" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="30" ordinal="16" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="31" ordinal="17" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="32" ordinal="18" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="33" ordinal="19" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="34" ordinal="20" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="35" ordinal="21" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="36" ordinal="22" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="37" ordinal="23" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="38" ordinal="24" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="39" ordinal="25" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="40" ordinal="26" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="41" ordinal="27" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="42" ordinal="28" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="43" ordinal="29" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="44" ordinal="30" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="45" ordinal="31" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="46" ordinal="32" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="47" ordinal="33" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="48" ordinal="34" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="49" ordinal="35" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="50" ordinal="36" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="51" ordinal="37" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="52" ordinal="38" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="53" ordinal="39" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="54" ordinal="40" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="55" ordinal="41" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="56" ordinal="42" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="57" ordinal="43" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="58" ordinal="44" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="59" ordinal="45" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="60" ordinal="46" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="61" ordinal="47" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="62" ordinal="48" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="63" ordinal="49" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="64" ordinal="50" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="65" ordinal="51" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="66" ordinal="52" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="67" ordinal="53" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="68" ordinal="54" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="69" ordinal="55" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="70" ordinal="56" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="71" ordinal="57" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="72" ordinal="58" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="73" ordinal="59" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="74" ordinal="60" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="75" ordinal="61" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="76" ordinal="62" sl="76" sc="1" el="76" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="77" ordinal="63" sl="77" sc="1" el="77" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="78" ordinal="64" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="80" ordinal="65" sl="80" sc="1" el="80" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="81" ordinal="66" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="82" ordinal="67" sl="82" sc="1" el="82" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="83" ordinal="68" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="84" ordinal="69" sl="84" sc="1" el="84" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="85" ordinal="70" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="86" ordinal="71" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="87" ordinal="72" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="88" ordinal="73" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="89" ordinal="74" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="90" ordinal="75" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="91" ordinal="76" sl="91" sc="1" el="91" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="92" ordinal="77" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="93" ordinal="78" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="94" ordinal="79" sl="94" sc="1" el="94" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="95" ordinal="80" sl="95" sc="1" el="95" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="96" ordinal="81" sl="96" sc="1" el="96" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="98" ordinal="82" sl="98" sc="1" el="98" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="99" ordinal="83" sl="99" sc="1" el="99" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="100" ordinal="84" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="101" ordinal="85" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="102" ordinal="86" sl="102" sc="1" el="102" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="103" ordinal="87" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="104" ordinal="88" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="105" ordinal="89" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="106" ordinal="90" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="107" ordinal="91" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="108" ordinal="92" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="109" ordinal="93" sl="109" sc="1" el="109" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="110" ordinal="94" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="111" ordinal="95" sl="111" sc="1" el="111" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="112" ordinal="96" sl="112" sc="1" el="112" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="113" ordinal="97" sl="113" sc="1" el="113" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="114" ordinal="98" sl="114" sc="1" el="114" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="115" ordinal="99" sl="115" sc="1" el="115" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="116" ordinal="100" sl="116" sc="1" el="116" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="117" ordinal="101" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="119" ordinal="102" sl="119" sc="1" el="119" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="120" ordinal="103" sl="120" sc="1" el="120" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="121" ordinal="104" sl="121" sc="1" el="121" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="122" ordinal="105" sl="122" sc="1" el="122" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="123" ordinal="106" sl="123" sc="1" el="123" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="124" ordinal="107" sl="124" sc="1" el="124" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="125" ordinal="108" sl="125" sc="1" el="125" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="126" ordinal="109" sl="126" sc="1" el="126" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="127" ordinal="110" sl="127" sc="1" el="127" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="128" ordinal="111" sl="128" sc="1" el="128" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="129" ordinal="112" sl="129" sc="1" el="129" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="130" ordinal="113" sl="130" sc="1" el="130" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="131" ordinal="114" sl="131" sc="1" el="131" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="132" ordinal="115" sl="132" sc="1" el="132" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="133" ordinal="116" sl="133" sc="1" el="133" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="134" ordinal="117" sl="134" sc="1" el="134" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="135" ordinal="118" sl="135" sc="1" el="135" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="136" ordinal="119" sl="136" sc="1" el="136" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="137" ordinal="120" sl="137" sc="1" el="137" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="138" ordinal="121" sl="138" sc="1" el="138" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="139" ordinal="122" sl="139" sc="1" el="139" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="140" ordinal="123" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="141" ordinal="124" sl="141" sc="1" el="141" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="142" ordinal="125" sl="142" sc="1" el="142" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="143" ordinal="126" sl="143" sc="1" el="143" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="144" ordinal="127" sl="144" sc="1" el="144" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="145" ordinal="128" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="146" ordinal="129" sl="146" sc="1" el="146" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="147" ordinal="130" sl="147" sc="1" el="147" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="148" ordinal="131" sl="148" sc="1" el="148" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="149" ordinal="132" sl="149" sc="1" el="149" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="151" ordinal="133" sl="151" sc="1" el="151" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="152" ordinal="134" sl="152" sc="1" el="152" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="153" ordinal="135" sl="153" sc="1" el="153" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="154" ordinal="136" sl="154" sc="1" el="154" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="155" ordinal="137" sl="155" sc="1" el="155" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="156" ordinal="138" sl="156" sc="1" el="156" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="157" ordinal="139" sl="157" sc="1" el="157" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="158" ordinal="140" sl="158" sc="1" el="158" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="159" ordinal="141" sl="159" sc="1" el="159" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="160" ordinal="142" sl="160" sc="1" el="160" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="161" ordinal="143" sl="161" sc="1" el="161" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="162" ordinal="144" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="163" ordinal="145" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="164" ordinal="146" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="165" ordinal="147" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="166" ordinal="148" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="167" ordinal="149" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="168" ordinal="150" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="169" ordinal="151" sl="169" sc="1" el="169" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="170" ordinal="152" sl="170" sc="1" el="170" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="171" ordinal="153" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="172" ordinal="154" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="173" ordinal="155" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="174" ordinal="156" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="175" ordinal="157" sl="175" sc="1" el="175" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="176" ordinal="158" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="177" ordinal="159" sl="177" sc="1" el="177" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="178" ordinal="160" sl="178" sc="1" el="178" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="179" ordinal="161" sl="179" sc="1" el="179" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="180" ordinal="162" sl="180" sc="1" el="180" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="181" ordinal="163" sl="181" sc="1" el="181" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="182" ordinal="164" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="183" ordinal="165" sl="183" sc="1" el="183" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="184" ordinal="166" sl="184" sc="1" el="184" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="185" ordinal="167" sl="185" sc="1" el="185" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="186" ordinal="168" sl="186" sc="1" el="186" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="187" ordinal="169" sl="187" sc="1" el="187" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="188" ordinal="170" sl="188" sc="1" el="188" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="189" ordinal="171" sl="189" sc="1" el="189" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="190" ordinal="172" sl="190" sc="1" el="190" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="191" ordinal="173" sl="191" sc="1" el="191" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="192" ordinal="174" sl="192" sc="1" el="192" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="193" ordinal="175" sl="193" sc="1" el="193" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="194" ordinal="176" sl="194" sc="1" el="194" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="195" ordinal="177" sl="195" sc="1" el="195" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="196" ordinal="178" sl="196" sc="1" el="196" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="197" ordinal="179" sl="197" sc="1" el="197" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="198" ordinal="180" sl="198" sc="1" el="198" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="199" ordinal="181" sl="199" sc="1" el="199" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="200" ordinal="182" sl="200" sc="1" el="200" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="201" ordinal="183" sl="201" sc="1" el="201" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="202" ordinal="184" sl="202" sc="1" el="202" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="203" ordinal="185" sl="203" sc="1" el="203" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="204" ordinal="186" sl="204" sc="1" el="204" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="205" ordinal="187" sl="205" sc="1" el="205" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="207" ordinal="188" sl="207" sc="1" el="207" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="208" ordinal="189" sl="208" sc="1" el="208" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="209" ordinal="190" sl="209" sc="1" el="209" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="210" ordinal="191" sl="210" sc="1" el="210" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="211" ordinal="192" sl="211" sc="1" el="211" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="212" ordinal="193" sl="212" sc="1" el="212" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="213" ordinal="194" sl="213" sc="1" el="213" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="214" ordinal="195" sl="214" sc="1" el="214" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="215" ordinal="196" sl="215" sc="1" el="215" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="216" ordinal="197" sl="216" sc="1" el="216" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="217" ordinal="198" sl="217" sc="1" el="217" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="218" ordinal="199" sl="218" sc="1" el="218" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="219" ordinal="200" sl="219" sc="1" el="219" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="220" ordinal="201" sl="220" sc="1" el="220" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="221" ordinal="202" sl="221" sc="1" el="221" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="222" ordinal="203" sl="222" sc="1" el="222" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="223" ordinal="204" sl="223" sc="1" el="223" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="224" ordinal="205" sl="224" sc="1" el="224" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="225" ordinal="206" sl="225" sc="1" el="225" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="226" ordinal="207" sl="226" sc="1" el="226" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="227" ordinal="208" sl="227" sc="1" el="227" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="228" ordinal="209" sl="228" sc="1" el="228" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="229" ordinal="210" sl="229" sc="1" el="229" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="230" ordinal="211" sl="230" sc="1" el="230" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="231" ordinal="212" sl="231" sc="1" el="231" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="232" ordinal="213" sl="232" sc="1" el="232" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="233" ordinal="214" sl="233" sc="1" el="233" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="234" ordinal="215" sl="234" sc="1" el="234" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="235" ordinal="216" sl="235" sc="1" el="235" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="236" ordinal="217" sl="236" sc="1" el="236" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="237" ordinal="218" sl="237" sc="1" el="237" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="238" ordinal="219" sl="238" sc="1" el="238" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="239" ordinal="220" sl="239" sc="1" el="239" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="240" ordinal="221" sl="240" sc="1" el="240" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="241" ordinal="222" sl="241" sc="1" el="241" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="242" ordinal="223" sl="242" sc="1" el="242" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="243" ordinal="224" sl="243" sc="1" el="243" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="244" ordinal="225" sl="244" sc="1" el="244" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="245" ordinal="226" sl="245" sc="1" el="245" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="247" ordinal="227" sl="247" sc="1" el="247" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="248" ordinal="228" sl="248" sc="1" el="248" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="249" ordinal="229" sl="249" sc="1" el="249" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="250" ordinal="230" sl="250" sc="1" el="250" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="251" ordinal="231" sl="251" sc="1" el="251" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="252" ordinal="232" sl="252" sc="1" el="252" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="253" ordinal="233" sl="253" sc="1" el="253" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="254" ordinal="234" sl="254" sc="1" el="254" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="255" ordinal="235" sl="255" sc="1" el="255" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="256" ordinal="236" sl="256" sc="1" el="256" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="257" ordinal="237" sl="257" sc="1" el="257" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="258" ordinal="238" sl="258" sc="1" el="258" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="259" ordinal="239" sl="259" sc="1" el="259" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="260" ordinal="240" sl="260" sc="1" el="260" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="261" ordinal="241" sl="261" sc="1" el="261" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="262" ordinal="242" sl="262" sc="1" el="262" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="263" ordinal="243" sl="263" sc="1" el="263" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="264" ordinal="244" sl="264" sc="1" el="264" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="265" ordinal="245" sl="265" sc="1" el="265" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="266" ordinal="246" sl="266" sc="1" el="266" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="267" ordinal="247" sl="267" sc="1" el="267" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="268" ordinal="248" sl="268" sc="1" el="268" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="269" ordinal="249" sl="269" sc="1" el="269" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="270" ordinal="250" sl="270" sc="1" el="270" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="271" ordinal="251" sl="271" sc="1" el="271" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="272" ordinal="252" sl="272" sc="1" el="272" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="273" ordinal="253" sl="273" sc="1" el="273" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="274" ordinal="254" sl="274" sc="1" el="274" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="275" ordinal="255" sl="275" sc="1" el="275" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="276" ordinal="256" sl="276" sc="1" el="276" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="277" ordinal="257" sl="277" sc="1" el="277" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="278" ordinal="258" sl="278" sc="1" el="278" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="279" ordinal="259" sl="279" sc="1" el="279" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="280" ordinal="260" sl="280" sc="1" el="280" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="281" ordinal="261" sl="281" sc="1" el="281" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="282" ordinal="262" sl="282" sc="1" el="282" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="283" ordinal="263" sl="283" sc="1" el="283" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="284" ordinal="264" sl="284" sc="1" el="284" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="286" ordinal="265" sl="286" sc="1" el="286" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="287" ordinal="266" sl="287" sc="1" el="287" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="288" ordinal="267" sl="288" sc="1" el="288" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="289" ordinal="268" sl="289" sc="1" el="289" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="290" ordinal="269" sl="290" sc="1" el="290" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="291" ordinal="270" sl="291" sc="1" el="291" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="292" ordinal="271" sl="292" sc="1" el="292" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="293" ordinal="272" sl="293" sc="1" el="293" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="294" ordinal="273" sl="294" sc="1" el="294" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="295" ordinal="274" sl="295" sc="1" el="295" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="296" ordinal="275" sl="296" sc="1" el="296" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="297" ordinal="276" sl="297" sc="1" el="297" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="298" ordinal="277" sl="298" sc="1" el="298" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="299" ordinal="278" sl="299" sc="1" el="299" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="300" ordinal="279" sl="300" sc="1" el="300" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="301" ordinal="280" sl="301" sc="1" el="301" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="302" ordinal="281" sl="302" sc="1" el="302" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="303" ordinal="282" sl="303" sc="1" el="303" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="304" ordinal="283" sl="304" sc="1" el="304" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="305" ordinal="284" sl="305" sc="1" el="305" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="306" ordinal="285" sl="306" sc="1" el="306" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="307" ordinal="286" sl="307" sc="1" el="307" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="308" ordinal="287" sl="308" sc="1" el="308" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="309" ordinal="288" sl="309" sc="1" el="309" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="310" ordinal="289" sl="310" sc="1" el="310" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="311" ordinal="290" sl="311" sc="1" el="311" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="312" ordinal="291" sl="312" sc="1" el="312" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="313" ordinal="292" sl="313" sc="1" el="313" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="314" ordinal="293" sl="314" sc="1" el="314" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="315" ordinal="294" sl="315" sc="1" el="315" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="316" ordinal="295" sl="316" sc="1" el="316" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="317" ordinal="296" sl="317" sc="1" el="317" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="318" ordinal="297" sl="318" sc="1" el="318" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="319" ordinal="298" sl="319" sc="1" el="319" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="320" ordinal="299" sl="320" sc="1" el="320" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="321" ordinal="300" sl="321" sc="1" el="321" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="322" ordinal="301" sl="322" sc="1" el="322" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="323" ordinal="302" sl="323" sc="1" el="323" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="324" ordinal="303" sl="324" sc="1" el="324" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="325" ordinal="304" sl="325" sc="1" el="325" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="326" ordinal="305" sl="326" sc="1" el="326" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="327" ordinal="306" sl="327" sc="1" el="327" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="328" ordinal="307" sl="328" sc="1" el="328" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="329" ordinal="308" sl="329" sc="1" el="329" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="330" ordinal="309" sl="330" sc="1" el="330" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="331" ordinal="310" sl="331" sc="1" el="331" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="332" ordinal="311" sl="332" sc="1" el="332" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="333" ordinal="312" sl="333" sc="1" el="333" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="334" ordinal="313" sl="334" sc="1" el="334" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="335" ordinal="314" sl="335" sc="1" el="335" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="336" ordinal="315" sl="336" sc="1" el="336" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="337" ordinal="316" sl="337" sc="1" el="337" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="338" ordinal="317" sl="338" sc="1" el="338" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="339" ordinal="318" sl="339" sc="1" el="339" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="340" ordinal="319" sl="340" sc="1" el="340" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="341" ordinal="320" sl="341" sc="1" el="341" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="342" ordinal="321" sl="342" sc="1" el="342" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="343" ordinal="322" sl="343" sc="1" el="343" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="344" ordinal="323" sl="344" sc="1" el="344" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="345" ordinal="324" sl="345" sc="1" el="345" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="346" ordinal="325" sl="346" sc="1" el="346" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="347" ordinal="326" sl="347" sc="1" el="347" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="348" ordinal="327" sl="348" sc="1" el="348" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="349" ordinal="328" sl="349" sc="1" el="349" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="350" ordinal="329" sl="350" sc="1" el="350" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="351" ordinal="330" sl="351" sc="1" el="351" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="352" ordinal="331" sl="352" sc="1" el="352" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="353" ordinal="332" sl="353" sc="1" el="353" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="354" ordinal="333" sl="354" sc="1" el="354" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="355" ordinal="334" sl="355" sc="1" el="355" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="356" ordinal="335" sl="356" sc="1" el="356" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="357" ordinal="336" sl="357" sc="1" el="357" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="358" ordinal="337" sl="358" sc="1" el="358" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="359" ordinal="338" sl="359" sc="1" el="359" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="360" ordinal="339" sl="360" sc="1" el="360" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="361" ordinal="340" sl="361" sc="1" el="361" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="362" ordinal="341" sl="362" sc="1" el="362" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="363" ordinal="342" sl="363" sc="1" el="363" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="364" ordinal="343" sl="364" sc="1" el="364" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="365" ordinal="344" sl="365" sc="1" el="365" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="366" ordinal="345" sl="366" sc="1" el="366" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="367" ordinal="346" sl="367" sc="1" el="367" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="368" ordinal="347" sl="368" sc="1" el="368" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="369" ordinal="348" sl="369" sc="1" el="369" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="370" ordinal="349" sl="370" sc="1" el="370" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="371" ordinal="350" sl="371" sc="1" el="371" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="372" ordinal="351" sl="372" sc="1" el="372" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="373" ordinal="352" sl="373" sc="1" el="373" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="374" ordinal="353" sl="374" sc="1" el="374" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="375" ordinal="354" sl="375" sc="1" el="375" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="376" ordinal="355" sl="376" sc="1" el="376" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="377" ordinal="356" sl="377" sc="1" el="377" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="378" ordinal="357" sl="378" sc="1" el="378" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="379" ordinal="358" sl="379" sc="1" el="379" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="380" ordinal="359" sl="380" sc="1" el="380" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="381" ordinal="360" sl="381" sc="1" el="381" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="382" ordinal="361" sl="382" sc="1" el="382" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="383" ordinal="362" sl="383" sc="1" el="383" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="384" ordinal="363" sl="384" sc="1" el="384" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="385" ordinal="364" sl="385" sc="1" el="385" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="386" ordinal="365" sl="386" sc="1" el="386" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="387" ordinal="366" sl="387" sc="1" el="387" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="388" ordinal="367" sl="388" sc="1" el="388" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="389" ordinal="368" sl="389" sc="1" el="389" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="390" ordinal="369" sl="390" sc="1" el="390" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="391" ordinal="370" sl="391" sc="1" el="391" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="392" ordinal="371" sl="392" sc="1" el="392" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="393" ordinal="372" sl="393" sc="1" el="393" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="394" ordinal="373" sl="394" sc="1" el="394" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="395" ordinal="374" sl="395" sc="1" el="395" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="396" ordinal="375" sl="396" sc="1" el="396" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="397" ordinal="376" sl="397" sc="1" el="397" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="398" ordinal="377" sl="398" sc="1" el="398" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="399" ordinal="378" sl="399" sc="1" el="399" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="400" ordinal="379" sl="400" sc="1" el="400" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="401" ordinal="380" sl="401" sc="1" el="401" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="402" ordinal="381" sl="402" sc="1" el="402" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="403" ordinal="382" sl="403" sc="1" el="403" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="404" ordinal="383" sl="404" sc="1" el="404" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="405" ordinal="384" sl="405" sc="1" el="405" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="406" ordinal="385" sl="406" sc="1" el="406" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="407" ordinal="386" sl="407" sc="1" el="407" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="408" ordinal="387" sl="408" sc="1" el="408" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="409" ordinal="388" sl="409" sc="1" el="409" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="410" ordinal="389" sl="410" sc="1" el="410" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="411" ordinal="390" sl="411" sc="1" el="411" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="412" ordinal="391" sl="412" sc="1" el="412" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="413" ordinal="392" sl="413" sc="1" el="413" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="414" ordinal="393" sl="414" sc="1" el="414" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="415" ordinal="394" sl="415" sc="1" el="415" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="416" ordinal="395" sl="416" sc="1" el="416" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="417" ordinal="396" sl="417" sc="1" el="417" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="418" ordinal="397" sl="418" sc="1" el="418" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="419" ordinal="398" sl="419" sc="1" el="419" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="420" ordinal="399" sl="420" sc="1" el="420" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="421" ordinal="400" sl="421" sc="1" el="421" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="422" ordinal="401" sl="422" sc="1" el="422" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="423" ordinal="402" sl="423" sc="1" el="423" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="424" ordinal="403" sl="424" sc="1" el="424" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="425" ordinal="404" sl="425" sc="1" el="425" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="426" ordinal="405" sl="426" sc="1" el="426" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="427" ordinal="406" sl="427" sc="1" el="427" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="428" ordinal="407" sl="428" sc="1" el="428" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="429" ordinal="408" sl="429" sc="1" el="429" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="430" ordinal="409" sl="430" sc="1" el="430" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="431" ordinal="410" sl="431" sc="1" el="431" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="432" ordinal="411" sl="432" sc="1" el="432" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="433" ordinal="412" sl="433" sc="1" el="433" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="434" ordinal="413" sl="434" sc="1" el="434" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="435" ordinal="414" sl="435" sc="1" el="435" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="436" ordinal="415" sl="436" sc="1" el="436" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="437" ordinal="416" sl="437" sc="1" el="437" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="438" ordinal="417" sl="438" sc="1" el="438" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="439" ordinal="418" sl="439" sc="1" el="439" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="440" ordinal="419" sl="440" sc="1" el="440" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="441" ordinal="420" sl="441" sc="1" el="441" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="442" ordinal="421" sl="442" sc="1" el="442" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="443" ordinal="422" sl="443" sc="1" el="443" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="444" ordinal="423" sl="444" sc="1" el="444" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="445" ordinal="424" sl="445" sc="1" el="445" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="446" ordinal="425" sl="446" sc="1" el="446" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="447" ordinal="426" sl="447" sc="1" el="447" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="448" ordinal="427" sl="448" sc="1" el="448" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="449" ordinal="428" sl="449" sc="1" el="449" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="450" ordinal="429" sl="450" sc="1" el="450" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="451" ordinal="430" sl="451" sc="1" el="451" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="452" ordinal="431" sl="452" sc="1" el="452" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="453" ordinal="432" sl="453" sc="1" el="453" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="454" ordinal="433" sl="454" sc="1" el="454" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="455" ordinal="434" sl="455" sc="1" el="455" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="456" ordinal="435" sl="456" sc="1" el="456" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="457" ordinal="436" sl="457" sc="1" el="457" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="458" ordinal="437" sl="458" sc="1" el="458" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="459" ordinal="438" sl="459" sc="1" el="459" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="460" ordinal="439" sl="460" sc="1" el="460" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="461" ordinal="440" sl="461" sc="1" el="461" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="462" ordinal="441" sl="462" sc="1" el="462" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="463" ordinal="442" sl="463" sc="1" el="463" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="464" ordinal="443" sl="464" sc="1" el="464" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="465" ordinal="444" sl="465" sc="1" el="465" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="466" ordinal="445" sl="466" sc="1" el="466" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="467" ordinal="446" sl="467" sc="1" el="467" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="468" ordinal="447" sl="468" sc="1" el="468" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="469" ordinal="448" sl="469" sc="1" el="469" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="471" ordinal="449" sl="471" sc="1" el="471" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="472" ordinal="450" sl="472" sc="1" el="472" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="473" ordinal="451" sl="473" sc="1" el="473" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="474" ordinal="452" sl="474" sc="1" el="474" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="475" ordinal="453" sl="475" sc="1" el="475" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="476" ordinal="454" sl="476" sc="1" el="476" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="477" ordinal="455" sl="477" sc="1" el="477" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="478" ordinal="456" sl="478" sc="1" el="478" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="479" ordinal="457" sl="479" sc="1" el="479" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="480" ordinal="458" sl="480" sc="1" el="480" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="481" ordinal="459" sl="481" sc="1" el="481" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="482" ordinal="460" sl="482" sc="1" el="482" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="483" ordinal="461" sl="483" sc="1" el="483" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="484" ordinal="462" sl="484" sc="1" el="484" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="485" ordinal="463" sl="485" sc="1" el="485" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="486" ordinal="464" sl="486" sc="1" el="486" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="487" ordinal="465" sl="487" sc="1" el="487" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="488" ordinal="466" sl="488" sc="1" el="488" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="489" ordinal="467" sl="489" sc="1" el="489" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="491" ordinal="468" sl="491" sc="1" el="491" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="492" ordinal="469" sl="492" sc="1" el="492" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="493" ordinal="470" sl="493" sc="1" el="493" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="494" ordinal="471" sl="494" sc="1" el="494" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="495" ordinal="472" sl="495" sc="1" el="495" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="496" ordinal="473" sl="496" sc="1" el="496" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="497" ordinal="474" sl="497" sc="1" el="497" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="498" ordinal="475" sl="498" sc="1" el="498" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="499" ordinal="476" sl="499" sc="1" el="499" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="500" ordinal="477" sl="500" sc="1" el="500" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="501" ordinal="478" sl="501" sc="1" el="501" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="502" ordinal="479" sl="502" sc="1" el="502" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="503" ordinal="480" sl="503" sc="1" el="503" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="504" ordinal="481" sl="504" sc="1" el="504" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="505" ordinal="482" sl="505" sc="1" el="505" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="506" ordinal="483" sl="506" sc="1" el="506" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="507" ordinal="484" sl="507" sc="1" el="507" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="508" ordinal="485" sl="508" sc="1" el="508" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="509" ordinal="486" sl="509" sc="1" el="509" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="510" ordinal="487" sl="510" sc="1" el="510" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="511" ordinal="488" sl="511" sc="1" el="511" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="512" ordinal="489" sl="512" sc="1" el="512" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="514" ordinal="490" sl="514" sc="1" el="514" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="515" ordinal="491" sl="515" sc="1" el="515" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="516" ordinal="492" sl="516" sc="1" el="516" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="517" ordinal="493" sl="517" sc="1" el="517" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="518" ordinal="494" sl="518" sc="1" el="518" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="519" ordinal="495" sl="519" sc="1" el="519" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="520" ordinal="496" sl="520" sc="1" el="520" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="521" ordinal="497" sl="521" sc="1" el="521" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="522" ordinal="498" sl="522" sc="1" el="522" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="523" ordinal="499" sl="523" sc="1" el="523" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="524" ordinal="500" sl="524" sc="1" el="524" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="525" ordinal="501" sl="525" sc="1" el="525" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="526" ordinal="502" sl="526" sc="1" el="526" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="527" ordinal="503" sl="527" sc="1" el="527" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="528" ordinal="504" sl="528" sc="1" el="528" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="529" ordinal="505" sl="529" sc="1" el="529" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="530" ordinal="506" sl="530" sc="1" el="530" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="531" ordinal="507" sl="531" sc="1" el="531" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="532" ordinal="508" sl="532" sc="1" el="532" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="533" ordinal="509" sl="533" sc="1" el="533" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="534" ordinal="510" sl="534" sc="1" el="534" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="535" ordinal="511" sl="535" sc="1" el="535" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="536" ordinal="512" sl="536" sc="1" el="536" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="538" ordinal="513" sl="538" sc="1" el="538" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="539" ordinal="514" sl="539" sc="1" el="539" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="540" ordinal="515" sl="540" sc="1" el="540" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="541" ordinal="516" sl="541" sc="1" el="541" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="542" ordinal="517" sl="542" sc="1" el="542" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="543" ordinal="518" sl="543" sc="1" el="543" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="544" ordinal="519" sl="544" sc="1" el="544" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="545" ordinal="520" sl="545" sc="1" el="545" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="546" ordinal="521" sl="546" sc="1" el="546" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="547" ordinal="522" sl="547" sc="1" el="547" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="548" ordinal="523" sl="548" sc="1" el="548" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="549" ordinal="524" sl="549" sc="1" el="549" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="550" ordinal="525" sl="550" sc="1" el="550" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="551" ordinal="526" sl="551" sc="1" el="551" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="552" ordinal="527" sl="552" sc="1" el="552" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="553" ordinal="528" sl="553" sc="1" el="553" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="554" ordinal="529" sl="554" sc="1" el="554" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="555" ordinal="530" sl="555" sc="1" el="555" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="556" ordinal="531" sl="556" sc="1" el="556" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="558" ordinal="532" sl="558" sc="1" el="558" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="559" ordinal="533" sl="559" sc="1" el="559" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="560" ordinal="534" sl="560" sc="1" el="560" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="561" ordinal="535" sl="561" sc="1" el="561" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="562" ordinal="536" sl="562" sc="1" el="562" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="563" ordinal="537" sl="563" sc="1" el="563" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="564" ordinal="538" sl="564" sc="1" el="564" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="565" ordinal="539" sl="565" sc="1" el="565" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="566" ordinal="540" sl="566" sc="1" el="566" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="567" ordinal="541" sl="567" sc="1" el="567" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="568" ordinal="542" sl="568" sc="1" el="568" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="569" ordinal="543" sl="569" sc="1" el="569" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="570" ordinal="544" sl="570" sc="1" el="570" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="571" ordinal="545" sl="571" sc="1" el="571" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="572" ordinal="546" sl="572" sc="1" el="572" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="573" ordinal="547" sl="573" sc="1" el="573" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="574" ordinal="548" sl="574" sc="1" el="574" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="575" ordinal="549" sl="575" sc="1" el="575" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="576" ordinal="550" sl="576" sc="1" el="576" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="577" ordinal="551" sl="577" sc="1" el="577" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="578" ordinal="552" sl="578" sc="1" el="578" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="579" ordinal="553" sl="579" sc="1" el="579" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="580" ordinal="554" sl="580" sc="1" el="580" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="581" ordinal="555" sl="581" sc="1" el="581" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="582" ordinal="556" sl="582" sc="1" el="582" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="584" ordinal="557" sl="584" sc="1" el="584" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="585" ordinal="558" sl="585" sc="1" el="585" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="586" ordinal="559" sl="586" sc="1" el="586" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="587" ordinal="560" sl="587" sc="1" el="587" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="588" ordinal="561" sl="588" sc="1" el="588" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="589" ordinal="562" sl="589" sc="1" el="589" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="590" ordinal="563" sl="590" sc="1" el="590" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="591" ordinal="564" sl="591" sc="1" el="591" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="592" ordinal="565" sl="592" sc="1" el="592" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="593" ordinal="566" sl="593" sc="1" el="593" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="594" ordinal="567" sl="594" sc="1" el="594" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="595" ordinal="568" sl="595" sc="1" el="595" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="596" ordinal="569" sl="596" sc="1" el="596" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="597" ordinal="570" sl="597" sc="1" el="597" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="598" ordinal="571" sl="598" sc="1" el="598" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="599" ordinal="572" sl="599" sc="1" el="599" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="600" ordinal="573" sl="600" sc="1" el="600" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="601" ordinal="574" sl="601" sc="1" el="601" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="602" ordinal="575" sl="602" sc="1" el="602" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="603" ordinal="576" sl="603" sc="1" el="603" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="604" ordinal="577" sl="604" sc="1" el="604" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="605" ordinal="578" sl="605" sc="1" el="605" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="606" ordinal="579" sl="606" sc="1" el="606" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="607" ordinal="580" sl="607" sc="1" el="607" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="608" ordinal="581" sl="608" sc="1" el="608" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="609" ordinal="582" sl="609" sc="1" el="609" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="610" ordinal="583" sl="610" sc="1" el="610" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="611" ordinal="584" sl="611" sc="1" el="611" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="612" ordinal="585" sl="612" sc="1" el="612" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="613" ordinal="586" sl="613" sc="1" el="613" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="614" ordinal="587" sl="614" sc="1" el="614" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="615" ordinal="588" sl="615" sc="1" el="615" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="617" ordinal="589" sl="617" sc="1" el="617" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="618" ordinal="590" sl="618" sc="1" el="618" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="619" ordinal="591" sl="619" sc="1" el="619" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="620" ordinal="592" sl="620" sc="1" el="620" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="621" ordinal="593" sl="621" sc="1" el="621" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="622" ordinal="594" sl="622" sc="1" el="622" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="623" ordinal="595" sl="623" sc="1" el="623" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="624" ordinal="596" sl="624" sc="1" el="624" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="625" ordinal="597" sl="625" sc="1" el="625" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="626" ordinal="598" sl="626" sc="1" el="626" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="627" ordinal="599" sl="627" sc="1" el="627" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="628" ordinal="600" sl="628" sc="1" el="628" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="629" ordinal="601" sl="629" sc="1" el="629" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="630" ordinal="602" sl="630" sc="1" el="630" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="631" ordinal="603" sl="631" sc="1" el="631" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="632" ordinal="604" sl="632" sc="1" el="632" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="633" ordinal="605" sl="633" sc="1" el="633" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="634" ordinal="606" sl="634" sc="1" el="634" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="635" ordinal="607" sl="635" sc="1" el="635" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="636" ordinal="608" sl="636" sc="1" el="636" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="637" ordinal="609" sl="637" sc="1" el="637" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="638" ordinal="610" sl="638" sc="1" el="638" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="639" ordinal="611" sl="639" sc="1" el="639" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="641" ordinal="612" sl="641" sc="1" el="641" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="642" ordinal="613" sl="642" sc="1" el="642" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="643" ordinal="614" sl="643" sc="1" el="643" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="644" ordinal="615" sl="644" sc="1" el="644" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="645" ordinal="616" sl="645" sc="1" el="645" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="646" ordinal="617" sl="646" sc="1" el="646" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="647" ordinal="618" sl="647" sc="1" el="647" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="648" ordinal="619" sl="648" sc="1" el="648" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="649" ordinal="620" sl="649" sc="1" el="649" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="650" ordinal="621" sl="650" sc="1" el="650" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="651" ordinal="622" sl="651" sc="1" el="651" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="652" ordinal="623" sl="652" sc="1" el="652" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="653" ordinal="624" sl="653" sc="1" el="653" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="654" ordinal="625" sl="654" sc="1" el="654" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="655" ordinal="626" sl="655" sc="1" el="655" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="656" ordinal="627" sl="656" sc="1" el="656" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="657" ordinal="628" sl="657" sc="1" el="657" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="658" ordinal="629" sl="658" sc="1" el="658" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="659" ordinal="630" sl="659" sc="1" el="659" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="660" ordinal="631" sl="660" sc="1" el="660" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="661" ordinal="632" sl="661" sc="1" el="661" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="662" ordinal="633" sl="662" sc="1" el="662" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="663" ordinal="634" sl="663" sc="1" el="663" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="664" ordinal="635" sl="664" sc="1" el="664" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="665" ordinal="636" sl="665" sc="1" el="665" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="666" ordinal="637" sl="666" sc="1" el="666" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="667" ordinal="638" sl="667" sc="1" el="667" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="668" ordinal="639" sl="668" sc="1" el="668" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="669" ordinal="640" sl="669" sc="1" el="669" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="670" ordinal="641" sl="670" sc="1" el="670" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="671" ordinal="642" sl="671" sc="1" el="671" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="672" ordinal="643" sl="672" sc="1" el="672" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="673" ordinal="644" sl="673" sc="1" el="673" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="674" ordinal="645" sl="674" sc="1" el="674" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="675" ordinal="646" sl="675" sc="1" el="675" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="676" ordinal="647" sl="676" sc="1" el="676" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="677" ordinal="648" sl="677" sc="1" el="677" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="678" ordinal="649" sl="678" sc="1" el="678" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="679" ordinal="650" sl="679" sc="1" el="679" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="680" ordinal="651" sl="680" sc="1" el="680" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="681" ordinal="652" sl="681" sc="1" el="681" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="682" ordinal="653" sl="682" sc="1" el="682" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="683" ordinal="654" sl="683" sc="1" el="683" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="684" ordinal="655" sl="684" sc="1" el="684" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="685" ordinal="656" sl="685" sc="1" el="685" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="686" ordinal="657" sl="686" sc="1" el="686" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="687" ordinal="658" sl="687" sc="1" el="687" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="688" ordinal="659" sl="688" sc="1" el="688" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="689" ordinal="660" sl="689" sc="1" el="689" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="690" ordinal="661" sl="690" sc="1" el="690" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="691" ordinal="662" sl="691" sc="1" el="691" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="692" ordinal="663" sl="692" sc="1" el="692" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="693" ordinal="664" sl="693" sc="1" el="693" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="694" ordinal="665" sl="694" sc="1" el="694" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="695" ordinal="666" sl="695" sc="1" el="695" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="696" ordinal="667" sl="696" sc="1" el="696" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="697" ordinal="668" sl="697" sc="1" el="697" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="698" ordinal="669" sl="698" sc="1" el="698" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="699" ordinal="670" sl="699" sc="1" el="699" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="701" ordinal="671" sl="701" sc="1" el="701" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="702" ordinal="672" sl="702" sc="1" el="702" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="703" ordinal="673" sl="703" sc="1" el="703" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="704" ordinal="674" sl="704" sc="1" el="704" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="705" ordinal="675" sl="705" sc="1" el="705" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="706" ordinal="676" sl="706" sc="1" el="706" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="707" ordinal="677" sl="707" sc="1" el="707" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="708" ordinal="678" sl="708" sc="1" el="708" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="709" ordinal="679" sl="709" sc="1" el="709" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="710" ordinal="680" sl="710" sc="1" el="710" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="711" ordinal="681" sl="711" sc="1" el="711" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="712" ordinal="682" sl="712" sc="1" el="712" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="713" ordinal="683" sl="713" sc="1" el="713" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="714" ordinal="684" sl="714" sc="1" el="714" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="715" ordinal="685" sl="715" sc="1" el="715" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="716" ordinal="686" sl="716" sc="1" el="716" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="717" ordinal="687" sl="717" sc="1" el="717" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="718" ordinal="688" sl="718" sc="1" el="718" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="719" ordinal="689" sl="719" sc="1" el="719" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="720" ordinal="690" sl="720" sc="1" el="720" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="721" ordinal="691" sl="721" sc="1" el="721" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="722" ordinal="692" sl="722" sc="1" el="722" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="723" ordinal="693" sl="723" sc="1" el="723" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="724" ordinal="694" sl="724" sc="1" el="724" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="725" ordinal="695" sl="725" sc="1" el="725" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="726" ordinal="696" sl="726" sc="1" el="726" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="727" ordinal="697" sl="727" sc="1" el="727" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="728" ordinal="698" sl="728" sc="1" el="728" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="729" ordinal="699" sl="729" sc="1" el="729" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="730" ordinal="700" sl="730" sc="1" el="730" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="731" ordinal="701" sl="731" sc="1" el="731" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="732" ordinal="702" sl="732" sc="1" el="732" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="733" ordinal="703" sl="733" sc="1" el="733" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="734" ordinal="704" sl="734" sc="1" el="734" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="736" ordinal="705" sl="736" sc="1" el="736" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="737" ordinal="706" sl="737" sc="1" el="737" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="738" ordinal="707" sl="738" sc="1" el="738" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="739" ordinal="708" sl="739" sc="1" el="739" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="740" ordinal="709" sl="740" sc="1" el="740" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="741" ordinal="710" sl="741" sc="1" el="741" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="742" ordinal="711" sl="742" sc="1" el="742" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="743" ordinal="712" sl="743" sc="1" el="743" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="744" ordinal="713" sl="744" sc="1" el="744" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="745" ordinal="714" sl="745" sc="1" el="745" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="746" ordinal="715" sl="746" sc="1" el="746" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="747" ordinal="716" sl="747" sc="1" el="747" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="748" ordinal="717" sl="748" sc="1" el="748" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="749" ordinal="718" sl="749" sc="1" el="749" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="750" ordinal="719" sl="750" sc="1" el="750" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="751" ordinal="720" sl="751" sc="1" el="751" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="752" ordinal="721" sl="752" sc="1" el="752" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="753" ordinal="722" sl="753" sc="1" el="753" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="754" ordinal="723" sl="754" sc="1" el="754" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="755" ordinal="724" sl="755" sc="1" el="755" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="756" ordinal="725" sl="756" sc="1" el="756" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="757" ordinal="726" sl="757" sc="1" el="757" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="758" ordinal="727" sl="758" sc="1" el="758" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="759" ordinal="728" sl="759" sc="1" el="759" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="760" ordinal="729" sl="760" sc="1" el="760" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="761" ordinal="730" sl="761" sc="1" el="761" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="763" ordinal="731" sl="763" sc="1" el="763" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="764" ordinal="732" sl="764" sc="1" el="764" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="765" ordinal="733" sl="765" sc="1" el="765" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="766" ordinal="734" sl="766" sc="1" el="766" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="767" ordinal="735" sl="767" sc="1" el="767" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="768" ordinal="736" sl="768" sc="1" el="768" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="769" ordinal="737" sl="769" sc="1" el="769" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="770" ordinal="738" sl="770" sc="1" el="770" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="771" ordinal="739" sl="771" sc="1" el="771" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="772" ordinal="740" sl="772" sc="1" el="772" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="773" ordinal="741" sl="773" sc="1" el="773" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="774" ordinal="742" sl="774" sc="1" el="774" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="775" ordinal="743" sl="775" sc="1" el="775" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="776" ordinal="744" sl="776" sc="1" el="776" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="777" ordinal="745" sl="777" sc="1" el="777" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="778" ordinal="746" sl="778" sc="1" el="778" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="779" ordinal="747" sl="779" sc="1" el="779" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="780" ordinal="748" sl="780" sc="1" el="780" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="781" ordinal="749" sl="781" sc="1" el="781" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="782" ordinal="750" sl="782" sc="1" el="782" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="783" ordinal="751" sl="783" sc="1" el="783" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="784" ordinal="752" sl="784" sc="1" el="784" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="785" ordinal="753" sl="785" sc="1" el="785" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="786" ordinal="754" sl="786" sc="1" el="786" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="787" ordinal="755" sl="787" sc="1" el="787" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="789" ordinal="756" sl="789" sc="1" el="789" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="790" ordinal="757" sl="790" sc="1" el="790" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="791" ordinal="758" sl="791" sc="1" el="791" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="792" ordinal="759" sl="792" sc="1" el="792" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="793" ordinal="760" sl="793" sc="1" el="793" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="794" ordinal="761" sl="794" sc="1" el="794" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="795" ordinal="762" sl="795" sc="1" el="795" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="796" ordinal="763" sl="796" sc="1" el="796" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="797" ordinal="764" sl="797" sc="1" el="797" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="798" ordinal="765" sl="798" sc="1" el="798" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="799" ordinal="766" sl="799" sc="1" el="799" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="800" ordinal="767" sl="800" sc="1" el="800" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="801" ordinal="768" sl="801" sc="1" el="801" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="802" ordinal="769" sl="802" sc="1" el="802" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="803" ordinal="770" sl="803" sc="1" el="803" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="804" ordinal="771" sl="804" sc="1" el="804" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="805" ordinal="772" sl="805" sc="1" el="805" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="806" ordinal="773" sl="806" sc="1" el="806" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="807" ordinal="774" sl="807" sc="1" el="807" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="808" ordinal="775" sl="808" sc="1" el="808" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="809" ordinal="776" sl="809" sc="1" el="809" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="810" ordinal="777" sl="810" sc="1" el="810" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="811" ordinal="778" sl="811" sc="1" el="811" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="812" ordinal="779" sl="812" sc="1" el="812" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="813" ordinal="780" sl="813" sc="1" el="813" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="815" ordinal="781" sl="815" sc="1" el="815" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="816" ordinal="782" sl="816" sc="1" el="816" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="817" ordinal="783" sl="817" sc="1" el="817" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="818" ordinal="784" sl="818" sc="1" el="818" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="819" ordinal="785" sl="819" sc="1" el="819" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="820" ordinal="786" sl="820" sc="1" el="820" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="821" ordinal="787" sl="821" sc="1" el="821" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="822" ordinal="788" sl="822" sc="1" el="822" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="823" ordinal="789" sl="823" sc="1" el="823" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="824" ordinal="790" sl="824" sc="1" el="824" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="825" ordinal="791" sl="825" sc="1" el="825" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="826" ordinal="792" sl="826" sc="1" el="826" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="827" ordinal="793" sl="827" sc="1" el="827" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="828" ordinal="794" sl="828" sc="1" el="828" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="829" ordinal="795" sl="829" sc="1" el="829" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="830" ordinal="796" sl="830" sc="1" el="830" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="831" ordinal="797" sl="831" sc="1" el="831" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="832" ordinal="798" sl="832" sc="1" el="832" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="833" ordinal="799" sl="833" sc="1" el="833" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="834" ordinal="800" sl="834" sc="1" el="834" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="835" ordinal="801" sl="835" sc="1" el="835" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="836" ordinal="802" sl="836" sc="1" el="836" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="837" ordinal="803" sl="837" sc="1" el="837" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="838" ordinal="804" sl="838" sc="1" el="838" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="839" ordinal="805" sl="839" sc="1" el="839" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="841" ordinal="806" sl="841" sc="1" el="841" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="842" ordinal="807" sl="842" sc="1" el="842" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="843" ordinal="808" sl="843" sc="1" el="843" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="844" ordinal="809" sl="844" sc="1" el="844" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="845" ordinal="810" sl="845" sc="1" el="845" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="846" ordinal="811" sl="846" sc="1" el="846" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="847" ordinal="812" sl="847" sc="1" el="847" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="848" ordinal="813" sl="848" sc="1" el="848" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="849" ordinal="814" sl="849" sc="1" el="849" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="850" ordinal="815" sl="850" sc="1" el="850" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="851" ordinal="816" sl="851" sc="1" el="851" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="852" ordinal="817" sl="852" sc="1" el="852" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="853" ordinal="818" sl="853" sc="1" el="853" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="854" ordinal="819" sl="854" sc="1" el="854" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="855" ordinal="820" sl="855" sc="1" el="855" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="856" ordinal="821" sl="856" sc="1" el="856" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="857" ordinal="822" sl="857" sc="1" el="857" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="858" ordinal="823" sl="858" sc="1" el="858" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="859" ordinal="824" sl="859" sc="1" el="859" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="860" ordinal="825" sl="860" sc="1" el="860" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="861" ordinal="826" sl="861" sc="1" el="861" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="862" ordinal="827" sl="862" sc="1" el="862" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="863" ordinal="828" sl="863" sc="1" el="863" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="864" ordinal="829" sl="864" sc="1" el="864" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="865" ordinal="830" sl="865" sc="1" el="865" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="867" ordinal="831" sl="867" sc="1" el="867" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="868" ordinal="832" sl="868" sc="1" el="868" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="869" ordinal="833" sl="869" sc="1" el="869" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="870" ordinal="834" sl="870" sc="1" el="870" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="871" ordinal="835" sl="871" sc="1" el="871" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="872" ordinal="836" sl="872" sc="1" el="872" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="873" ordinal="837" sl="873" sc="1" el="873" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="874" ordinal="838" sl="874" sc="1" el="874" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="875" ordinal="839" sl="875" sc="1" el="875" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="876" ordinal="840" sl="876" sc="1" el="876" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="877" ordinal="841" sl="877" sc="1" el="877" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="878" ordinal="842" sl="878" sc="1" el="878" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="879" ordinal="843" sl="879" sc="1" el="879" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="880" ordinal="844" sl="880" sc="1" el="880" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="881" ordinal="845" sl="881" sc="1" el="881" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="882" ordinal="846" sl="882" sc="1" el="882" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="883" ordinal="847" sl="883" sc="1" el="883" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="884" ordinal="848" sl="884" sc="1" el="884" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="885" ordinal="849" sl="885" sc="1" el="885" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="886" ordinal="850" sl="886" sc="1" el="886" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="887" ordinal="851" sl="887" sc="1" el="887" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="888" ordinal="852" sl="888" sc="1" el="888" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="889" ordinal="853" sl="889" sc="1" el="889" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="890" ordinal="854" sl="890" sc="1" el="890" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="891" ordinal="855" sl="891" sc="1" el="891" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="893" ordinal="856" sl="893" sc="1" el="893" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="894" ordinal="857" sl="894" sc="1" el="894" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="895" ordinal="858" sl="895" sc="1" el="895" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="896" ordinal="859" sl="896" sc="1" el="896" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="897" ordinal="860" sl="897" sc="1" el="897" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="898" ordinal="861" sl="898" sc="1" el="898" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="899" ordinal="862" sl="899" sc="1" el="899" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="900" ordinal="863" sl="900" sc="1" el="900" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="901" ordinal="864" sl="901" sc="1" el="901" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="902" ordinal="865" sl="902" sc="1" el="902" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="903" ordinal="866" sl="903" sc="1" el="903" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="904" ordinal="867" sl="904" sc="1" el="904" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="905" ordinal="868" sl="905" sc="1" el="905" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="906" ordinal="869" sl="906" sc="1" el="906" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="907" ordinal="870" sl="907" sc="1" el="907" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="908" ordinal="871" sl="908" sc="1" el="908" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="909" ordinal="872" sl="909" sc="1" el="909" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="910" ordinal="873" sl="910" sc="1" el="910" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="911" ordinal="874" sl="911" sc="1" el="911" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="912" ordinal="875" sl="912" sc="1" el="912" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="913" ordinal="876" sl="913" sc="1" el="913" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="914" ordinal="877" sl="914" sc="1" el="914" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="915" ordinal="878" sl="915" sc="1" el="915" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="916" ordinal="879" sl="916" sc="1" el="916" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="917" ordinal="880" sl="917" sc="1" el="917" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="919" ordinal="881" sl="919" sc="1" el="919" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="920" ordinal="882" sl="920" sc="1" el="920" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="921" ordinal="883" sl="921" sc="1" el="921" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="922" ordinal="884" sl="922" sc="1" el="922" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="923" ordinal="885" sl="923" sc="1" el="923" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="924" ordinal="886" sl="924" sc="1" el="924" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="925" ordinal="887" sl="925" sc="1" el="925" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="926" ordinal="888" sl="926" sc="1" el="926" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="927" ordinal="889" sl="927" sc="1" el="927" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="928" ordinal="890" sl="928" sc="1" el="928" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="929" ordinal="891" sl="929" sc="1" el="929" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="930" ordinal="892" sl="930" sc="1" el="930" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="931" ordinal="893" sl="931" sc="1" el="931" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="932" ordinal="894" sl="932" sc="1" el="932" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="933" ordinal="895" sl="933" sc="1" el="933" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="934" ordinal="896" sl="934" sc="1" el="934" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="935" ordinal="897" sl="935" sc="1" el="935" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="936" ordinal="898" sl="936" sc="1" el="936" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="937" ordinal="899" sl="937" sc="1" el="937" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="938" ordinal="900" sl="938" sc="1" el="938" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="939" ordinal="901" sl="939" sc="1" el="939" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="940" ordinal="902" sl="940" sc="1" el="940" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="941" ordinal="903" sl="941" sc="1" el="941" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="942" ordinal="904" sl="942" sc="1" el="942" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="943" ordinal="905" sl="943" sc="1" el="943" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="945" ordinal="906" sl="945" sc="1" el="945" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="946" ordinal="907" sl="946" sc="1" el="946" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="947" ordinal="908" sl="947" sc="1" el="947" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="948" ordinal="909" sl="948" sc="1" el="948" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="949" ordinal="910" sl="949" sc="1" el="949" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="950" ordinal="911" sl="950" sc="1" el="950" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="951" ordinal="912" sl="951" sc="1" el="951" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="952" ordinal="913" sl="952" sc="1" el="952" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="953" ordinal="914" sl="953" sc="1" el="953" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="954" ordinal="915" sl="954" sc="1" el="954" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="955" ordinal="916" sl="955" sc="1" el="955" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="956" ordinal="917" sl="956" sc="1" el="956" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="957" ordinal="918" sl="957" sc="1" el="957" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="958" ordinal="919" sl="958" sc="1" el="958" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="959" ordinal="920" sl="959" sc="1" el="959" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="960" ordinal="921" sl="960" sc="1" el="960" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="961" ordinal="922" sl="961" sc="1" el="961" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="962" ordinal="923" sl="962" sc="1" el="962" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="963" ordinal="924" sl="963" sc="1" el="963" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="964" ordinal="925" sl="964" sc="1" el="964" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="965" ordinal="926" sl="965" sc="1" el="965" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="966" ordinal="927" sl="966" sc="1" el="966" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="967" ordinal="928" sl="967" sc="1" el="967" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="968" ordinal="929" sl="968" sc="1" el="968" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="969" ordinal="930" sl="969" sc="1" el="969" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="971" ordinal="931" sl="971" sc="1" el="971" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="972" ordinal="932" sl="972" sc="1" el="972" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="973" ordinal="933" sl="973" sc="1" el="973" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="974" ordinal="934" sl="974" sc="1" el="974" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="975" ordinal="935" sl="975" sc="1" el="975" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="976" ordinal="936" sl="976" sc="1" el="976" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="977" ordinal="937" sl="977" sc="1" el="977" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="978" ordinal="938" sl="978" sc="1" el="978" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="979" ordinal="939" sl="979" sc="1" el="979" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="980" ordinal="940" sl="980" sc="1" el="980" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="981" ordinal="941" sl="981" sc="1" el="981" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="982" ordinal="942" sl="982" sc="1" el="982" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="983" ordinal="943" sl="983" sc="1" el="983" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="984" ordinal="944" sl="984" sc="1" el="984" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="985" ordinal="945" sl="985" sc="1" el="985" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="986" ordinal="946" sl="986" sc="1" el="986" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="987" ordinal="947" sl="987" sc="1" el="987" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="988" ordinal="948" sl="988" sc="1" el="988" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="989" ordinal="949" sl="989" sc="1" el="989" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="990" ordinal="950" sl="990" sc="1" el="990" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="991" ordinal="951" sl="991" sc="1" el="991" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="992" ordinal="952" sl="992" sc="1" el="992" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="993" ordinal="953" sl="993" sc="1" el="993" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="994" ordinal="954" sl="994" sc="1" el="994" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="995" ordinal="955" sl="995" sc="1" el="995" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="997" ordinal="956" sl="997" sc="1" el="997" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="998" ordinal="957" sl="998" sc="1" el="998" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="999" ordinal="958" sl="999" sc="1" el="999" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1000" ordinal="959" sl="1000" sc="1" el="1000" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1001" ordinal="960" sl="1001" sc="1" el="1001" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1002" ordinal="961" sl="1002" sc="1" el="1002" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1003" ordinal="962" sl="1003" sc="1" el="1003" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1004" ordinal="963" sl="1004" sc="1" el="1004" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1005" ordinal="964" sl="1005" sc="1" el="1005" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1006" ordinal="965" sl="1006" sc="1" el="1006" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1007" ordinal="966" sl="1007" sc="1" el="1007" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1008" ordinal="967" sl="1008" sc="1" el="1008" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1009" ordinal="968" sl="1009" sc="1" el="1009" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1010" ordinal="969" sl="1010" sc="1" el="1010" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1011" ordinal="970" sl="1011" sc="1" el="1011" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1012" ordinal="971" sl="1012" sc="1" el="1012" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1013" ordinal="972" sl="1013" sc="1" el="1013" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1014" ordinal="973" sl="1014" sc="1" el="1014" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1015" ordinal="974" sl="1015" sc="1" el="1015" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1016" ordinal="975" sl="1016" sc="1" el="1016" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1017" ordinal="976" sl="1017" sc="1" el="1017" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1018" ordinal="977" sl="1018" sc="1" el="1018" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1019" ordinal="978" sl="1019" sc="1" el="1019" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1020" ordinal="979" sl="1020" sc="1" el="1020" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1021" ordinal="980" sl="1021" sc="1" el="1021" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1023" ordinal="981" sl="1023" sc="1" el="1023" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1024" ordinal="982" sl="1024" sc="1" el="1024" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1025" ordinal="983" sl="1025" sc="1" el="1025" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1026" ordinal="984" sl="1026" sc="1" el="1026" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1027" ordinal="985" sl="1027" sc="1" el="1027" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1028" ordinal="986" sl="1028" sc="1" el="1028" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1029" ordinal="987" sl="1029" sc="1" el="1029" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1030" ordinal="988" sl="1030" sc="1" el="1030" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1031" ordinal="989" sl="1031" sc="1" el="1031" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1032" ordinal="990" sl="1032" sc="1" el="1032" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1033" ordinal="991" sl="1033" sc="1" el="1033" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1034" ordinal="992" sl="1034" sc="1" el="1034" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1035" ordinal="993" sl="1035" sc="1" el="1035" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1036" ordinal="994" sl="1036" sc="1" el="1036" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1037" ordinal="995" sl="1037" sc="1" el="1037" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1038" ordinal="996" sl="1038" sc="1" el="1038" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1039" ordinal="997" sl="1039" sc="1" el="1039" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1040" ordinal="998" sl="1040" sc="1" el="1040" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1041" ordinal="999" sl="1041" sc="1" el="1041" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1042" ordinal="1000" sl="1042" sc="1" el="1042" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1043" ordinal="1001" sl="1043" sc="1" el="1043" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1044" ordinal="1002" sl="1044" sc="1" el="1044" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1045" ordinal="1003" sl="1045" sc="1" el="1045" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1046" ordinal="1004" sl="1046" sc="1" el="1046" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1047" ordinal="1005" sl="1047" sc="1" el="1047" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1048" ordinal="1006" sl="1048" sc="1" el="1048" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1050" ordinal="1007" sl="1050" sc="1" el="1050" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1051" ordinal="1008" sl="1051" sc="1" el="1051" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1052" ordinal="1009" sl="1052" sc="1" el="1052" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1053" ordinal="1010" sl="1053" sc="1" el="1053" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1054" ordinal="1011" sl="1054" sc="1" el="1054" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1055" ordinal="1012" sl="1055" sc="1" el="1055" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1056" ordinal="1013" sl="1056" sc="1" el="1056" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1057" ordinal="1014" sl="1057" sc="1" el="1057" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1058" ordinal="1015" sl="1058" sc="1" el="1058" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1059" ordinal="1016" sl="1059" sc="1" el="1059" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1060" ordinal="1017" sl="1060" sc="1" el="1060" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1061" ordinal="1018" sl="1061" sc="1" el="1061" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1062" ordinal="1019" sl="1062" sc="1" el="1062" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1063" ordinal="1020" sl="1063" sc="1" el="1063" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1064" ordinal="1021" sl="1064" sc="1" el="1064" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1065" ordinal="1022" sl="1065" sc="1" el="1065" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1066" ordinal="1023" sl="1066" sc="1" el="1066" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1067" ordinal="1024" sl="1067" sc="1" el="1067" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1068" ordinal="1025" sl="1068" sc="1" el="1068" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1069" ordinal="1026" sl="1069" sc="1" el="1069" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1070" ordinal="1027" sl="1070" sc="1" el="1070" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1071" ordinal="1028" sl="1071" sc="1" el="1071" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1072" ordinal="1029" sl="1072" sc="1" el="1072" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1073" ordinal="1030" sl="1073" sc="1" el="1073" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1074" ordinal="1031" sl="1074" sc="1" el="1074" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1075" ordinal="1032" sl="1075" sc="1" el="1075" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1076" ordinal="1033" sl="1076" sc="1" el="1076" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1077" ordinal="1034" sl="1077" sc="1" el="1077" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1078" ordinal="1035" sl="1078" sc="1" el="1078" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1079" ordinal="1036" sl="1079" sc="1" el="1079" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1080" ordinal="1037" sl="1080" sc="1" el="1080" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1081" ordinal="1038" sl="1081" sc="1" el="1081" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1082" ordinal="1039" sl="1082" sc="1" el="1082" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1083" ordinal="1040" sl="1083" sc="1" el="1083" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1084" ordinal="1041" sl="1084" sc="1" el="1084" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1085" ordinal="1042" sl="1085" sc="1" el="1085" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1086" ordinal="1043" sl="1086" sc="1" el="1086" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1087" ordinal="1044" sl="1087" sc="1" el="1087" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1088" ordinal="1045" sl="1088" sc="1" el="1088" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1089" ordinal="1046" sl="1089" sc="1" el="1089" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1090" ordinal="1047" sl="1090" sc="1" el="1090" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1091" ordinal="1048" sl="1091" sc="1" el="1091" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1092" ordinal="1049" sl="1092" sc="1" el="1092" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1093" ordinal="1050" sl="1093" sc="1" el="1093" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1094" ordinal="1051" sl="1094" sc="1" el="1094" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1095" ordinal="1052" sl="1095" sc="1" el="1095" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1096" ordinal="1053" sl="1096" sc="1" el="1096" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1097" ordinal="1054" sl="1097" sc="1" el="1097" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1098" ordinal="1055" sl="1098" sc="1" el="1098" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1099" ordinal="1056" sl="1099" sc="1" el="1099" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1100" ordinal="1057" sl="1100" sc="1" el="1100" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1101" ordinal="1058" sl="1101" sc="1" el="1101" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1102" ordinal="1059" sl="1102" sc="1" el="1102" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1103" ordinal="1060" sl="1103" sc="1" el="1103" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1104" ordinal="1061" sl="1104" sc="1" el="1104" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1105" ordinal="1062" sl="1105" sc="1" el="1105" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1106" ordinal="1063" sl="1106" sc="1" el="1106" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1107" ordinal="1064" sl="1107" sc="1" el="1107" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1108" ordinal="1065" sl="1108" sc="1" el="1108" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1109" ordinal="1066" sl="1109" sc="1" el="1109" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1110" ordinal="1067" sl="1110" sc="1" el="1110" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1111" ordinal="1068" sl="1111" sc="1" el="1111" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1112" ordinal="1069" sl="1112" sc="1" el="1112" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1113" ordinal="1070" sl="1113" sc="1" el="1113" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1114" ordinal="1071" sl="1114" sc="1" el="1114" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1115" ordinal="1072" sl="1115" sc="1" el="1115" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1116" ordinal="1073" sl="1116" sc="1" el="1116" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1117" ordinal="1074" sl="1117" sc="1" el="1117" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1118" ordinal="1075" sl="1118" sc="1" el="1118" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1119" ordinal="1076" sl="1119" sc="1" el="1119" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1120" ordinal="1077" sl="1120" sc="1" el="1120" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1121" ordinal="1078" sl="1121" sc="1" el="1121" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1122" ordinal="1079" sl="1122" sc="1" el="1122" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1123" ordinal="1080" sl="1123" sc="1" el="1123" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1124" ordinal="1081" sl="1124" sc="1" el="1124" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1125" ordinal="1082" sl="1125" sc="1" el="1125" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1126" ordinal="1083" sl="1126" sc="1" el="1126" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1127" ordinal="1084" sl="1127" sc="1" el="1127" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1128" ordinal="1085" sl="1128" sc="1" el="1128" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1129" ordinal="1086" sl="1129" sc="1" el="1129" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1130" ordinal="1087" sl="1130" sc="1" el="1130" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1131" ordinal="1088" sl="1131" sc="1" el="1131" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1132" ordinal="1089" sl="1132" sc="1" el="1132" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1133" ordinal="1090" sl="1133" sc="1" el="1133" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1134" ordinal="1091" sl="1134" sc="1" el="1134" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1135" ordinal="1092" sl="1135" sc="1" el="1135" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1136" ordinal="1093" sl="1136" sc="1" el="1136" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1137" ordinal="1094" sl="1137" sc="1" el="1137" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1138" ordinal="1095" sl="1138" sc="1" el="1138" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1139" ordinal="1096" sl="1139" sc="1" el="1139" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1140" ordinal="1097" sl="1140" sc="1" el="1140" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1141" ordinal="1098" sl="1141" sc="1" el="1141" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1142" ordinal="1099" sl="1142" sc="1" el="1142" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1143" ordinal="1100" sl="1143" sc="1" el="1143" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1144" ordinal="1101" sl="1144" sc="1" el="1144" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1145" ordinal="1102" sl="1145" sc="1" el="1145" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1146" ordinal="1103" sl="1146" sc="1" el="1146" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1147" ordinal="1104" sl="1147" sc="1" el="1147" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1148" ordinal="1105" sl="1148" sc="1" el="1148" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1149" ordinal="1106" sl="1149" sc="1" el="1149" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1150" ordinal="1107" sl="1150" sc="1" el="1150" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1151" ordinal="1108" sl="1151" sc="1" el="1151" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1152" ordinal="1109" sl="1152" sc="1" el="1152" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1153" ordinal="1110" sl="1153" sc="1" el="1153" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1154" ordinal="1111" sl="1154" sc="1" el="1154" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1155" ordinal="1112" sl="1155" sc="1" el="1155" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1156" ordinal="1113" sl="1156" sc="1" el="1156" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1157" ordinal="1114" sl="1157" sc="1" el="1157" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1158" ordinal="1115" sl="1158" sc="1" el="1158" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1159" ordinal="1116" sl="1159" sc="1" el="1159" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1160" ordinal="1117" sl="1160" sc="1" el="1160" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1161" ordinal="1118" sl="1161" sc="1" el="1161" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1162" ordinal="1119" sl="1162" sc="1" el="1162" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1163" ordinal="1120" sl="1163" sc="1" el="1163" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1164" ordinal="1121" sl="1164" sc="1" el="1164" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1165" ordinal="1122" sl="1165" sc="1" el="1165" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1166" ordinal="1123" sl="1166" sc="1" el="1166" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1167" ordinal="1124" sl="1167" sc="1" el="1167" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1168" ordinal="1125" sl="1168" sc="1" el="1168" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1169" ordinal="1126" sl="1169" sc="1" el="1169" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1170" ordinal="1127" sl="1170" sc="1" el="1170" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1171" ordinal="1128" sl="1171" sc="1" el="1171" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1172" ordinal="1129" sl="1172" sc="1" el="1172" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1173" ordinal="1130" sl="1173" sc="1" el="1173" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1174" ordinal="1131" sl="1174" sc="1" el="1174" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1175" ordinal="1132" sl="1175" sc="1" el="1175" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1176" ordinal="1133" sl="1176" sc="1" el="1176" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1177" ordinal="1134" sl="1177" sc="1" el="1177" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1178" ordinal="1135" sl="1178" sc="1" el="1178" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1179" ordinal="1136" sl="1179" sc="1" el="1179" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1180" ordinal="1137" sl="1180" sc="1" el="1180" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1181" ordinal="1138" sl="1181" sc="1" el="1181" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1182" ordinal="1139" sl="1182" sc="1" el="1182" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1183" ordinal="1140" sl="1183" sc="1" el="1183" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1184" ordinal="1141" sl="1184" sc="1" el="1184" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1185" ordinal="1142" sl="1185" sc="1" el="1185" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1186" ordinal="1143" sl="1186" sc="1" el="1186" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1187" ordinal="1144" sl="1187" sc="1" el="1187" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1188" ordinal="1145" sl="1188" sc="1" el="1188" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1189" ordinal="1146" sl="1189" sc="1" el="1189" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1190" ordinal="1147" sl="1190" sc="1" el="1190" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1191" ordinal="1148" sl="1191" sc="1" el="1191" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1192" ordinal="1149" sl="1192" sc="1" el="1192" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1193" ordinal="1150" sl="1193" sc="1" el="1193" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1194" ordinal="1151" sl="1194" sc="1" el="1194" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1195" ordinal="1152" sl="1195" sc="1" el="1195" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1196" ordinal="1153" sl="1196" sc="1" el="1196" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1197" ordinal="1154" sl="1197" sc="1" el="1197" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1198" ordinal="1155" sl="1198" sc="1" el="1198" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1199" ordinal="1156" sl="1199" sc="1" el="1199" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1200" ordinal="1157" sl="1200" sc="1" el="1200" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1201" ordinal="1158" sl="1201" sc="1" el="1201" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1202" ordinal="1159" sl="1202" sc="1" el="1202" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1203" ordinal="1160" sl="1203" sc="1" el="1203" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1204" ordinal="1161" sl="1204" sc="1" el="1204" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1205" ordinal="1162" sl="1205" sc="1" el="1205" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1206" ordinal="1163" sl="1206" sc="1" el="1206" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1207" ordinal="1164" sl="1207" sc="1" el="1207" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1208" ordinal="1165" sl="1208" sc="1" el="1208" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1209" ordinal="1166" sl="1209" sc="1" el="1209" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1210" ordinal="1167" sl="1210" sc="1" el="1210" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1211" ordinal="1168" sl="1211" sc="1" el="1211" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1212" ordinal="1169" sl="1212" sc="1" el="1212" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1213" ordinal="1170" sl="1213" sc="1" el="1213" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1214" ordinal="1171" sl="1214" sc="1" el="1214" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1215" ordinal="1172" sl="1215" sc="1" el="1215" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1216" ordinal="1173" sl="1216" sc="1" el="1216" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1217" ordinal="1174" sl="1217" sc="1" el="1217" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1218" ordinal="1175" sl="1218" sc="1" el="1218" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1219" ordinal="1176" sl="1219" sc="1" el="1219" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1220" ordinal="1177" sl="1220" sc="1" el="1220" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1221" ordinal="1178" sl="1221" sc="1" el="1221" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1222" ordinal="1179" sl="1222" sc="1" el="1222" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1223" ordinal="1180" sl="1223" sc="1" el="1223" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1224" ordinal="1181" sl="1224" sc="1" el="1224" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1225" ordinal="1182" sl="1225" sc="1" el="1225" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1226" ordinal="1183" sl="1226" sc="1" el="1226" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1227" ordinal="1184" sl="1227" sc="1" el="1227" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1228" ordinal="1185" sl="1228" sc="1" el="1228" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1229" ordinal="1186" sl="1229" sc="1" el="1229" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1230" ordinal="1187" sl="1230" sc="1" el="1230" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1231" ordinal="1188" sl="1231" sc="1" el="1231" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1232" ordinal="1189" sl="1232" sc="1" el="1232" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1233" ordinal="1190" sl="1233" sc="1" el="1233" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1234" ordinal="1191" sl="1234" sc="1" el="1234" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1235" ordinal="1192" sl="1235" sc="1" el="1235" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1236" ordinal="1193" sl="1236" sc="1" el="1236" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1237" ordinal="1194" sl="1237" sc="1" el="1237" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1238" ordinal="1195" sl="1238" sc="1" el="1238" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1239" ordinal="1196" sl="1239" sc="1" el="1239" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1240" ordinal="1197" sl="1240" sc="1" el="1240" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1241" ordinal="1198" sl="1241" sc="1" el="1241" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1242" ordinal="1199" sl="1242" sc="1" el="1242" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1243" ordinal="1200" sl="1243" sc="1" el="1243" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1244" ordinal="1201" sl="1244" sc="1" el="1244" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1245" ordinal="1202" sl="1245" sc="1" el="1245" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1246" ordinal="1203" sl="1246" sc="1" el="1246" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1247" ordinal="1204" sl="1247" sc="1" el="1247" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1248" ordinal="1205" sl="1248" sc="1" el="1248" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1249" ordinal="1206" sl="1249" sc="1" el="1249" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1250" ordinal="1207" sl="1250" sc="1" el="1250" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1251" ordinal="1208" sl="1251" sc="1" el="1251" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1252" ordinal="1209" sl="1252" sc="1" el="1252" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1253" ordinal="1210" sl="1253" sc="1" el="1253" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1254" ordinal="1211" sl="1254" sc="1" el="1254" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1255" ordinal="1212" sl="1255" sc="1" el="1255" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1256" ordinal="1213" sl="1256" sc="1" el="1256" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1257" ordinal="1214" sl="1257" sc="1" el="1257" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1258" ordinal="1215" sl="1258" sc="1" el="1258" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1259" ordinal="1216" sl="1259" sc="1" el="1259" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1260" ordinal="1217" sl="1260" sc="1" el="1260" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1261" ordinal="1218" sl="1261" sc="1" el="1261" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1262" ordinal="1219" sl="1262" sc="1" el="1262" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1263" ordinal="1220" sl="1263" sc="1" el="1263" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1264" ordinal="1221" sl="1264" sc="1" el="1264" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1265" ordinal="1222" sl="1265" sc="1" el="1265" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1266" ordinal="1223" sl="1266" sc="1" el="1266" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1267" ordinal="1224" sl="1267" sc="1" el="1267" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1268" ordinal="1225" sl="1268" sc="1" el="1268" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1269" ordinal="1226" sl="1269" sc="1" el="1269" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1270" ordinal="1227" sl="1270" sc="1" el="1270" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1271" ordinal="1228" sl="1271" sc="1" el="1271" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1272" ordinal="1229" sl="1272" sc="1" el="1272" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1273" ordinal="1230" sl="1273" sc="1" el="1273" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1274" ordinal="1231" sl="1274" sc="1" el="1274" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1275" ordinal="1232" sl="1275" sc="1" el="1275" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1276" ordinal="1233" sl="1276" sc="1" el="1276" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1277" ordinal="1234" sl="1277" sc="1" el="1277" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1278" ordinal="1235" sl="1278" sc="1" el="1278" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1279" ordinal="1236" sl="1279" sc="1" el="1279" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1280" ordinal="1237" sl="1280" sc="1" el="1280" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1281" ordinal="1238" sl="1281" sc="1" el="1281" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1282" ordinal="1239" sl="1282" sc="1" el="1282" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1283" ordinal="1240" sl="1283" sc="1" el="1283" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1284" ordinal="1241" sl="1284" sc="1" el="1284" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1285" ordinal="1242" sl="1285" sc="1" el="1285" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1286" ordinal="1243" sl="1286" sc="1" el="1286" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1287" ordinal="1244" sl="1287" sc="1" el="1287" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1288" ordinal="1245" sl="1288" sc="1" el="1288" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1289" ordinal="1246" sl="1289" sc="1" el="1289" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1290" ordinal="1247" sl="1290" sc="1" el="1290" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1291" ordinal="1248" sl="1291" sc="1" el="1291" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1292" ordinal="1249" sl="1292" sc="1" el="1292" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1293" ordinal="1250" sl="1293" sc="1" el="1293" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1294" ordinal="1251" sl="1294" sc="1" el="1294" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1296" ordinal="1252" sl="1296" sc="1" el="1296" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1297" ordinal="1253" sl="1297" sc="1" el="1297" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1298" ordinal="1254" sl="1298" sc="1" el="1298" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1299" ordinal="1255" sl="1299" sc="1" el="1299" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1300" ordinal="1256" sl="1300" sc="1" el="1300" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1301" ordinal="1257" sl="1301" sc="1" el="1301" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1302" ordinal="1258" sl="1302" sc="1" el="1302" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1303" ordinal="1259" sl="1303" sc="1" el="1303" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1304" ordinal="1260" sl="1304" sc="1" el="1304" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1305" ordinal="1261" sl="1305" sc="1" el="1305" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1306" ordinal="1262" sl="1306" sc="1" el="1306" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1307" ordinal="1263" sl="1307" sc="1" el="1307" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1308" ordinal="1264" sl="1308" sc="1" el="1308" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1309" ordinal="1265" sl="1309" sc="1" el="1309" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1310" ordinal="1266" sl="1310" sc="1" el="1310" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1311" ordinal="1267" sl="1311" sc="1" el="1311" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1312" ordinal="1268" sl="1312" sc="1" el="1312" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1313" ordinal="1269" sl="1313" sc="1" el="1313" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1314" ordinal="1270" sl="1314" sc="1" el="1314" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1315" ordinal="1271" sl="1315" sc="1" el="1315" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1316" ordinal="1272" sl="1316" sc="1" el="1316" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1317" ordinal="1273" sl="1317" sc="1" el="1317" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1318" ordinal="1274" sl="1318" sc="1" el="1318" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1319" ordinal="1275" sl="1319" sc="1" el="1319" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1320" ordinal="1276" sl="1320" sc="1" el="1320" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1321" ordinal="1277" sl="1321" sc="1" el="1321" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1322" ordinal="1278" sl="1322" sc="1" el="1322" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1323" ordinal="1279" sl="1323" sc="1" el="1323" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1324" ordinal="1280" sl="1324" sc="1" el="1324" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1325" ordinal="1281" sl="1325" sc="1" el="1325" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1326" ordinal="1282" sl="1326" sc="1" el="1326" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1327" ordinal="1283" sl="1327" sc="1" el="1327" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1328" ordinal="1284" sl="1328" sc="1" el="1328" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1329" ordinal="1285" sl="1329" sc="1" el="1329" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1330" ordinal="1286" sl="1330" sc="1" el="1330" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1331" ordinal="1287" sl="1331" sc="1" el="1331" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1332" ordinal="1288" sl="1332" sc="1" el="1332" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1333" ordinal="1289" sl="1333" sc="1" el="1333" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1334" ordinal="1290" sl="1334" sc="1" el="1334" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1335" ordinal="1291" sl="1335" sc="1" el="1335" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1336" ordinal="1292" sl="1336" sc="1" el="1336" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1337" ordinal="1293" sl="1337" sc="1" el="1337" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1338" ordinal="1294" sl="1338" sc="1" el="1338" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1339" ordinal="1295" sl="1339" sc="1" el="1339" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1340" ordinal="1296" sl="1340" sc="1" el="1340" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1341" ordinal="1297" sl="1341" sc="1" el="1341" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1343" ordinal="1298" sl="1343" sc="1" el="1343" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1344" ordinal="1299" sl="1344" sc="1" el="1344" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1345" ordinal="1300" sl="1345" sc="1" el="1345" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1346" ordinal="1301" sl="1346" sc="1" el="1346" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1347" ordinal="1302" sl="1347" sc="1" el="1347" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1348" ordinal="1303" sl="1348" sc="1" el="1348" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1349" ordinal="1304" sl="1349" sc="1" el="1349" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1350" ordinal="1305" sl="1350" sc="1" el="1350" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1351" ordinal="1306" sl="1351" sc="1" el="1351" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1352" ordinal="1307" sl="1352" sc="1" el="1352" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1353" ordinal="1308" sl="1353" sc="1" el="1353" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1354" ordinal="1309" sl="1354" sc="1" el="1354" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1355" ordinal="1310" sl="1355" sc="1" el="1355" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1356" ordinal="1311" sl="1356" sc="1" el="1356" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1357" ordinal="1312" sl="1357" sc="1" el="1357" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1358" ordinal="1313" sl="1358" sc="1" el="1358" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1359" ordinal="1314" sl="1359" sc="1" el="1359" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1360" ordinal="1315" sl="1360" sc="1" el="1360" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1361" ordinal="1316" sl="1361" sc="1" el="1361" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1362" ordinal="1317" sl="1362" sc="1" el="1362" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1363" ordinal="1318" sl="1363" sc="1" el="1363" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1364" ordinal="1319" sl="1364" sc="1" el="1364" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1365" ordinal="1320" sl="1365" sc="1" el="1365" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1366" ordinal="1321" sl="1366" sc="1" el="1366" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1367" ordinal="1322" sl="1367" sc="1" el="1367" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1368" ordinal="1323" sl="1368" sc="1" el="1368" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1369" ordinal="1324" sl="1369" sc="1" el="1369" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1370" ordinal="1325" sl="1370" sc="1" el="1370" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1371" ordinal="1326" sl="1371" sc="1" el="1371" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1372" ordinal="1327" sl="1372" sc="1" el="1372" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1373" ordinal="1328" sl="1373" sc="1" el="1373" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1374" ordinal="1329" sl="1374" sc="1" el="1374" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1375" ordinal="1330" sl="1375" sc="1" el="1375" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1376" ordinal="1331" sl="1376" sc="1" el="1376" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1377" ordinal="1332" sl="1377" sc="1" el="1377" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1378" ordinal="1333" sl="1378" sc="1" el="1378" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1379" ordinal="1334" sl="1379" sc="1" el="1379" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1380" ordinal="1335" sl="1380" sc="1" el="1380" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1381" ordinal="1336" sl="1381" sc="1" el="1381" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1382" ordinal="1337" sl="1382" sc="1" el="1382" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1383" ordinal="1338" sl="1383" sc="1" el="1383" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1384" ordinal="1339" sl="1384" sc="1" el="1384" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1385" ordinal="1340" sl="1385" sc="1" el="1385" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1386" ordinal="1341" sl="1386" sc="1" el="1386" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1387" ordinal="1342" sl="1387" sc="1" el="1387" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1388" ordinal="1343" sl="1388" sc="1" el="1388" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1389" ordinal="1344" sl="1389" sc="1" el="1389" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1390" ordinal="1345" sl="1390" sc="1" el="1390" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1391" ordinal="1346" sl="1391" sc="1" el="1391" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1392" ordinal="1347" sl="1392" sc="1" el="1392" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1393" ordinal="1348" sl="1393" sc="1" el="1393" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1394" ordinal="1349" sl="1394" sc="1" el="1394" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1395" ordinal="1350" sl="1395" sc="1" el="1395" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1396" ordinal="1351" sl="1396" sc="1" el="1396" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1397" ordinal="1352" sl="1397" sc="1" el="1397" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1398" ordinal="1353" sl="1398" sc="1" el="1398" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1399" ordinal="1354" sl="1399" sc="1" el="1399" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1400" ordinal="1355" sl="1400" sc="1" el="1400" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1401" ordinal="1356" sl="1401" sc="1" el="1401" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1402" ordinal="1357" sl="1402" sc="1" el="1402" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1403" ordinal="1358" sl="1403" sc="1" el="1403" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1404" ordinal="1359" sl="1404" sc="1" el="1404" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1405" ordinal="1360" sl="1405" sc="1" el="1405" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1406" ordinal="1361" sl="1406" sc="1" el="1406" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1407" ordinal="1362" sl="1407" sc="1" el="1407" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1408" ordinal="1363" sl="1408" sc="1" el="1408" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1409" ordinal="1364" sl="1409" sc="1" el="1409" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1410" ordinal="1365" sl="1410" sc="1" el="1410" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1411" ordinal="1366" sl="1411" sc="1" el="1411" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1412" ordinal="1367" sl="1412" sc="1" el="1412" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1413" ordinal="1368" sl="1413" sc="1" el="1413" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1414" ordinal="1369" sl="1414" sc="1" el="1414" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1415" ordinal="1370" sl="1415" sc="1" el="1415" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1416" ordinal="1371" sl="1416" sc="1" el="1416" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1417" ordinal="1372" sl="1417" sc="1" el="1417" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1418" ordinal="1373" sl="1418" sc="1" el="1418" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1419" ordinal="1374" sl="1419" sc="1" el="1419" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1420" ordinal="1375" sl="1420" sc="1" el="1420" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1421" ordinal="1376" sl="1421" sc="1" el="1421" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1422" ordinal="1377" sl="1422" sc="1" el="1422" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1423" ordinal="1378" sl="1423" sc="1" el="1423" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1424" ordinal="1379" sl="1424" sc="1" el="1424" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1425" ordinal="1380" sl="1425" sc="1" el="1425" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1426" ordinal="1381" sl="1426" sc="1" el="1426" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1427" ordinal="1382" sl="1427" sc="1" el="1427" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1428" ordinal="1383" sl="1428" sc="1" el="1428" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1429" ordinal="1384" sl="1429" sc="1" el="1429" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1430" ordinal="1385" sl="1430" sc="1" el="1430" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1431" ordinal="1386" sl="1431" sc="1" el="1431" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1432" ordinal="1387" sl="1432" sc="1" el="1432" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1434" ordinal="1388" sl="1434" sc="1" el="1434" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1435" ordinal="1389" sl="1435" sc="1" el="1435" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1436" ordinal="1390" sl="1436" sc="1" el="1436" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1437" ordinal="1391" sl="1437" sc="1" el="1437" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1438" ordinal="1392" sl="1438" sc="1" el="1438" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1439" ordinal="1393" sl="1439" sc="1" el="1439" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1440" ordinal="1394" sl="1440" sc="1" el="1440" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1441" ordinal="1395" sl="1441" sc="1" el="1441" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1442" ordinal="1396" sl="1442" sc="1" el="1442" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1443" ordinal="1397" sl="1443" sc="1" el="1443" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1444" ordinal="1398" sl="1444" sc="1" el="1444" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1445" ordinal="1399" sl="1445" sc="1" el="1445" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1446" ordinal="1400" sl="1446" sc="1" el="1446" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1447" ordinal="1401" sl="1447" sc="1" el="1447" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1448" ordinal="1402" sl="1448" sc="1" el="1448" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1449" ordinal="1403" sl="1449" sc="1" el="1449" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1450" ordinal="1404" sl="1450" sc="1" el="1450" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1451" ordinal="1405" sl="1451" sc="1" el="1451" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1452" ordinal="1406" sl="1452" sc="1" el="1452" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1453" ordinal="1407" sl="1453" sc="1" el="1453" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1454" ordinal="1408" sl="1454" sc="1" el="1454" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1455" ordinal="1409" sl="1455" sc="1" el="1455" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1456" ordinal="1410" sl="1456" sc="1" el="1456" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1457" ordinal="1411" sl="1457" sc="1" el="1457" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1459" ordinal="1412" sl="1459" sc="1" el="1459" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1460" ordinal="1413" sl="1460" sc="1" el="1460" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1461" ordinal="1414" sl="1461" sc="1" el="1461" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1462" ordinal="1415" sl="1462" sc="1" el="1462" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1463" ordinal="1416" sl="1463" sc="1" el="1463" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1464" ordinal="1417" sl="1464" sc="1" el="1464" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1465" ordinal="1418" sl="1465" sc="1" el="1465" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1466" ordinal="1419" sl="1466" sc="1" el="1466" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1467" ordinal="1420" sl="1467" sc="1" el="1467" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1468" ordinal="1421" sl="1468" sc="1" el="1468" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1469" ordinal="1422" sl="1469" sc="1" el="1469" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1470" ordinal="1423" sl="1470" sc="1" el="1470" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1471" ordinal="1424" sl="1471" sc="1" el="1471" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1472" ordinal="1425" sl="1472" sc="1" el="1472" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1473" ordinal="1426" sl="1473" sc="1" el="1473" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1474" ordinal="1427" sl="1474" sc="1" el="1474" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1475" ordinal="1428" sl="1475" sc="1" el="1475" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1476" ordinal="1429" sl="1476" sc="1" el="1476" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1477" ordinal="1430" sl="1477" sc="1" el="1477" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1478" ordinal="1431" sl="1478" sc="1" el="1478" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1479" ordinal="1432" sl="1479" sc="1" el="1479" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1480" ordinal="1433" sl="1480" sc="1" el="1480" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1481" ordinal="1434" sl="1481" sc="1" el="1481" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1482" ordinal="1435" sl="1482" sc="1" el="1482" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1483" ordinal="1436" sl="1483" sc="1" el="1483" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1484" ordinal="1437" sl="1484" sc="1" el="1484" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1485" ordinal="1438" sl="1485" sc="1" el="1485" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1486" ordinal="1439" sl="1486" sc="1" el="1486" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1487" ordinal="1440" sl="1487" sc="1" el="1487" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1488" ordinal="1441" sl="1488" sc="1" el="1488" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1489" ordinal="1442" sl="1489" sc="1" el="1489" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1490" ordinal="1443" sl="1490" sc="1" el="1490" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1491" ordinal="1444" sl="1491" sc="1" el="1491" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1492" ordinal="1445" sl="1492" sc="1" el="1492" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1494" ordinal="1446" sl="1494" sc="1" el="1494" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1495" ordinal="1447" sl="1495" sc="1" el="1495" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1496" ordinal="1448" sl="1496" sc="1" el="1496" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1497" ordinal="1449" sl="1497" sc="1" el="1497" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1498" ordinal="1450" sl="1498" sc="1" el="1498" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1499" ordinal="1451" sl="1499" sc="1" el="1499" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1500" ordinal="1452" sl="1500" sc="1" el="1500" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1501" ordinal="1453" sl="1501" sc="1" el="1501" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1502" ordinal="1454" sl="1502" sc="1" el="1502" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1503" ordinal="1455" sl="1503" sc="1" el="1503" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1504" ordinal="1456" sl="1504" sc="1" el="1504" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1505" ordinal="1457" sl="1505" sc="1" el="1505" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1506" ordinal="1458" sl="1506" sc="1" el="1506" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1507" ordinal="1459" sl="1507" sc="1" el="1507" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1508" ordinal="1460" sl="1508" sc="1" el="1508" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1509" ordinal="1461" sl="1509" sc="1" el="1509" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1510" ordinal="1462" sl="1510" sc="1" el="1510" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1511" ordinal="1463" sl="1511" sc="1" el="1511" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1512" ordinal="1464" sl="1512" sc="1" el="1512" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1513" ordinal="1465" sl="1513" sc="1" el="1513" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1514" ordinal="1466" sl="1514" sc="1" el="1514" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1515" ordinal="1467" sl="1515" sc="1" el="1515" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1516" ordinal="1468" sl="1516" sc="1" el="1516" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1517" ordinal="1469" sl="1517" sc="1" el="1517" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1518" ordinal="1470" sl="1518" sc="1" el="1518" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1519" ordinal="1471" sl="1519" sc="1" el="1519" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1520" ordinal="1472" sl="1520" sc="1" el="1520" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1521" ordinal="1473" sl="1521" sc="1" el="1521" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1522" ordinal="1474" sl="1522" sc="1" el="1522" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1523" ordinal="1475" sl="1523" sc="1" el="1523" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1524" ordinal="1476" sl="1524" sc="1" el="1524" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1525" ordinal="1477" sl="1525" sc="1" el="1525" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1526" ordinal="1478" sl="1526" sc="1" el="1526" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1527" ordinal="1479" sl="1527" sc="1" el="1527" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1528" ordinal="1480" sl="1528" sc="1" el="1528" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1529" ordinal="1481" sl="1529" sc="1" el="1529" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1530" ordinal="1482" sl="1530" sc="1" el="1530" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1531" ordinal="1483" sl="1531" sc="1" el="1531" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1532" ordinal="1484" sl="1532" sc="1" el="1532" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1533" ordinal="1485" sl="1533" sc="1" el="1533" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1534" ordinal="1486" sl="1534" sc="1" el="1534" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1535" ordinal="1487" sl="1535" sc="1" el="1535" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1536" ordinal="1488" sl="1536" sc="1" el="1536" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1537" ordinal="1489" sl="1537" sc="1" el="1537" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1538" ordinal="1490" sl="1538" sc="1" el="1538" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1539" ordinal="1491" sl="1539" sc="1" el="1539" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1540" ordinal="1492" sl="1540" sc="1" el="1540" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1541" ordinal="1493" sl="1541" sc="1" el="1541" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1543" ordinal="1494" sl="1543" sc="1" el="1543" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1544" ordinal="1495" sl="1544" sc="1" el="1544" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1545" ordinal="1496" sl="1545" sc="1" el="1545" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1546" ordinal="1497" sl="1546" sc="1" el="1546" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1547" ordinal="1498" sl="1547" sc="1" el="1547" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1548" ordinal="1499" sl="1548" sc="1" el="1548" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1549" ordinal="1500" sl="1549" sc="1" el="1549" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1550" ordinal="1501" sl="1550" sc="1" el="1550" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1551" ordinal="1502" sl="1551" sc="1" el="1551" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1552" ordinal="1503" sl="1552" sc="1" el="1552" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1553" ordinal="1504" sl="1553" sc="1" el="1553" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1554" ordinal="1505" sl="1554" sc="1" el="1554" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1555" ordinal="1506" sl="1555" sc="1" el="1555" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1556" ordinal="1507" sl="1556" sc="1" el="1556" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1557" ordinal="1508" sl="1557" sc="1" el="1557" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1558" ordinal="1509" sl="1558" sc="1" el="1558" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1559" ordinal="1510" sl="1559" sc="1" el="1559" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1560" ordinal="1511" sl="1560" sc="1" el="1560" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1561" ordinal="1512" sl="1561" sc="1" el="1561" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1562" ordinal="1513" sl="1562" sc="1" el="1562" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1563" ordinal="1514" sl="1563" sc="1" el="1563" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1564" ordinal="1515" sl="1564" sc="1" el="1564" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1565" ordinal="1516" sl="1565" sc="1" el="1565" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1566" ordinal="1517" sl="1566" sc="1" el="1566" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1567" ordinal="1518" sl="1567" sc="1" el="1567" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1568" ordinal="1519" sl="1568" sc="1" el="1568" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1570" ordinal="1520" sl="1570" sc="1" el="1570" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1571" ordinal="1521" sl="1571" sc="1" el="1571" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1572" ordinal="1522" sl="1572" sc="1" el="1572" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1573" ordinal="1523" sl="1573" sc="1" el="1573" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1574" ordinal="1524" sl="1574" sc="1" el="1574" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1575" ordinal="1525" sl="1575" sc="1" el="1575" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1576" ordinal="1526" sl="1576" sc="1" el="1576" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1577" ordinal="1527" sl="1577" sc="1" el="1577" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1578" ordinal="1528" sl="1578" sc="1" el="1578" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1579" ordinal="1529" sl="1579" sc="1" el="1579" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1580" ordinal="1530" sl="1580" sc="1" el="1580" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1581" ordinal="1531" sl="1581" sc="1" el="1581" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1582" ordinal="1532" sl="1582" sc="1" el="1582" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1583" ordinal="1533" sl="1583" sc="1" el="1583" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1584" ordinal="1534" sl="1584" sc="1" el="1584" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1585" ordinal="1535" sl="1585" sc="1" el="1585" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1586" ordinal="1536" sl="1586" sc="1" el="1586" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1587" ordinal="1537" sl="1587" sc="1" el="1587" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1588" ordinal="1538" sl="1588" sc="1" el="1588" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1589" ordinal="1539" sl="1589" sc="1" el="1589" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1590" ordinal="1540" sl="1590" sc="1" el="1590" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1591" ordinal="1541" sl="1591" sc="1" el="1591" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1593" ordinal="1542" sl="1593" sc="1" el="1593" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1594" ordinal="1543" sl="1594" sc="1" el="1594" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1595" ordinal="1544" sl="1595" sc="1" el="1595" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1596" ordinal="1545" sl="1596" sc="1" el="1596" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1597" ordinal="1546" sl="1597" sc="1" el="1597" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1598" ordinal="1547" sl="1598" sc="1" el="1598" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1599" ordinal="1548" sl="1599" sc="1" el="1599" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1600" ordinal="1549" sl="1600" sc="1" el="1600" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1601" ordinal="1550" sl="1601" sc="1" el="1601" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1602" ordinal="1551" sl="1602" sc="1" el="1602" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1603" ordinal="1552" sl="1603" sc="1" el="1603" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1604" ordinal="1553" sl="1604" sc="1" el="1604" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1605" ordinal="1554" sl="1605" sc="1" el="1605" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1606" ordinal="1555" sl="1606" sc="1" el="1606" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1607" ordinal="1556" sl="1607" sc="1" el="1607" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1608" ordinal="1557" sl="1608" sc="1" el="1608" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1609" ordinal="1558" sl="1609" sc="1" el="1609" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1610" ordinal="1559" sl="1610" sc="1" el="1610" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1611" ordinal="1560" sl="1611" sc="1" el="1611" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1612" ordinal="1561" sl="1612" sc="1" el="1612" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1613" ordinal="1562" sl="1613" sc="1" el="1613" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1614" ordinal="1563" sl="1614" sc="1" el="1614" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1615" ordinal="1564" sl="1615" sc="1" el="1615" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1616" ordinal="1565" sl="1616" sc="1" el="1616" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1617" ordinal="1566" sl="1617" sc="1" el="1617" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1618" ordinal="1567" sl="1618" sc="1" el="1618" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1619" ordinal="1568" sl="1619" sc="1" el="1619" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1620" ordinal="1569" sl="1620" sc="1" el="1620" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1621" ordinal="1570" sl="1621" sc="1" el="1621" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1622" ordinal="1571" sl="1622" sc="1" el="1622" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1623" ordinal="1572" sl="1623" sc="1" el="1623" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1624" ordinal="1573" sl="1624" sc="1" el="1624" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1625" ordinal="1574" sl="1625" sc="1" el="1625" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1626" ordinal="1575" sl="1626" sc="1" el="1626" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1627" ordinal="1576" sl="1627" sc="1" el="1627" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1628" ordinal="1577" sl="1628" sc="1" el="1628" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1629" ordinal="1578" sl="1629" sc="1" el="1629" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1630" ordinal="1579" sl="1630" sc="1" el="1630" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1631" ordinal="1580" sl="1631" sc="1" el="1631" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1632" ordinal="1581" sl="1632" sc="1" el="1632" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1633" ordinal="1582" sl="1633" sc="1" el="1633" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1634" ordinal="1583" sl="1634" sc="1" el="1634" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1635" ordinal="1584" sl="1635" sc="1" el="1635" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1636" ordinal="1585" sl="1636" sc="1" el="1636" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1637" ordinal="1586" sl="1637" sc="1" el="1637" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1638" ordinal="1587" sl="1638" sc="1" el="1638" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1639" ordinal="1588" sl="1639" sc="1" el="1639" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1640" ordinal="1589" sl="1640" sc="1" el="1640" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1641" ordinal="1590" sl="1641" sc="1" el="1641" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1642" ordinal="1591" sl="1642" sc="1" el="1642" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1643" ordinal="1592" sl="1643" sc="1" el="1643" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1644" ordinal="1593" sl="1644" sc="1" el="1644" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1645" ordinal="1594" sl="1645" sc="1" el="1645" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1646" ordinal="1595" sl="1646" sc="1" el="1646" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1647" ordinal="1596" sl="1647" sc="1" el="1647" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1648" ordinal="1597" sl="1648" sc="1" el="1648" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1649" ordinal="1598" sl="1649" sc="1" el="1649" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1650" ordinal="1599" sl="1650" sc="1" el="1650" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1651" ordinal="1600" sl="1651" sc="1" el="1651" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1652" ordinal="1601" sl="1652" sc="1" el="1652" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1653" ordinal="1602" sl="1653" sc="1" el="1653" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1654" ordinal="1603" sl="1654" sc="1" el="1654" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1655" ordinal="1604" sl="1655" sc="1" el="1655" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1656" ordinal="1605" sl="1656" sc="1" el="1656" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1657" ordinal="1606" sl="1657" sc="1" el="1657" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1658" ordinal="1607" sl="1658" sc="1" el="1658" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1659" ordinal="1608" sl="1659" sc="1" el="1659" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1660" ordinal="1609" sl="1660" sc="1" el="1660" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1661" ordinal="1610" sl="1661" sc="1" el="1661" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1662" ordinal="1611" sl="1662" sc="1" el="1662" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1664" ordinal="1612" sl="1664" sc="1" el="1664" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1665" ordinal="1613" sl="1665" sc="1" el="1665" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1666" ordinal="1614" sl="1666" sc="1" el="1666" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1667" ordinal="1615" sl="1667" sc="1" el="1667" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1668" ordinal="1616" sl="1668" sc="1" el="1668" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1669" ordinal="1617" sl="1669" sc="1" el="1669" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1670" ordinal="1618" sl="1670" sc="1" el="1670" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1671" ordinal="1619" sl="1671" sc="1" el="1671" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1672" ordinal="1620" sl="1672" sc="1" el="1672" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1673" ordinal="1621" sl="1673" sc="1" el="1673" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1674" ordinal="1622" sl="1674" sc="1" el="1674" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1675" ordinal="1623" sl="1675" sc="1" el="1675" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1676" ordinal="1624" sl="1676" sc="1" el="1676" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1677" ordinal="1625" sl="1677" sc="1" el="1677" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1678" ordinal="1626" sl="1678" sc="1" el="1678" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1679" ordinal="1627" sl="1679" sc="1" el="1679" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1680" ordinal="1628" sl="1680" sc="1" el="1680" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1681" ordinal="1629" sl="1681" sc="1" el="1681" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1682" ordinal="1630" sl="1682" sc="1" el="1682" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1683" ordinal="1631" sl="1683" sc="1" el="1683" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1684" ordinal="1632" sl="1684" sc="1" el="1684" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1685" ordinal="1633" sl="1685" sc="1" el="1685" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1686" ordinal="1634" sl="1686" sc="1" el="1686" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1687" ordinal="1635" sl="1687" sc="1" el="1687" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1688" ordinal="1636" sl="1688" sc="1" el="1688" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1689" ordinal="1637" sl="1689" sc="1" el="1689" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1690" ordinal="1638" sl="1690" sc="1" el="1690" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1691" ordinal="1639" sl="1691" sc="1" el="1691" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1692" ordinal="1640" sl="1692" sc="1" el="1692" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1693" ordinal="1641" sl="1693" sc="1" el="1693" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1694" ordinal="1642" sl="1694" sc="1" el="1694" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1695" ordinal="1643" sl="1695" sc="1" el="1695" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1696" ordinal="1644" sl="1696" sc="1" el="1696" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1697" ordinal="1645" sl="1697" sc="1" el="1697" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1699" ordinal="1646" sl="1699" sc="1" el="1699" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1700" ordinal="1647" sl="1700" sc="1" el="1700" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1701" ordinal="1648" sl="1701" sc="1" el="1701" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1702" ordinal="1649" sl="1702" sc="1" el="1702" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1703" ordinal="1650" sl="1703" sc="1" el="1703" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1704" ordinal="1651" sl="1704" sc="1" el="1704" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1705" ordinal="1652" sl="1705" sc="1" el="1705" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1706" ordinal="1653" sl="1706" sc="1" el="1706" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1707" ordinal="1654" sl="1707" sc="1" el="1707" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1708" ordinal="1655" sl="1708" sc="1" el="1708" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1709" ordinal="1656" sl="1709" sc="1" el="1709" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1710" ordinal="1657" sl="1710" sc="1" el="1710" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1711" ordinal="1658" sl="1711" sc="1" el="1711" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1712" ordinal="1659" sl="1712" sc="1" el="1712" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1713" ordinal="1660" sl="1713" sc="1" el="1713" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1714" ordinal="1661" sl="1714" sc="1" el="1714" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1715" ordinal="1662" sl="1715" sc="1" el="1715" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1716" ordinal="1663" sl="1716" sc="1" el="1716" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1717" ordinal="1664" sl="1717" sc="1" el="1717" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1718" ordinal="1665" sl="1718" sc="1" el="1718" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1719" ordinal="1666" sl="1719" sc="1" el="1719" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1720" ordinal="1667" sl="1720" sc="1" el="1720" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1721" ordinal="1668" sl="1721" sc="1" el="1721" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1722" ordinal="1669" sl="1722" sc="1" el="1722" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1723" ordinal="1670" sl="1723" sc="1" el="1723" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1724" ordinal="1671" sl="1724" sc="1" el="1724" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1725" ordinal="1672" sl="1725" sc="1" el="1725" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1726" ordinal="1673" sl="1726" sc="1" el="1726" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1727" ordinal="1674" sl="1727" sc="1" el="1727" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1728" ordinal="1675" sl="1728" sc="1" el="1728" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1729" ordinal="1676" sl="1729" sc="1" el="1729" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1730" ordinal="1677" sl="1730" sc="1" el="1730" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1731" ordinal="1678" sl="1731" sc="1" el="1731" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1732" ordinal="1679" sl="1732" sc="1" el="1732" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1733" ordinal="1680" sl="1733" sc="1" el="1733" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1734" ordinal="1681" sl="1734" sc="1" el="1734" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1736" ordinal="1682" sl="1736" sc="1" el="1736" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1737" ordinal="1683" sl="1737" sc="1" el="1737" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1738" ordinal="1684" sl="1738" sc="1" el="1738" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1739" ordinal="1685" sl="1739" sc="1" el="1739" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1740" ordinal="1686" sl="1740" sc="1" el="1740" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1741" ordinal="1687" sl="1741" sc="1" el="1741" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1742" ordinal="1688" sl="1742" sc="1" el="1742" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1743" ordinal="1689" sl="1743" sc="1" el="1743" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1744" ordinal="1690" sl="1744" sc="1" el="1744" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1745" ordinal="1691" sl="1745" sc="1" el="1745" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1746" ordinal="1692" sl="1746" sc="1" el="1746" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1747" ordinal="1693" sl="1747" sc="1" el="1747" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1748" ordinal="1694" sl="1748" sc="1" el="1748" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1749" ordinal="1695" sl="1749" sc="1" el="1749" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1750" ordinal="1696" sl="1750" sc="1" el="1750" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1751" ordinal="1697" sl="1751" sc="1" el="1751" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1752" ordinal="1698" sl="1752" sc="1" el="1752" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1753" ordinal="1699" sl="1753" sc="1" el="1753" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1754" ordinal="1700" sl="1754" sc="1" el="1754" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1755" ordinal="1701" sl="1755" sc="1" el="1755" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1756" ordinal="1702" sl="1756" sc="1" el="1756" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1757" ordinal="1703" sl="1757" sc="1" el="1757" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1758" ordinal="1704" sl="1758" sc="1" el="1758" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1759" ordinal="1705" sl="1759" sc="1" el="1759" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1760" ordinal="1706" sl="1760" sc="1" el="1760" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1761" ordinal="1707" sl="1761" sc="1" el="1761" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1762" ordinal="1708" sl="1762" sc="1" el="1762" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1763" ordinal="1709" sl="1763" sc="1" el="1763" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1764" ordinal="1710" sl="1764" sc="1" el="1764" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1765" ordinal="1711" sl="1765" sc="1" el="1765" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1766" ordinal="1712" sl="1766" sc="1" el="1766" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1767" ordinal="1713" sl="1767" sc="1" el="1767" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1768" ordinal="1714" sl="1768" sc="1" el="1768" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1769" ordinal="1715" sl="1769" sc="1" el="1769" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1770" ordinal="1716" sl="1770" sc="1" el="1770" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1771" ordinal="1717" sl="1771" sc="1" el="1771" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1772" ordinal="1718" sl="1772" sc="1" el="1772" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1773" ordinal="1719" sl="1773" sc="1" el="1773" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1774" ordinal="1720" sl="1774" sc="1" el="1774" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1775" ordinal="1721" sl="1775" sc="1" el="1775" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1776" ordinal="1722" sl="1776" sc="1" el="1776" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1777" ordinal="1723" sl="1777" sc="1" el="1777" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1778" ordinal="1724" sl="1778" sc="1" el="1778" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1779" ordinal="1725" sl="1779" sc="1" el="1779" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1780" ordinal="1726" sl="1780" sc="1" el="1780" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1781" ordinal="1727" sl="1781" sc="1" el="1781" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1782" ordinal="1728" sl="1782" sc="1" el="1782" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1783" ordinal="1729" sl="1783" sc="1" el="1783" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1784" ordinal="1730" sl="1784" sc="1" el="1784" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1785" ordinal="1731" sl="1785" sc="1" el="1785" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1786" ordinal="1732" sl="1786" sc="1" el="1786" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1787" ordinal="1733" sl="1787" sc="1" el="1787" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1788" ordinal="1734" sl="1788" sc="1" el="1788" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1789" ordinal="1735" sl="1789" sc="1" el="1789" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1790" ordinal="1736" sl="1790" sc="1" el="1790" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1791" ordinal="1737" sl="1791" sc="1" el="1791" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1792" ordinal="1738" sl="1792" sc="1" el="1792" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1793" ordinal="1739" sl="1793" sc="1" el="1793" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1794" ordinal="1740" sl="1794" sc="1" el="1794" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1795" ordinal="1741" sl="1795" sc="1" el="1795" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1796" ordinal="1742" sl="1796" sc="1" el="1796" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1797" ordinal="1743" sl="1797" sc="1" el="1797" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1798" ordinal="1744" sl="1798" sc="1" el="1798" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1799" ordinal="1745" sl="1799" sc="1" el="1799" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1800" ordinal="1746" sl="1800" sc="1" el="1800" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1801" ordinal="1747" sl="1801" sc="1" el="1801" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1802" ordinal="1748" sl="1802" sc="1" el="1802" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1803" ordinal="1749" sl="1803" sc="1" el="1803" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1804" ordinal="1750" sl="1804" sc="1" el="1804" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1805" ordinal="1751" sl="1805" sc="1" el="1805" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1806" ordinal="1752" sl="1806" sc="1" el="1806" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1807" ordinal="1753" sl="1807" sc="1" el="1807" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1808" ordinal="1754" sl="1808" sc="1" el="1808" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1809" ordinal="1755" sl="1809" sc="1" el="1809" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1810" ordinal="1756" sl="1810" sc="1" el="1810" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1811" ordinal="1757" sl="1811" sc="1" el="1811" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1812" ordinal="1758" sl="1812" sc="1" el="1812" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1813" ordinal="1759" sl="1813" sc="1" el="1813" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1814" ordinal="1760" sl="1814" sc="1" el="1814" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1815" ordinal="1761" sl="1815" sc="1" el="1815" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1816" ordinal="1762" sl="1816" sc="1" el="1816" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1817" ordinal="1763" sl="1817" sc="1" el="1817" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1818" ordinal="1764" sl="1818" sc="1" el="1818" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1819" ordinal="1765" sl="1819" sc="1" el="1819" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1820" ordinal="1766" sl="1820" sc="1" el="1820" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1821" ordinal="1767" sl="1821" sc="1" el="1821" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1822" ordinal="1768" sl="1822" sc="1" el="1822" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1823" ordinal="1769" sl="1823" sc="1" el="1823" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1824" ordinal="1770" sl="1824" sc="1" el="1824" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1825" ordinal="1771" sl="1825" sc="1" el="1825" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1826" ordinal="1772" sl="1826" sc="1" el="1826" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1827" ordinal="1773" sl="1827" sc="1" el="1827" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1828" ordinal="1774" sl="1828" sc="1" el="1828" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1829" ordinal="1775" sl="1829" sc="1" el="1829" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1830" ordinal="1776" sl="1830" sc="1" el="1830" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1831" ordinal="1777" sl="1831" sc="1" el="1831" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1832" ordinal="1778" sl="1832" sc="1" el="1832" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1833" ordinal="1779" sl="1833" sc="1" el="1833" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1834" ordinal="1780" sl="1834" sc="1" el="1834" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1835" ordinal="1781" sl="1835" sc="1" el="1835" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1836" ordinal="1782" sl="1836" sc="1" el="1836" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1837" ordinal="1783" sl="1837" sc="1" el="1837" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1838" ordinal="1784" sl="1838" sc="1" el="1838" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1839" ordinal="1785" sl="1839" sc="1" el="1839" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1840" ordinal="1786" sl="1840" sc="1" el="1840" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1841" ordinal="1787" sl="1841" sc="1" el="1841" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1842" ordinal="1788" sl="1842" sc="1" el="1842" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1843" ordinal="1789" sl="1843" sc="1" el="1843" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1844" ordinal="1790" sl="1844" sc="1" el="1844" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1845" ordinal="1791" sl="1845" sc="1" el="1845" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1846" ordinal="1792" sl="1846" sc="1" el="1846" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1847" ordinal="1793" sl="1847" sc="1" el="1847" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1848" ordinal="1794" sl="1848" sc="1" el="1848" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1849" ordinal="1795" sl="1849" sc="1" el="1849" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1850" ordinal="1796" sl="1850" sc="1" el="1850" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1851" ordinal="1797" sl="1851" sc="1" el="1851" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1852" ordinal="1798" sl="1852" sc="1" el="1852" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1853" ordinal="1799" sl="1853" sc="1" el="1853" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1854" ordinal="1800" sl="1854" sc="1" el="1854" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1855" ordinal="1801" sl="1855" sc="1" el="1855" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1856" ordinal="1802" sl="1856" sc="1" el="1856" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1857" ordinal="1803" sl="1857" sc="1" el="1857" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1858" ordinal="1804" sl="1858" sc="1" el="1858" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1859" ordinal="1805" sl="1859" sc="1" el="1859" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1860" ordinal="1806" sl="1860" sc="1" el="1860" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1861" ordinal="1807" sl="1861" sc="1" el="1861" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1862" ordinal="1808" sl="1862" sc="1" el="1862" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1863" ordinal="1809" sl="1863" sc="1" el="1863" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1864" ordinal="1810" sl="1864" sc="1" el="1864" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1865" ordinal="1811" sl="1865" sc="1" el="1865" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1866" ordinal="1812" sl="1866" sc="1" el="1866" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1867" ordinal="1813" sl="1867" sc="1" el="1867" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1868" ordinal="1814" sl="1868" sc="1" el="1868" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1869" ordinal="1815" sl="1869" sc="1" el="1869" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1870" ordinal="1816" sl="1870" sc="1" el="1870" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1871" ordinal="1817" sl="1871" sc="1" el="1871" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1872" ordinal="1818" sl="1872" sc="1" el="1872" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1873" ordinal="1819" sl="1873" sc="1" el="1873" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1874" ordinal="1820" sl="1874" sc="1" el="1874" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1875" ordinal="1821" sl="1875" sc="1" el="1875" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1876" ordinal="1822" sl="1876" sc="1" el="1876" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1877" ordinal="1823" sl="1877" sc="1" el="1877" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1878" ordinal="1824" sl="1878" sc="1" el="1878" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1880" ordinal="1825" sl="1880" sc="1" el="1880" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1881" ordinal="1826" sl="1881" sc="1" el="1881" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1882" ordinal="1827" sl="1882" sc="1" el="1882" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1883" ordinal="1828" sl="1883" sc="1" el="1883" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1884" ordinal="1829" sl="1884" sc="1" el="1884" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1885" ordinal="1830" sl="1885" sc="1" el="1885" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1886" ordinal="1831" sl="1886" sc="1" el="1886" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1887" ordinal="1832" sl="1887" sc="1" el="1887" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1888" ordinal="1833" sl="1888" sc="1" el="1888" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1889" ordinal="1834" sl="1889" sc="1" el="1889" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1890" ordinal="1835" sl="1890" sc="1" el="1890" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1891" ordinal="1836" sl="1891" sc="1" el="1891" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1892" ordinal="1837" sl="1892" sc="1" el="1892" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1893" ordinal="1838" sl="1893" sc="1" el="1893" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1894" ordinal="1839" sl="1894" sc="1" el="1894" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1895" ordinal="1840" sl="1895" sc="1" el="1895" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1896" ordinal="1841" sl="1896" sc="1" el="1896" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1897" ordinal="1842" sl="1897" sc="1" el="1897" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1898" ordinal="1843" sl="1898" sc="1" el="1898" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1899" ordinal="1844" sl="1899" sc="1" el="1899" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1900" ordinal="1845" sl="1900" sc="1" el="1900" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1901" ordinal="1846" sl="1901" sc="1" el="1901" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1902" ordinal="1847" sl="1902" sc="1" el="1902" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1903" ordinal="1848" sl="1903" sc="1" el="1903" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1905" ordinal="1849" sl="1905" sc="1" el="1905" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1906" ordinal="1850" sl="1906" sc="1" el="1906" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1907" ordinal="1851" sl="1907" sc="1" el="1907" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1908" ordinal="1852" sl="1908" sc="1" el="1908" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1909" ordinal="1853" sl="1909" sc="1" el="1909" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1910" ordinal="1854" sl="1910" sc="1" el="1910" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1911" ordinal="1855" sl="1911" sc="1" el="1911" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1912" ordinal="1856" sl="1912" sc="1" el="1912" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1913" ordinal="1857" sl="1913" sc="1" el="1913" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1914" ordinal="1858" sl="1914" sc="1" el="1914" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1915" ordinal="1859" sl="1915" sc="1" el="1915" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1916" ordinal="1860" sl="1916" sc="1" el="1916" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1917" ordinal="1861" sl="1917" sc="1" el="1917" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1918" ordinal="1862" sl="1918" sc="1" el="1918" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1919" ordinal="1863" sl="1919" sc="1" el="1919" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1920" ordinal="1864" sl="1920" sc="1" el="1920" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1922" ordinal="1865" sl="1922" sc="1" el="1922" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1923" ordinal="1866" sl="1923" sc="1" el="1923" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1924" ordinal="1867" sl="1924" sc="1" el="1924" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1925" ordinal="1868" sl="1925" sc="1" el="1925" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1926" ordinal="1869" sl="1926" sc="1" el="1926" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1927" ordinal="1870" sl="1927" sc="1" el="1927" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1928" ordinal="1871" sl="1928" sc="1" el="1928" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1929" ordinal="1872" sl="1929" sc="1" el="1929" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1930" ordinal="1873" sl="1930" sc="1" el="1930" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1931" ordinal="1874" sl="1931" sc="1" el="1931" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1932" ordinal="1875" sl="1932" sc="1" el="1932" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1933" ordinal="1876" sl="1933" sc="1" el="1933" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1934" ordinal="1877" sl="1934" sc="1" el="1934" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1935" ordinal="1878" sl="1935" sc="1" el="1935" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1936" ordinal="1879" sl="1936" sc="1" el="1936" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1937" ordinal="1880" sl="1937" sc="1" el="1937" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1938" ordinal="1881" sl="1938" sc="1" el="1938" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1939" ordinal="1882" sl="1939" sc="1" el="1939" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1940" ordinal="1883" sl="1940" sc="1" el="1940" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1941" ordinal="1884" sl="1941" sc="1" el="1941" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1942" ordinal="1885" sl="1942" sc="1" el="1942" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1943" ordinal="1886" sl="1943" sc="1" el="1943" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1944" ordinal="1887" sl="1944" sc="1" el="1944" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1945" ordinal="1888" sl="1945" sc="1" el="1945" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1946" ordinal="1889" sl="1946" sc="1" el="1946" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1947" ordinal="1890" sl="1947" sc="1" el="1947" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1948" ordinal="1891" sl="1948" sc="1" el="1948" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1949" ordinal="1892" sl="1949" sc="1" el="1949" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1950" ordinal="1893" sl="1950" sc="1" el="1950" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1951" ordinal="1894" sl="1951" sc="1" el="1951" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1952" ordinal="1895" sl="1952" sc="1" el="1952" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1953" ordinal="1896" sl="1953" sc="1" el="1953" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1954" ordinal="1897" sl="1954" sc="1" el="1954" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1955" ordinal="1898" sl="1955" sc="1" el="1955" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1957" ordinal="1899" sl="1957" sc="1" el="1957" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1958" ordinal="1900" sl="1958" sc="1" el="1958" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1959" ordinal="1901" sl="1959" sc="1" el="1959" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1960" ordinal="1902" sl="1960" sc="1" el="1960" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1961" ordinal="1903" sl="1961" sc="1" el="1961" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1962" ordinal="1904" sl="1962" sc="1" el="1962" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1963" ordinal="1905" sl="1963" sc="1" el="1963" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1964" ordinal="1906" sl="1964" sc="1" el="1964" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1965" ordinal="1907" sl="1965" sc="1" el="1965" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1966" ordinal="1908" sl="1966" sc="1" el="1966" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1967" ordinal="1909" sl="1967" sc="1" el="1967" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1968" ordinal="1910" sl="1968" sc="1" el="1968" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1969" ordinal="1911" sl="1969" sc="1" el="1969" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1970" ordinal="1912" sl="1970" sc="1" el="1970" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1971" ordinal="1913" sl="1971" sc="1" el="1971" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1972" ordinal="1914" sl="1972" sc="1" el="1972" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1973" ordinal="1915" sl="1973" sc="1" el="1973" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1974" ordinal="1916" sl="1974" sc="1" el="1974" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1975" ordinal="1917" sl="1975" sc="1" el="1975" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1976" ordinal="1918" sl="1976" sc="1" el="1976" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1977" ordinal="1919" sl="1977" sc="1" el="1977" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1978" ordinal="1920" sl="1978" sc="1" el="1978" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1979" ordinal="1921" sl="1979" sc="1" el="1979" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1980" ordinal="1922" sl="1980" sc="1" el="1980" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1981" ordinal="1923" sl="1981" sc="1" el="1981" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1982" ordinal="1924" sl="1982" sc="1" el="1982" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1983" ordinal="1925" sl="1983" sc="1" el="1983" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1984" ordinal="1926" sl="1984" sc="1" el="1984" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1985" ordinal="1927" sl="1985" sc="1" el="1985" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1986" ordinal="1928" sl="1986" sc="1" el="1986" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1987" ordinal="1929" sl="1987" sc="1" el="1987" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1988" ordinal="1930" sl="1988" sc="1" el="1988" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1989" ordinal="1931" sl="1989" sc="1" el="1989" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1990" ordinal="1932" sl="1990" sc="1" el="1990" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1991" ordinal="1933" sl="1991" sc="1" el="1991" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1992" ordinal="1934" sl="1992" sc="1" el="1992" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1993" ordinal="1935" sl="1993" sc="1" el="1993" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1994" ordinal="1936" sl="1994" sc="1" el="1994" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1995" ordinal="1937" sl="1995" sc="1" el="1995" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1997" ordinal="1938" sl="1997" sc="1" el="1997" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1998" ordinal="1939" sl="1998" sc="1" el="1998" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="1999" ordinal="1940" sl="1999" sc="1" el="1999" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2000" ordinal="1941" sl="2000" sc="1" el="2000" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2001" ordinal="1942" sl="2001" sc="1" el="2001" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2002" ordinal="1943" sl="2002" sc="1" el="2002" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2003" ordinal="1944" sl="2003" sc="1" el="2003" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2004" ordinal="1945" sl="2004" sc="1" el="2004" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2005" ordinal="1946" sl="2005" sc="1" el="2005" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2006" ordinal="1947" sl="2006" sc="1" el="2006" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2007" ordinal="1948" sl="2007" sc="1" el="2007" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2008" ordinal="1949" sl="2008" sc="1" el="2008" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2009" ordinal="1950" sl="2009" sc="1" el="2009" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2010" ordinal="1951" sl="2010" sc="1" el="2010" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2011" ordinal="1952" sl="2011" sc="1" el="2011" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2012" ordinal="1953" sl="2012" sc="1" el="2012" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2013" ordinal="1954" sl="2013" sc="1" el="2013" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2014" ordinal="1955" sl="2014" sc="1" el="2014" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2015" ordinal="1956" sl="2015" sc="1" el="2015" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2016" ordinal="1957" sl="2016" sc="1" el="2016" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2017" ordinal="1958" sl="2017" sc="1" el="2017" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2018" ordinal="1959" sl="2018" sc="1" el="2018" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2019" ordinal="1960" sl="2019" sc="1" el="2019" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2020" ordinal="1961" sl="2020" sc="1" el="2020" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2021" ordinal="1962" sl="2021" sc="1" el="2021" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2022" ordinal="1963" sl="2022" sc="1" el="2022" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2023" ordinal="1964" sl="2023" sc="1" el="2023" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2024" ordinal="1965" sl="2024" sc="1" el="2024" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2025" ordinal="1966" sl="2025" sc="1" el="2025" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2026" ordinal="1967" sl="2026" sc="1" el="2026" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2027" ordinal="1968" sl="2027" sc="1" el="2027" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2028" ordinal="1969" sl="2028" sc="1" el="2028" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2029" ordinal="1970" sl="2029" sc="1" el="2029" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2030" ordinal="1971" sl="2030" sc="1" el="2030" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2031" ordinal="1972" sl="2031" sc="1" el="2031" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2032" ordinal="1973" sl="2032" sc="1" el="2032" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2033" ordinal="1974" sl="2033" sc="1" el="2033" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2034" ordinal="1975" sl="2034" sc="1" el="2034" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2035" ordinal="1976" sl="2035" sc="1" el="2035" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2036" ordinal="1977" sl="2036" sc="1" el="2036" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2037" ordinal="1978" sl="2037" sc="1" el="2037" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2038" ordinal="1979" sl="2038" sc="1" el="2038" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2039" ordinal="1980" sl="2039" sc="1" el="2039" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2040" ordinal="1981" sl="2040" sc="1" el="2040" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2041" ordinal="1982" sl="2041" sc="1" el="2041" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2042" ordinal="1983" sl="2042" sc="1" el="2042" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2043" ordinal="1984" sl="2043" sc="1" el="2043" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2044" ordinal="1985" sl="2044" sc="1" el="2044" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2045" ordinal="1986" sl="2045" sc="1" el="2045" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2046" ordinal="1987" sl="2046" sc="1" el="2046" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2047" ordinal="1988" sl="2047" sc="1" el="2047" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2048" ordinal="1989" sl="2048" sc="1" el="2048" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2049" ordinal="1990" sl="2049" sc="1" el="2049" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2050" ordinal="1991" sl="2050" sc="1" el="2050" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2051" ordinal="1992" sl="2051" sc="1" el="2051" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2052" ordinal="1993" sl="2052" sc="1" el="2052" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2053" ordinal="1994" sl="2053" sc="1" el="2053" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2054" ordinal="1995" sl="2054" sc="1" el="2054" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2055" ordinal="1996" sl="2055" sc="1" el="2055" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2056" ordinal="1997" sl="2056" sc="1" el="2056" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2057" ordinal="1998" sl="2057" sc="1" el="2057" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2059" ordinal="1999" sl="2059" sc="1" el="2059" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2060" ordinal="2000" sl="2060" sc="1" el="2060" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2061" ordinal="2001" sl="2061" sc="1" el="2061" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2062" ordinal="2002" sl="2062" sc="1" el="2062" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2063" ordinal="2003" sl="2063" sc="1" el="2063" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2064" ordinal="2004" sl="2064" sc="1" el="2064" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2065" ordinal="2005" sl="2065" sc="1" el="2065" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2066" ordinal="2006" sl="2066" sc="1" el="2066" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2067" ordinal="2007" sl="2067" sc="1" el="2067" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2068" ordinal="2008" sl="2068" sc="1" el="2068" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2069" ordinal="2009" sl="2069" sc="1" el="2069" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2070" ordinal="2010" sl="2070" sc="1" el="2070" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2071" ordinal="2011" sl="2071" sc="1" el="2071" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2072" ordinal="2012" sl="2072" sc="1" el="2072" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2073" ordinal="2013" sl="2073" sc="1" el="2073" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2074" ordinal="2014" sl="2074" sc="1" el="2074" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2075" ordinal="2015" sl="2075" sc="1" el="2075" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2076" ordinal="2016" sl="2076" sc="1" el="2076" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2077" ordinal="2017" sl="2077" sc="1" el="2077" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2078" ordinal="2018" sl="2078" sc="1" el="2078" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2079" ordinal="2019" sl="2079" sc="1" el="2079" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2080" ordinal="2020" sl="2080" sc="1" el="2080" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2081" ordinal="2021" sl="2081" sc="1" el="2081" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2082" ordinal="2022" sl="2082" sc="1" el="2082" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2083" ordinal="2023" sl="2083" sc="1" el="2083" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2084" ordinal="2024" sl="2084" sc="1" el="2084" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2085" ordinal="2025" sl="2085" sc="1" el="2085" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2087" ordinal="2026" sl="2087" sc="1" el="2087" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2088" ordinal="2027" sl="2088" sc="1" el="2088" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2089" ordinal="2028" sl="2089" sc="1" el="2089" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2090" ordinal="2029" sl="2090" sc="1" el="2090" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2091" ordinal="2030" sl="2091" sc="1" el="2091" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2092" ordinal="2031" sl="2092" sc="1" el="2092" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2093" ordinal="2032" sl="2093" sc="1" el="2093" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2094" ordinal="2033" sl="2094" sc="1" el="2094" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2095" ordinal="2034" sl="2095" sc="1" el="2095" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2096" ordinal="2035" sl="2096" sc="1" el="2096" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2097" ordinal="2036" sl="2097" sc="1" el="2097" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2098" ordinal="2037" sl="2098" sc="1" el="2098" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2099" ordinal="2038" sl="2099" sc="1" el="2099" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2100" ordinal="2039" sl="2100" sc="1" el="2100" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2101" ordinal="2040" sl="2101" sc="1" el="2101" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2102" ordinal="2041" sl="2102" sc="1" el="2102" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2103" ordinal="2042" sl="2103" sc="1" el="2103" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2104" ordinal="2043" sl="2104" sc="1" el="2104" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2105" ordinal="2044" sl="2105" sc="1" el="2105" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2107" ordinal="2045" sl="2107" sc="1" el="2107" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2108" ordinal="2046" sl="2108" sc="1" el="2108" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2109" ordinal="2047" sl="2109" sc="1" el="2109" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2110" ordinal="2048" sl="2110" sc="1" el="2110" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2111" ordinal="2049" sl="2111" sc="1" el="2111" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2112" ordinal="2050" sl="2112" sc="1" el="2112" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2113" ordinal="2051" sl="2113" sc="1" el="2113" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2114" ordinal="2052" sl="2114" sc="1" el="2114" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2115" ordinal="2053" sl="2115" sc="1" el="2115" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2116" ordinal="2054" sl="2116" sc="1" el="2116" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2117" ordinal="2055" sl="2117" sc="1" el="2117" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2118" ordinal="2056" sl="2118" sc="1" el="2118" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2119" ordinal="2057" sl="2119" sc="1" el="2119" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2120" ordinal="2058" sl="2120" sc="1" el="2120" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2121" ordinal="2059" sl="2121" sc="1" el="2121" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2122" ordinal="2060" sl="2122" sc="1" el="2122" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2123" ordinal="2061" sl="2123" sc="1" el="2123" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2124" ordinal="2062" sl="2124" sc="1" el="2124" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2125" ordinal="2063" sl="2125" sc="1" el="2125" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2126" ordinal="2064" sl="2126" sc="1" el="2126" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2127" ordinal="2065" sl="2127" sc="1" el="2127" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2128" ordinal="2066" sl="2128" sc="1" el="2128" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2129" ordinal="2067" sl="2129" sc="1" el="2129" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2130" ordinal="2068" sl="2130" sc="1" el="2130" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2131" ordinal="2069" sl="2131" sc="1" el="2131" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2132" ordinal="2070" sl="2132" sc="1" el="2132" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2133" ordinal="2071" sl="2133" sc="1" el="2133" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2134" ordinal="2072" sl="2134" sc="1" el="2134" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2135" ordinal="2073" sl="2135" sc="1" el="2135" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2137" ordinal="2074" sl="2137" sc="1" el="2137" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2138" ordinal="2075" sl="2138" sc="1" el="2138" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2139" ordinal="2076" sl="2139" sc="1" el="2139" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2140" ordinal="2077" sl="2140" sc="1" el="2140" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2141" ordinal="2078" sl="2141" sc="1" el="2141" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2142" ordinal="2079" sl="2142" sc="1" el="2142" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2143" ordinal="2080" sl="2143" sc="1" el="2143" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2144" ordinal="2081" sl="2144" sc="1" el="2144" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2145" ordinal="2082" sl="2145" sc="1" el="2145" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2146" ordinal="2083" sl="2146" sc="1" el="2146" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2147" ordinal="2084" sl="2147" sc="1" el="2147" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2148" ordinal="2085" sl="2148" sc="1" el="2148" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2149" ordinal="2086" sl="2149" sc="1" el="2149" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2150" ordinal="2087" sl="2150" sc="1" el="2150" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2151" ordinal="2088" sl="2151" sc="1" el="2151" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2152" ordinal="2089" sl="2152" sc="1" el="2152" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2153" ordinal="2090" sl="2153" sc="1" el="2153" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2154" ordinal="2091" sl="2154" sc="1" el="2154" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2155" ordinal="2092" sl="2155" sc="1" el="2155" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2156" ordinal="2093" sl="2156" sc="1" el="2156" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2157" ordinal="2094" sl="2157" sc="1" el="2157" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2158" ordinal="2095" sl="2158" sc="1" el="2158" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2159" ordinal="2096" sl="2159" sc="1" el="2159" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2160" ordinal="2097" sl="2160" sc="1" el="2160" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2161" ordinal="2098" sl="2161" sc="1" el="2161" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2162" ordinal="2099" sl="2162" sc="1" el="2162" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2163" ordinal="2100" sl="2163" sc="1" el="2163" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2164" ordinal="2101" sl="2164" sc="1" el="2164" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2165" ordinal="2102" sl="2165" sc="1" el="2165" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2166" ordinal="2103" sl="2166" sc="1" el="2166" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2167" ordinal="2104" sl="2167" sc="1" el="2167" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2168" ordinal="2105" sl="2168" sc="1" el="2168" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2170" ordinal="2106" sl="2170" sc="1" el="2170" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2171" ordinal="2107" sl="2171" sc="1" el="2171" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2172" ordinal="2108" sl="2172" sc="1" el="2172" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2173" ordinal="2109" sl="2173" sc="1" el="2173" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2174" ordinal="2110" sl="2174" sc="1" el="2174" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2175" ordinal="2111" sl="2175" sc="1" el="2175" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2176" ordinal="2112" sl="2176" sc="1" el="2176" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2177" ordinal="2113" sl="2177" sc="1" el="2177" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2178" ordinal="2114" sl="2178" sc="1" el="2178" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2179" ordinal="2115" sl="2179" sc="1" el="2179" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2180" ordinal="2116" sl="2180" sc="1" el="2180" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2181" ordinal="2117" sl="2181" sc="1" el="2181" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2182" ordinal="2118" sl="2182" sc="1" el="2182" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2183" ordinal="2119" sl="2183" sc="1" el="2183" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2184" ordinal="2120" sl="2184" sc="1" el="2184" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2185" ordinal="2121" sl="2185" sc="1" el="2185" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2186" ordinal="2122" sl="2186" sc="1" el="2186" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2187" ordinal="2123" sl="2187" sc="1" el="2187" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2188" ordinal="2124" sl="2188" sc="1" el="2188" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2189" ordinal="2125" sl="2189" sc="1" el="2189" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2190" ordinal="2126" sl="2190" sc="1" el="2190" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2191" ordinal="2127" sl="2191" sc="1" el="2191" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2192" ordinal="2128" sl="2192" sc="1" el="2192" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2193" ordinal="2129" sl="2193" sc="1" el="2193" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2195" ordinal="2130" sl="2195" sc="1" el="2195" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2196" ordinal="2131" sl="2196" sc="1" el="2196" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2197" ordinal="2132" sl="2197" sc="1" el="2197" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2198" ordinal="2133" sl="2198" sc="1" el="2198" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2199" ordinal="2134" sl="2199" sc="1" el="2199" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2200" ordinal="2135" sl="2200" sc="1" el="2200" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2201" ordinal="2136" sl="2201" sc="1" el="2201" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2202" ordinal="2137" sl="2202" sc="1" el="2202" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2203" ordinal="2138" sl="2203" sc="1" el="2203" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2204" ordinal="2139" sl="2204" sc="1" el="2204" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2205" ordinal="2140" sl="2205" sc="1" el="2205" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2206" ordinal="2141" sl="2206" sc="1" el="2206" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2207" ordinal="2142" sl="2207" sc="1" el="2207" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2208" ordinal="2143" sl="2208" sc="1" el="2208" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2209" ordinal="2144" sl="2209" sc="1" el="2209" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2210" ordinal="2145" sl="2210" sc="1" el="2210" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2211" ordinal="2146" sl="2211" sc="1" el="2211" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2212" ordinal="2147" sl="2212" sc="1" el="2212" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2213" ordinal="2148" sl="2213" sc="1" el="2213" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2214" ordinal="2149" sl="2214" sc="1" el="2214" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2215" ordinal="2150" sl="2215" sc="1" el="2215" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2216" ordinal="2151" sl="2216" sc="1" el="2216" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2217" ordinal="2152" sl="2217" sc="1" el="2217" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2218" ordinal="2153" sl="2218" sc="1" el="2218" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2220" ordinal="2154" sl="2220" sc="1" el="2220" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2221" ordinal="2155" sl="2221" sc="1" el="2221" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2222" ordinal="2156" sl="2222" sc="1" el="2222" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2223" ordinal="2157" sl="2223" sc="1" el="2223" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2224" ordinal="2158" sl="2224" sc="1" el="2224" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2225" ordinal="2159" sl="2225" sc="1" el="2225" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2226" ordinal="2160" sl="2226" sc="1" el="2226" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2227" ordinal="2161" sl="2227" sc="1" el="2227" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2228" ordinal="2162" sl="2228" sc="1" el="2228" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2229" ordinal="2163" sl="2229" sc="1" el="2229" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2230" ordinal="2164" sl="2230" sc="1" el="2230" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2231" ordinal="2165" sl="2231" sc="1" el="2231" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2232" ordinal="2166" sl="2232" sc="1" el="2232" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2233" ordinal="2167" sl="2233" sc="1" el="2233" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2234" ordinal="2168" sl="2234" sc="1" el="2234" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2235" ordinal="2169" sl="2235" sc="1" el="2235" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2236" ordinal="2170" sl="2236" sc="1" el="2236" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2237" ordinal="2171" sl="2237" sc="1" el="2237" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2238" ordinal="2172" sl="2238" sc="1" el="2238" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2239" ordinal="2173" sl="2239" sc="1" el="2239" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2240" ordinal="2174" sl="2240" sc="1" el="2240" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2241" ordinal="2175" sl="2241" sc="1" el="2241" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2242" ordinal="2176" sl="2242" sc="1" el="2242" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2243" ordinal="2177" sl="2243" sc="1" el="2243" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2244" ordinal="2178" sl="2244" sc="1" el="2244" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2245" ordinal="2179" sl="2245" sc="1" el="2245" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2246" ordinal="2180" sl="2246" sc="1" el="2246" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2247" ordinal="2181" sl="2247" sc="1" el="2247" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2248" ordinal="2182" sl="2248" sc="1" el="2248" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2249" ordinal="2183" sl="2249" sc="1" el="2249" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2250" ordinal="2184" sl="2250" sc="1" el="2250" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2251" ordinal="2185" sl="2251" sc="1" el="2251" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2253" ordinal="2186" sl="2253" sc="1" el="2253" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2254" ordinal="2187" sl="2254" sc="1" el="2254" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2255" ordinal="2188" sl="2255" sc="1" el="2255" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2256" ordinal="2189" sl="2256" sc="1" el="2256" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2257" ordinal="2190" sl="2257" sc="1" el="2257" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2258" ordinal="2191" sl="2258" sc="1" el="2258" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2259" ordinal="2192" sl="2259" sc="1" el="2259" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2260" ordinal="2193" sl="2260" sc="1" el="2260" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2261" ordinal="2194" sl="2261" sc="1" el="2261" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2262" ordinal="2195" sl="2262" sc="1" el="2262" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2263" ordinal="2196" sl="2263" sc="1" el="2263" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2264" ordinal="2197" sl="2264" sc="1" el="2264" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2265" ordinal="2198" sl="2265" sc="1" el="2265" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2266" ordinal="2199" sl="2266" sc="1" el="2266" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2267" ordinal="2200" sl="2267" sc="1" el="2267" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2268" ordinal="2201" sl="2268" sc="1" el="2268" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2269" ordinal="2202" sl="2269" sc="1" el="2269" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2270" ordinal="2203" sl="2270" sc="1" el="2270" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2271" ordinal="2204" sl="2271" sc="1" el="2271" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2272" ordinal="2205" sl="2272" sc="1" el="2272" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2273" ordinal="2206" sl="2273" sc="1" el="2273" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2274" ordinal="2207" sl="2274" sc="1" el="2274" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2275" ordinal="2208" sl="2275" sc="1" el="2275" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2276" ordinal="2209" sl="2276" sc="1" el="2276" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2278" ordinal="2210" sl="2278" sc="1" el="2278" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2279" ordinal="2211" sl="2279" sc="1" el="2279" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2280" ordinal="2212" sl="2280" sc="1" el="2280" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2281" ordinal="2213" sl="2281" sc="1" el="2281" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2282" ordinal="2214" sl="2282" sc="1" el="2282" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2283" ordinal="2215" sl="2283" sc="1" el="2283" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2284" ordinal="2216" sl="2284" sc="1" el="2284" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2285" ordinal="2217" sl="2285" sc="1" el="2285" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2286" ordinal="2218" sl="2286" sc="1" el="2286" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2287" ordinal="2219" sl="2287" sc="1" el="2287" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2288" ordinal="2220" sl="2288" sc="1" el="2288" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2289" ordinal="2221" sl="2289" sc="1" el="2289" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2290" ordinal="2222" sl="2290" sc="1" el="2290" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2291" ordinal="2223" sl="2291" sc="1" el="2291" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2292" ordinal="2224" sl="2292" sc="1" el="2292" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2293" ordinal="2225" sl="2293" sc="1" el="2293" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2294" ordinal="2226" sl="2294" sc="1" el="2294" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2295" ordinal="2227" sl="2295" sc="1" el="2295" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2296" ordinal="2228" sl="2296" sc="1" el="2296" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2297" ordinal="2229" sl="2297" sc="1" el="2297" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2298" ordinal="2230" sl="2298" sc="1" el="2298" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2299" ordinal="2231" sl="2299" sc="1" el="2299" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2300" ordinal="2232" sl="2300" sc="1" el="2300" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2301" ordinal="2233" sl="2301" sc="1" el="2301" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2302" ordinal="2234" sl="2302" sc="1" el="2302" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2303" ordinal="2235" sl="2303" sc="1" el="2303" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2304" ordinal="2236" sl="2304" sc="1" el="2304" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2305" ordinal="2237" sl="2305" sc="1" el="2305" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2306" ordinal="2238" sl="2306" sc="1" el="2306" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2307" ordinal="2239" sl="2307" sc="1" el="2307" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2308" ordinal="2240" sl="2308" sc="1" el="2308" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2309" ordinal="2241" sl="2309" sc="1" el="2309" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2310" ordinal="2242" sl="2310" sc="1" el="2310" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2311" ordinal="2243" sl="2311" sc="1" el="2311" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2312" ordinal="2244" sl="2312" sc="1" el="2312" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2313" ordinal="2245" sl="2313" sc="1" el="2313" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2314" ordinal="2246" sl="2314" sc="1" el="2314" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2315" ordinal="2247" sl="2315" sc="1" el="2315" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2316" ordinal="2248" sl="2316" sc="1" el="2316" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2317" ordinal="2249" sl="2317" sc="1" el="2317" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2318" ordinal="2250" sl="2318" sc="1" el="2318" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2319" ordinal="2251" sl="2319" sc="1" el="2319" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2320" ordinal="2252" sl="2320" sc="1" el="2320" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2321" ordinal="2253" sl="2321" sc="1" el="2321" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2322" ordinal="2254" sl="2322" sc="1" el="2322" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2324" ordinal="2255" sl="2324" sc="1" el="2324" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2325" ordinal="2256" sl="2325" sc="1" el="2325" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2326" ordinal="2257" sl="2326" sc="1" el="2326" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2327" ordinal="2258" sl="2327" sc="1" el="2327" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2328" ordinal="2259" sl="2328" sc="1" el="2328" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2329" ordinal="2260" sl="2329" sc="1" el="2329" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2330" ordinal="2261" sl="2330" sc="1" el="2330" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2331" ordinal="2262" sl="2331" sc="1" el="2331" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2332" ordinal="2263" sl="2332" sc="1" el="2332" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2333" ordinal="2264" sl="2333" sc="1" el="2333" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2334" ordinal="2265" sl="2334" sc="1" el="2334" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2335" ordinal="2266" sl="2335" sc="1" el="2335" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2336" ordinal="2267" sl="2336" sc="1" el="2336" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2337" ordinal="2268" sl="2337" sc="1" el="2337" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2338" ordinal="2269" sl="2338" sc="1" el="2338" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2339" ordinal="2270" sl="2339" sc="1" el="2339" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2340" ordinal="2271" sl="2340" sc="1" el="2340" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2341" ordinal="2272" sl="2341" sc="1" el="2341" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2342" ordinal="2273" sl="2342" sc="1" el="2342" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2343" ordinal="2274" sl="2343" sc="1" el="2343" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2344" ordinal="2275" sl="2344" sc="1" el="2344" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2345" ordinal="2276" sl="2345" sc="1" el="2345" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2346" ordinal="2277" sl="2346" sc="1" el="2346" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2347" ordinal="2278" sl="2347" sc="1" el="2347" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2348" ordinal="2279" sl="2348" sc="1" el="2348" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2349" ordinal="2280" sl="2349" sc="1" el="2349" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2350" ordinal="2281" sl="2350" sc="1" el="2350" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2351" ordinal="2282" sl="2351" sc="1" el="2351" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2352" ordinal="2283" sl="2352" sc="1" el="2352" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2353" ordinal="2284" sl="2353" sc="1" el="2353" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2354" ordinal="2285" sl="2354" sc="1" el="2354" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2355" ordinal="2286" sl="2355" sc="1" el="2355" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2356" ordinal="2287" sl="2356" sc="1" el="2356" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2357" ordinal="2288" sl="2357" sc="1" el="2357" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2359" ordinal="2289" sl="2359" sc="1" el="2359" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2360" ordinal="2290" sl="2360" sc="1" el="2360" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2361" ordinal="2291" sl="2361" sc="1" el="2361" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2362" ordinal="2292" sl="2362" sc="1" el="2362" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2363" ordinal="2293" sl="2363" sc="1" el="2363" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2364" ordinal="2294" sl="2364" sc="1" el="2364" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2365" ordinal="2295" sl="2365" sc="1" el="2365" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2366" ordinal="2296" sl="2366" sc="1" el="2366" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2367" ordinal="2297" sl="2367" sc="1" el="2367" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2368" ordinal="2298" sl="2368" sc="1" el="2368" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2369" ordinal="2299" sl="2369" sc="1" el="2369" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2370" ordinal="2300" sl="2370" sc="1" el="2370" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2371" ordinal="2301" sl="2371" sc="1" el="2371" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2372" ordinal="2302" sl="2372" sc="1" el="2372" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2373" ordinal="2303" sl="2373" sc="1" el="2373" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2374" ordinal="2304" sl="2374" sc="1" el="2374" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2375" ordinal="2305" sl="2375" sc="1" el="2375" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2376" ordinal="2306" sl="2376" sc="1" el="2376" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2377" ordinal="2307" sl="2377" sc="1" el="2377" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2378" ordinal="2308" sl="2378" sc="1" el="2378" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2379" ordinal="2309" sl="2379" sc="1" el="2379" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2380" ordinal="2310" sl="2380" sc="1" el="2380" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2381" ordinal="2311" sl="2381" sc="1" el="2381" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2382" ordinal="2312" sl="2382" sc="1" el="2382" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2383" ordinal="2313" sl="2383" sc="1" el="2383" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2384" ordinal="2314" sl="2384" sc="1" el="2384" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2385" ordinal="2315" sl="2385" sc="1" el="2385" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2386" ordinal="2316" sl="2386" sc="1" el="2386" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2387" ordinal="2317" sl="2387" sc="1" el="2387" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2388" ordinal="2318" sl="2388" sc="1" el="2388" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2389" ordinal="2319" sl="2389" sc="1" el="2389" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2390" ordinal="2320" sl="2390" sc="1" el="2390" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2392" ordinal="2321" sl="2392" sc="1" el="2392" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2393" ordinal="2322" sl="2393" sc="1" el="2393" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2394" ordinal="2323" sl="2394" sc="1" el="2394" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2395" ordinal="2324" sl="2395" sc="1" el="2395" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2396" ordinal="2325" sl="2396" sc="1" el="2396" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2397" ordinal="2326" sl="2397" sc="1" el="2397" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2398" ordinal="2327" sl="2398" sc="1" el="2398" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2399" ordinal="2328" sl="2399" sc="1" el="2399" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2400" ordinal="2329" sl="2400" sc="1" el="2400" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2401" ordinal="2330" sl="2401" sc="1" el="2401" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2402" ordinal="2331" sl="2402" sc="1" el="2402" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2403" ordinal="2332" sl="2403" sc="1" el="2403" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2404" ordinal="2333" sl="2404" sc="1" el="2404" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2405" ordinal="2334" sl="2405" sc="1" el="2405" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2406" ordinal="2335" sl="2406" sc="1" el="2406" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2407" ordinal="2336" sl="2407" sc="1" el="2407" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2408" ordinal="2337" sl="2408" sc="1" el="2408" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2409" ordinal="2338" sl="2409" sc="1" el="2409" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2410" ordinal="2339" sl="2410" sc="1" el="2410" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2411" ordinal="2340" sl="2411" sc="1" el="2411" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2412" ordinal="2341" sl="2412" sc="1" el="2412" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2413" ordinal="2342" sl="2413" sc="1" el="2413" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2415" ordinal="2343" sl="2415" sc="1" el="2415" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2416" ordinal="2344" sl="2416" sc="1" el="2416" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2417" ordinal="2345" sl="2417" sc="1" el="2417" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2418" ordinal="2346" sl="2418" sc="1" el="2418" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2419" ordinal="2347" sl="2419" sc="1" el="2419" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2420" ordinal="2348" sl="2420" sc="1" el="2420" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2421" ordinal="2349" sl="2421" sc="1" el="2421" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2422" ordinal="2350" sl="2422" sc="1" el="2422" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2423" ordinal="2351" sl="2423" sc="1" el="2423" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2424" ordinal="2352" sl="2424" sc="1" el="2424" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2425" ordinal="2353" sl="2425" sc="1" el="2425" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2426" ordinal="2354" sl="2426" sc="1" el="2426" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2427" ordinal="2355" sl="2427" sc="1" el="2427" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2428" ordinal="2356" sl="2428" sc="1" el="2428" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2429" ordinal="2357" sl="2429" sc="1" el="2429" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2430" ordinal="2358" sl="2430" sc="1" el="2430" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2431" ordinal="2359" sl="2431" sc="1" el="2431" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2432" ordinal="2360" sl="2432" sc="1" el="2432" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2433" ordinal="2361" sl="2433" sc="1" el="2433" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2434" ordinal="2362" sl="2434" sc="1" el="2434" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2435" ordinal="2363" sl="2435" sc="1" el="2435" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2436" ordinal="2364" sl="2436" sc="1" el="2436" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2437" ordinal="2365" sl="2437" sc="1" el="2437" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2438" ordinal="2366" sl="2438" sc="1" el="2438" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2439" ordinal="2367" sl="2439" sc="1" el="2439" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2440" ordinal="2368" sl="2440" sc="1" el="2440" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2441" ordinal="2369" sl="2441" sc="1" el="2441" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2442" ordinal="2370" sl="2442" sc="1" el="2442" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2443" ordinal="2371" sl="2443" sc="1" el="2443" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2444" ordinal="2372" sl="2444" sc="1" el="2444" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2445" ordinal="2373" sl="2445" sc="1" el="2445" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2446" ordinal="2374" sl="2446" sc="1" el="2446" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2447" ordinal="2375" sl="2447" sc="1" el="2447" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2448" ordinal="2376" sl="2448" sc="1" el="2448" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2449" ordinal="2377" sl="2449" sc="1" el="2449" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2450" ordinal="2378" sl="2450" sc="1" el="2450" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2452" ordinal="2379" sl="2452" sc="1" el="2452" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2453" ordinal="2380" sl="2453" sc="1" el="2453" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2454" ordinal="2381" sl="2454" sc="1" el="2454" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2455" ordinal="2382" sl="2455" sc="1" el="2455" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2456" ordinal="2383" sl="2456" sc="1" el="2456" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2457" ordinal="2384" sl="2457" sc="1" el="2457" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2458" ordinal="2385" sl="2458" sc="1" el="2458" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2459" ordinal="2386" sl="2459" sc="1" el="2459" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2460" ordinal="2387" sl="2460" sc="1" el="2460" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2461" ordinal="2388" sl="2461" sc="1" el="2461" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2462" ordinal="2389" sl="2462" sc="1" el="2462" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2463" ordinal="2390" sl="2463" sc="1" el="2463" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2464" ordinal="2391" sl="2464" sc="1" el="2464" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2465" ordinal="2392" sl="2465" sc="1" el="2465" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2466" ordinal="2393" sl="2466" sc="1" el="2466" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2467" ordinal="2394" sl="2467" sc="1" el="2467" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2468" ordinal="2395" sl="2468" sc="1" el="2468" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2469" ordinal="2396" sl="2469" sc="1" el="2469" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2470" ordinal="2397" sl="2470" sc="1" el="2470" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2471" ordinal="2398" sl="2471" sc="1" el="2471" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2472" ordinal="2399" sl="2472" sc="1" el="2472" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2473" ordinal="2400" sl="2473" sc="1" el="2473" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2474" ordinal="2401" sl="2474" sc="1" el="2474" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2475" ordinal="2402" sl="2475" sc="1" el="2475" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2476" ordinal="2403" sl="2476" sc="1" el="2476" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2477" ordinal="2404" sl="2477" sc="1" el="2477" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2478" ordinal="2405" sl="2478" sc="1" el="2478" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2480" ordinal="2406" sl="2480" sc="1" el="2480" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2481" ordinal="2407" sl="2481" sc="1" el="2481" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2482" ordinal="2408" sl="2482" sc="1" el="2482" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2483" ordinal="2409" sl="2483" sc="1" el="2483" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2484" ordinal="2410" sl="2484" sc="1" el="2484" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2485" ordinal="2411" sl="2485" sc="1" el="2485" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2486" ordinal="2412" sl="2486" sc="1" el="2486" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2487" ordinal="2413" sl="2487" sc="1" el="2487" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2488" ordinal="2414" sl="2488" sc="1" el="2488" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2489" ordinal="2415" sl="2489" sc="1" el="2489" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2490" ordinal="2416" sl="2490" sc="1" el="2490" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2491" ordinal="2417" sl="2491" sc="1" el="2491" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2492" ordinal="2418" sl="2492" sc="1" el="2492" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2493" ordinal="2419" sl="2493" sc="1" el="2493" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2494" ordinal="2420" sl="2494" sc="1" el="2494" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2495" ordinal="2421" sl="2495" sc="1" el="2495" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2496" ordinal="2422" sl="2496" sc="1" el="2496" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2497" ordinal="2423" sl="2497" sc="1" el="2497" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2498" ordinal="2424" sl="2498" sc="1" el="2498" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2499" ordinal="2425" sl="2499" sc="1" el="2499" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2500" ordinal="2426" sl="2500" sc="1" el="2500" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2501" ordinal="2427" sl="2501" sc="1" el="2501" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2502" ordinal="2428" sl="2502" sc="1" el="2502" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2503" ordinal="2429" sl="2503" sc="1" el="2503" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2504" ordinal="2430" sl="2504" sc="1" el="2504" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2505" ordinal="2431" sl="2505" sc="1" el="2505" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2506" ordinal="2432" sl="2506" sc="1" el="2506" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2507" ordinal="2433" sl="2507" sc="1" el="2507" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2508" ordinal="2434" sl="2508" sc="1" el="2508" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2509" ordinal="2435" sl="2509" sc="1" el="2509" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2510" ordinal="2436" sl="2510" sc="1" el="2510" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2511" ordinal="2437" sl="2511" sc="1" el="2511" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2512" ordinal="2438" sl="2512" sc="1" el="2512" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2513" ordinal="2439" sl="2513" sc="1" el="2513" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2514" ordinal="2440" sl="2514" sc="1" el="2514" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2515" ordinal="2441" sl="2515" sc="1" el="2515" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2516" ordinal="2442" sl="2516" sc="1" el="2516" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2517" ordinal="2443" sl="2517" sc="1" el="2517" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2518" ordinal="2444" sl="2518" sc="1" el="2518" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2519" ordinal="2445" sl="2519" sc="1" el="2519" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2520" ordinal="2446" sl="2520" sc="1" el="2520" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2521" ordinal="2447" sl="2521" sc="1" el="2521" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2522" ordinal="2448" sl="2522" sc="1" el="2522" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2523" ordinal="2449" sl="2523" sc="1" el="2523" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2524" ordinal="2450" sl="2524" sc="1" el="2524" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2525" ordinal="2451" sl="2525" sc="1" el="2525" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2526" ordinal="2452" sl="2526" sc="1" el="2526" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2527" ordinal="2453" sl="2527" sc="1" el="2527" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2528" ordinal="2454" sl="2528" sc="1" el="2528" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2529" ordinal="2455" sl="2529" sc="1" el="2529" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2530" ordinal="2456" sl="2530" sc="1" el="2530" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2531" ordinal="2457" sl="2531" sc="1" el="2531" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2532" ordinal="2458" sl="2532" sc="1" el="2532" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2533" ordinal="2459" sl="2533" sc="1" el="2533" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2534" ordinal="2460" sl="2534" sc="1" el="2534" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2535" ordinal="2461" sl="2535" sc="1" el="2535" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2536" ordinal="2462" sl="2536" sc="1" el="2536" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2537" ordinal="2463" sl="2537" sc="1" el="2537" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2538" ordinal="2464" sl="2538" sc="1" el="2538" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2539" ordinal="2465" sl="2539" sc="1" el="2539" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2540" ordinal="2466" sl="2540" sc="1" el="2540" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2541" ordinal="2467" sl="2541" sc="1" el="2541" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2542" ordinal="2468" sl="2542" sc="1" el="2542" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2543" ordinal="2469" sl="2543" sc="1" el="2543" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2544" ordinal="2470" sl="2544" sc="1" el="2544" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2545" ordinal="2471" sl="2545" sc="1" el="2545" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2546" ordinal="2472" sl="2546" sc="1" el="2546" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2547" ordinal="2473" sl="2547" sc="1" el="2547" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2548" ordinal="2474" sl="2548" sc="1" el="2548" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2549" ordinal="2475" sl="2549" sc="1" el="2549" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2550" ordinal="2476" sl="2550" sc="1" el="2550" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2551" ordinal="2477" sl="2551" sc="1" el="2551" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2552" ordinal="2478" sl="2552" sc="1" el="2552" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2553" ordinal="2479" sl="2553" sc="1" el="2553" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2554" ordinal="2480" sl="2554" sc="1" el="2554" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2555" ordinal="2481" sl="2555" sc="1" el="2555" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2556" ordinal="2482" sl="2556" sc="1" el="2556" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2557" ordinal="2483" sl="2557" sc="1" el="2557" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2558" ordinal="2484" sl="2558" sc="1" el="2558" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2559" ordinal="2485" sl="2559" sc="1" el="2559" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2560" ordinal="2486" sl="2560" sc="1" el="2560" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2561" ordinal="2487" sl="2561" sc="1" el="2561" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2562" ordinal="2488" sl="2562" sc="1" el="2562" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2563" ordinal="2489" sl="2563" sc="1" el="2563" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2564" ordinal="2490" sl="2564" sc="1" el="2564" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2565" ordinal="2491" sl="2565" sc="1" el="2565" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2566" ordinal="2492" sl="2566" sc="1" el="2566" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2567" ordinal="2493" sl="2567" sc="1" el="2567" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2568" ordinal="2494" sl="2568" sc="1" el="2568" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2569" ordinal="2495" sl="2569" sc="1" el="2569" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2570" ordinal="2496" sl="2570" sc="1" el="2570" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2571" ordinal="2497" sl="2571" sc="1" el="2571" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2572" ordinal="2498" sl="2572" sc="1" el="2572" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2573" ordinal="2499" sl="2573" sc="1" el="2573" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2574" ordinal="2500" sl="2574" sc="1" el="2574" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2575" ordinal="2501" sl="2575" sc="1" el="2575" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2576" ordinal="2502" sl="2576" sc="1" el="2576" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2577" ordinal="2503" sl="2577" sc="1" el="2577" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2579" ordinal="2504" sl="2579" sc="1" el="2579" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2580" ordinal="2505" sl="2580" sc="1" el="2580" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2581" ordinal="2506" sl="2581" sc="1" el="2581" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2582" ordinal="2507" sl="2582" sc="1" el="2582" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2583" ordinal="2508" sl="2583" sc="1" el="2583" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2584" ordinal="2509" sl="2584" sc="1" el="2584" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2585" ordinal="2510" sl="2585" sc="1" el="2585" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2586" ordinal="2511" sl="2586" sc="1" el="2586" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2587" ordinal="2512" sl="2587" sc="1" el="2587" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2588" ordinal="2513" sl="2588" sc="1" el="2588" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2589" ordinal="2514" sl="2589" sc="1" el="2589" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2590" ordinal="2515" sl="2590" sc="1" el="2590" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2591" ordinal="2516" sl="2591" sc="1" el="2591" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2592" ordinal="2517" sl="2592" sc="1" el="2592" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2593" ordinal="2518" sl="2593" sc="1" el="2593" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2594" ordinal="2519" sl="2594" sc="1" el="2594" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2595" ordinal="2520" sl="2595" sc="1" el="2595" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2596" ordinal="2521" sl="2596" sc="1" el="2596" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2597" ordinal="2522" sl="2597" sc="1" el="2597" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2598" ordinal="2523" sl="2598" sc="1" el="2598" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2599" ordinal="2524" sl="2599" sc="1" el="2599" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2600" ordinal="2525" sl="2600" sc="1" el="2600" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2602" ordinal="2526" sl="2602" sc="1" el="2602" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2603" ordinal="2527" sl="2603" sc="1" el="2603" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2604" ordinal="2528" sl="2604" sc="1" el="2604" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2605" ordinal="2529" sl="2605" sc="1" el="2605" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2606" ordinal="2530" sl="2606" sc="1" el="2606" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2607" ordinal="2531" sl="2607" sc="1" el="2607" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2608" ordinal="2532" sl="2608" sc="1" el="2608" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2609" ordinal="2533" sl="2609" sc="1" el="2609" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2610" ordinal="2534" sl="2610" sc="1" el="2610" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2611" ordinal="2535" sl="2611" sc="1" el="2611" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2612" ordinal="2536" sl="2612" sc="1" el="2612" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2613" ordinal="2537" sl="2613" sc="1" el="2613" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2614" ordinal="2538" sl="2614" sc="1" el="2614" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2615" ordinal="2539" sl="2615" sc="1" el="2615" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2616" ordinal="2540" sl="2616" sc="1" el="2616" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2617" ordinal="2541" sl="2617" sc="1" el="2617" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2618" ordinal="2542" sl="2618" sc="1" el="2618" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2619" ordinal="2543" sl="2619" sc="1" el="2619" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2620" ordinal="2544" sl="2620" sc="1" el="2620" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2621" ordinal="2545" sl="2621" sc="1" el="2621" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2622" ordinal="2546" sl="2622" sc="1" el="2622" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2623" ordinal="2547" sl="2623" sc="1" el="2623" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2624" ordinal="2548" sl="2624" sc="1" el="2624" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2625" ordinal="2549" sl="2625" sc="1" el="2625" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2627" ordinal="2550" sl="2627" sc="1" el="2627" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2628" ordinal="2551" sl="2628" sc="1" el="2628" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2629" ordinal="2552" sl="2629" sc="1" el="2629" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2630" ordinal="2553" sl="2630" sc="1" el="2630" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2631" ordinal="2554" sl="2631" sc="1" el="2631" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2632" ordinal="2555" sl="2632" sc="1" el="2632" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2633" ordinal="2556" sl="2633" sc="1" el="2633" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2634" ordinal="2557" sl="2634" sc="1" el="2634" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2635" ordinal="2558" sl="2635" sc="1" el="2635" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2636" ordinal="2559" sl="2636" sc="1" el="2636" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2637" ordinal="2560" sl="2637" sc="1" el="2637" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2638" ordinal="2561" sl="2638" sc="1" el="2638" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2639" ordinal="2562" sl="2639" sc="1" el="2639" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2640" ordinal="2563" sl="2640" sc="1" el="2640" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2641" ordinal="2564" sl="2641" sc="1" el="2641" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2642" ordinal="2565" sl="2642" sc="1" el="2642" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2643" ordinal="2566" sl="2643" sc="1" el="2643" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2644" ordinal="2567" sl="2644" sc="1" el="2644" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2645" ordinal="2568" sl="2645" sc="1" el="2645" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2646" ordinal="2569" sl="2646" sc="1" el="2646" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2647" ordinal="2570" sl="2647" sc="1" el="2647" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2648" ordinal="2571" sl="2648" sc="1" el="2648" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2649" ordinal="2572" sl="2649" sc="1" el="2649" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2650" ordinal="2573" sl="2650" sc="1" el="2650" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2651" ordinal="2574" sl="2651" sc="1" el="2651" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2652" ordinal="2575" sl="2652" sc="1" el="2652" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2653" ordinal="2576" sl="2653" sc="1" el="2653" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2654" ordinal="2577" sl="2654" sc="1" el="2654" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2655" ordinal="2578" sl="2655" sc="1" el="2655" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2656" ordinal="2579" sl="2656" sc="1" el="2656" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2657" ordinal="2580" sl="2657" sc="1" el="2657" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2658" ordinal="2581" sl="2658" sc="1" el="2658" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2659" ordinal="2582" sl="2659" sc="1" el="2659" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2661" ordinal="2583" sl="2661" sc="1" el="2661" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2662" ordinal="2584" sl="2662" sc="1" el="2662" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2663" ordinal="2585" sl="2663" sc="1" el="2663" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2664" ordinal="2586" sl="2664" sc="1" el="2664" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2665" ordinal="2587" sl="2665" sc="1" el="2665" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2666" ordinal="2588" sl="2666" sc="1" el="2666" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2667" ordinal="2589" sl="2667" sc="1" el="2667" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2668" ordinal="2590" sl="2668" sc="1" el="2668" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2669" ordinal="2591" sl="2669" sc="1" el="2669" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2670" ordinal="2592" sl="2670" sc="1" el="2670" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2671" ordinal="2593" sl="2671" sc="1" el="2671" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2672" ordinal="2594" sl="2672" sc="1" el="2672" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2673" ordinal="2595" sl="2673" sc="1" el="2673" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2674" ordinal="2596" sl="2674" sc="1" el="2674" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2675" ordinal="2597" sl="2675" sc="1" el="2675" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2676" ordinal="2598" sl="2676" sc="1" el="2676" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2677" ordinal="2599" sl="2677" sc="1" el="2677" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2678" ordinal="2600" sl="2678" sc="1" el="2678" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2679" ordinal="2601" sl="2679" sc="1" el="2679" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2680" ordinal="2602" sl="2680" sc="1" el="2680" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2681" ordinal="2603" sl="2681" sc="1" el="2681" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2682" ordinal="2604" sl="2682" sc="1" el="2682" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2683" ordinal="2605" sl="2683" sc="1" el="2683" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2684" ordinal="2606" sl="2684" sc="1" el="2684" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2686" ordinal="2607" sl="2686" sc="1" el="2686" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2687" ordinal="2608" sl="2687" sc="1" el="2687" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2688" ordinal="2609" sl="2688" sc="1" el="2688" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2689" ordinal="2610" sl="2689" sc="1" el="2689" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2690" ordinal="2611" sl="2690" sc="1" el="2690" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2691" ordinal="2612" sl="2691" sc="1" el="2691" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2692" ordinal="2613" sl="2692" sc="1" el="2692" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2693" ordinal="2614" sl="2693" sc="1" el="2693" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2694" ordinal="2615" sl="2694" sc="1" el="2694" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2695" ordinal="2616" sl="2695" sc="1" el="2695" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2696" ordinal="2617" sl="2696" sc="1" el="2696" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2697" ordinal="2618" sl="2697" sc="1" el="2697" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2698" ordinal="2619" sl="2698" sc="1" el="2698" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2699" ordinal="2620" sl="2699" sc="1" el="2699" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2700" ordinal="2621" sl="2700" sc="1" el="2700" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2701" ordinal="2622" sl="2701" sc="1" el="2701" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2702" ordinal="2623" sl="2702" sc="1" el="2702" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2703" ordinal="2624" sl="2703" sc="1" el="2703" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2704" ordinal="2625" sl="2704" sc="1" el="2704" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2705" ordinal="2626" sl="2705" sc="1" el="2705" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2706" ordinal="2627" sl="2706" sc="1" el="2706" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2707" ordinal="2628" sl="2707" sc="1" el="2707" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2709" ordinal="2629" sl="2709" sc="1" el="2709" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2710" ordinal="2630" sl="2710" sc="1" el="2710" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2711" ordinal="2631" sl="2711" sc="1" el="2711" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2712" ordinal="2632" sl="2712" sc="1" el="2712" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2713" ordinal="2633" sl="2713" sc="1" el="2713" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2714" ordinal="2634" sl="2714" sc="1" el="2714" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2715" ordinal="2635" sl="2715" sc="1" el="2715" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2716" ordinal="2636" sl="2716" sc="1" el="2716" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2717" ordinal="2637" sl="2717" sc="1" el="2717" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2718" ordinal="2638" sl="2718" sc="1" el="2718" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2719" ordinal="2639" sl="2719" sc="1" el="2719" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2720" ordinal="2640" sl="2720" sc="1" el="2720" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2721" ordinal="2641" sl="2721" sc="1" el="2721" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2722" ordinal="2642" sl="2722" sc="1" el="2722" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2723" ordinal="2643" sl="2723" sc="1" el="2723" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2724" ordinal="2644" sl="2724" sc="1" el="2724" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2725" ordinal="2645" sl="2725" sc="1" el="2725" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2726" ordinal="2646" sl="2726" sc="1" el="2726" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2727" ordinal="2647" sl="2727" sc="1" el="2727" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2728" ordinal="2648" sl="2728" sc="1" el="2728" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2729" ordinal="2649" sl="2729" sc="1" el="2729" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2730" ordinal="2650" sl="2730" sc="1" el="2730" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2732" ordinal="2651" sl="2732" sc="1" el="2732" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2733" ordinal="2652" sl="2733" sc="1" el="2733" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2734" ordinal="2653" sl="2734" sc="1" el="2734" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2735" ordinal="2654" sl="2735" sc="1" el="2735" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2736" ordinal="2655" sl="2736" sc="1" el="2736" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2737" ordinal="2656" sl="2737" sc="1" el="2737" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2738" ordinal="2657" sl="2738" sc="1" el="2738" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2739" ordinal="2658" sl="2739" sc="1" el="2739" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2740" ordinal="2659" sl="2740" sc="1" el="2740" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2741" ordinal="2660" sl="2741" sc="1" el="2741" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2742" ordinal="2661" sl="2742" sc="1" el="2742" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2743" ordinal="2662" sl="2743" sc="1" el="2743" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2745" ordinal="2663" sl="2745" sc="1" el="2745" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2746" ordinal="2664" sl="2746" sc="1" el="2746" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2747" ordinal="2665" sl="2747" sc="1" el="2747" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2748" ordinal="2666" sl="2748" sc="1" el="2748" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2749" ordinal="2667" sl="2749" sc="1" el="2749" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2750" ordinal="2668" sl="2750" sc="1" el="2750" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2751" ordinal="2669" sl="2751" sc="1" el="2751" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2752" ordinal="2670" sl="2752" sc="1" el="2752" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2753" ordinal="2671" sl="2753" sc="1" el="2753" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2754" ordinal="2672" sl="2754" sc="1" el="2754" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2755" ordinal="2673" sl="2755" sc="1" el="2755" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2756" ordinal="2674" sl="2756" sc="1" el="2756" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2757" ordinal="2675" sl="2757" sc="1" el="2757" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2758" ordinal="2676" sl="2758" sc="1" el="2758" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2759" ordinal="2677" sl="2759" sc="1" el="2759" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2760" ordinal="2678" sl="2760" sc="1" el="2760" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2761" ordinal="2679" sl="2761" sc="1" el="2761" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2762" ordinal="2680" sl="2762" sc="1" el="2762" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2763" ordinal="2681" sl="2763" sc="1" el="2763" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2764" ordinal="2682" sl="2764" sc="1" el="2764" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2765" ordinal="2683" sl="2765" sc="1" el="2765" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2766" ordinal="2684" sl="2766" sc="1" el="2766" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2767" ordinal="2685" sl="2767" sc="1" el="2767" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2768" ordinal="2686" sl="2768" sc="1" el="2768" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2769" ordinal="2687" sl="2769" sc="1" el="2769" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2770" ordinal="2688" sl="2770" sc="1" el="2770" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2771" ordinal="2689" sl="2771" sc="1" el="2771" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2772" ordinal="2690" sl="2772" sc="1" el="2772" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2773" ordinal="2691" sl="2773" sc="1" el="2773" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2774" ordinal="2692" sl="2774" sc="1" el="2774" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2775" ordinal="2693" sl="2775" sc="1" el="2775" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2776" ordinal="2694" sl="2776" sc="1" el="2776" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2777" ordinal="2695" sl="2777" sc="1" el="2777" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2778" ordinal="2696" sl="2778" sc="1" el="2778" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2779" ordinal="2697" sl="2779" sc="1" el="2779" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2780" ordinal="2698" sl="2780" sc="1" el="2780" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2781" ordinal="2699" sl="2781" sc="1" el="2781" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2782" ordinal="2700" sl="2782" sc="1" el="2782" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2783" ordinal="2701" sl="2783" sc="1" el="2783" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2784" ordinal="2702" sl="2784" sc="1" el="2784" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2785" ordinal="2703" sl="2785" sc="1" el="2785" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2786" ordinal="2704" sl="2786" sc="1" el="2786" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2787" ordinal="2705" sl="2787" sc="1" el="2787" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2788" ordinal="2706" sl="2788" sc="1" el="2788" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2789" ordinal="2707" sl="2789" sc="1" el="2789" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2790" ordinal="2708" sl="2790" sc="1" el="2790" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2791" ordinal="2709" sl="2791" sc="1" el="2791" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2792" ordinal="2710" sl="2792" sc="1" el="2792" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2793" ordinal="2711" sl="2793" sc="1" el="2793" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2794" ordinal="2712" sl="2794" sc="1" el="2794" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2795" ordinal="2713" sl="2795" sc="1" el="2795" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2796" ordinal="2714" sl="2796" sc="1" el="2796" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2797" ordinal="2715" sl="2797" sc="1" el="2797" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2798" ordinal="2716" sl="2798" sc="1" el="2798" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2799" ordinal="2717" sl="2799" sc="1" el="2799" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2800" ordinal="2718" sl="2800" sc="1" el="2800" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2801" ordinal="2719" sl="2801" sc="1" el="2801" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2802" ordinal="2720" sl="2802" sc="1" el="2802" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2803" ordinal="2721" sl="2803" sc="1" el="2803" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2804" ordinal="2722" sl="2804" sc="1" el="2804" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2805" ordinal="2723" sl="2805" sc="1" el="2805" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2806" ordinal="2724" sl="2806" sc="1" el="2806" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2807" ordinal="2725" sl="2807" sc="1" el="2807" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2808" ordinal="2726" sl="2808" sc="1" el="2808" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2809" ordinal="2727" sl="2809" sc="1" el="2809" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2810" ordinal="2728" sl="2810" sc="1" el="2810" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2811" ordinal="2729" sl="2811" sc="1" el="2811" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2812" ordinal="2730" sl="2812" sc="1" el="2812" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2813" ordinal="2731" sl="2813" sc="1" el="2813" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2814" ordinal="2732" sl="2814" sc="1" el="2814" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2815" ordinal="2733" sl="2815" sc="1" el="2815" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2816" ordinal="2734" sl="2816" sc="1" el="2816" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2817" ordinal="2735" sl="2817" sc="1" el="2817" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2818" ordinal="2736" sl="2818" sc="1" el="2818" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2819" ordinal="2737" sl="2819" sc="1" el="2819" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2820" ordinal="2738" sl="2820" sc="1" el="2820" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2821" ordinal="2739" sl="2821" sc="1" el="2821" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2822" ordinal="2740" sl="2822" sc="1" el="2822" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2823" ordinal="2741" sl="2823" sc="1" el="2823" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2824" ordinal="2742" sl="2824" sc="1" el="2824" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2825" ordinal="2743" sl="2825" sc="1" el="2825" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2826" ordinal="2744" sl="2826" sc="1" el="2826" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2827" ordinal="2745" sl="2827" sc="1" el="2827" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2828" ordinal="2746" sl="2828" sc="1" el="2828" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2829" ordinal="2747" sl="2829" sc="1" el="2829" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2830" ordinal="2748" sl="2830" sc="1" el="2830" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2831" ordinal="2749" sl="2831" sc="1" el="2831" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2832" ordinal="2750" sl="2832" sc="1" el="2832" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2833" ordinal="2751" sl="2833" sc="1" el="2833" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2834" ordinal="2752" sl="2834" sc="1" el="2834" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2835" ordinal="2753" sl="2835" sc="1" el="2835" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2836" ordinal="2754" sl="2836" sc="1" el="2836" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2837" ordinal="2755" sl="2837" sc="1" el="2837" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2838" ordinal="2756" sl="2838" sc="1" el="2838" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2839" ordinal="2757" sl="2839" sc="1" el="2839" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2840" ordinal="2758" sl="2840" sc="1" el="2840" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2841" ordinal="2759" sl="2841" sc="1" el="2841" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2842" ordinal="2760" sl="2842" sc="1" el="2842" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2844" ordinal="2761" sl="2844" sc="1" el="2844" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2845" ordinal="2762" sl="2845" sc="1" el="2845" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2846" ordinal="2763" sl="2846" sc="1" el="2846" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2847" ordinal="2764" sl="2847" sc="1" el="2847" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2848" ordinal="2765" sl="2848" sc="1" el="2848" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2849" ordinal="2766" sl="2849" sc="1" el="2849" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2850" ordinal="2767" sl="2850" sc="1" el="2850" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2851" ordinal="2768" sl="2851" sc="1" el="2851" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2852" ordinal="2769" sl="2852" sc="1" el="2852" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2853" ordinal="2770" sl="2853" sc="1" el="2853" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2854" ordinal="2771" sl="2854" sc="1" el="2854" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2855" ordinal="2772" sl="2855" sc="1" el="2855" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2856" ordinal="2773" sl="2856" sc="1" el="2856" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2857" ordinal="2774" sl="2857" sc="1" el="2857" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2858" ordinal="2775" sl="2858" sc="1" el="2858" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2859" ordinal="2776" sl="2859" sc="1" el="2859" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2860" ordinal="2777" sl="2860" sc="1" el="2860" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2861" ordinal="2778" sl="2861" sc="1" el="2861" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2862" ordinal="2779" sl="2862" sc="1" el="2862" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2863" ordinal="2780" sl="2863" sc="1" el="2863" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2864" ordinal="2781" sl="2864" sc="1" el="2864" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2865" ordinal="2782" sl="2865" sc="1" el="2865" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2866" ordinal="2783" sl="2866" sc="1" el="2866" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2867" ordinal="2784" sl="2867" sc="1" el="2867" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2868" ordinal="2785" sl="2868" sc="1" el="2868" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2869" ordinal="2786" sl="2869" sc="1" el="2869" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2870" ordinal="2787" sl="2870" sc="1" el="2870" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2871" ordinal="2788" sl="2871" sc="1" el="2871" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2872" ordinal="2789" sl="2872" sc="1" el="2872" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2873" ordinal="2790" sl="2873" sc="1" el="2873" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2874" ordinal="2791" sl="2874" sc="1" el="2874" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2875" ordinal="2792" sl="2875" sc="1" el="2875" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2876" ordinal="2793" sl="2876" sc="1" el="2876" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2877" ordinal="2794" sl="2877" sc="1" el="2877" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2878" ordinal="2795" sl="2878" sc="1" el="2878" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2879" ordinal="2796" sl="2879" sc="1" el="2879" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2880" ordinal="2797" sl="2880" sc="1" el="2880" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2881" ordinal="2798" sl="2881" sc="1" el="2881" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2882" ordinal="2799" sl="2882" sc="1" el="2882" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2883" ordinal="2800" sl="2883" sc="1" el="2883" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2884" ordinal="2801" sl="2884" sc="1" el="2884" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2885" ordinal="2802" sl="2885" sc="1" el="2885" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2886" ordinal="2803" sl="2886" sc="1" el="2886" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2887" ordinal="2804" sl="2887" sc="1" el="2887" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2888" ordinal="2805" sl="2888" sc="1" el="2888" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2889" ordinal="2806" sl="2889" sc="1" el="2889" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2890" ordinal="2807" sl="2890" sc="1" el="2890" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2891" ordinal="2808" sl="2891" sc="1" el="2891" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2893" ordinal="2809" sl="2893" sc="1" el="2893" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2894" ordinal="2810" sl="2894" sc="1" el="2894" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2895" ordinal="2811" sl="2895" sc="1" el="2895" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2896" ordinal="2812" sl="2896" sc="1" el="2896" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2897" ordinal="2813" sl="2897" sc="1" el="2897" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2898" ordinal="2814" sl="2898" sc="1" el="2898" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2899" ordinal="2815" sl="2899" sc="1" el="2899" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2900" ordinal="2816" sl="2900" sc="1" el="2900" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2901" ordinal="2817" sl="2901" sc="1" el="2901" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2903" ordinal="2818" sl="2903" sc="1" el="2903" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2904" ordinal="2819" sl="2904" sc="1" el="2904" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2905" ordinal="2820" sl="2905" sc="1" el="2905" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2906" ordinal="2821" sl="2906" sc="1" el="2906" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2907" ordinal="2822" sl="2907" sc="1" el="2907" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2908" ordinal="2823" sl="2908" sc="1" el="2908" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2909" ordinal="2824" sl="2909" sc="1" el="2909" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2910" ordinal="2825" sl="2910" sc="1" el="2910" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2911" ordinal="2826" sl="2911" sc="1" el="2911" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2912" ordinal="2827" sl="2912" sc="1" el="2912" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2914" ordinal="2828" sl="2914" sc="1" el="2914" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2915" ordinal="2829" sl="2915" sc="1" el="2915" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2916" ordinal="2830" sl="2916" sc="1" el="2916" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2917" ordinal="2831" sl="2917" sc="1" el="2917" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2918" ordinal="2832" sl="2918" sc="1" el="2918" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2919" ordinal="2833" sl="2919" sc="1" el="2919" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2920" ordinal="2834" sl="2920" sc="1" el="2920" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2921" ordinal="2835" sl="2921" sc="1" el="2921" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2922" ordinal="2836" sl="2922" sc="1" el="2922" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2923" ordinal="2837" sl="2923" sc="1" el="2923" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2924" ordinal="2838" sl="2924" sc="1" el="2924" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2925" ordinal="2839" sl="2925" sc="1" el="2925" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2926" ordinal="2840" sl="2926" sc="1" el="2926" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2927" ordinal="2841" sl="2927" sc="1" el="2927" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2928" ordinal="2842" sl="2928" sc="1" el="2928" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2929" ordinal="2843" sl="2929" sc="1" el="2929" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2930" ordinal="2844" sl="2930" sc="1" el="2930" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2931" ordinal="2845" sl="2931" sc="1" el="2931" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2932" ordinal="2846" sl="2932" sc="1" el="2932" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2933" ordinal="2847" sl="2933" sc="1" el="2933" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2934" ordinal="2848" sl="2934" sc="1" el="2934" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2935" ordinal="2849" sl="2935" sc="1" el="2935" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2936" ordinal="2850" sl="2936" sc="1" el="2936" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2937" ordinal="2851" sl="2937" sc="1" el="2937" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2938" ordinal="2852" sl="2938" sc="1" el="2938" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2939" ordinal="2853" sl="2939" sc="1" el="2939" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2940" ordinal="2854" sl="2940" sc="1" el="2940" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2941" ordinal="2855" sl="2941" sc="1" el="2941" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2942" ordinal="2856" sl="2942" sc="1" el="2942" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2943" ordinal="2857" sl="2943" sc="1" el="2943" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2945" ordinal="2858" sl="2945" sc="1" el="2945" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2946" ordinal="2859" sl="2946" sc="1" el="2946" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2947" ordinal="2860" sl="2947" sc="1" el="2947" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2948" ordinal="2861" sl="2948" sc="1" el="2948" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2949" ordinal="2862" sl="2949" sc="1" el="2949" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2950" ordinal="2863" sl="2950" sc="1" el="2950" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2951" ordinal="2864" sl="2951" sc="1" el="2951" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2952" ordinal="2865" sl="2952" sc="1" el="2952" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2953" ordinal="2866" sl="2953" sc="1" el="2953" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2954" ordinal="2867" sl="2954" sc="1" el="2954" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2955" ordinal="2868" sl="2955" sc="1" el="2955" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2956" ordinal="2869" sl="2956" sc="1" el="2956" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2957" ordinal="2870" sl="2957" sc="1" el="2957" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2958" ordinal="2871" sl="2958" sc="1" el="2958" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2959" ordinal="2872" sl="2959" sc="1" el="2959" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2960" ordinal="2873" sl="2960" sc="1" el="2960" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2961" ordinal="2874" sl="2961" sc="1" el="2961" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2962" ordinal="2875" sl="2962" sc="1" el="2962" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2964" ordinal="2876" sl="2964" sc="1" el="2964" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2965" ordinal="2877" sl="2965" sc="1" el="2965" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2966" ordinal="2878" sl="2966" sc="1" el="2966" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2967" ordinal="2879" sl="2967" sc="1" el="2967" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2968" ordinal="2880" sl="2968" sc="1" el="2968" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2969" ordinal="2881" sl="2969" sc="1" el="2969" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2970" ordinal="2882" sl="2970" sc="1" el="2970" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2971" ordinal="2883" sl="2971" sc="1" el="2971" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2972" ordinal="2884" sl="2972" sc="1" el="2972" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2973" ordinal="2885" sl="2973" sc="1" el="2973" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2974" ordinal="2886" sl="2974" sc="1" el="2974" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2975" ordinal="2887" sl="2975" sc="1" el="2975" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2976" ordinal="2888" sl="2976" sc="1" el="2976" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2977" ordinal="2889" sl="2977" sc="1" el="2977" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2978" ordinal="2890" sl="2978" sc="1" el="2978" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2979" ordinal="2891" sl="2979" sc="1" el="2979" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2980" ordinal="2892" sl="2980" sc="1" el="2980" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2981" ordinal="2893" sl="2981" sc="1" el="2981" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2982" ordinal="2894" sl="2982" sc="1" el="2982" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2983" ordinal="2895" sl="2983" sc="1" el="2983" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2984" ordinal="2896" sl="2984" sc="1" el="2984" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2985" ordinal="2897" sl="2985" sc="1" el="2985" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2986" ordinal="2898" sl="2986" sc="1" el="2986" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2987" ordinal="2899" sl="2987" sc="1" el="2987" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2988" ordinal="2900" sl="2988" sc="1" el="2988" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2990" ordinal="2901" sl="2990" sc="1" el="2990" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2991" ordinal="2902" sl="2991" sc="1" el="2991" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2992" ordinal="2903" sl="2992" sc="1" el="2992" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2993" ordinal="2904" sl="2993" sc="1" el="2993" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2994" ordinal="2905" sl="2994" sc="1" el="2994" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2995" ordinal="2906" sl="2995" sc="1" el="2995" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2996" ordinal="2907" sl="2996" sc="1" el="2996" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2997" ordinal="2908" sl="2997" sc="1" el="2997" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2998" ordinal="2909" sl="2998" sc="1" el="2998" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="2999" ordinal="2910" sl="2999" sc="1" el="2999" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3000" ordinal="2911" sl="3000" sc="1" el="3000" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3001" ordinal="2912" sl="3001" sc="1" el="3001" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3002" ordinal="2913" sl="3002" sc="1" el="3002" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3003" ordinal="2914" sl="3003" sc="1" el="3003" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3004" ordinal="2915" sl="3004" sc="1" el="3004" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3005" ordinal="2916" sl="3005" sc="1" el="3005" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3006" ordinal="2917" sl="3006" sc="1" el="3006" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3007" ordinal="2918" sl="3007" sc="1" el="3007" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3009" ordinal="2919" sl="3009" sc="1" el="3009" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3010" ordinal="2920" sl="3010" sc="1" el="3010" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3011" ordinal="2921" sl="3011" sc="1" el="3011" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3012" ordinal="2922" sl="3012" sc="1" el="3012" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3013" ordinal="2923" sl="3013" sc="1" el="3013" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3014" ordinal="2924" sl="3014" sc="1" el="3014" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3015" ordinal="2925" sl="3015" sc="1" el="3015" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3016" ordinal="2926" sl="3016" sc="1" el="3016" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3017" ordinal="2927" sl="3017" sc="1" el="3017" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3018" ordinal="2928" sl="3018" sc="1" el="3018" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3019" ordinal="2929" sl="3019" sc="1" el="3019" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3020" ordinal="2930" sl="3020" sc="1" el="3020" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3021" ordinal="2931" sl="3021" sc="1" el="3021" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3022" ordinal="2932" sl="3022" sc="1" el="3022" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3023" ordinal="2933" sl="3023" sc="1" el="3023" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3024" ordinal="2934" sl="3024" sc="1" el="3024" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3025" ordinal="2935" sl="3025" sc="1" el="3025" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3026" ordinal="2936" sl="3026" sc="1" el="3026" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3028" ordinal="2937" sl="3028" sc="1" el="3028" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3029" ordinal="2938" sl="3029" sc="1" el="3029" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3030" ordinal="2939" sl="3030" sc="1" el="3030" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3031" ordinal="2940" sl="3031" sc="1" el="3031" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3032" ordinal="2941" sl="3032" sc="1" el="3032" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3033" ordinal="2942" sl="3033" sc="1" el="3033" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3034" ordinal="2943" sl="3034" sc="1" el="3034" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3035" ordinal="2944" sl="3035" sc="1" el="3035" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3036" ordinal="2945" sl="3036" sc="1" el="3036" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3037" ordinal="2946" sl="3037" sc="1" el="3037" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3038" ordinal="2947" sl="3038" sc="1" el="3038" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3039" ordinal="2948" sl="3039" sc="1" el="3039" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3040" ordinal="2949" sl="3040" sc="1" el="3040" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3041" ordinal="2950" sl="3041" sc="1" el="3041" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3042" ordinal="2951" sl="3042" sc="1" el="3042" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3043" ordinal="2952" sl="3043" sc="1" el="3043" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3044" ordinal="2953" sl="3044" sc="1" el="3044" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3045" ordinal="2954" sl="3045" sc="1" el="3045" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3047" ordinal="2955" sl="3047" sc="1" el="3047" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3048" ordinal="2956" sl="3048" sc="1" el="3048" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3049" ordinal="2957" sl="3049" sc="1" el="3049" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3050" ordinal="2958" sl="3050" sc="1" el="3050" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3051" ordinal="2959" sl="3051" sc="1" el="3051" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3052" ordinal="2960" sl="3052" sc="1" el="3052" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3053" ordinal="2961" sl="3053" sc="1" el="3053" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3054" ordinal="2962" sl="3054" sc="1" el="3054" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3055" ordinal="2963" sl="3055" sc="1" el="3055" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3056" ordinal="2964" sl="3056" sc="1" el="3056" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3057" ordinal="2965" sl="3057" sc="1" el="3057" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3058" ordinal="2966" sl="3058" sc="1" el="3058" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3059" ordinal="2967" sl="3059" sc="1" el="3059" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3060" ordinal="2968" sl="3060" sc="1" el="3060" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3061" ordinal="2969" sl="3061" sc="1" el="3061" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3062" ordinal="2970" sl="3062" sc="1" el="3062" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3063" ordinal="2971" sl="3063" sc="1" el="3063" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3064" ordinal="2972" sl="3064" sc="1" el="3064" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3066" ordinal="2973" sl="3066" sc="1" el="3066" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3067" ordinal="2974" sl="3067" sc="1" el="3067" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3068" ordinal="2975" sl="3068" sc="1" el="3068" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3069" ordinal="2976" sl="3069" sc="1" el="3069" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3070" ordinal="2977" sl="3070" sc="1" el="3070" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3071" ordinal="2978" sl="3071" sc="1" el="3071" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3072" ordinal="2979" sl="3072" sc="1" el="3072" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3073" ordinal="2980" sl="3073" sc="1" el="3073" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3074" ordinal="2981" sl="3074" sc="1" el="3074" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3075" ordinal="2982" sl="3075" sc="1" el="3075" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3077" ordinal="2983" sl="3077" sc="1" el="3077" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3078" ordinal="2984" sl="3078" sc="1" el="3078" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3079" ordinal="2985" sl="3079" sc="1" el="3079" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3080" ordinal="2986" sl="3080" sc="1" el="3080" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3081" ordinal="2987" sl="3081" sc="1" el="3081" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3082" ordinal="2988" sl="3082" sc="1" el="3082" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3083" ordinal="2989" sl="3083" sc="1" el="3083" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3084" ordinal="2990" sl="3084" sc="1" el="3084" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3085" ordinal="2991" sl="3085" sc="1" el="3085" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3086" ordinal="2992" sl="3086" sc="1" el="3086" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3087" ordinal="2993" sl="3087" sc="1" el="3087" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3088" ordinal="2994" sl="3088" sc="1" el="3088" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3089" ordinal="2995" sl="3089" sc="1" el="3089" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3090" ordinal="2996" sl="3090" sc="1" el="3090" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3091" ordinal="2997" sl="3091" sc="1" el="3091" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3092" ordinal="2998" sl="3092" sc="1" el="3092" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3093" ordinal="2999" sl="3093" sc="1" el="3093" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3094" ordinal="3000" sl="3094" sc="1" el="3094" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3095" ordinal="3001" sl="3095" sc="1" el="3095" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3096" ordinal="3002" sl="3096" sc="1" el="3096" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3097" ordinal="3003" sl="3097" sc="1" el="3097" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3098" ordinal="3004" sl="3098" sc="1" el="3098" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3099" ordinal="3005" sl="3099" sc="1" el="3099" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3100" ordinal="3006" sl="3100" sc="1" el="3100" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3102" ordinal="3007" sl="3102" sc="1" el="3102" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3103" ordinal="3008" sl="3103" sc="1" el="3103" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3104" ordinal="3009" sl="3104" sc="1" el="3104" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3105" ordinal="3010" sl="3105" sc="1" el="3105" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3106" ordinal="3011" sl="3106" sc="1" el="3106" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3107" ordinal="3012" sl="3107" sc="1" el="3107" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3108" ordinal="3013" sl="3108" sc="1" el="3108" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3109" ordinal="3014" sl="3109" sc="1" el="3109" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3110" ordinal="3015" sl="3110" sc="1" el="3110" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3111" ordinal="3016" sl="3111" sc="1" el="3111" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3113" ordinal="3017" sl="3113" sc="1" el="3113" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3114" ordinal="3018" sl="3114" sc="1" el="3114" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3115" ordinal="3019" sl="3115" sc="1" el="3115" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3116" ordinal="3020" sl="3116" sc="1" el="3116" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3117" ordinal="3021" sl="3117" sc="1" el="3117" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3118" ordinal="3022" sl="3118" sc="1" el="3118" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3119" ordinal="3023" sl="3119" sc="1" el="3119" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3120" ordinal="3024" sl="3120" sc="1" el="3120" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3121" ordinal="3025" sl="3121" sc="1" el="3121" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3122" ordinal="3026" sl="3122" sc="1" el="3122" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3123" ordinal="3027" sl="3123" sc="1" el="3123" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3124" ordinal="3028" sl="3124" sc="1" el="3124" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3125" ordinal="3029" sl="3125" sc="1" el="3125" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3126" ordinal="3030" sl="3126" sc="1" el="3126" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3127" ordinal="3031" sl="3127" sc="1" el="3127" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3128" ordinal="3032" sl="3128" sc="1" el="3128" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3129" ordinal="3033" sl="3129" sc="1" el="3129" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3130" ordinal="3034" sl="3130" sc="1" el="3130" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3132" ordinal="3035" sl="3132" sc="1" el="3132" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3133" ordinal="3036" sl="3133" sc="1" el="3133" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3134" ordinal="3037" sl="3134" sc="1" el="3134" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3135" ordinal="3038" sl="3135" sc="1" el="3135" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3136" ordinal="3039" sl="3136" sc="1" el="3136" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3137" ordinal="3040" sl="3137" sc="1" el="3137" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3138" ordinal="3041" sl="3138" sc="1" el="3138" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3139" ordinal="3042" sl="3139" sc="1" el="3139" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3140" ordinal="3043" sl="3140" sc="1" el="3140" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3141" ordinal="3044" sl="3141" sc="1" el="3141" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3143" ordinal="3045" sl="3143" sc="1" el="3143" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3144" ordinal="3046" sl="3144" sc="1" el="3144" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3145" ordinal="3047" sl="3145" sc="1" el="3145" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3146" ordinal="3048" sl="3146" sc="1" el="3146" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3147" ordinal="3049" sl="3147" sc="1" el="3147" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3148" ordinal="3050" sl="3148" sc="1" el="3148" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3149" ordinal="3051" sl="3149" sc="1" el="3149" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3150" ordinal="3052" sl="3150" sc="1" el="3150" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3151" ordinal="3053" sl="3151" sc="1" el="3151" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3152" ordinal="3054" sl="3152" sc="1" el="3152" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3153" ordinal="3055" sl="3153" sc="1" el="3153" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3154" ordinal="3056" sl="3154" sc="1" el="3154" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3155" ordinal="3057" sl="3155" sc="1" el="3155" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3156" ordinal="3058" sl="3156" sc="1" el="3156" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3157" ordinal="3059" sl="3157" sc="1" el="3157" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3158" ordinal="3060" sl="3158" sc="1" el="3158" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3159" ordinal="3061" sl="3159" sc="1" el="3159" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3160" ordinal="3062" sl="3160" sc="1" el="3160" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3162" ordinal="3063" sl="3162" sc="1" el="3162" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3163" ordinal="3064" sl="3163" sc="1" el="3163" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3164" ordinal="3065" sl="3164" sc="1" el="3164" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3165" ordinal="3066" sl="3165" sc="1" el="3165" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3166" ordinal="3067" sl="3166" sc="1" el="3166" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3167" ordinal="3068" sl="3167" sc="1" el="3167" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3168" ordinal="3069" sl="3168" sc="1" el="3168" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3169" ordinal="3070" sl="3169" sc="1" el="3169" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3170" ordinal="3071" sl="3170" sc="1" el="3170" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3171" ordinal="3072" sl="3171" sc="1" el="3171" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3172" ordinal="3073" sl="3172" sc="1" el="3172" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3173" ordinal="3074" sl="3173" sc="1" el="3173" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3174" ordinal="3075" sl="3174" sc="1" el="3174" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3175" ordinal="3076" sl="3175" sc="1" el="3175" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3176" ordinal="3077" sl="3176" sc="1" el="3176" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3177" ordinal="3078" sl="3177" sc="1" el="3177" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3179" ordinal="3079" sl="3179" sc="1" el="3179" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3180" ordinal="3080" sl="3180" sc="1" el="3180" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3181" ordinal="3081" sl="3181" sc="1" el="3181" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3182" ordinal="3082" sl="3182" sc="1" el="3182" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3183" ordinal="3083" sl="3183" sc="1" el="3183" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3184" ordinal="3084" sl="3184" sc="1" el="3184" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3185" ordinal="3085" sl="3185" sc="1" el="3185" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3186" ordinal="3086" sl="3186" sc="1" el="3186" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3187" ordinal="3087" sl="3187" sc="1" el="3187" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3188" ordinal="3088" sl="3188" sc="1" el="3188" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3189" ordinal="3089" sl="3189" sc="1" el="3189" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3190" ordinal="3090" sl="3190" sc="1" el="3190" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3191" ordinal="3091" sl="3191" sc="1" el="3191" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3192" ordinal="3092" sl="3192" sc="1" el="3192" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3193" ordinal="3093" sl="3193" sc="1" el="3193" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3194" ordinal="3094" sl="3194" sc="1" el="3194" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3195" ordinal="3095" sl="3195" sc="1" el="3195" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3196" ordinal="3096" sl="3196" sc="1" el="3196" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3197" ordinal="3097" sl="3197" sc="1" el="3197" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3198" ordinal="3098" sl="3198" sc="1" el="3198" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3199" ordinal="3099" sl="3199" sc="1" el="3199" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3200" ordinal="3100" sl="3200" sc="1" el="3200" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3201" ordinal="3101" sl="3201" sc="1" el="3201" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3202" ordinal="3102" sl="3202" sc="1" el="3202" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3204" ordinal="3103" sl="3204" sc="1" el="3204" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3205" ordinal="3104" sl="3205" sc="1" el="3205" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3206" ordinal="3105" sl="3206" sc="1" el="3206" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3207" ordinal="3106" sl="3207" sc="1" el="3207" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3208" ordinal="3107" sl="3208" sc="1" el="3208" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3209" ordinal="3108" sl="3209" sc="1" el="3209" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3210" ordinal="3109" sl="3210" sc="1" el="3210" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3211" ordinal="3110" sl="3211" sc="1" el="3211" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3212" ordinal="3111" sl="3212" sc="1" el="3212" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3213" ordinal="3112" sl="3213" sc="1" el="3213" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3214" ordinal="3113" sl="3214" sc="1" el="3214" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3215" ordinal="3114" sl="3215" sc="1" el="3215" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3216" ordinal="3115" sl="3216" sc="1" el="3216" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3217" ordinal="3116" sl="3217" sc="1" el="3217" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3218" ordinal="3117" sl="3218" sc="1" el="3218" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3219" ordinal="3118" sl="3219" sc="1" el="3219" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3220" ordinal="3119" sl="3220" sc="1" el="3220" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3221" ordinal="3120" sl="3221" sc="1" el="3221" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3223" ordinal="3121" sl="3223" sc="1" el="3223" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3224" ordinal="3122" sl="3224" sc="1" el="3224" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3225" ordinal="3123" sl="3225" sc="1" el="3225" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3226" ordinal="3124" sl="3226" sc="1" el="3226" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3227" ordinal="3125" sl="3227" sc="1" el="3227" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3228" ordinal="3126" sl="3228" sc="1" el="3228" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3229" ordinal="3127" sl="3229" sc="1" el="3229" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3230" ordinal="3128" sl="3230" sc="1" el="3230" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3231" ordinal="3129" sl="3231" sc="1" el="3231" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3232" ordinal="3130" sl="3232" sc="1" el="3232" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3233" ordinal="3131" sl="3233" sc="1" el="3233" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3234" ordinal="3132" sl="3234" sc="1" el="3234" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3235" ordinal="3133" sl="3235" sc="1" el="3235" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3236" ordinal="3134" sl="3236" sc="1" el="3236" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3237" ordinal="3135" sl="3237" sc="1" el="3237" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3238" ordinal="3136" sl="3238" sc="1" el="3238" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3239" ordinal="3137" sl="3239" sc="1" el="3239" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3240" ordinal="3138" sl="3240" sc="1" el="3240" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3241" ordinal="3139" sl="3241" sc="1" el="3241" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3242" ordinal="3140" sl="3242" sc="1" el="3242" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3243" ordinal="3141" sl="3243" sc="1" el="3243" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3244" ordinal="3142" sl="3244" sc="1" el="3244" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3245" ordinal="3143" sl="3245" sc="1" el="3245" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3246" ordinal="3144" sl="3246" sc="1" el="3246" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3247" ordinal="3145" sl="3247" sc="1" el="3247" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3249" ordinal="3146" sl="3249" sc="1" el="3249" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3250" ordinal="3147" sl="3250" sc="1" el="3250" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3251" ordinal="3148" sl="3251" sc="1" el="3251" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3252" ordinal="3149" sl="3252" sc="1" el="3252" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3253" ordinal="3150" sl="3253" sc="1" el="3253" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3254" ordinal="3151" sl="3254" sc="1" el="3254" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3255" ordinal="3152" sl="3255" sc="1" el="3255" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3256" ordinal="3153" sl="3256" sc="1" el="3256" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3257" ordinal="3154" sl="3257" sc="1" el="3257" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3258" ordinal="3155" sl="3258" sc="1" el="3258" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3259" ordinal="3156" sl="3259" sc="1" el="3259" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3260" ordinal="3157" sl="3260" sc="1" el="3260" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3261" ordinal="3158" sl="3261" sc="1" el="3261" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3262" ordinal="3159" sl="3262" sc="1" el="3262" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3263" ordinal="3160" sl="3263" sc="1" el="3263" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3264" ordinal="3161" sl="3264" sc="1" el="3264" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3266" ordinal="3162" sl="3266" sc="1" el="3266" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3267" ordinal="3163" sl="3267" sc="1" el="3267" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3268" ordinal="3164" sl="3268" sc="1" el="3268" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3269" ordinal="3165" sl="3269" sc="1" el="3269" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3270" ordinal="3166" sl="3270" sc="1" el="3270" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3271" ordinal="3167" sl="3271" sc="1" el="3271" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3272" ordinal="3168" sl="3272" sc="1" el="3272" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3273" ordinal="3169" sl="3273" sc="1" el="3273" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3274" ordinal="3170" sl="3274" sc="1" el="3274" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3275" ordinal="3171" sl="3275" sc="1" el="3275" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3276" ordinal="3172" sl="3276" sc="1" el="3276" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3277" ordinal="3173" sl="3277" sc="1" el="3277" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3278" ordinal="3174" sl="3278" sc="1" el="3278" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3279" ordinal="3175" sl="3279" sc="1" el="3279" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3280" ordinal="3176" sl="3280" sc="1" el="3280" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3281" ordinal="3177" sl="3281" sc="1" el="3281" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3282" ordinal="3178" sl="3282" sc="1" el="3282" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3283" ordinal="3179" sl="3283" sc="1" el="3283" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3285" ordinal="3180" sl="3285" sc="1" el="3285" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3286" ordinal="3181" sl="3286" sc="1" el="3286" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3287" ordinal="3182" sl="3287" sc="1" el="3287" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3288" ordinal="3183" sl="3288" sc="1" el="3288" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3289" ordinal="3184" sl="3289" sc="1" el="3289" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3290" ordinal="3185" sl="3290" sc="1" el="3290" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3291" ordinal="3186" sl="3291" sc="1" el="3291" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3292" ordinal="3187" sl="3292" sc="1" el="3292" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3293" ordinal="3188" sl="3293" sc="1" el="3293" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3294" ordinal="3189" sl="3294" sc="1" el="3294" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3295" ordinal="3190" sl="3295" sc="1" el="3295" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3296" ordinal="3191" sl="3296" sc="1" el="3296" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3297" ordinal="3192" sl="3297" sc="1" el="3297" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3298" ordinal="3193" sl="3298" sc="1" el="3298" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3299" ordinal="3194" sl="3299" sc="1" el="3299" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3300" ordinal="3195" sl="3300" sc="1" el="3300" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3301" ordinal="3196" sl="3301" sc="1" el="3301" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3302" ordinal="3197" sl="3302" sc="1" el="3302" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3304" ordinal="3198" sl="3304" sc="1" el="3304" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3305" ordinal="3199" sl="3305" sc="1" el="3305" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3306" ordinal="3200" sl="3306" sc="1" el="3306" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3307" ordinal="3201" sl="3307" sc="1" el="3307" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3308" ordinal="3202" sl="3308" sc="1" el="3308" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3309" ordinal="3203" sl="3309" sc="1" el="3309" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3310" ordinal="3204" sl="3310" sc="1" el="3310" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3311" ordinal="3205" sl="3311" sc="1" el="3311" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3312" ordinal="3206" sl="3312" sc="1" el="3312" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3313" ordinal="3207" sl="3313" sc="1" el="3313" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3315" ordinal="3208" sl="3315" sc="1" el="3315" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3316" ordinal="3209" sl="3316" sc="1" el="3316" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3317" ordinal="3210" sl="3317" sc="1" el="3317" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3318" ordinal="3211" sl="3318" sc="1" el="3318" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3319" ordinal="3212" sl="3319" sc="1" el="3319" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3320" ordinal="3213" sl="3320" sc="1" el="3320" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3321" ordinal="3214" sl="3321" sc="1" el="3321" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3322" ordinal="3215" sl="3322" sc="1" el="3322" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3323" ordinal="3216" sl="3323" sc="1" el="3323" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3325" ordinal="3217" sl="3325" sc="1" el="3325" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3326" ordinal="3218" sl="3326" sc="1" el="3326" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3327" ordinal="3219" sl="3327" sc="1" el="3327" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3328" ordinal="3220" sl="3328" sc="1" el="3328" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3329" ordinal="3221" sl="3329" sc="1" el="3329" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3330" ordinal="3222" sl="3330" sc="1" el="3330" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3331" ordinal="3223" sl="3331" sc="1" el="3331" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3332" ordinal="3224" sl="3332" sc="1" el="3332" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3333" ordinal="3225" sl="3333" sc="1" el="3333" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3334" ordinal="3226" sl="3334" sc="1" el="3334" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3335" ordinal="3227" sl="3335" sc="1" el="3335" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3336" ordinal="3228" sl="3336" sc="1" el="3336" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3337" ordinal="3229" sl="3337" sc="1" el="3337" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3338" ordinal="3230" sl="3338" sc="1" el="3338" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3339" ordinal="3231" sl="3339" sc="1" el="3339" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3340" ordinal="3232" sl="3340" sc="1" el="3340" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3341" ordinal="3233" sl="3341" sc="1" el="3341" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3342" ordinal="3234" sl="3342" sc="1" el="3342" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3344" ordinal="3235" sl="3344" sc="1" el="3344" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3345" ordinal="3236" sl="3345" sc="1" el="3345" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3346" ordinal="3237" sl="3346" sc="1" el="3346" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3347" ordinal="3238" sl="3347" sc="1" el="3347" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3348" ordinal="3239" sl="3348" sc="1" el="3348" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3349" ordinal="3240" sl="3349" sc="1" el="3349" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3350" ordinal="3241" sl="3350" sc="1" el="3350" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3351" ordinal="3242" sl="3351" sc="1" el="3351" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3352" ordinal="3243" sl="3352" sc="1" el="3352" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3353" ordinal="3244" sl="3353" sc="1" el="3353" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3355" ordinal="3245" sl="3355" sc="1" el="3355" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3356" ordinal="3246" sl="3356" sc="1" el="3356" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3357" ordinal="3247" sl="3357" sc="1" el="3357" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3358" ordinal="3248" sl="3358" sc="1" el="3358" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3359" ordinal="3249" sl="3359" sc="1" el="3359" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3360" ordinal="3250" sl="3360" sc="1" el="3360" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3361" ordinal="3251" sl="3361" sc="1" el="3361" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3362" ordinal="3252" sl="3362" sc="1" el="3362" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3363" ordinal="3253" sl="3363" sc="1" el="3363" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3364" ordinal="3254" sl="3364" sc="1" el="3364" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3365" ordinal="3255" sl="3365" sc="1" el="3365" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3366" ordinal="3256" sl="3366" sc="1" el="3366" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3367" ordinal="3257" sl="3367" sc="1" el="3367" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3368" ordinal="3258" sl="3368" sc="1" el="3368" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3369" ordinal="3259" sl="3369" sc="1" el="3369" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3370" ordinal="3260" sl="3370" sc="1" el="3370" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3371" ordinal="3261" sl="3371" sc="1" el="3371" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3372" ordinal="3262" sl="3372" sc="1" el="3372" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3374" ordinal="3263" sl="3374" sc="1" el="3374" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3375" ordinal="3264" sl="3375" sc="1" el="3375" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3376" ordinal="3265" sl="3376" sc="1" el="3376" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3377" ordinal="3266" sl="3377" sc="1" el="3377" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3378" ordinal="3267" sl="3378" sc="1" el="3378" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3379" ordinal="3268" sl="3379" sc="1" el="3379" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3380" ordinal="3269" sl="3380" sc="1" el="3380" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3381" ordinal="3270" sl="3381" sc="1" el="3381" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3382" ordinal="3271" sl="3382" sc="1" el="3382" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3383" ordinal="3272" sl="3383" sc="1" el="3383" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3385" ordinal="3273" sl="3385" sc="1" el="3385" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3386" ordinal="3274" sl="3386" sc="1" el="3386" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3387" ordinal="3275" sl="3387" sc="1" el="3387" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3388" ordinal="3276" sl="3388" sc="1" el="3388" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3389" ordinal="3277" sl="3389" sc="1" el="3389" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3390" ordinal="3278" sl="3390" sc="1" el="3390" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3391" ordinal="3279" sl="3391" sc="1" el="3391" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3392" ordinal="3280" sl="3392" sc="1" el="3392" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3393" ordinal="3281" sl="3393" sc="1" el="3393" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3394" ordinal="3282" sl="3394" sc="1" el="3394" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3395" ordinal="3283" sl="3395" sc="1" el="3395" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3396" ordinal="3284" sl="3396" sc="1" el="3396" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3397" ordinal="3285" sl="3397" sc="1" el="3397" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3398" ordinal="3286" sl="3398" sc="1" el="3398" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3399" ordinal="3287" sl="3399" sc="1" el="3399" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3400" ordinal="3288" sl="3400" sc="1" el="3400" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3401" ordinal="3289" sl="3401" sc="1" el="3401" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3402" ordinal="3290" sl="3402" sc="1" el="3402" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3404" ordinal="3291" sl="3404" sc="1" el="3404" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3405" ordinal="3292" sl="3405" sc="1" el="3405" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3406" ordinal="3293" sl="3406" sc="1" el="3406" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3407" ordinal="3294" sl="3407" sc="1" el="3407" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3408" ordinal="3295" sl="3408" sc="1" el="3408" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3409" ordinal="3296" sl="3409" sc="1" el="3409" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3410" ordinal="3297" sl="3410" sc="1" el="3410" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3411" ordinal="3298" sl="3411" sc="1" el="3411" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3412" ordinal="3299" sl="3412" sc="1" el="3412" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3413" ordinal="3300" sl="3413" sc="1" el="3413" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3415" ordinal="3301" sl="3415" sc="1" el="3415" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3416" ordinal="3302" sl="3416" sc="1" el="3416" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3417" ordinal="3303" sl="3417" sc="1" el="3417" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3418" ordinal="3304" sl="3418" sc="1" el="3418" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3419" ordinal="3305" sl="3419" sc="1" el="3419" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3420" ordinal="3306" sl="3420" sc="1" el="3420" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3421" ordinal="3307" sl="3421" sc="1" el="3421" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3422" ordinal="3308" sl="3422" sc="1" el="3422" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3423" ordinal="3309" sl="3423" sc="1" el="3423" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3424" ordinal="3310" sl="3424" sc="1" el="3424" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3425" ordinal="3311" sl="3425" sc="1" el="3425" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3426" ordinal="3312" sl="3426" sc="1" el="3426" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3427" ordinal="3313" sl="3427" sc="1" el="3427" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3428" ordinal="3314" sl="3428" sc="1" el="3428" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3429" ordinal="3315" sl="3429" sc="1" el="3429" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3430" ordinal="3316" sl="3430" sc="1" el="3430" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3431" ordinal="3317" sl="3431" sc="1" el="3431" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3432" ordinal="3318" sl="3432" sc="1" el="3432" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3434" ordinal="3319" sl="3434" sc="1" el="3434" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3435" ordinal="3320" sl="3435" sc="1" el="3435" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3436" ordinal="3321" sl="3436" sc="1" el="3436" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3437" ordinal="3322" sl="3437" sc="1" el="3437" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3438" ordinal="3323" sl="3438" sc="1" el="3438" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3439" ordinal="3324" sl="3439" sc="1" el="3439" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3440" ordinal="3325" sl="3440" sc="1" el="3440" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3441" ordinal="3326" sl="3441" sc="1" el="3441" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3442" ordinal="3327" sl="3442" sc="1" el="3442" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3443" ordinal="3328" sl="3443" sc="1" el="3443" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3444" ordinal="3329" sl="3444" sc="1" el="3444" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3445" ordinal="3330" sl="3445" sc="1" el="3445" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3446" ordinal="3331" sl="3446" sc="1" el="3446" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3447" ordinal="3332" sl="3447" sc="1" el="3447" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3448" ordinal="3333" sl="3448" sc="1" el="3448" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3449" ordinal="3334" sl="3449" sc="1" el="3449" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3450" ordinal="3335" sl="3450" sc="1" el="3450" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3451" ordinal="3336" sl="3451" sc="1" el="3451" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3453" ordinal="3337" sl="3453" sc="1" el="3453" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3454" ordinal="3338" sl="3454" sc="1" el="3454" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3455" ordinal="3339" sl="3455" sc="1" el="3455" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3456" ordinal="3340" sl="3456" sc="1" el="3456" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3457" ordinal="3341" sl="3457" sc="1" el="3457" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3458" ordinal="3342" sl="3458" sc="1" el="3458" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3459" ordinal="3343" sl="3459" sc="1" el="3459" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3460" ordinal="3344" sl="3460" sc="1" el="3460" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3461" ordinal="3345" sl="3461" sc="1" el="3461" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3462" ordinal="3346" sl="3462" sc="1" el="3462" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3463" ordinal="3347" sl="3463" sc="1" el="3463" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3464" ordinal="3348" sl="3464" sc="1" el="3464" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3465" ordinal="3349" sl="3465" sc="1" el="3465" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3466" ordinal="3350" sl="3466" sc="1" el="3466" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3467" ordinal="3351" sl="3467" sc="1" el="3467" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3468" ordinal="3352" sl="3468" sc="1" el="3468" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3469" ordinal="3353" sl="3469" sc="1" el="3469" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3470" ordinal="3354" sl="3470" sc="1" el="3470" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3471" ordinal="3355" sl="3471" sc="1" el="3471" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3472" ordinal="3356" sl="3472" sc="1" el="3472" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3473" ordinal="3357" sl="3473" sc="1" el="3473" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3474" ordinal="3358" sl="3474" sc="1" el="3474" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3475" ordinal="3359" sl="3475" sc="1" el="3475" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3476" ordinal="3360" sl="3476" sc="1" el="3476" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3477" ordinal="3361" sl="3477" sc="1" el="3477" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3478" ordinal="3362" sl="3478" sc="1" el="3478" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3480" ordinal="3363" sl="3480" sc="1" el="3480" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3481" ordinal="3364" sl="3481" sc="1" el="3481" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3482" ordinal="3365" sl="3482" sc="1" el="3482" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3483" ordinal="3366" sl="3483" sc="1" el="3483" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3484" ordinal="3367" sl="3484" sc="1" el="3484" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3485" ordinal="3368" sl="3485" sc="1" el="3485" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3486" ordinal="3369" sl="3486" sc="1" el="3486" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3487" ordinal="3370" sl="3487" sc="1" el="3487" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3488" ordinal="3371" sl="3488" sc="1" el="3488" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3489" ordinal="3372" sl="3489" sc="1" el="3489" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3491" ordinal="3373" sl="3491" sc="1" el="3491" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3492" ordinal="3374" sl="3492" sc="1" el="3492" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3493" ordinal="3375" sl="3493" sc="1" el="3493" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3494" ordinal="3376" sl="3494" sc="1" el="3494" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3495" ordinal="3377" sl="3495" sc="1" el="3495" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3496" ordinal="3378" sl="3496" sc="1" el="3496" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3497" ordinal="3379" sl="3497" sc="1" el="3497" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3498" ordinal="3380" sl="3498" sc="1" el="3498" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3499" ordinal="3381" sl="3499" sc="1" el="3499" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3500" ordinal="3382" sl="3500" sc="1" el="3500" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3501" ordinal="3383" sl="3501" sc="1" el="3501" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3502" ordinal="3384" sl="3502" sc="1" el="3502" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3503" ordinal="3385" sl="3503" sc="1" el="3503" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3504" ordinal="3386" sl="3504" sc="1" el="3504" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3505" ordinal="3387" sl="3505" sc="1" el="3505" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3506" ordinal="3388" sl="3506" sc="1" el="3506" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3507" ordinal="3389" sl="3507" sc="1" el="3507" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3508" ordinal="3390" sl="3508" sc="1" el="3508" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3510" ordinal="3391" sl="3510" sc="1" el="3510" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3511" ordinal="3392" sl="3511" sc="1" el="3511" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3512" ordinal="3393" sl="3512" sc="1" el="3512" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3513" ordinal="3394" sl="3513" sc="1" el="3513" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3514" ordinal="3395" sl="3514" sc="1" el="3514" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3515" ordinal="3396" sl="3515" sc="1" el="3515" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3516" ordinal="3397" sl="3516" sc="1" el="3516" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3517" ordinal="3398" sl="3517" sc="1" el="3517" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3518" ordinal="3399" sl="3518" sc="1" el="3518" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3519" ordinal="3400" sl="3519" sc="1" el="3519" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3521" ordinal="3401" sl="3521" sc="1" el="3521" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3522" ordinal="3402" sl="3522" sc="1" el="3522" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3523" ordinal="3403" sl="3523" sc="1" el="3523" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3524" ordinal="3404" sl="3524" sc="1" el="3524" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3525" ordinal="3405" sl="3525" sc="1" el="3525" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3526" ordinal="3406" sl="3526" sc="1" el="3526" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3527" ordinal="3407" sl="3527" sc="1" el="3527" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3528" ordinal="3408" sl="3528" sc="1" el="3528" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3529" ordinal="3409" sl="3529" sc="1" el="3529" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3530" ordinal="3410" sl="3530" sc="1" el="3530" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3532" ordinal="3411" sl="3532" sc="1" el="3532" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3533" ordinal="3412" sl="3533" sc="1" el="3533" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3534" ordinal="3413" sl="3534" sc="1" el="3534" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3535" ordinal="3414" sl="3535" sc="1" el="3535" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3536" ordinal="3415" sl="3536" sc="1" el="3536" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3537" ordinal="3416" sl="3537" sc="1" el="3537" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3538" ordinal="3417" sl="3538" sc="1" el="3538" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3539" ordinal="3418" sl="3539" sc="1" el="3539" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3540" ordinal="3419" sl="3540" sc="1" el="3540" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3541" ordinal="3420" sl="3541" sc="1" el="3541" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3542" ordinal="3421" sl="3542" sc="1" el="3542" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3543" ordinal="3422" sl="3543" sc="1" el="3543" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3544" ordinal="3423" sl="3544" sc="1" el="3544" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3545" ordinal="3424" sl="3545" sc="1" el="3545" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3546" ordinal="3425" sl="3546" sc="1" el="3546" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3547" ordinal="3426" sl="3547" sc="1" el="3547" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3548" ordinal="3427" sl="3548" sc="1" el="3548" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3549" ordinal="3428" sl="3549" sc="1" el="3549" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3551" ordinal="3429" sl="3551" sc="1" el="3551" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3552" ordinal="3430" sl="3552" sc="1" el="3552" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3553" ordinal="3431" sl="3553" sc="1" el="3553" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3554" ordinal="3432" sl="3554" sc="1" el="3554" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3555" ordinal="3433" sl="3555" sc="1" el="3555" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3556" ordinal="3434" sl="3556" sc="1" el="3556" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3557" ordinal="3435" sl="3557" sc="1" el="3557" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3558" ordinal="3436" sl="3558" sc="1" el="3558" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3559" ordinal="3437" sl="3559" sc="1" el="3559" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3560" ordinal="3438" sl="3560" sc="1" el="3560" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3561" ordinal="3439" sl="3561" sc="1" el="3561" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3562" ordinal="3440" sl="3562" sc="1" el="3562" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3563" ordinal="3441" sl="3563" sc="1" el="3563" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3564" ordinal="3442" sl="3564" sc="1" el="3564" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3565" ordinal="3443" sl="3565" sc="1" el="3565" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3566" ordinal="3444" sl="3566" sc="1" el="3566" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3567" ordinal="3445" sl="3567" sc="1" el="3567" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3568" ordinal="3446" sl="3568" sc="1" el="3568" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3570" ordinal="3447" sl="3570" sc="1" el="3570" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3571" ordinal="3448" sl="3571" sc="1" el="3571" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3572" ordinal="3449" sl="3572" sc="1" el="3572" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3573" ordinal="3450" sl="3573" sc="1" el="3573" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3574" ordinal="3451" sl="3574" sc="1" el="3574" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3575" ordinal="3452" sl="3575" sc="1" el="3575" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3576" ordinal="3453" sl="3576" sc="1" el="3576" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3577" ordinal="3454" sl="3577" sc="1" el="3577" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3578" ordinal="3455" sl="3578" sc="1" el="3578" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3579" ordinal="3456" sl="3579" sc="1" el="3579" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3581" ordinal="3457" sl="3581" sc="1" el="3581" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3582" ordinal="3458" sl="3582" sc="1" el="3582" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3583" ordinal="3459" sl="3583" sc="1" el="3583" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3584" ordinal="3460" sl="3584" sc="1" el="3584" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3585" ordinal="3461" sl="3585" sc="1" el="3585" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3586" ordinal="3462" sl="3586" sc="1" el="3586" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3587" ordinal="3463" sl="3587" sc="1" el="3587" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3588" ordinal="3464" sl="3588" sc="1" el="3588" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3589" ordinal="3465" sl="3589" sc="1" el="3589" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3590" ordinal="3466" sl="3590" sc="1" el="3590" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3591" ordinal="3467" sl="3591" sc="1" el="3591" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3592" ordinal="3468" sl="3592" sc="1" el="3592" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3593" ordinal="3469" sl="3593" sc="1" el="3593" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3594" ordinal="3470" sl="3594" sc="1" el="3594" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3595" ordinal="3471" sl="3595" sc="1" el="3595" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3596" ordinal="3472" sl="3596" sc="1" el="3596" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3597" ordinal="3473" sl="3597" sc="1" el="3597" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3598" ordinal="3474" sl="3598" sc="1" el="3598" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3600" ordinal="3475" sl="3600" sc="1" el="3600" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3601" ordinal="3476" sl="3601" sc="1" el="3601" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3602" ordinal="3477" sl="3602" sc="1" el="3602" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3603" ordinal="3478" sl="3603" sc="1" el="3603" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3604" ordinal="3479" sl="3604" sc="1" el="3604" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3605" ordinal="3480" sl="3605" sc="1" el="3605" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3606" ordinal="3481" sl="3606" sc="1" el="3606" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3607" ordinal="3482" sl="3607" sc="1" el="3607" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3608" ordinal="3483" sl="3608" sc="1" el="3608" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3609" ordinal="3484" sl="3609" sc="1" el="3609" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3610" ordinal="3485" sl="3610" sc="1" el="3610" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3611" ordinal="3486" sl="3611" sc="1" el="3611" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3612" ordinal="3487" sl="3612" sc="1" el="3612" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3613" ordinal="3488" sl="3613" sc="1" el="3613" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3614" ordinal="3489" sl="3614" sc="1" el="3614" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3615" ordinal="3490" sl="3615" sc="1" el="3615" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3616" ordinal="3491" sl="3616" sc="1" el="3616" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3617" ordinal="3492" sl="3617" sc="1" el="3617" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3619" ordinal="3493" sl="3619" sc="1" el="3619" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3620" ordinal="3494" sl="3620" sc="1" el="3620" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3621" ordinal="3495" sl="3621" sc="1" el="3621" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3622" ordinal="3496" sl="3622" sc="1" el="3622" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3623" ordinal="3497" sl="3623" sc="1" el="3623" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3624" ordinal="3498" sl="3624" sc="1" el="3624" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3625" ordinal="3499" sl="3625" sc="1" el="3625" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3626" ordinal="3500" sl="3626" sc="1" el="3626" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3627" ordinal="3501" sl="3627" sc="1" el="3627" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3628" ordinal="3502" sl="3628" sc="1" el="3628" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3630" ordinal="3503" sl="3630" sc="1" el="3630" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3631" ordinal="3504" sl="3631" sc="1" el="3631" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3632" ordinal="3505" sl="3632" sc="1" el="3632" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3633" ordinal="3506" sl="3633" sc="1" el="3633" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3634" ordinal="3507" sl="3634" sc="1" el="3634" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3635" ordinal="3508" sl="3635" sc="1" el="3635" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3636" ordinal="3509" sl="3636" sc="1" el="3636" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3637" ordinal="3510" sl="3637" sc="1" el="3637" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3638" ordinal="3511" sl="3638" sc="1" el="3638" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3639" ordinal="3512" sl="3639" sc="1" el="3639" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3640" ordinal="3513" sl="3640" sc="1" el="3640" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3641" ordinal="3514" sl="3641" sc="1" el="3641" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3642" ordinal="3515" sl="3642" sc="1" el="3642" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3643" ordinal="3516" sl="3643" sc="1" el="3643" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3644" ordinal="3517" sl="3644" sc="1" el="3644" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3645" ordinal="3518" sl="3645" sc="1" el="3645" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3647" ordinal="3519" sl="3647" sc="1" el="3647" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3648" ordinal="3520" sl="3648" sc="1" el="3648" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3649" ordinal="3521" sl="3649" sc="1" el="3649" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3650" ordinal="3522" sl="3650" sc="1" el="3650" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3651" ordinal="3523" sl="3651" sc="1" el="3651" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3652" ordinal="3524" sl="3652" sc="1" el="3652" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3653" ordinal="3525" sl="3653" sc="1" el="3653" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3654" ordinal="3526" sl="3654" sc="1" el="3654" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3655" ordinal="3527" sl="3655" sc="1" el="3655" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3656" ordinal="3528" sl="3656" sc="1" el="3656" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3657" ordinal="3529" sl="3657" sc="1" el="3657" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3658" ordinal="3530" sl="3658" sc="1" el="3658" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3659" ordinal="3531" sl="3659" sc="1" el="3659" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3660" ordinal="3532" sl="3660" sc="1" el="3660" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3661" ordinal="3533" sl="3661" sc="1" el="3661" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3662" ordinal="3534" sl="3662" sc="1" el="3662" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3663" ordinal="3535" sl="3663" sc="1" el="3663" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3664" ordinal="3536" sl="3664" sc="1" el="3664" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3666" ordinal="3537" sl="3666" sc="1" el="3666" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3667" ordinal="3538" sl="3667" sc="1" el="3667" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3668" ordinal="3539" sl="3668" sc="1" el="3668" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3669" ordinal="3540" sl="3669" sc="1" el="3669" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3670" ordinal="3541" sl="3670" sc="1" el="3670" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3671" ordinal="3542" sl="3671" sc="1" el="3671" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3673" ordinal="3543" sl="3673" sc="1" el="3673" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3674" ordinal="3544" sl="3674" sc="1" el="3674" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3675" ordinal="3545" sl="3675" sc="1" el="3675" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3676" ordinal="3546" sl="3676" sc="1" el="3676" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3678" ordinal="3547" sl="3678" sc="1" el="3678" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3679" ordinal="3548" sl="3679" sc="1" el="3679" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3680" ordinal="3549" sl="3680" sc="1" el="3680" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3681" ordinal="3550" sl="3681" sc="1" el="3681" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3683" ordinal="3551" sl="3683" sc="1" el="3683" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3684" ordinal="3552" sl="3684" sc="1" el="3684" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3685" ordinal="3553" sl="3685" sc="1" el="3685" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3686" ordinal="3554" sl="3686" sc="1" el="3686" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3687" ordinal="3555" sl="3687" sc="1" el="3687" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3688" ordinal="3556" sl="3688" sc="1" el="3688" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3690" ordinal="3557" sl="3690" sc="1" el="3690" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3691" ordinal="3558" sl="3691" sc="1" el="3691" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3692" ordinal="3559" sl="3692" sc="1" el="3692" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3693" ordinal="3560" sl="3693" sc="1" el="3693" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3694" ordinal="3561" sl="3694" sc="1" el="3694" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3695" ordinal="3562" sl="3695" sc="1" el="3695" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3696" ordinal="3563" sl="3696" sc="1" el="3696" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3697" ordinal="3564" sl="3697" sc="1" el="3697" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3698" ordinal="3565" sl="3698" sc="1" el="3698" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3699" ordinal="3566" sl="3699" sc="1" el="3699" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3700" ordinal="3567" sl="3700" sc="1" el="3700" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3701" ordinal="3568" sl="3701" sc="1" el="3701" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3702" ordinal="3569" sl="3702" sc="1" el="3702" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3703" ordinal="3570" sl="3703" sc="1" el="3703" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3704" ordinal="3571" sl="3704" sc="1" el="3704" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3705" ordinal="3572" sl="3705" sc="1" el="3705" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3706" ordinal="3573" sl="3706" sc="1" el="3706" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3707" ordinal="3574" sl="3707" sc="1" el="3707" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3708" ordinal="3575" sl="3708" sc="1" el="3708" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3709" ordinal="3576" sl="3709" sc="1" el="3709" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3710" ordinal="3577" sl="3710" sc="1" el="3710" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3711" ordinal="3578" sl="3711" sc="1" el="3711" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3712" ordinal="3579" sl="3712" sc="1" el="3712" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3713" ordinal="3580" sl="3713" sc="1" el="3713" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3714" ordinal="3581" sl="3714" sc="1" el="3714" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3715" ordinal="3582" sl="3715" sc="1" el="3715" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3716" ordinal="3583" sl="3716" sc="1" el="3716" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3717" ordinal="3584" sl="3717" sc="1" el="3717" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3718" ordinal="3585" sl="3718" sc="1" el="3718" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3719" ordinal="3586" sl="3719" sc="1" el="3719" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3720" ordinal="3587" sl="3720" sc="1" el="3720" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3721" ordinal="3588" sl="3721" sc="1" el="3721" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3722" ordinal="3589" sl="3722" sc="1" el="3722" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3723" ordinal="3590" sl="3723" sc="1" el="3723" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3724" ordinal="3591" sl="3724" sc="1" el="3724" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3725" ordinal="3592" sl="3725" sc="1" el="3725" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3726" ordinal="3593" sl="3726" sc="1" el="3726" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3727" ordinal="3594" sl="3727" sc="1" el="3727" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3729" ordinal="3595" sl="3729" sc="1" el="3729" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3730" ordinal="3596" sl="3730" sc="1" el="3730" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3731" ordinal="3597" sl="3731" sc="1" el="3731" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3732" ordinal="3598" sl="3732" sc="1" el="3732" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3733" ordinal="3599" sl="3733" sc="1" el="3733" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3734" ordinal="3600" sl="3734" sc="1" el="3734" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3735" ordinal="3601" sl="3735" sc="1" el="3735" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3736" ordinal="3602" sl="3736" sc="1" el="3736" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3738" ordinal="3603" sl="3738" sc="1" el="3738" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3739" ordinal="3604" sl="3739" sc="1" el="3739" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3740" ordinal="3605" sl="3740" sc="1" el="3740" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3741" ordinal="3606" sl="3741" sc="1" el="3741" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3743" ordinal="3607" sl="3743" sc="1" el="3743" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3744" ordinal="3608" sl="3744" sc="1" el="3744" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3745" ordinal="3609" sl="3745" sc="1" el="3745" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3746" ordinal="3610" sl="3746" sc="1" el="3746" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3747" ordinal="3611" sl="3747" sc="1" el="3747" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3748" ordinal="3612" sl="3748" sc="1" el="3748" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3749" ordinal="3613" sl="3749" sc="1" el="3749" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3750" ordinal="3614" sl="3750" sc="1" el="3750" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3751" ordinal="3615" sl="3751" sc="1" el="3751" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3752" ordinal="3616" sl="3752" sc="1" el="3752" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3753" ordinal="3617" sl="3753" sc="1" el="3753" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3754" ordinal="3618" sl="3754" sc="1" el="3754" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3755" ordinal="3619" sl="3755" sc="1" el="3755" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3756" ordinal="3620" sl="3756" sc="1" el="3756" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3757" ordinal="3621" sl="3757" sc="1" el="3757" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3758" ordinal="3622" sl="3758" sc="1" el="3758" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3759" ordinal="3623" sl="3759" sc="1" el="3759" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3760" ordinal="3624" sl="3760" sc="1" el="3760" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3762" ordinal="3625" sl="3762" sc="1" el="3762" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3763" ordinal="3626" sl="3763" sc="1" el="3763" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3764" ordinal="3627" sl="3764" sc="1" el="3764" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3765" ordinal="3628" sl="3765" sc="1" el="3765" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3766" ordinal="3629" sl="3766" sc="1" el="3766" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3767" ordinal="3630" sl="3767" sc="1" el="3767" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3768" ordinal="3631" sl="3768" sc="1" el="3768" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3769" ordinal="3632" sl="3769" sc="1" el="3769" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3770" ordinal="3633" sl="3770" sc="1" el="3770" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3771" ordinal="3634" sl="3771" sc="1" el="3771" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3773" ordinal="3635" sl="3773" sc="1" el="3773" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3774" ordinal="3636" sl="3774" sc="1" el="3774" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3775" ordinal="3637" sl="3775" sc="1" el="3775" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3776" ordinal="3638" sl="3776" sc="1" el="3776" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3777" ordinal="3639" sl="3777" sc="1" el="3777" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3778" ordinal="3640" sl="3778" sc="1" el="3778" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3779" ordinal="3641" sl="3779" sc="1" el="3779" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3780" ordinal="3642" sl="3780" sc="1" el="3780" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3781" ordinal="3643" sl="3781" sc="1" el="3781" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3782" ordinal="3644" sl="3782" sc="1" el="3782" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3783" ordinal="3645" sl="3783" sc="1" el="3783" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3784" ordinal="3646" sl="3784" sc="1" el="3784" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3785" ordinal="3647" sl="3785" sc="1" el="3785" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3786" ordinal="3648" sl="3786" sc="1" el="3786" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3787" ordinal="3649" sl="3787" sc="1" el="3787" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3788" ordinal="3650" sl="3788" sc="1" el="3788" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3789" ordinal="3651" sl="3789" sc="1" el="3789" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3790" ordinal="3652" sl="3790" sc="1" el="3790" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3791" ordinal="3653" sl="3791" sc="1" el="3791" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3792" ordinal="3654" sl="3792" sc="1" el="3792" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3793" ordinal="3655" sl="3793" sc="1" el="3793" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3794" ordinal="3656" sl="3794" sc="1" el="3794" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3796" ordinal="3657" sl="3796" sc="1" el="3796" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3797" ordinal="3658" sl="3797" sc="1" el="3797" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3798" ordinal="3659" sl="3798" sc="1" el="3798" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3799" ordinal="3660" sl="3799" sc="1" el="3799" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3800" ordinal="3661" sl="3800" sc="1" el="3800" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3801" ordinal="3662" sl="3801" sc="1" el="3801" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3802" ordinal="3663" sl="3802" sc="1" el="3802" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3803" ordinal="3664" sl="3803" sc="1" el="3803" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3805" ordinal="3665" sl="3805" sc="1" el="3805" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3806" ordinal="3666" sl="3806" sc="1" el="3806" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3807" ordinal="3667" sl="3807" sc="1" el="3807" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3808" ordinal="3668" sl="3808" sc="1" el="3808" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3809" ordinal="3669" sl="3809" sc="1" el="3809" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3810" ordinal="3670" sl="3810" sc="1" el="3810" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3812" ordinal="3671" sl="3812" sc="1" el="3812" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3813" ordinal="3672" sl="3813" sc="1" el="3813" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3814" ordinal="3673" sl="3814" sc="1" el="3814" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3815" ordinal="3674" sl="3815" sc="1" el="3815" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3816" ordinal="3675" sl="3816" sc="1" el="3816" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3817" ordinal="3676" sl="3817" sc="1" el="3817" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3818" ordinal="3677" sl="3818" sc="1" el="3818" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3819" ordinal="3678" sl="3819" sc="1" el="3819" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3820" ordinal="3679" sl="3820" sc="1" el="3820" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3821" ordinal="3680" sl="3821" sc="1" el="3821" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3822" ordinal="3681" sl="3822" sc="1" el="3822" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3823" ordinal="3682" sl="3823" sc="1" el="3823" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3824" ordinal="3683" sl="3824" sc="1" el="3824" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3825" ordinal="3684" sl="3825" sc="1" el="3825" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3827" ordinal="3685" sl="3827" sc="1" el="3827" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3828" ordinal="3686" sl="3828" sc="1" el="3828" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3829" ordinal="3687" sl="3829" sc="1" el="3829" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3830" ordinal="3688" sl="3830" sc="1" el="3830" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3832" ordinal="3689" sl="3832" sc="1" el="3832" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3833" ordinal="3690" sl="3833" sc="1" el="3833" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3834" ordinal="3691" sl="3834" sc="1" el="3834" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3835" ordinal="3692" sl="3835" sc="1" el="3835" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3836" ordinal="3693" sl="3836" sc="1" el="3836" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3837" ordinal="3694" sl="3837" sc="1" el="3837" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3838" ordinal="3695" sl="3838" sc="1" el="3838" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3839" ordinal="3696" sl="3839" sc="1" el="3839" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3841" ordinal="3697" sl="3841" sc="1" el="3841" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3842" ordinal="3698" sl="3842" sc="1" el="3842" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3843" ordinal="3699" sl="3843" sc="1" el="3843" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3844" ordinal="3700" sl="3844" sc="1" el="3844" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3846" ordinal="3701" sl="3846" sc="1" el="3846" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3847" ordinal="3702" sl="3847" sc="1" el="3847" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3848" ordinal="3703" sl="3848" sc="1" el="3848" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3849" ordinal="3704" sl="3849" sc="1" el="3849" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3851" ordinal="3705" sl="3851" sc="1" el="3851" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3852" ordinal="3706" sl="3852" sc="1" el="3852" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3853" ordinal="3707" sl="3853" sc="1" el="3853" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3854" ordinal="3708" sl="3854" sc="1" el="3854" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3855" ordinal="3709" sl="3855" sc="1" el="3855" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3856" ordinal="3710" sl="3856" sc="1" el="3856" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3857" ordinal="3711" sl="3857" sc="1" el="3857" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3858" ordinal="3712" sl="3858" sc="1" el="3858" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3860" ordinal="3713" sl="3860" sc="1" el="3860" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3861" ordinal="3714" sl="3861" sc="1" el="3861" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3862" ordinal="3715" sl="3862" sc="1" el="3862" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3863" ordinal="3716" sl="3863" sc="1" el="3863" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3865" ordinal="3717" sl="3865" sc="1" el="3865" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3866" ordinal="3718" sl="3866" sc="1" el="3866" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3867" ordinal="3719" sl="3867" sc="1" el="3867" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3868" ordinal="3720" sl="3868" sc="1" el="3868" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3869" ordinal="3721" sl="3869" sc="1" el="3869" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3870" ordinal="3722" sl="3870" sc="1" el="3870" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3872" ordinal="3723" sl="3872" sc="1" el="3872" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3873" ordinal="3724" sl="3873" sc="1" el="3873" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3874" ordinal="3725" sl="3874" sc="1" el="3874" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3875" ordinal="3726" sl="3875" sc="1" el="3875" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3876" ordinal="3727" sl="3876" sc="1" el="3876" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3877" ordinal="3728" sl="3877" sc="1" el="3877" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3878" ordinal="3729" sl="3878" sc="1" el="3878" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3879" ordinal="3730" sl="3879" sc="1" el="3879" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3880" ordinal="3731" sl="3880" sc="1" el="3880" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3881" ordinal="3732" sl="3881" sc="1" el="3881" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3882" ordinal="3733" sl="3882" sc="1" el="3882" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3883" ordinal="3734" sl="3883" sc="1" el="3883" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3885" ordinal="3735" sl="3885" sc="1" el="3885" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3886" ordinal="3736" sl="3886" sc="1" el="3886" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3887" ordinal="3737" sl="3887" sc="1" el="3887" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3888" ordinal="3738" sl="3888" sc="1" el="3888" ec="2" bec="0" bev="0" fileid="86" /> <SequencePoint vc="0" uspid="3890" ordinal="3739" sl="3890" sc="1" el="3890" ec="2" bec="0" bev="0" fileid="86" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="12" ec="1" el="3890" bec="0" bev="0" fileid="86" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Account</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Account::.ctor()</Name> <FileRef uid="87" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="87" /> <SequencePoint vc="0" uspid="30" ordinal="1" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="87" /> <SequencePoint vc="0" uspid="31" ordinal="2" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="87" /> <SequencePoint vc="0" uspid="32" ordinal="3" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="87" /> <SequencePoint vc="0" uspid="33" ordinal="4" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="87" /> <SequencePoint vc="0" uspid="49" ordinal="5" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="87" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="49" bec="0" bev="0" fileid="87" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Act</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Act::.ctor()</Name> <FileRef uid="88" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="88" /> <SequencePoint vc="0" uspid="30" ordinal="1" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="88" /> <SequencePoint vc="0" uspid="31" ordinal="2" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="88" /> <SequencePoint vc="0" uspid="32" ordinal="3" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="88" /> <SequencePoint vc="0" uspid="41" ordinal="4" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="88" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="41" bec="0" bev="0" fileid="88" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.ActPart</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.ActPart::.ctor()</Name> <FileRef uid="89" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="89" /> <SequencePoint vc="0" uspid="30" ordinal="1" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="89" /> <SequencePoint vc="0" uspid="31" ordinal="2" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="89" /> <SequencePoint vc="0" uspid="32" ordinal="3" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="89" /> <SequencePoint vc="0" uspid="41" ordinal="4" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="89" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="41" bec="0" bev="0" fileid="89" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.AuditLog</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.AuditLog::.ctor()</Name> <FileRef uid="90" /> <SequencePoints> <SequencePoint vc="0" uspid="33" ordinal="0" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="90" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="90" /> <SequencePoint vc="0" uspid="45" ordinal="2" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="90" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="33" ec="1" el="45" bec="0" bev="0" fileid="90" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.BazaarItem</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.BazaarItem::.ctor()</Name> <FileRef uid="91" /> <SequencePoints> <SequencePoint vc="0" uspid="28" ordinal="0" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="91" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="91" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="28" ec="1" el="41" bec="0" bev="0" fileid="91" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Card</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Card::.ctor()</Name> <FileRef uid="92" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="92" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="92" /> <SequencePoint vc="0" uspid="32" ordinal="2" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="92" /> <SequencePoint vc="0" uspid="33" ordinal="3" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="92" /> <SequencePoint vc="0" uspid="34" ordinal="4" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="92" /> <SequencePoint vc="0" uspid="49" ordinal="5" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="92" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="49" bec="0" bev="0" fileid="92" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="24" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Character</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="24" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Character::.ctor()</Name> <FileRef uid="93" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="35" ordinal="3" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="36" ordinal="4" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="37" ordinal="5" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="38" ordinal="6" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="39" ordinal="7" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="40" ordinal="8" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="41" ordinal="9" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="42" ordinal="10" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="43" ordinal="11" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="44" ordinal="12" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="45" ordinal="13" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="46" ordinal="14" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="47" ordinal="15" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="48" ordinal="16" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="49" ordinal="17" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="50" ordinal="18" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="51" ordinal="19" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="52" ordinal="20" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="54" ordinal="21" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="145" ordinal="22" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="93" /> <SequencePoint vc="0" uspid="174" ordinal="23" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="93" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="174" bec="0" bev="0" fileid="93" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.CharacterActPart</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.CharacterActPart::.ctor()</Name> <FileRef uid="94" /> <SequencePoints> <SequencePoint vc="0" uspid="27" ordinal="0" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="94" /> <SequencePoint vc="0" uspid="30" ordinal="1" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="94" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="27" ec="1" el="30" bec="0" bev="0" fileid="94" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.CharacterQuest</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.CharacterQuest::.ctor()</Name> <FileRef uid="95" /> <SequencePoints> <SequencePoint vc="0" uspid="27" ordinal="0" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="95" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="95" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="27" ec="1" el="31" bec="0" bev="0" fileid="95" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.CharacterRelation</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.CharacterRelation::.ctor()</Name> <FileRef uid="96" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="96" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="96" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="31" bec="0" bev="0" fileid="96" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.CharacterSkill</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.CharacterSkill::.ctor()</Name> <FileRef uid="97" /> <SequencePoints> <SequencePoint vc="0" uspid="26" ordinal="0" sl="26" sc="1" el="26" ec="2" bec="0" bev="0" fileid="97" /> <SequencePoint vc="0" uspid="30" ordinal="1" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="97" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="26" ec="1" el="30" bec="0" bev="0" fileid="97" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Combo</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Combo::.ctor()</Name> <FileRef uid="98" /> <SequencePoints> <SequencePoint vc="0" uspid="36" ordinal="0" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="98" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="36" ec="1" el="36" bec="0" bev="0" fileid="98" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Drop</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Drop::.ctor()</Name> <FileRef uid="99" /> <SequencePoints> <SequencePoint vc="0" uspid="34" ordinal="0" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="99" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="34" ec="1" el="34" bec="0" bev="0" fileid="99" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.EquipmentOption</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.EquipmentOption::.ctor()</Name> <FileRef uid="100" /> <SequencePoints> <SequencePoint vc="0" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="100" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="35" ec="1" el="35" bec="0" bev="0" fileid="100" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Family</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Family::.ctor()</Name> <FileRef uid="101" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="101" /> <SequencePoint vc="0" uspid="30" ordinal="1" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="101" /> <SequencePoint vc="0" uspid="31" ordinal="2" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="101" /> <SequencePoint vc="0" uspid="32" ordinal="3" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="101" /> <SequencePoint vc="0" uspid="33" ordinal="4" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="101" /> <SequencePoint vc="0" uspid="34" ordinal="5" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="101" /> <SequencePoint vc="0" uspid="72" ordinal="6" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="101" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="72" bec="0" bev="0" fileid="101" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.FamilyCharacter</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.FamilyCharacter::.ctor()</Name> <FileRef uid="102" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="102" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="102" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="39" bec="0" bev="0" fileid="102" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.FamilyLog</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.FamilyLog::.ctor()</Name> <FileRef uid="103" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="103" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="29" bec="0" bev="0" fileid="103" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.I18NActDesc</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.I18NActDesc::.ctor()</Name> <FileRef uid="104" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="104" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="104" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="37" bec="0" bev="0" fileid="104" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.I18NBCard</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.I18NBCard::.ctor()</Name> <FileRef uid="105" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="105" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="105" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="37" bec="0" bev="0" fileid="105" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.I18NCard</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.I18NCard::.ctor()</Name> <FileRef uid="106" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="106" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="106" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="37" bec="0" bev="0" fileid="106" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.I18NItem</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.I18NItem::.ctor()</Name> <FileRef uid="107" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="107" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="107" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="37" bec="0" bev="0" fileid="107" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.I18NMapIdData</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.I18NMapIdData::.ctor()</Name> <FileRef uid="108" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="108" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="108" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="37" bec="0" bev="0" fileid="108" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.I18NMapPointData</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.I18NMapPointData::.ctor()</Name> <FileRef uid="109" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="109" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="109" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="37" bec="0" bev="0" fileid="109" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.I18NNpcMonster</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.I18NNpcMonster::.ctor()</Name> <FileRef uid="110" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="110" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="110" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="37" bec="0" bev="0" fileid="110" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.I18NNpcMonsterTalk</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.I18NNpcMonsterTalk::.ctor()</Name> <FileRef uid="111" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="111" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="111" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="37" bec="0" bev="0" fileid="111" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.I18NQuest</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.I18NQuest::.ctor()</Name> <FileRef uid="112" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="112" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="112" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="37" bec="0" bev="0" fileid="112" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.I18NSkill</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.I18NSkill::.ctor()</Name> <FileRef uid="113" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="113" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="113" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="37" bec="0" bev="0" fileid="113" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.InventoryItemInstance</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.InventoryItemInstance::.ctor()</Name> <FileRef uid="114" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="114" /> <SequencePoint vc="0" uspid="30" ordinal="1" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="114" /> <SequencePoint vc="0" uspid="31" ordinal="2" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="114" /> <SequencePoint vc="0" uspid="32" ordinal="3" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="114" /> <SequencePoint vc="0" uspid="35" ordinal="4" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="114" /> <SequencePoint vc="0" uspid="39" ordinal="5" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="114" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="39" bec="0" bev="0" fileid="114" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="12" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Item</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="12" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Item::.ctor()</Name> <FileRef uid="115" /> <SequencePoints> <SequencePoint vc="0" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="115" /> <SequencePoint vc="0" uspid="36" ordinal="1" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="115" /> <SequencePoint vc="0" uspid="37" ordinal="2" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="115" /> <SequencePoint vc="0" uspid="38" ordinal="3" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="115" /> <SequencePoint vc="0" uspid="39" ordinal="4" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="115" /> <SequencePoint vc="0" uspid="40" ordinal="5" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="115" /> <SequencePoint vc="0" uspid="41" ordinal="6" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="115" /> <SequencePoint vc="0" uspid="42" ordinal="7" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="115" /> <SequencePoint vc="0" uspid="43" ordinal="8" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="115" /> <SequencePoint vc="0" uspid="44" ordinal="9" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="115" /> <SequencePoint vc="0" uspid="45" ordinal="10" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="115" /> <SequencePoint vc="0" uspid="176" ordinal="11" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="115" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="35" ec="1" el="176" bec="0" bev="0" fileid="115" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.ItemInstance</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.ItemInstance::.ctor()</Name> <FileRef uid="116" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="116" /> <SequencePoint vc="0" uspid="30" ordinal="1" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="116" /> <SequencePoint vc="0" uspid="31" ordinal="2" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="116" /> <SequencePoint vc="0" uspid="32" ordinal="3" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="116" /> <SequencePoint vc="0" uspid="33" ordinal="4" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="116" /> <SequencePoint vc="0" uspid="34" ordinal="5" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="116" /> <SequencePoint vc="0" uspid="35" ordinal="6" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="116" /> <SequencePoint vc="0" uspid="56" ordinal="7" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="116" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="56" bec="0" bev="0" fileid="116" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Mail</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Mail::.ctor()</Name> <FileRef uid="117" /> <SequencePoints> <SequencePoint vc="0" uspid="65" ordinal="0" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="117" /> <SequencePoint vc="0" uspid="67" ordinal="1" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="117" /> <SequencePoint vc="0" uspid="87" ordinal="2" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="117" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="65" ec="1" el="87" bec="0" bev="0" fileid="117" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="15" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Map</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="15" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Map::.ctor()</Name> <FileRef uid="118" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="118" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="118" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="118" /> <SequencePoint vc="0" uspid="35" ordinal="3" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="118" /> <SequencePoint vc="0" uspid="36" ordinal="4" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="118" /> <SequencePoint vc="0" uspid="37" ordinal="5" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="118" /> <SequencePoint vc="0" uspid="38" ordinal="6" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="118" /> <SequencePoint vc="0" uspid="39" ordinal="7" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="118" /> <SequencePoint vc="0" uspid="40" ordinal="8" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="118" /> <SequencePoint vc="0" uspid="41" ordinal="9" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="118" /> <SequencePoint vc="0" uspid="42" ordinal="10" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="118" /> <SequencePoint vc="0" uspid="43" ordinal="11" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="118" /> <SequencePoint vc="0" uspid="44" ordinal="12" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="118" /> <SequencePoint vc="0" uspid="48" ordinal="13" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="118" /> <SequencePoint vc="0" uspid="65" ordinal="14" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="118" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="65" bec="0" bev="0" fileid="118" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.MapMonster</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.MapMonster::.ctor()</Name> <FileRef uid="119" /> <SequencePoints> <SequencePoint vc="0" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="119" /> <SequencePoint vc="0" uspid="49" ordinal="1" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="119" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="35" ec="1" el="49" bec="0" bev="0" fileid="119" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.MapNpc</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.MapNpc::.ctor()</Name> <FileRef uid="120" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="120" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="120" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="120" /> <SequencePoint vc="0" uspid="35" ordinal="3" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="120" /> <SequencePoint vc="0" uspid="36" ordinal="4" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="120" /> <SequencePoint vc="0" uspid="37" ordinal="5" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="120" /> <SequencePoint vc="0" uspid="51" ordinal="6" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="120" /> <SequencePoint vc="0" uspid="63" ordinal="7" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="120" /> <SequencePoint vc="0" uspid="75" ordinal="8" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="120" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="75" bec="0" bev="0" fileid="120" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.MapType</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.MapType::.ctor()</Name> <FileRef uid="121" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="121" /> <SequencePoint vc="0" uspid="30" ordinal="1" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="121" /> <SequencePoint vc="0" uspid="31" ordinal="2" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="121" /> <SequencePoint vc="0" uspid="32" ordinal="3" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="121" /> <SequencePoint vc="0" uspid="33" ordinal="4" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="121" /> <SequencePoint vc="0" uspid="44" ordinal="5" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="121" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="44" bec="0" bev="0" fileid="121" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.MapTypeMap</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.MapTypeMap::.ctor()</Name> <FileRef uid="122" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="122" /> <SequencePoint vc="0" uspid="34" ordinal="1" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="122" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="34" bec="0" bev="0" fileid="122" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Mate</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Mate::.ctor()</Name> <FileRef uid="123" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="123" /> <SequencePoint vc="0" uspid="66" ordinal="1" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="123" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="66" bec="0" bev="0" fileid="123" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Miniland</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Miniland::.ctor()</Name> <FileRef uid="124" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="124" /> <SequencePoint vc="0" uspid="34" ordinal="1" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="124" /> <SequencePoint vc="0" uspid="47" ordinal="2" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="124" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="47" bec="0" bev="0" fileid="124" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.NpcMonster</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.NpcMonster::.ctor()</Name> <FileRef uid="125" /> <SequencePoints> <SequencePoint vc="0" uspid="33" ordinal="0" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="125" /> <SequencePoint vc="0" uspid="34" ordinal="1" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="125" /> <SequencePoint vc="0" uspid="35" ordinal="2" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="125" /> <SequencePoint vc="0" uspid="36" ordinal="3" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="125" /> <SequencePoint vc="0" uspid="37" ordinal="4" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="125" /> <SequencePoint vc="0" uspid="38" ordinal="5" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="125" /> <SequencePoint vc="0" uspid="39" ordinal="6" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="125" /> <SequencePoint vc="0" uspid="40" ordinal="7" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="125" /> <SequencePoint vc="0" uspid="41" ordinal="8" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="125" /> <SequencePoint vc="0" uspid="42" ordinal="9" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="125" /> <SequencePoint vc="0" uspid="117" ordinal="10" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="125" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="33" ec="1" el="117" bec="0" bev="0" fileid="125" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.NpcMonsterSkill</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.NpcMonsterSkill::.ctor()</Name> <FileRef uid="126" /> <SequencePoints> <SequencePoint vc="0" uspid="27" ordinal="0" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="126" /> <SequencePoint vc="0" uspid="36" ordinal="1" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="126" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="27" ec="1" el="36" bec="0" bev="0" fileid="126" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.NpcTalk</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.NpcTalk::.ctor()</Name> <FileRef uid="127" /> <SequencePoints> <SequencePoint vc="0" uspid="31" ordinal="0" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="127" /> <SequencePoint vc="0" uspid="32" ordinal="1" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="127" /> <SequencePoint vc="0" uspid="33" ordinal="2" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="127" /> <SequencePoint vc="0" uspid="34" ordinal="3" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="127" /> <SequencePoint vc="0" uspid="42" ordinal="4" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="127" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="31" ec="1" el="42" bec="0" bev="0" fileid="127" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.PenaltyLog</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.PenaltyLog::.ctor()</Name> <FileRef uid="128" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="128" /> <SequencePoint vc="0" uspid="34" ordinal="1" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="128" /> <SequencePoint vc="0" uspid="47" ordinal="2" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="128" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="47" bec="0" bev="0" fileid="128" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Portal</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Portal::.ctor()</Name> <FileRef uid="129" /> <SequencePoints> <SequencePoint vc="0" uspid="36" ordinal="0" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="129" /> <SequencePoint vc="0" uspid="38" ordinal="1" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="129" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="36" ec="1" el="38" bec="0" bev="0" fileid="129" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Quest</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Quest::.ctor()</Name> <FileRef uid="130" /> <SequencePoints> <SequencePoint vc="0" uspid="33" ordinal="0" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="130" /> <SequencePoint vc="0" uspid="34" ordinal="1" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="130" /> <SequencePoint vc="0" uspid="35" ordinal="2" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="130" /> <SequencePoint vc="0" uspid="36" ordinal="3" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="130" /> <SequencePoint vc="0" uspid="37" ordinal="4" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="130" /> <SequencePoint vc="0" uspid="38" ordinal="5" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="130" /> <SequencePoint vc="0" uspid="83" ordinal="6" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="130" /> <SequencePoint vc="0" uspid="88" ordinal="7" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="130" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="33" ec="1" el="88" bec="0" bev="0" fileid="130" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.QuestObjective</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.QuestObjective::.ctor()</Name> <FileRef uid="131" /> <SequencePoints> <SequencePoint vc="0" uspid="44" ordinal="0" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="131" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="44" ec="1" el="44" bec="0" bev="0" fileid="131" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.QuestQuestReward</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.QuestQuestReward::.ctor()</Name> <FileRef uid="132" /> <SequencePoints> <SequencePoint vc="0" uspid="37" ordinal="0" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="132" /> <SequencePoint vc="0" uspid="43" ordinal="1" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="132" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="37" ec="1" el="43" bec="0" bev="0" fileid="132" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.QuestReward</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.QuestReward::.ctor()</Name> <FileRef uid="133" /> <SequencePoints> <SequencePoint vc="0" uspid="31" ordinal="0" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="133" /> <SequencePoint vc="0" uspid="32" ordinal="1" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="133" /> <SequencePoint vc="0" uspid="33" ordinal="2" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="133" /> <SequencePoint vc="0" uspid="34" ordinal="3" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="133" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="31" ec="1" el="34" bec="0" bev="0" fileid="133" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.QuicklistEntry</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.QuicklistEntry::.ctor()</Name> <FileRef uid="134" /> <SequencePoints> <SequencePoint vc="0" uspid="26" ordinal="0" sl="26" sc="1" el="26" ec="2" bec="0" bev="0" fileid="134" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="26" ec="1" el="26" bec="0" bev="0" fileid="134" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Recipe</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Recipe::.ctor()</Name> <FileRef uid="135" /> <SequencePoints> <SequencePoint vc="0" uspid="28" ordinal="0" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="135" /> <SequencePoint vc="0" uspid="29" ordinal="1" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="135" /> <SequencePoint vc="0" uspid="30" ordinal="2" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="135" /> <SequencePoint vc="0" uspid="31" ordinal="3" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="135" /> <SequencePoint vc="0" uspid="35" ordinal="4" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="135" /> <SequencePoint vc="0" uspid="39" ordinal="5" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="135" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="28" ec="1" el="39" bec="0" bev="0" fileid="135" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.RecipeItem</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.RecipeItem::.ctor()</Name> <FileRef uid="136" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="136" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="136" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="33" bec="0" bev="0" fileid="136" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Respawn</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Respawn::.ctor()</Name> <FileRef uid="137" /> <SequencePoints> <SequencePoint vc="0" uspid="27" ordinal="0" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="137" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="137" /> <SequencePoint vc="0" uspid="38" ordinal="2" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="137" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="27" ec="1" el="38" bec="0" bev="0" fileid="137" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.RespawnMapType</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.RespawnMapType::.ctor()</Name> <FileRef uid="138" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="138" /> <SequencePoint vc="0" uspid="30" ordinal="1" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="138" /> <SequencePoint vc="0" uspid="31" ordinal="2" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="138" /> <SequencePoint vc="0" uspid="32" ordinal="3" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="138" /> <SequencePoint vc="0" uspid="33" ordinal="4" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="138" /> <SequencePoint vc="0" uspid="34" ordinal="5" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="138" /> <SequencePoint vc="0" uspid="42" ordinal="6" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="138" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="42" bec="0" bev="0" fileid="138" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.RollGeneratedItem</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.RollGeneratedItem::.ctor()</Name> <FileRef uid="139" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="139" /> <SequencePoint vc="0" uspid="50" ordinal="1" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="139" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="50" bec="0" bev="0" fileid="139" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Script</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Script::.ctor()</Name> <FileRef uid="140" /> <SequencePoints> <SequencePoint vc="0" uspid="31" ordinal="0" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="140" /> <SequencePoint vc="0" uspid="32" ordinal="1" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="140" /> <SequencePoint vc="0" uspid="33" ordinal="2" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="140" /> <SequencePoint vc="0" uspid="34" ordinal="3" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="140" /> <SequencePoint vc="0" uspid="43" ordinal="4" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="140" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="31" ec="1" el="43" bec="0" bev="0" fileid="140" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.ScriptedInstance</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.ScriptedInstance::.ctor()</Name> <FileRef uid="141" /> <SequencePoints> <SequencePoint vc="0" uspid="28" ordinal="0" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="141" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="28" ec="1" el="28" bec="0" bev="0" fileid="141" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Shop</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Shop::.ctor()</Name> <FileRef uid="142" /> <SequencePoints> <SequencePoint vc="0" uspid="31" ordinal="0" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="142" /> <SequencePoint vc="0" uspid="32" ordinal="1" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="142" /> <SequencePoint vc="0" uspid="33" ordinal="2" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="142" /> <SequencePoint vc="0" uspid="34" ordinal="3" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="142" /> <SequencePoint vc="0" uspid="35" ordinal="4" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="142" /> <SequencePoint vc="0" uspid="37" ordinal="5" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="142" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="31" ec="1" el="37" bec="0" bev="0" fileid="142" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.ShopItem</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.ShopItem::.ctor()</Name> <FileRef uid="143" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="143" /> <SequencePoint vc="0" uspid="38" ordinal="1" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="143" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="38" bec="0" bev="0" fileid="143" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.ShopSkill</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.ShopSkill::.ctor()</Name> <FileRef uid="144" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="144" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="144" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="37" bec="0" bev="0" fileid="144" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Skill</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Skill::.ctor()</Name> <FileRef uid="145" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="145" /> <SequencePoint vc="0" uspid="30" ordinal="1" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="145" /> <SequencePoint vc="0" uspid="31" ordinal="2" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="145" /> <SequencePoint vc="0" uspid="32" ordinal="3" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="145" /> <SequencePoint vc="0" uspid="33" ordinal="4" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="145" /> <SequencePoint vc="0" uspid="34" ordinal="5" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="145" /> <SequencePoint vc="0" uspid="35" ordinal="6" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="145" /> <SequencePoint vc="0" uspid="36" ordinal="7" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="145" /> <SequencePoint vc="0" uspid="85" ordinal="8" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="145" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="85" bec="0" bev="0" fileid="145" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.StaticBonus</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.StaticBonus::.ctor()</Name> <FileRef uid="146" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="146" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="29" bec="0" bev="0" fileid="146" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.StaticBuff</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.StaticBuff::.ctor()</Name> <FileRef uid="147" /> <SequencePoints> <SequencePoint vc="0" uspid="27" ordinal="0" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="147" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="147" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="27" ec="1" el="31" bec="0" bev="0" fileid="147" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Teleporter</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Teleporter::.ctor()</Name> <FileRef uid="148" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="148" /> <SequencePoint vc="0" uspid="36" ordinal="1" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="148" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="36" bec="0" bev="0" fileid="148" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Title</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Title::.ctor()</Name> <FileRef uid="149" /> <SequencePoints> <SequencePoint vc="0" uspid="26" ordinal="0" sl="26" sc="1" el="26" ec="2" bec="0" bev="0" fileid="149" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="26" ec="1" el="26" bec="0" bev="0" fileid="149" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Warehouse</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Warehouse::.ctor()</Name> <FileRef uid="150" /> <SequencePoints> <SequencePoint vc="0" uspid="28" ordinal="0" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="150" /> <SequencePoint vc="0" uspid="29" ordinal="1" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="150" /> <SequencePoint vc="0" uspid="30" ordinal="2" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="150" /> <SequencePoint vc="0" uspid="31" ordinal="3" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="150" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="28" ec="1" el="31" bec="0" bev="0" fileid="150" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.WarehouseItem</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.WarehouseItem::.ctor()</Name> <FileRef uid="151" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="151" /> <SequencePoint vc="0" uspid="35" ordinal="1" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="151" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="35" bec="0" bev="0" fileid="151" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Database.Entities.Base.I18NStringAttribute</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Entities.Base.I18NStringAttribute::.ctor(System.Type)</Name> <FileRef uid="152" /> <SequencePoints> <SequencePoint vc="0" uspid="26" ordinal="0" sl="26" sc="1" el="26" ec="2" bec="0" bev="0" fileid="152" /> <SequencePoint vc="0" uspid="27" ordinal="1" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="152" /> <SequencePoint vc="0" uspid="28" ordinal="2" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="152" /> <SequencePoint vc="0" uspid="29" ordinal="3" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="152" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="26" ec="1" el="29" bec="0" bev="0" fileid="152" xmlns:p8="xsi" /> </Method> </Methods> </Class> </Classes> </Module> <Module hash="6368EADF-3352-4420-A5C1-20065F0A4DA4"> <ModulePath>NosCore.Database.Tests.dll</ModulePath> <ModuleTime>2020-12-29T09:41:25</ModuleTime> <ModuleName>NosCore.Database.Tests</ModuleName> <Files> <File uid="153" fullPath="C:\Users\Erwan\.nuget\packages\microsoft.net.test.sdk\16.8.3\build\netcoreapp2.1\Microsoft.NET.Test.Sdk.Program.cs" /> <File uid="154" fullPath="C:\dev\NosCore\test\NosCore.Database.Tests\DatabaseTests.cs" /> </Files> <Classes> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>AutoGeneratedProgram</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void AutoGeneratedProgram::Main(System.String[])</Name> <FileRef uid="153" /> <SequencePoints> <SequencePoint vc="0" uspid="4" ordinal="0" sl="4" sc="1" el="4" ec="2" bec="0" bev="0" fileid="153" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="4" ec="1" el="4" bec="0" bev="0" fileid="153" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="48" visitedSequencePoints="0" numBranchPoints="42" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="28" minCyclomaticComplexity="14" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Database.Tests.DatabaseTests</FullName> <Methods> <Method cyclomaticComplexity="28" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="26" visitedSequencePoints="0" numBranchPoints="28" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="28" minCyclomaticComplexity="28" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Boolean NosCore.Database.Tests.DatabaseTests::IsNullable(System.Reflection.PropertyInfo)</Name> <FileRef uid="154" /> <SequencePoints> <SequencePoint vc="0" uspid="15" ordinal="0" sl="15" sc="1" el="15" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="16" ordinal="1" sl="16" sc="1" el="16" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="17" ordinal="2" sl="17" sc="1" el="17" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="18" ordinal="3" sl="18" sc="1" el="18" ec="2" bec="4" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="19" ordinal="4" sl="19" sc="1" el="19" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="20" ordinal="5" sl="20" sc="1" el="20" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="21" ordinal="6" sl="21" sc="1" el="21" ec="2" bec="2" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="22" ordinal="7" sl="22" sc="1" el="22" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="23" ordinal="8" sl="23" sc="1" el="23" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="24" ordinal="9" sl="24" sc="1" el="24" ec="2" bec="6" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="25" ordinal="10" sl="25" sc="1" el="25" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="26" ordinal="11" sl="26" sc="1" el="26" ec="2" bec="2" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="28" ordinal="12" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="29" ordinal="13" sl="29" sc="1" el="29" ec="2" bec="2" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="30" ordinal="14" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="31" ordinal="15" sl="31" sc="1" el="31" ec="2" bec="2" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="33" ordinal="16" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="35" ordinal="17" sl="35" sc="1" el="35" ec="2" bec="2" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="36" ordinal="18" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="37" ordinal="19" sl="37" sc="1" el="37" ec="2" bec="6" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="38" ordinal="20" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="39" ordinal="21" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="40" ordinal="22" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="41" ordinal="23" sl="41" sc="1" el="41" ec="2" bec="2" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="45" ordinal="24" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="46" ordinal="25" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="154" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="18" ordinal="0" path="0" offset="45" offsetend="47" sl="18" fileid="154" /> <BranchPoint vc="0" uspid="18" ordinal="1" path="1" offset="45" offsetend="63" sl="18" fileid="154" /> <BranchPoint vc="0" uspid="18" ordinal="2" path="0" offset="66" offsetend="71" sl="18" fileid="154" /> <BranchPoint vc="0" uspid="21" ordinal="4" path="0" offset="111" offsetend="116" sl="21" fileid="154" /> <BranchPoint vc="0" uspid="24" ordinal="6" path="0" offset="133" offsetend="135" sl="24" fileid="154" /> <BranchPoint vc="0" uspid="24" ordinal="8" path="0" offset="143" offsetend="145" sl="24" fileid="154" /> <BranchPoint vc="0" uspid="24" ordinal="7" path="1" offset="133" offsetend="179" sl="24" fileid="154" /> <BranchPoint vc="0" uspid="24" ordinal="9" path="1" offset="143" offsetend="179" sl="24" fileid="154" /> <BranchPoint vc="0" uspid="24" ordinal="10" path="0" offset="184" offsetend="186" sl="24" fileid="154" /> <BranchPoint vc="0" uspid="26" ordinal="12" path="0" offset="218" offsetend="220" sl="26" fileid="154" /> <BranchPoint vc="0" uspid="26" ordinal="13" path="1" offset="218" offsetend="232" sl="26" fileid="154" /> <BranchPoint vc="0" uspid="24" ordinal="11" path="1" offset="184" offsetend="275" sl="24" fileid="154" /> <BranchPoint vc="0" uspid="21" ordinal="5" path="1" offset="111" offsetend="278" sl="21" fileid="154" /> <BranchPoint vc="0" uspid="29" ordinal="14" path="0" offset="304" offsetend="306" sl="29" fileid="154" /> <BranchPoint vc="0" uspid="31" ordinal="16" path="0" offset="328" offsetend="330" sl="31" fileid="154" /> <BranchPoint vc="0" uspid="31" ordinal="17" path="1" offset="328" offsetend="342" sl="31" fileid="154" /> <BranchPoint vc="0" uspid="29" ordinal="15" path="1" offset="304" offsetend="385" sl="29" fileid="154" /> <BranchPoint vc="0" uspid="18" ordinal="3" path="1" offset="66" offsetend="386" sl="18" fileid="154" /> <BranchPoint vc="0" uspid="35" ordinal="18" path="0" offset="393" offsetend="395" sl="35" fileid="154" /> <BranchPoint vc="0" uspid="35" ordinal="19" path="1" offset="393" offsetend="399" sl="35" fileid="154" /> <BranchPoint vc="0" uspid="37" ordinal="20" path="0" offset="442" offsetend="444" sl="37" fileid="154" /> <BranchPoint vc="0" uspid="37" ordinal="22" path="0" offset="456" offsetend="458" sl="37" fileid="154" /> <BranchPoint vc="0" uspid="37" ordinal="21" path="1" offset="442" offsetend="496" sl="37" fileid="154" /> <BranchPoint vc="0" uspid="37" ordinal="23" path="1" offset="456" offsetend="496" sl="37" fileid="154" /> <BranchPoint vc="0" uspid="37" ordinal="24" path="0" offset="501" offsetend="503" sl="37" fileid="154" /> <BranchPoint vc="0" uspid="41" ordinal="26" path="0" offset="539" offsetend="541" sl="41" fileid="154" /> <BranchPoint vc="0" uspid="41" ordinal="27" path="1" offset="539" offsetend="553" sl="41" fileid="154" /> <BranchPoint vc="0" uspid="37" ordinal="25" path="1" offset="501" offsetend="593" sl="37" fileid="154" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="15" ec="1" el="46" bec="0" bev="0" fileid="154" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="14" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="22" visitedSequencePoints="0" numBranchPoints="14" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="14" minCyclomaticComplexity="14" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Database.Tests.DatabaseTests::Test_All_NullableForeignKeyAreAssociatedToNullableEntity()</Name> <FileRef uid="154" /> <SequencePoints> <SequencePoint vc="0" uspid="50" ordinal="0" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="51" ordinal="1" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="52" ordinal="2" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="53" ordinal="3" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="54" ordinal="4" sl="54" sc="1" el="54" ec="2" bec="2" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="55" ordinal="5" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="56" ordinal="6" sl="56" sc="1" el="56" ec="2" bec="2" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="57" ordinal="7" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="58" ordinal="8" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="59" ordinal="9" sl="59" sc="1" el="59" ec="2" bec="8" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="60" ordinal="10" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="61" ordinal="11" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="62" ordinal="12" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="65" ordinal="13" sl="65" sc="1" el="65" ec="2" bec="2" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="66" ordinal="14" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="67" ordinal="15" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="68" ordinal="16" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="69" ordinal="17" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="70" ordinal="18" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="71" ordinal="19" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="74" ordinal="20" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="154" /> <SequencePoint vc="0" uspid="75" ordinal="21" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="154" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="54" ordinal="13" path="1" offset="296" offsetend="71" sl="54" fileid="154" /> <BranchPoint vc="0" uspid="56" ordinal="11" path="1" offset="269" offsetend="100" sl="56" fileid="154" /> <BranchPoint vc="0" uspid="59" ordinal="0" path="0" offset="147" offsetend="149" sl="59" fileid="154" /> <BranchPoint vc="0" uspid="59" ordinal="2" path="0" offset="157" offsetend="159" sl="59" fileid="154" /> <BranchPoint vc="0" uspid="59" ordinal="4" path="0" offset="166" offsetend="168" sl="59" fileid="154" /> <BranchPoint vc="0" uspid="59" ordinal="1" path="1" offset="147" offsetend="192" sl="59" fileid="154" /> <BranchPoint vc="0" uspid="59" ordinal="3" path="1" offset="157" offsetend="192" sl="59" fileid="154" /> <BranchPoint vc="0" uspid="59" ordinal="5" path="1" offset="166" offsetend="192" sl="59" fileid="154" /> <BranchPoint vc="0" uspid="59" ordinal="6" path="0" offset="197" offsetend="199" sl="59" fileid="154" /> <BranchPoint vc="0" uspid="59" ordinal="7" path="1" offset="197" offsetend="202" sl="59" fileid="154" /> <BranchPoint vc="0" uspid="65" ordinal="8" path="0" offset="221" offsetend="223" sl="65" fileid="154" /> <BranchPoint vc="0" uspid="65" ordinal="9" path="1" offset="221" offsetend="261" sl="65" fileid="154" /> <BranchPoint vc="0" uspid="56" ordinal="10" path="0" offset="269" offsetend="274" sl="56" fileid="154" /> <BranchPoint vc="0" uspid="54" ordinal="12" path="0" offset="296" offsetend="301" sl="54" fileid="154" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="50" ec="1" el="75" bec="0" bev="0" fileid="154" xmlns:p8="xsi" /> </Method> </Methods> </Class> </Classes> </Module> <Module hash="47F0079E-683F-4735-9459-FBCA32EE3C5E"> <ModulePath>NosCore.GameObject.Tests.dll</ModulePath> <ModuleTime>2020-12-29T09:41:25</ModuleTime> <ModuleName>NosCore.GameObject.Tests</ModuleName> <Files> <File uid="155" fullPath="C:\Users\Erwan\.nuget\packages\microsoft.net.test.sdk\16.8.3\build\netcoreapp2.1\Microsoft.NET.Test.Sdk.Program.cs" /> <File uid="156" fullPath="C:\dev\NosCore\test\NosCore.GameObject.Tests\GroupTests.cs" /> <File uid="157" fullPath="C:\dev\NosCore\test\NosCore.GameObject.Tests\SetupAssemblyInitializer.cs" /> <File uid="158" fullPath="C:\dev\NosCore\test\NosCore.GameObject.Tests\ShopTests.cs" /> <File uid="159" fullPath="C:\dev\NosCore\test\NosCore.GameObject.Tests\Services\NRunService\Handlers\ChangeClassTests.cs" /> <File uid="160" fullPath="C:\dev\NosCore\test\NosCore.GameObject.Tests\Services\ItemGenerationService\Handlers\BackPackHandlerTests.cs" /> <File uid="161" fullPath="C:\dev\NosCore\test\NosCore.GameObject.Tests\Services\ItemGenerationService\Handlers\BazaarMedalsHandlerTests.cs" /> <File uid="162" fullPath="C:\dev\NosCore\test\NosCore.GameObject.Tests\Services\ItemGenerationService\Handlers\MinilandBellHandlerTests.cs" /> <File uid="163" fullPath="C:\dev\NosCore\test\NosCore.GameObject.Tests\Services\ItemGenerationService\Handlers\SpeakerHandlerTests.cs" /> <File uid="164" fullPath="C:\dev\NosCore\test\NosCore.GameObject.Tests\Services\ItemGenerationService\Handlers\SpRechargerHandlerTests.cs" /> <File uid="165" fullPath="C:\dev\NosCore\test\NosCore.GameObject.Tests\Services\ItemGenerationService\Handlers\TitleHandlerTests.cs" /> <File uid="166" fullPath="C:\dev\NosCore\test\NosCore.GameObject.Tests\Services\ItemGenerationService\Handlers\UseItemEventHandlerTestsBase.cs" /> <File uid="167" fullPath="C:\dev\NosCore\test\NosCore.GameObject.Tests\Services\InventoryService\InventoryServiceTests.cs" /> <File uid="168" fullPath="C:\dev\NosCore\test\NosCore.GameObject.Tests\Services\GuriRunnerService\Handlers\GuriEventHandlerTestsBase.cs" /> <File uid="169" fullPath="C:\dev\NosCore\test\NosCore.GameObject.Tests\Services\GuriRunnerService\Handlers\TitleGuriHandlerTests.cs" /> <File uid="170" fullPath="C:\dev\NosCore\test\NosCore.GameObject.Tests\Services\ExchangeService\ExchangeServiceTests.cs" /> </Files> <Classes> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>AutoGeneratedProgram</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void AutoGeneratedProgram::Main(System.String[])</Name> <FileRef uid="155" /> <SequencePoints> <SequencePoint vc="0" uspid="4" ordinal="0" sl="4" sc="1" el="4" ec="2" bec="0" bev="0" fileid="155" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="4" ec="1" el="4" bec="0" bev="0" fileid="155" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="58" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="6" /> <FullName>NosCore.GameObject.Tests.GroupTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.GroupTests::Setup()</Name> <FileRef uid="156" /> <SequencePoints> <SequencePoint vc="0" uspid="55" ordinal="0" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="56" ordinal="1" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="58" ordinal="2" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="60" ordinal="3" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="61" ordinal="4" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="156" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="55" ec="1" el="61" bec="0" bev="0" fileid="156" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="13" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.GroupTests::Test_Add_Player()</Name> <FileRef uid="156" /> <SequencePoints> <SequencePoint vc="0" uspid="65" ordinal="0" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="66" ordinal="1" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="67" ordinal="2" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="68" ordinal="3" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="69" ordinal="4" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="70" ordinal="5" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="71" ordinal="6" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="72" ordinal="7" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="73" ordinal="8" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="74" ordinal="9" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="76" ordinal="10" sl="76" sc="1" el="76" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="78" ordinal="11" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="79" ordinal="12" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="156" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="65" ec="1" el="79" bec="0" bev="0" fileid="156" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="15" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.GroupTests::Test_Remove_Player()</Name> <FileRef uid="156" /> <SequencePoints> <SequencePoint vc="0" uspid="83" ordinal="0" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="84" ordinal="1" sl="84" sc="1" el="84" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="85" ordinal="2" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="86" ordinal="3" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="87" ordinal="4" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="88" ordinal="5" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="89" ordinal="6" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="90" ordinal="7" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="91" ordinal="8" sl="91" sc="1" el="91" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="92" ordinal="9" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="94" ordinal="10" sl="94" sc="1" el="94" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="96" ordinal="11" sl="96" sc="1" el="96" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="98" ordinal="12" sl="98" sc="1" el="98" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="100" ordinal="13" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="101" ordinal="14" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="156" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="83" ec="1" el="101" bec="0" bev="0" fileid="156" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.GroupTests::Test_Monster_Join_Group()</Name> <FileRef uid="156" /> <SequencePoints> <SequencePoint vc="0" uspid="105" ordinal="0" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="106" ordinal="1" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="108" ordinal="2" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="110" ordinal="3" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="111" ordinal="4" sl="111" sc="1" el="111" ec="2" bec="0" bev="0" fileid="156" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="105" ec="1" el="111" bec="0" bev="0" fileid="156" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="19" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.GroupTests::Test_Leader_Change()</Name> <FileRef uid="156" /> <SequencePoints> <SequencePoint vc="0" uspid="115" ordinal="0" sl="115" sc="1" el="115" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="116" ordinal="1" sl="116" sc="1" el="116" ec="2" bec="2" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="117" ordinal="2" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="118" ordinal="3" sl="118" sc="1" el="118" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="119" ordinal="4" sl="119" sc="1" el="119" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="120" ordinal="5" sl="120" sc="1" el="120" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="121" ordinal="6" sl="121" sc="1" el="121" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="122" ordinal="7" sl="122" sc="1" el="122" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="123" ordinal="8" sl="123" sc="1" el="123" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="124" ordinal="9" sl="124" sc="1" el="124" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="125" ordinal="10" sl="125" sc="1" el="125" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="126" ordinal="11" sl="126" sc="1" el="126" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="127" ordinal="12" sl="127" sc="1" el="127" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="129" ordinal="13" sl="129" sc="1" el="129" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="130" ordinal="14" sl="130" sc="1" el="130" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="132" ordinal="15" sl="132" sc="1" el="132" ec="2" bec="2" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="134" ordinal="16" sl="134" sc="1" el="134" ec="2" bec="0" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="136" ordinal="17" sl="136" sc="1" el="136" ec="2" bec="2" bev="0" fileid="156" /> <SequencePoint vc="0" uspid="137" ordinal="18" sl="137" sc="1" el="137" ec="2" bec="0" bev="0" fileid="156" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="116" ordinal="1" path="1" offset="305" offsetend="8" sl="116" fileid="156" /> <BranchPoint vc="0" uspid="116" ordinal="0" path="0" offset="305" offsetend="310" sl="116" fileid="156" /> <BranchPoint vc="0" uspid="132" ordinal="2" path="0" offset="321" offsetend="323" sl="132" fileid="156" /> <BranchPoint vc="0" uspid="132" ordinal="3" path="1" offset="321" offsetend="366" sl="132" fileid="156" /> <BranchPoint vc="0" uspid="136" ordinal="4" path="0" offset="421" offsetend="423" sl="136" fileid="156" /> <BranchPoint vc="0" uspid="136" ordinal="5" path="1" offset="421" offsetend="466" sl="136" fileid="156" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="115" ec="1" el="137" bec="0" bev="0" fileid="156" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.GroupTests::.cctor()</Name> <FileRef uid="156" /> <SequencePoints> <SequencePoint vc="0" uspid="50" ordinal="0" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="156" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="5" offset="5" sc="0" sl="50" ec="1" el="50" bec="0" bev="0" fileid="156" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.GameObject.Tests.SetupAssemblyInitializer</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.SetupAssemblyInitializer::AssemblyInit(Microsoft.VisualStudio.TestTools.UnitTesting.TestContext)</Name> <FileRef uid="157" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="157" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="157" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="157" /> <SequencePoint vc="0" uspid="35" ordinal="3" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="157" /> <SequencePoint vc="0" uspid="36" ordinal="4" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="157" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="36" bec="0" bev="0" fileid="157" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.GameObject.Tests.ShopTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.ShopTests::.cctor()</Name> <FileRef uid="158" /> <SequencePoints> <SequencePoint vc="0" uspid="70" ordinal="0" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="158" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="70" ec="1" el="70" bec="0" bev="0" fileid="158" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.GameObject.Tests.Services.NRunService.Handlers.ChangeClassTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.NRunService.Handlers.ChangeClassTests::.ctor()</Name> <FileRef uid="159" /> <SequencePoints> <SequencePoint vc="0" uspid="53" ordinal="0" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="159" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="53" ec="1" el="53" bec="0" bev="0" fileid="159" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.NRunService.Handlers.ChangeClassTests::.cctor()</Name> <FileRef uid="159" /> <SequencePoints> <SequencePoint vc="0" uspid="50" ordinal="0" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="159" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="50" ec="1" el="50" bec="0" bev="0" fileid="159" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.GameObject.Tests.Services.ItemGenerationService.Handlers.BackPackHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ItemGenerationService.Handlers.BackPackHandlerTests::.ctor()</Name> <FileRef uid="160" /> <SequencePoints> <SequencePoint vc="0" uspid="49" ordinal="0" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="160" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="49" ec="1" el="49" bec="0" bev="0" fileid="160" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.GameObject.Tests.Services.ItemGenerationService.Handlers.BazaarMedalsHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ItemGenerationService.Handlers.BazaarMedalsHandlerTests::.ctor()</Name> <FileRef uid="161" /> <SequencePoints> <SequencePoint vc="0" uspid="45" ordinal="0" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="161" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="45" ec="1" el="45" bec="0" bev="0" fileid="161" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.GameObject.Tests.Services.ItemGenerationService.Handlers.MinilandBellHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ItemGenerationService.Handlers.MinilandBellHandlerTests::.ctor()</Name> <FileRef uid="162" /> <SequencePoints> <SequencePoint vc="0" uspid="50" ordinal="0" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="162" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="50" ec="1" el="50" bec="0" bev="0" fileid="162" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.GameObject.Tests.Services.ItemGenerationService.Handlers.SpeakerHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ItemGenerationService.Handlers.SpeakerHandlerTests::.ctor()</Name> <FileRef uid="163" /> <SequencePoints> <SequencePoint vc="0" uspid="44" ordinal="0" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="163" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="44" ec="1" el="44" bec="0" bev="0" fileid="163" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.GameObject.Tests.Services.ItemGenerationService.Handlers.SpRechargerEventHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ItemGenerationService.Handlers.SpRechargerEventHandlerTests::.ctor()</Name> <FileRef uid="164" /> <SequencePoints> <SequencePoint vc="0" uspid="51" ordinal="0" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="164" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="51" ec="1" el="51" bec="0" bev="0" fileid="164" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.GameObject.Tests.Services.ItemGenerationService.Handlers.TitleHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ItemGenerationService.Handlers.TitleHandlerTests::.ctor()</Name> <FileRef uid="165" /> <SequencePoints> <SequencePoint vc="0" uspid="44" ordinal="0" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="165" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="44" ec="1" el="44" bec="0" bev="0" fileid="165" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.GameObject.Tests.Services.ItemGenerationService.Handlers.UseItemEventHandlerTestsBase</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.GameObject.Tests.Services.ItemGenerationService.Handlers.UseItemEventHandlerTestsBase::ExecuteInventoryItemInstanceEventHandlerAsync(NosCore.GameObject.Services.InventoryService.InventoryItemInstance)</Name> <FileRef uid="166" /> <SequencePoints> <SequencePoint vc="0" uspid="36" ordinal="0" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="166" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="166" /> <SequencePoint vc="0" uspid="38" ordinal="2" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="166" /> <SequencePoint vc="0" uspid="39" ordinal="3" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="166" /> <SequencePoint vc="0" uspid="40" ordinal="4" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="166" /> <SequencePoint vc="0" uspid="41" ordinal="5" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="166" /> <SequencePoint vc="0" uspid="42" ordinal="6" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="166" /> <SequencePoint vc="0" uspid="43" ordinal="7" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="166" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="36" ec="1" el="43" bec="0" bev="0" fileid="166" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ItemGenerationService.Handlers.UseItemEventHandlerTestsBase::.ctor()</Name> <FileRef uid="166" /> <SequencePoints> <SequencePoint vc="0" uspid="33" ordinal="0" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="166" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="33" ec="1" el="33" bec="0" bev="0" fileid="166" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="169" visitedSequencePoints="0" numBranchPoints="118" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="16" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="25" /> <FullName>NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="15" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::Setup()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="50" ordinal="0" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="51" ordinal="1" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="52" ordinal="2" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="53" ordinal="3" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="54" ordinal="4" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="55" ordinal="5" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="56" ordinal="6" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="57" ordinal="7" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="58" ordinal="8" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="59" ordinal="9" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="60" ordinal="10" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="61" ordinal="11" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="62" ordinal="12" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="63" ordinal="13" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="64" ordinal="14" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="50" ec="1" el="64" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::CreateItem()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="68" ordinal="0" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="69" ordinal="1" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="70" ordinal="2" sl="70" sc="1" el="70" ec="2" bec="8" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="71" ordinal="3" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="72" ordinal="4" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="70" ordinal="0" path="0" offset="48" offsetend="50" sl="70" fileid="167" /> <BranchPoint vc="0" uspid="70" ordinal="1" path="1" offset="48" offsetend="63" sl="70" fileid="167" /> <BranchPoint vc="0" uspid="70" ordinal="2" path="0" offset="81" offsetend="83" sl="70" fileid="167" /> <BranchPoint vc="0" uspid="70" ordinal="3" path="1" offset="81" offsetend="95" sl="70" fileid="167" /> <BranchPoint vc="0" uspid="70" ordinal="4" path="0" offset="128" offsetend="130" sl="70" fileid="167" /> <BranchPoint vc="0" uspid="70" ordinal="6" path="0" offset="146" offsetend="148" sl="70" fileid="167" /> <BranchPoint vc="0" uspid="70" ordinal="5" path="1" offset="128" offsetend="159" sl="70" fileid="167" /> <BranchPoint vc="0" uspid="70" ordinal="7" path="1" offset="146" offsetend="159" sl="70" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="68" ec="1" el="72" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::CreateItemAndStackIt()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="76" ordinal="0" sl="76" sc="1" el="76" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="77" ordinal="1" sl="77" sc="1" el="77" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="78" ordinal="2" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="79" ordinal="3" sl="79" sc="1" el="79" ec="2" bec="6" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="80" ordinal="4" sl="80" sc="1" el="80" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="79" ordinal="0" path="0" offset="88" offsetend="90" sl="79" fileid="167" /> <BranchPoint vc="0" uspid="79" ordinal="1" path="1" offset="88" offsetend="103" sl="79" fileid="167" /> <BranchPoint vc="0" uspid="79" ordinal="2" path="0" offset="121" offsetend="123" sl="79" fileid="167" /> <BranchPoint vc="0" uspid="79" ordinal="3" path="1" offset="121" offsetend="135" sl="79" fileid="167" /> <BranchPoint vc="0" uspid="79" ordinal="4" path="0" offset="168" offsetend="170" sl="79" fileid="167" /> <BranchPoint vc="0" uspid="79" ordinal="5" path="1" offset="168" offsetend="190" sl="79" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="76" ec="1" el="80" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="4" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="4" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::CreateItemWhenSlotMax()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="84" ordinal="0" sl="84" sc="1" el="84" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="85" ordinal="1" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="86" ordinal="2" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="87" ordinal="3" sl="87" sc="1" el="87" ec="2" bec="4" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="88" ordinal="4" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="87" ordinal="0" path="0" offset="94" offsetend="96" sl="87" fileid="167" /> <BranchPoint vc="0" uspid="87" ordinal="1" path="1" offset="94" offsetend="109" sl="87" fileid="167" /> <BranchPoint vc="0" uspid="87" ordinal="2" path="0" offset="127" offsetend="129" sl="87" fileid="167" /> <BranchPoint vc="0" uspid="87" ordinal="3" path="1" offset="127" offsetend="141" sl="87" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="84" ec="1" el="88" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="10" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::CreateItemWhenSlotFilled()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="92" ordinal="0" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="93" ordinal="1" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="94" ordinal="2" sl="94" sc="1" el="94" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="95" ordinal="3" sl="95" sc="1" el="95" ec="2" bec="10" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="96" ordinal="4" sl="96" sc="1" el="96" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="95" ordinal="0" path="0" offset="96" offsetend="98" sl="95" fileid="167" /> <BranchPoint vc="0" uspid="95" ordinal="1" path="1" offset="96" offsetend="111" sl="95" fileid="167" /> <BranchPoint vc="0" uspid="95" ordinal="2" path="0" offset="129" offsetend="131" sl="95" fileid="167" /> <BranchPoint vc="0" uspid="95" ordinal="3" path="1" offset="129" offsetend="143" sl="95" fileid="167" /> <BranchPoint vc="0" uspid="95" ordinal="4" path="0" offset="180" offsetend="182" sl="95" fileid="167" /> <BranchPoint vc="0" uspid="95" ordinal="6" path="0" offset="194" offsetend="196" sl="95" fileid="167" /> <BranchPoint vc="0" uspid="95" ordinal="7" path="1" offset="194" offsetend="209" sl="95" fileid="167" /> <BranchPoint vc="0" uspid="95" ordinal="8" path="0" offset="227" offsetend="229" sl="95" fileid="167" /> <BranchPoint vc="0" uspid="95" ordinal="9" path="1" offset="227" offsetend="241" sl="95" fileid="167" /> <BranchPoint vc="0" uspid="95" ordinal="5" path="1" offset="180" offsetend="277" sl="95" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="92" ec="1" el="96" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="4" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="10" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="4" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::CreateItemAndFillMultiSlot()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="100" ordinal="0" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="101" ordinal="1" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="102" ordinal="2" sl="102" sc="1" el="102" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="103" ordinal="3" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="104" ordinal="4" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="105" ordinal="5" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="106" ordinal="6" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="107" ordinal="7" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="108" ordinal="8" sl="108" sc="1" el="108" ec="2" bec="4" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="109" ordinal="9" sl="109" sc="1" el="109" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="108" ordinal="0" path="0" offset="233" offsetend="235" sl="108" fileid="167" /> <BranchPoint vc="0" uspid="108" ordinal="2" path="0" offset="236" offsetend="238" sl="108" fileid="167" /> <BranchPoint vc="0" uspid="108" ordinal="3" path="1" offset="236" offsetend="241" sl="108" fileid="167" /> <BranchPoint vc="0" uspid="108" ordinal="1" path="1" offset="233" offsetend="252" sl="108" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="5" offset="5" sc="0" sl="100" ec="1" el="109" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="4" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="10" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="4" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::CreateMoreItemThanInventoryPlace()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="113" ordinal="0" sl="113" sc="1" el="113" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="114" ordinal="1" sl="114" sc="1" el="114" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="115" ordinal="2" sl="115" sc="1" el="115" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="116" ordinal="3" sl="116" sc="1" el="116" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="117" ordinal="4" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="118" ordinal="5" sl="118" sc="1" el="118" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="119" ordinal="6" sl="119" sc="1" el="119" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="120" ordinal="7" sl="120" sc="1" el="120" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="121" ordinal="8" sl="121" sc="1" el="121" ec="2" bec="4" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="122" ordinal="9" sl="122" sc="1" el="122" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="121" ordinal="0" path="0" offset="243" offsetend="245" sl="121" fileid="167" /> <BranchPoint vc="0" uspid="121" ordinal="2" path="0" offset="246" offsetend="248" sl="121" fileid="167" /> <BranchPoint vc="0" uspid="121" ordinal="3" path="1" offset="246" offsetend="251" sl="121" fileid="167" /> <BranchPoint vc="0" uspid="121" ordinal="1" path="1" offset="243" offsetend="262" sl="121" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="6" offset="6" sc="0" sl="113" ec="1" el="122" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::CreateStackOnASpecificItem()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="126" ordinal="0" sl="126" sc="1" el="126" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="127" ordinal="1" sl="127" sc="1" el="127" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="128" ordinal="2" sl="128" sc="1" el="128" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="129" ordinal="3" sl="129" sc="1" el="129" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="130" ordinal="4" sl="130" sc="1" el="130" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="131" ordinal="5" sl="131" sc="1" el="131" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="7" offset="7" sc="0" sl="126" ec="1" el="131" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="4" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="4" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::CreateDoesntStackOnWrongItem()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="135" ordinal="0" sl="135" sc="1" el="135" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="136" ordinal="1" sl="136" sc="1" el="136" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="137" ordinal="2" sl="137" sc="1" el="137" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="138" ordinal="3" sl="138" sc="1" el="138" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="139" ordinal="4" sl="139" sc="1" el="139" ec="2" bec="4" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="140" ordinal="5" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="139" ordinal="0" path="0" offset="171" offsetend="173" sl="139" fileid="167" /> <BranchPoint vc="0" uspid="139" ordinal="1" path="1" offset="171" offsetend="185" sl="139" fileid="167" /> <BranchPoint vc="0" uspid="139" ordinal="2" path="0" offset="203" offsetend="205" sl="139" fileid="167" /> <BranchPoint vc="0" uspid="139" ordinal="3" path="1" offset="203" offsetend="217" sl="139" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="8" offset="8" sc="0" sl="135" ec="1" el="140" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="10" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::LoadItemOnAnNotEmptySlot()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="144" ordinal="0" sl="144" sc="1" el="144" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="145" ordinal="1" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="146" ordinal="2" sl="146" sc="1" el="146" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="147" ordinal="3" sl="147" sc="1" el="147" ec="2" bec="10" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="148" ordinal="4" sl="148" sc="1" el="148" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="147" ordinal="0" path="0" offset="62" offsetend="64" sl="147" fileid="167" /> <BranchPoint vc="0" uspid="147" ordinal="1" path="1" offset="62" offsetend="77" sl="147" fileid="167" /> <BranchPoint vc="0" uspid="147" ordinal="2" path="0" offset="95" offsetend="97" sl="147" fileid="167" /> <BranchPoint vc="0" uspid="147" ordinal="3" path="1" offset="95" offsetend="109" sl="147" fileid="167" /> <BranchPoint vc="0" uspid="147" ordinal="4" path="0" offset="146" offsetend="148" sl="147" fileid="167" /> <BranchPoint vc="0" uspid="147" ordinal="6" path="0" offset="155" offsetend="157" sl="147" fileid="167" /> <BranchPoint vc="0" uspid="147" ordinal="7" path="1" offset="155" offsetend="170" sl="147" fileid="167" /> <BranchPoint vc="0" uspid="147" ordinal="8" path="0" offset="188" offsetend="190" sl="147" fileid="167" /> <BranchPoint vc="0" uspid="147" ordinal="9" path="1" offset="188" offsetend="202" sl="147" fileid="167" /> <BranchPoint vc="0" uspid="147" ordinal="5" path="1" offset="146" offsetend="241" sl="147" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="9" offset="9" sc="0" sl="144" ec="1" el="148" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::LoadAnNonExistingItem()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="152" ordinal="0" sl="152" sc="1" el="152" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="153" ordinal="1" sl="153" sc="1" el="153" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="154" ordinal="2" sl="154" sc="1" el="154" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="155" ordinal="3" sl="155" sc="1" el="155" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="156" ordinal="4" sl="156" sc="1" el="156" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="10" offset="10" sc="0" sl="152" ec="1" el="156" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::DeleteFromTypeAndSlot()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="160" ordinal="0" sl="160" sc="1" el="160" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="161" ordinal="1" sl="161" sc="1" el="161" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="162" ordinal="2" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="163" ordinal="3" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="164" ordinal="4" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="165" ordinal="5" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="166" ordinal="6" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="167" ordinal="7" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="11" offset="11" sc="0" sl="160" ec="1" el="167" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::Delete()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="171" ordinal="0" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="172" ordinal="1" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="173" ordinal="2" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="174" ordinal="3" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="175" ordinal="4" sl="175" sc="1" el="175" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="176" ordinal="5" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="177" ordinal="6" sl="177" sc="1" el="177" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="178" ordinal="7" sl="178" sc="1" el="178" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="12" offset="12" sc="0" sl="171" ec="1" el="178" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::MoveFullSlot()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="182" ordinal="0" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="183" ordinal="1" sl="183" sc="1" el="183" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="184" ordinal="2" sl="184" sc="1" el="184" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="185" ordinal="3" sl="185" sc="1" el="185" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="186" ordinal="4" sl="186" sc="1" el="186" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="187" ordinal="5" sl="187" sc="1" el="187" ec="2" bec="8" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="188" ordinal="6" sl="188" sc="1" el="188" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="187" ordinal="0" path="0" offset="91" offsetend="93" sl="187" fileid="167" /> <BranchPoint vc="0" uspid="187" ordinal="1" path="1" offset="91" offsetend="105" sl="187" fileid="167" /> <BranchPoint vc="0" uspid="187" ordinal="2" path="0" offset="112" offsetend="114" sl="187" fileid="167" /> <BranchPoint vc="0" uspid="187" ordinal="3" path="1" offset="112" offsetend="127" sl="187" fileid="167" /> <BranchPoint vc="0" uspid="187" ordinal="4" path="0" offset="146" offsetend="148" sl="187" fileid="167" /> <BranchPoint vc="0" uspid="187" ordinal="5" path="1" offset="146" offsetend="160" sl="187" fileid="167" /> <BranchPoint vc="0" uspid="187" ordinal="6" path="0" offset="199" offsetend="201" sl="187" fileid="167" /> <BranchPoint vc="0" uspid="187" ordinal="7" path="1" offset="199" offsetend="212" sl="187" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="13" offset="13" sc="0" sl="182" ec="1" el="188" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="16" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="16" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="16" minCyclomaticComplexity="16" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::MoveHalfSlot()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="192" ordinal="0" sl="192" sc="1" el="192" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="193" ordinal="1" sl="193" sc="1" el="193" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="194" ordinal="2" sl="194" sc="1" el="194" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="195" ordinal="3" sl="195" sc="1" el="195" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="196" ordinal="4" sl="196" sc="1" el="196" ec="2" bec="8" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="197" ordinal="5" sl="197" sc="1" el="197" ec="2" bec="8" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="198" ordinal="6" sl="198" sc="1" el="198" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="196" ordinal="0" path="0" offset="81" offsetend="83" sl="196" fileid="167" /> <BranchPoint vc="0" uspid="196" ordinal="1" path="1" offset="81" offsetend="95" sl="196" fileid="167" /> <BranchPoint vc="0" uspid="196" ordinal="2" path="0" offset="102" offsetend="104" sl="196" fileid="167" /> <BranchPoint vc="0" uspid="196" ordinal="3" path="1" offset="102" offsetend="117" sl="196" fileid="167" /> <BranchPoint vc="0" uspid="196" ordinal="4" path="0" offset="136" offsetend="138" sl="196" fileid="167" /> <BranchPoint vc="0" uspid="196" ordinal="5" path="1" offset="136" offsetend="150" sl="196" fileid="167" /> <BranchPoint vc="0" uspid="196" ordinal="6" path="0" offset="189" offsetend="191" sl="196" fileid="167" /> <BranchPoint vc="0" uspid="196" ordinal="7" path="1" offset="189" offsetend="202" sl="196" fileid="167" /> <BranchPoint vc="0" uspid="197" ordinal="8" path="0" offset="210" offsetend="212" sl="197" fileid="167" /> <BranchPoint vc="0" uspid="197" ordinal="9" path="1" offset="210" offsetend="224" sl="197" fileid="167" /> <BranchPoint vc="0" uspid="197" ordinal="10" path="0" offset="231" offsetend="233" sl="197" fileid="167" /> <BranchPoint vc="0" uspid="197" ordinal="11" path="1" offset="231" offsetend="246" sl="197" fileid="167" /> <BranchPoint vc="0" uspid="197" ordinal="12" path="0" offset="265" offsetend="267" sl="197" fileid="167" /> <BranchPoint vc="0" uspid="197" ordinal="13" path="1" offset="265" offsetend="279" sl="197" fileid="167" /> <BranchPoint vc="0" uspid="197" ordinal="14" path="0" offset="318" offsetend="320" sl="197" fileid="167" /> <BranchPoint vc="0" uspid="197" ordinal="15" path="1" offset="318" offsetend="331" sl="197" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="14" offset="14" sc="0" sl="192" ec="1" el="198" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::MoveHalfSlotAndMergeThem()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="202" ordinal="0" sl="202" sc="1" el="202" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="203" ordinal="1" sl="203" sc="1" el="203" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="204" ordinal="2" sl="204" sc="1" el="204" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="205" ordinal="3" sl="205" sc="1" el="205" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="206" ordinal="4" sl="206" sc="1" el="206" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="207" ordinal="5" sl="207" sc="1" el="207" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="208" ordinal="6" sl="208" sc="1" el="208" ec="2" bec="8" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="209" ordinal="7" sl="209" sc="1" el="209" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="208" ordinal="0" path="0" offset="120" offsetend="122" sl="208" fileid="167" /> <BranchPoint vc="0" uspid="208" ordinal="1" path="1" offset="120" offsetend="134" sl="208" fileid="167" /> <BranchPoint vc="0" uspid="208" ordinal="2" path="0" offset="141" offsetend="143" sl="208" fileid="167" /> <BranchPoint vc="0" uspid="208" ordinal="3" path="1" offset="141" offsetend="156" sl="208" fileid="167" /> <BranchPoint vc="0" uspid="208" ordinal="4" path="0" offset="175" offsetend="177" sl="208" fileid="167" /> <BranchPoint vc="0" uspid="208" ordinal="5" path="1" offset="175" offsetend="189" sl="208" fileid="167" /> <BranchPoint vc="0" uspid="208" ordinal="6" path="0" offset="229" offsetend="231" sl="208" fileid="167" /> <BranchPoint vc="0" uspid="208" ordinal="7" path="1" offset="229" offsetend="242" sl="208" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="15" offset="15" sc="0" sl="202" ec="1" el="209" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="16" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="16" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="16" minCyclomaticComplexity="16" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::MoveHalfSlotAndMergeThemWithOverflow()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="213" ordinal="0" sl="213" sc="1" el="213" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="214" ordinal="1" sl="214" sc="1" el="214" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="215" ordinal="2" sl="215" sc="1" el="215" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="216" ordinal="3" sl="216" sc="1" el="216" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="217" ordinal="4" sl="217" sc="1" el="217" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="218" ordinal="5" sl="218" sc="1" el="218" ec="2" bec="8" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="219" ordinal="6" sl="219" sc="1" el="219" ec="2" bec="8" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="220" ordinal="7" sl="220" sc="1" el="220" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="218" ordinal="0" path="0" offset="121" offsetend="123" sl="218" fileid="167" /> <BranchPoint vc="0" uspid="218" ordinal="1" path="1" offset="121" offsetend="135" sl="218" fileid="167" /> <BranchPoint vc="0" uspid="218" ordinal="2" path="0" offset="142" offsetend="144" sl="218" fileid="167" /> <BranchPoint vc="0" uspid="218" ordinal="3" path="1" offset="142" offsetend="157" sl="218" fileid="167" /> <BranchPoint vc="0" uspid="218" ordinal="4" path="0" offset="176" offsetend="178" sl="218" fileid="167" /> <BranchPoint vc="0" uspid="218" ordinal="5" path="1" offset="176" offsetend="190" sl="218" fileid="167" /> <BranchPoint vc="0" uspid="218" ordinal="6" path="0" offset="229" offsetend="231" sl="218" fileid="167" /> <BranchPoint vc="0" uspid="218" ordinal="7" path="1" offset="229" offsetend="242" sl="218" fileid="167" /> <BranchPoint vc="0" uspid="219" ordinal="8" path="0" offset="250" offsetend="252" sl="219" fileid="167" /> <BranchPoint vc="0" uspid="219" ordinal="9" path="1" offset="250" offsetend="264" sl="219" fileid="167" /> <BranchPoint vc="0" uspid="219" ordinal="10" path="0" offset="271" offsetend="273" sl="219" fileid="167" /> <BranchPoint vc="0" uspid="219" ordinal="11" path="1" offset="271" offsetend="286" sl="219" fileid="167" /> <BranchPoint vc="0" uspid="219" ordinal="12" path="0" offset="305" offsetend="307" sl="219" fileid="167" /> <BranchPoint vc="0" uspid="219" ordinal="13" path="1" offset="305" offsetend="319" sl="219" fileid="167" /> <BranchPoint vc="0" uspid="219" ordinal="14" path="0" offset="358" offsetend="360" sl="219" fileid="167" /> <BranchPoint vc="0" uspid="219" ordinal="15" path="1" offset="358" offsetend="371" sl="219" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="16" offset="16" sc="0" sl="213" ec="1" el="220" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::MoveFashionToFashionPocket()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="228" ordinal="0" sl="228" sc="1" el="228" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="229" ordinal="1" sl="229" sc="1" el="229" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="230" ordinal="2" sl="230" sc="1" el="230" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="231" ordinal="3" sl="231" sc="1" el="231" ec="2" bec="2" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="232" ordinal="4" sl="232" sc="1" el="232" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="231" ordinal="0" path="0" offset="67" offsetend="69" sl="231" fileid="167" /> <BranchPoint vc="0" uspid="231" ordinal="1" path="1" offset="67" offsetend="72" sl="231" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="17" offset="17" sc="0" sl="228" ec="1" el="232" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::MoveFashionToSpecialistPocket()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="236" ordinal="0" sl="236" sc="1" el="236" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="237" ordinal="1" sl="237" sc="1" el="237" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="238" ordinal="2" sl="238" sc="1" el="238" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="239" ordinal="3" sl="239" sc="1" el="239" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="240" ordinal="4" sl="240" sc="1" el="240" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="18" offset="18" sc="0" sl="236" ec="1" el="240" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::MoveSpecialistToFashionPocket()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="244" ordinal="0" sl="244" sc="1" el="244" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="245" ordinal="1" sl="245" sc="1" el="245" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="246" ordinal="2" sl="246" sc="1" el="246" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="247" ordinal="3" sl="247" sc="1" el="247" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="248" ordinal="4" sl="248" sc="1" el="248" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="249" ordinal="5" sl="249" sc="1" el="249" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="19" offset="19" sc="0" sl="244" ec="1" el="249" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::MoveSpecialistToSpecialistPocket()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="253" ordinal="0" sl="253" sc="1" el="253" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="254" ordinal="1" sl="254" sc="1" el="254" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="255" ordinal="2" sl="255" sc="1" el="255" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="256" ordinal="3" sl="256" sc="1" el="256" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="257" ordinal="4" sl="257" sc="1" el="257" ec="2" bec="2" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="258" ordinal="5" sl="258" sc="1" el="258" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="257" ordinal="0" path="0" offset="67" offsetend="69" sl="257" fileid="167" /> <BranchPoint vc="0" uspid="257" ordinal="1" path="1" offset="67" offsetend="72" sl="257" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="20" offset="20" sc="0" sl="253" ec="1" el="258" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::MoveWeaponToPocket()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="262" ordinal="0" sl="262" sc="1" el="262" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="263" ordinal="1" sl="263" sc="1" el="263" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="264" ordinal="2" sl="264" sc="1" el="264" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="265" ordinal="3" sl="265" sc="1" el="265" ec="2" bec="2" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="266" ordinal="4" sl="266" sc="1" el="266" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="265" ordinal="0" path="0" offset="63" offsetend="65" sl="265" fileid="167" /> <BranchPoint vc="0" uspid="265" ordinal="1" path="1" offset="63" offsetend="68" sl="265" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="21" offset="21" sc="0" sl="262" ec="1" el="266" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="4" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="4" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::SwapWithEmpty()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="270" ordinal="0" sl="270" sc="1" el="270" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="271" ordinal="1" sl="271" sc="1" el="271" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="272" ordinal="2" sl="272" sc="1" el="272" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="273" ordinal="3" sl="273" sc="1" el="273" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="274" ordinal="4" sl="274" sc="1" el="274" ec="2" bec="4" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="275" ordinal="5" sl="275" sc="1" el="275" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="276" ordinal="6" sl="276" sc="1" el="276" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="274" ordinal="0" path="0" offset="70" offsetend="72" sl="274" fileid="167" /> <BranchPoint vc="0" uspid="274" ordinal="2" path="0" offset="79" offsetend="81" sl="274" fileid="167" /> <BranchPoint vc="0" uspid="274" ordinal="1" path="1" offset="70" offsetend="99" sl="274" fileid="167" /> <BranchPoint vc="0" uspid="274" ordinal="3" path="1" offset="79" offsetend="99" sl="274" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="22" offset="22" sc="0" sl="270" ec="1" el="276" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="10" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::SwapWithNotEmpty()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="280" ordinal="0" sl="280" sc="1" el="280" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="281" ordinal="1" sl="281" sc="1" el="281" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="282" ordinal="2" sl="282" sc="1" el="282" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="283" ordinal="3" sl="283" sc="1" el="283" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="284" ordinal="4" sl="284" sc="1" el="284" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="285" ordinal="5" sl="285" sc="1" el="285" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="286" ordinal="6" sl="286" sc="1" el="286" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="288" ordinal="7" sl="288" sc="1" el="288" ec="2" bec="10" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="289" ordinal="8" sl="289" sc="1" el="289" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="290" ordinal="9" sl="290" sc="1" el="290" ec="2" bec="0" bev="0" fileid="167" /> <SequencePoint vc="0" uspid="291" ordinal="10" sl="291" sc="1" el="291" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="288" ordinal="0" path="0" offset="138" offsetend="140" sl="288" fileid="167" /> <BranchPoint vc="0" uspid="288" ordinal="2" path="0" offset="146" offsetend="148" sl="288" fileid="167" /> <BranchPoint vc="0" uspid="288" ordinal="4" path="0" offset="155" offsetend="157" sl="288" fileid="167" /> <BranchPoint vc="0" uspid="288" ordinal="6" path="0" offset="158" offsetend="160" sl="288" fileid="167" /> <BranchPoint vc="0" uspid="288" ordinal="8" path="0" offset="167" offsetend="169" sl="288" fileid="167" /> <BranchPoint vc="0" uspid="288" ordinal="1" path="1" offset="138" offsetend="180" sl="288" fileid="167" /> <BranchPoint vc="0" uspid="288" ordinal="3" path="1" offset="146" offsetend="180" sl="288" fileid="167" /> <BranchPoint vc="0" uspid="288" ordinal="5" path="1" offset="155" offsetend="180" sl="288" fileid="167" /> <BranchPoint vc="0" uspid="288" ordinal="7" path="1" offset="158" offsetend="180" sl="288" fileid="167" /> <BranchPoint vc="0" uspid="288" ordinal="9" path="1" offset="167" offsetend="180" sl="288" fileid="167" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="23" offset="23" sc="0" sl="280" ec="1" el="291" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.InventoryService.InventoryServiceTests::.cctor()</Name> <FileRef uid="167" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="167" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="24" offset="24" sc="0" sl="43" ec="1" el="43" bec="0" bev="0" fileid="167" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.GameObject.Tests.Services.GuriRunnerService.Handlers.GuriEventHandlerTestsBase</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.GameObject.Tests.Services.GuriRunnerService.Handlers.GuriEventHandlerTestsBase::ExecuteGuriEventHandlerAsync(NosCore.Packets.ClientPackets.UI.GuriPacket)</Name> <FileRef uid="168" /> <SequencePoints> <SequencePoint vc="0" uspid="34" ordinal="0" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="168" /> <SequencePoint vc="0" uspid="35" ordinal="1" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="168" /> <SequencePoint vc="0" uspid="36" ordinal="2" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="168" /> <SequencePoint vc="0" uspid="37" ordinal="3" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="168" /> <SequencePoint vc="0" uspid="38" ordinal="4" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="168" /> <SequencePoint vc="0" uspid="39" ordinal="5" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="168" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="34" ec="1" el="39" bec="0" bev="0" fileid="168" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.GuriRunnerService.Handlers.GuriEventHandlerTestsBase::.ctor()</Name> <FileRef uid="168" /> <SequencePoints> <SequencePoint vc="0" uspid="31" ordinal="0" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="168" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="31" ec="1" el="31" bec="0" bev="0" fileid="168" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.GameObject.Tests.Services.GuriRunnerService.Handlers.TitleGuriHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.GuriRunnerService.Handlers.TitleGuriHandlerTests::.ctor()</Name> <FileRef uid="169" /> <SequencePoints> <SequencePoint vc="0" uspid="48" ordinal="0" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="169" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="48" ec="1" el="48" bec="0" bev="0" fileid="169" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="89" visitedSequencePoints="0" numBranchPoints="12" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="10" /> <FullName>NosCore.GameObject.Tests.Services.ExchangeService.ExchangeServiceTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="16" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ExchangeService.ExchangeServiceTests::Setup()</Name> <FileRef uid="170" /> <SequencePoints> <SequencePoint vc="0" uspid="52" ordinal="0" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="53" ordinal="1" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="54" ordinal="2" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="55" ordinal="3" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="56" ordinal="4" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="57" ordinal="5" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="58" ordinal="6" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="59" ordinal="7" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="61" ordinal="8" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="62" ordinal="9" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="63" ordinal="10" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="64" ordinal="11" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="65" ordinal="12" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="67" ordinal="13" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="68" ordinal="14" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="69" ordinal="15" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="170" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="52" ec="1" el="69" bec="0" bev="0" fileid="170" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ExchangeService.ExchangeServiceTests::Test_Set_Gold()</Name> <FileRef uid="170" /> <SequencePoints> <SequencePoint vc="0" uspid="73" ordinal="0" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="74" ordinal="1" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="75" ordinal="2" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="76" ordinal="3" sl="76" sc="1" el="76" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="78" ordinal="4" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="79" ordinal="5" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="81" ordinal="6" sl="81" sc="1" el="81" ec="2" bec="6" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="82" ordinal="7" sl="82" sc="1" el="82" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="83" ordinal="8" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="170" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="81" ordinal="0" path="0" offset="109" offsetend="111" sl="81" fileid="170" /> <BranchPoint vc="0" uspid="81" ordinal="2" path="0" offset="123" offsetend="125" sl="81" fileid="170" /> <BranchPoint vc="0" uspid="81" ordinal="4" path="0" offset="137" offsetend="139" sl="81" fileid="170" /> <BranchPoint vc="0" uspid="81" ordinal="1" path="1" offset="109" offsetend="155" sl="81" fileid="170" /> <BranchPoint vc="0" uspid="81" ordinal="3" path="1" offset="123" offsetend="155" sl="81" fileid="170" /> <BranchPoint vc="0" uspid="81" ordinal="5" path="1" offset="137" offsetend="155" sl="81" fileid="170" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="73" ec="1" el="83" bec="0" bev="0" fileid="170" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ExchangeService.ExchangeServiceTests::Test_Confirm_Exchange()</Name> <FileRef uid="170" /> <SequencePoints> <SequencePoint vc="0" uspid="87" ordinal="0" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="88" ordinal="1" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="89" ordinal="2" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="90" ordinal="3" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="92" ordinal="4" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="93" ordinal="5" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="95" ordinal="6" sl="95" sc="1" el="95" ec="2" bec="2" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="96" ordinal="7" sl="96" sc="1" el="96" ec="2" bec="0" bev="0" fileid="170" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="95" ordinal="0" path="0" offset="79" offsetend="81" sl="95" fileid="170" /> <BranchPoint vc="0" uspid="95" ordinal="1" path="1" offset="79" offsetend="89" sl="95" fileid="170" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="87" ec="1" el="96" bec="0" bev="0" fileid="170" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="15" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ExchangeService.ExchangeServiceTests::Test_Add_Items()</Name> <FileRef uid="170" /> <SequencePoints> <SequencePoint vc="0" uspid="100" ordinal="0" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="101" ordinal="1" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="103" ordinal="2" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="104" ordinal="3" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="105" ordinal="4" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="106" ordinal="5" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="107" ordinal="6" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="108" ordinal="7" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="109" ordinal="8" sl="109" sc="1" el="109" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="110" ordinal="9" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="112" ordinal="10" sl="112" sc="1" el="112" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="114" ordinal="11" sl="114" sc="1" el="114" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="116" ordinal="12" sl="116" sc="1" el="116" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="117" ordinal="13" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="118" ordinal="14" sl="118" sc="1" el="118" ec="2" bec="0" bev="0" fileid="170" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="100" ec="1" el="118" bec="0" bev="0" fileid="170" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ExchangeService.ExchangeServiceTests::Test_Check_Exchange()</Name> <FileRef uid="170" /> <SequencePoints> <SequencePoint vc="0" uspid="122" ordinal="0" sl="122" sc="1" el="122" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="123" ordinal="1" sl="123" sc="1" el="123" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="124" ordinal="2" sl="124" sc="1" el="124" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="125" ordinal="3" sl="125" sc="1" el="125" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="127" ordinal="4" sl="127" sc="1" el="127" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="128" ordinal="5" sl="128" sc="1" el="128" ec="2" bec="0" bev="0" fileid="170" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="122" ec="1" el="128" bec="0" bev="0" fileid="170" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ExchangeService.ExchangeServiceTests::Test_Close_Exchange()</Name> <FileRef uid="170" /> <SequencePoints> <SequencePoint vc="0" uspid="132" ordinal="0" sl="132" sc="1" el="132" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="133" ordinal="1" sl="133" sc="1" el="133" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="135" ordinal="2" sl="135" sc="1" el="135" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="137" ordinal="3" sl="137" sc="1" el="137" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="138" ordinal="4" sl="138" sc="1" el="138" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="139" ordinal="5" sl="139" sc="1" el="139" ec="2" bec="2" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="140" ordinal="6" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="170" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="139" ordinal="0" path="0" offset="55" offsetend="57" sl="139" fileid="170" /> <BranchPoint vc="0" uspid="139" ordinal="1" path="1" offset="55" offsetend="68" sl="139" fileid="170" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="5" offset="5" sc="0" sl="132" ec="1" el="140" bec="0" bev="0" fileid="170" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ExchangeService.ExchangeServiceTests::Test_Open_Exchange()</Name> <FileRef uid="170" /> <SequencePoints> <SequencePoint vc="0" uspid="144" ordinal="0" sl="144" sc="1" el="144" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="145" ordinal="1" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="146" ordinal="2" sl="146" sc="1" el="146" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="147" ordinal="3" sl="147" sc="1" el="147" ec="2" bec="0" bev="0" fileid="170" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="6" offset="6" sc="0" sl="144" ec="1" el="147" bec="0" bev="0" fileid="170" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ExchangeService.ExchangeServiceTests::Test_Open_Second_Exchange()</Name> <FileRef uid="170" /> <SequencePoints> <SequencePoint vc="0" uspid="151" ordinal="0" sl="151" sc="1" el="151" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="152" ordinal="1" sl="152" sc="1" el="152" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="153" ordinal="2" sl="153" sc="1" el="153" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="155" ordinal="3" sl="155" sc="1" el="155" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="156" ordinal="4" sl="156" sc="1" el="156" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="157" ordinal="5" sl="157" sc="1" el="157" ec="2" bec="0" bev="0" fileid="170" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="7" offset="7" sc="0" sl="151" ec="1" el="157" bec="0" bev="0" fileid="170" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="17" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ExchangeService.ExchangeServiceTests::Test_Process_Exchange()</Name> <FileRef uid="170" /> <SequencePoints> <SequencePoint vc="0" uspid="161" ordinal="0" sl="161" sc="1" el="161" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="162" ordinal="1" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="163" ordinal="2" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="164" ordinal="3" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="165" ordinal="4" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="166" ordinal="5" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="167" ordinal="6" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="168" ordinal="7" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="169" ordinal="8" sl="169" sc="1" el="169" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="170" ordinal="9" sl="170" sc="1" el="170" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="171" ordinal="10" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="173" ordinal="11" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="174" ordinal="12" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="175" ordinal="13" sl="175" sc="1" el="175" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="176" ordinal="14" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="177" ordinal="15" sl="177" sc="1" el="177" ec="2" bec="2" bev="0" fileid="170" /> <SequencePoint vc="0" uspid="178" ordinal="16" sl="178" sc="1" el="178" ec="2" bec="0" bev="0" fileid="170" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="177" ordinal="0" path="0" offset="287" offsetend="289" sl="177" fileid="170" /> <BranchPoint vc="0" uspid="177" ordinal="1" path="1" offset="287" offsetend="332" sl="177" fileid="170" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="8" offset="8" sc="0" sl="161" ec="1" el="178" bec="0" bev="0" fileid="170" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.GameObject.Tests.Services.ExchangeService.ExchangeServiceTests::.cctor()</Name> <FileRef uid="170" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="170" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="9" offset="9" sc="0" sl="43" ec="1" el="43" bec="0" bev="0" fileid="170" xmlns:p8="xsi" /> </Method> </Methods> </Class> </Classes> </Module> <Module hash="5C16DE04-773D-4E2D-8194-0AA918C0DD44"> <ModulePath>NosCore.LoginServer.dll</ModulePath> <ModuleTime>2020-12-29T09:41:25</ModuleTime> <ModuleName>NosCore.LoginServer</ModuleName> <Files> <File uid="171" fullPath="C:\dev\NosCore\src\NosCore.LoginServer\LoginServer.cs" /> <File uid="172" fullPath="C:\dev\NosCore\src\NosCore.LoginServer\LoginServerBootstrap.cs" /> </Files> <Classes> <Class> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.LoginServer.LoginServer</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.LoginServer.LoginServer::.ctor(Microsoft.Extensions.Options.IOptions`1<NosCore.Core.Configuration.LoginConfiguration>,NosCore.NetworkManager,Serilog.ILogger,NosCore.Core.HttpClients.ChannelHttpClients.IChannelHub,NosCore.Database.NosCoreContext)</Name> <FileRef uid="171" /> <SequencePoints> <SequencePoint vc="0" uspid="45" ordinal="0" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="171" /> <SequencePoint vc="0" uspid="46" ordinal="1" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="171" /> <SequencePoint vc="0" uspid="47" ordinal="2" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="171" /> <SequencePoint vc="0" uspid="48" ordinal="3" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="171" /> <SequencePoint vc="0" uspid="49" ordinal="4" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="171" /> <SequencePoint vc="0" uspid="50" ordinal="5" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="171" /> <SequencePoint vc="0" uspid="51" ordinal="6" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="171" /> <SequencePoint vc="0" uspid="52" ordinal="7" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="171" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="45" ec="1" el="52" bec="0" bev="0" fileid="171" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="92" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.LoginServer.LoginServerBootstrap</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.LoginServer.LoginServerBootstrap::InitializeConfiguration(System.String[])</Name> <FileRef uid="172" /> <SequencePoints> <SequencePoint vc="0" uspid="79" ordinal="0" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="80" ordinal="1" sl="80" sc="1" el="80" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="81" ordinal="2" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="83" ordinal="3" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="84" ordinal="4" sl="84" sc="1" el="84" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="85" ordinal="5" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="86" ordinal="6" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="87" ordinal="7" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="172" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="79" ec="1" el="87" bec="0" bev="0" fileid="172" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="48" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.LoginServer.LoginServerBootstrap::InitializeContainer(Autofac.ContainerBuilder)</Name> <FileRef uid="172" /> <SequencePoints> <SequencePoint vc="0" uspid="90" ordinal="0" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="91" ordinal="1" sl="91" sc="1" el="91" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="92" ordinal="2" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="93" ordinal="3" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="94" ordinal="4" sl="94" sc="1" el="94" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="95" ordinal="5" sl="95" sc="1" el="95" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="96" ordinal="6" sl="96" sc="1" el="96" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="97" ordinal="7" sl="97" sc="1" el="97" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="99" ordinal="8" sl="99" sc="1" el="99" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="100" ordinal="9" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="101" ordinal="10" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="102" ordinal="11" sl="102" sc="1" el="102" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="103" ordinal="12" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="104" ordinal="13" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="105" ordinal="14" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="106" ordinal="15" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="107" ordinal="16" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="109" ordinal="17" sl="109" sc="1" el="109" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="110" ordinal="18" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="111" ordinal="19" sl="111" sc="1" el="111" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="112" ordinal="20" sl="112" sc="1" el="112" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="113" ordinal="21" sl="113" sc="1" el="113" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="114" ordinal="22" sl="114" sc="1" el="114" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="115" ordinal="23" sl="115" sc="1" el="115" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="116" ordinal="24" sl="116" sc="1" el="116" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="117" ordinal="25" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="118" ordinal="26" sl="118" sc="1" el="118" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="119" ordinal="27" sl="119" sc="1" el="119" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="120" ordinal="28" sl="120" sc="1" el="120" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="121" ordinal="29" sl="121" sc="1" el="121" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="122" ordinal="30" sl="122" sc="1" el="122" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="123" ordinal="31" sl="123" sc="1" el="123" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="124" ordinal="32" sl="124" sc="1" el="124" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="125" ordinal="33" sl="125" sc="1" el="125" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="126" ordinal="34" sl="126" sc="1" el="126" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="128" ordinal="35" sl="128" sc="1" el="128" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="129" ordinal="36" sl="129" sc="1" el="129" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="130" ordinal="37" sl="130" sc="1" el="130" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="131" ordinal="38" sl="131" sc="1" el="131" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="133" ordinal="39" sl="133" sc="1" el="133" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="134" ordinal="40" sl="134" sc="1" el="134" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="135" ordinal="41" sl="135" sc="1" el="135" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="136" ordinal="42" sl="136" sc="1" el="136" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="137" ordinal="43" sl="137" sc="1" el="137" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="138" ordinal="44" sl="138" sc="1" el="138" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="139" ordinal="45" sl="139" sc="1" el="139" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="140" ordinal="46" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="141" ordinal="47" sl="141" sc="1" el="141" ec="2" bec="0" bev="0" fileid="172" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="90" ec="1" el="141" bec="0" bev="0" fileid="172" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="36" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>Microsoft.Extensions.Hosting.IHost NosCore.LoginServer.LoginServerBootstrap::BuildHost(System.String[])</Name> <FileRef uid="172" /> <SequencePoints> <SequencePoint vc="0" uspid="156" ordinal="0" sl="156" sc="1" el="156" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="157" ordinal="1" sl="157" sc="1" el="157" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="158" ordinal="2" sl="158" sc="1" el="158" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="159" ordinal="3" sl="159" sc="1" el="159" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="160" ordinal="4" sl="160" sc="1" el="160" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="161" ordinal="5" sl="161" sc="1" el="161" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="162" ordinal="6" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="163" ordinal="7" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="164" ordinal="8" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="165" ordinal="9" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="166" ordinal="10" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="167" ordinal="11" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="168" ordinal="12" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="169" ordinal="13" sl="169" sc="1" el="169" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="170" ordinal="14" sl="170" sc="1" el="170" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="171" ordinal="15" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="172" ordinal="16" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="173" ordinal="17" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="174" ordinal="18" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="175" ordinal="19" sl="175" sc="1" el="175" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="176" ordinal="20" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="177" ordinal="21" sl="177" sc="1" el="177" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="178" ordinal="22" sl="178" sc="1" el="178" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="179" ordinal="23" sl="179" sc="1" el="179" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="180" ordinal="24" sl="180" sc="1" el="180" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="181" ordinal="25" sl="181" sc="1" el="181" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="182" ordinal="26" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="183" ordinal="27" sl="183" sc="1" el="183" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="184" ordinal="28" sl="184" sc="1" el="184" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="185" ordinal="29" sl="185" sc="1" el="185" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="186" ordinal="30" sl="186" sc="1" el="186" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="187" ordinal="31" sl="187" sc="1" el="187" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="188" ordinal="32" sl="188" sc="1" el="188" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="189" ordinal="33" sl="189" sc="1" el="189" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="190" ordinal="34" sl="190" sc="1" el="190" ec="2" bec="0" bev="0" fileid="172" /> <SequencePoint vc="0" uspid="191" ordinal="35" sl="191" sc="1" el="191" ec="2" bec="0" bev="0" fileid="172" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="156" ec="1" el="191" bec="0" bev="0" fileid="172" xmlns:p8="xsi" /> </Method> </Methods> </Class> </Classes> </Module> <Module hash="463D5BB7-2678-4C16-8D5F-17846E61BB04"> <ModulePath>NosCore.MasterServer.dll</ModulePath> <ModuleTime>2020-12-29T09:41:25</ModuleTime> <ModuleName>NosCore.MasterServer</ModuleName> <Files> <File uid="173" fullPath="C:\dev\NosCore\src\NosCore.MasterServer\MasterConfiguration.cs" /> <File uid="174" fullPath="C:\dev\NosCore\src\NosCore.MasterServer\MasterServer.cs" /> <File uid="175" fullPath="C:\dev\NosCore\src\NosCore.MasterServer\MasterServerBootstrap.cs" /> <File uid="176" fullPath="C:\dev\NosCore\src\NosCore.MasterServer\Startup.cs" /> <File uid="177" fullPath="C:\dev\NosCore\src\NosCore.MasterServer\Controllers\BazaarController.cs" /> <File uid="178" fullPath="C:\dev\NosCore\src\NosCore.MasterServer\Controllers\BlacklistController.cs" /> <File uid="179" fullPath="C:\dev\NosCore\src\NosCore.MasterServer\Controllers\FriendController.cs" /> <File uid="180" fullPath="C:\dev\NosCore\src\NosCore.MasterServer\Controllers\MailController.cs" /> <File uid="181" fullPath="C:\dev\NosCore\src\NosCore.MasterServer\Controllers\WarehouseController.cs" /> </Files> <Classes> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.MasterServer.MasterConfiguration</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.MasterServer.MasterConfiguration::.ctor()</Name> <FileRef uid="173" /> <SequencePoints> <SequencePoint vc="0" uspid="28" ordinal="0" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="173" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="173" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="28" ec="1" el="31" bec="0" bev="0" fileid="173" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="25" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.MasterServer.MasterServer</FullName> <Methods> <Method cyclomaticComplexity="4" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="20" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="4" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.MasterServer.MasterServer::ExecuteAsync(System.Threading.CancellationToken)</Name> <FileRef uid="174" /> <SequencePoints> <SequencePoint vc="0" uspid="49" ordinal="0" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="50" ordinal="1" sl="50" sc="1" el="50" ec="2" bec="2" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="51" ordinal="2" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="52" ordinal="3" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="53" ordinal="4" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="54" ordinal="5" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="55" ordinal="6" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="56" ordinal="7" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="57" ordinal="8" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="58" ordinal="9" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="59" ordinal="10" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="60" ordinal="11" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="61" ordinal="12" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="63" ordinal="13" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="64" ordinal="14" sl="64" sc="1" el="64" ec="2" bec="2" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="65" ordinal="15" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="66" ordinal="16" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="67" ordinal="17" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="69" ordinal="18" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="70" ordinal="19" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="174" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="50" ordinal="0" path="0" offset="11" offsetend="13" sl="50" fileid="174" /> <BranchPoint vc="0" uspid="50" ordinal="1" path="1" offset="11" offsetend="52" sl="50" fileid="174" /> <BranchPoint vc="0" uspid="64" ordinal="2" path="0" offset="88" offsetend="90" sl="64" fileid="174" /> <BranchPoint vc="0" uspid="64" ordinal="3" path="1" offset="88" offsetend="129" sl="64" fileid="174" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="49" ec="1" el="70" bec="0" bev="0" fileid="174" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.MasterServer.MasterServer::.ctor(Microsoft.Extensions.Options.IOptions`1<NosCore.MasterServer.MasterConfiguration>,Serilog.ILogger)</Name> <FileRef uid="174" /> <SequencePoints> <SequencePoint vc="0" uspid="42" ordinal="0" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="43" ordinal="1" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="44" ordinal="2" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="45" ordinal="3" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="174" /> <SequencePoint vc="0" uspid="46" ordinal="4" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="174" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="42" ec="1" el="46" bec="0" bev="0" fileid="174" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="23" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.MasterServer.MasterServerBootstrap</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.MasterServer.MasterServerBootstrap::Main()</Name> <FileRef uid="175" /> <SequencePoints> <SequencePoint vc="0" uspid="37" ordinal="0" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="41" ordinal="3" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="42" ordinal="4" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="43" ordinal="5" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="44" ordinal="6" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="45" ordinal="7" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="46" ordinal="8" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="175" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="37" ec="1" el="46" bec="0" bev="0" fileid="175" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="13" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>Microsoft.AspNetCore.Hosting.IWebHost NosCore.MasterServer.MasterServerBootstrap::BuildWebHost(System.String[])</Name> <FileRef uid="175" /> <SequencePoints> <SequencePoint vc="0" uspid="49" ordinal="0" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="50" ordinal="1" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="51" ordinal="2" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="52" ordinal="3" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="53" ordinal="4" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="54" ordinal="5" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="55" ordinal="6" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="56" ordinal="7" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="57" ordinal="8" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="58" ordinal="9" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="59" ordinal="10" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="60" ordinal="11" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="175" /> <SequencePoint vc="0" uspid="61" ordinal="12" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="175" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="49" ec="1" el="61" bec="0" bev="0" fileid="175" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.MasterServer.MasterServerBootstrap::.cctor()</Name> <FileRef uid="175" /> <SequencePoints> <SequencePoint vc="0" uspid="34" ordinal="0" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="175" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="34" ec="1" el="34" bec="0" bev="0" fileid="175" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="156" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="6" /> <FullName>NosCore.MasterServer.Startup</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="61" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.MasterServer.Startup::RegisterDto(Autofac.ContainerBuilder)</Name> <FileRef uid="176" /> <SequencePoints> <SequencePoint vc="0" uspid="84" ordinal="0" sl="84" sc="1" el="84" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="85" ordinal="1" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="86" ordinal="2" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="87" ordinal="3" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="88" ordinal="4" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="89" ordinal="5" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="90" ordinal="6" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="91" ordinal="7" sl="91" sc="1" el="91" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="93" ordinal="8" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="94" ordinal="9" sl="94" sc="1" el="94" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="95" ordinal="10" sl="95" sc="1" el="95" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="96" ordinal="11" sl="96" sc="1" el="96" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="97" ordinal="12" sl="97" sc="1" el="97" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="98" ordinal="13" sl="98" sc="1" el="98" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="99" ordinal="14" sl="99" sc="1" el="99" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="100" ordinal="15" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="101" ordinal="16" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="102" ordinal="17" sl="102" sc="1" el="102" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="103" ordinal="18" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="104" ordinal="19" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="105" ordinal="20" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="106" ordinal="21" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="107" ordinal="22" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="108" ordinal="23" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="109" ordinal="24" sl="109" sc="1" el="109" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="110" ordinal="25" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="111" ordinal="26" sl="111" sc="1" el="111" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="112" ordinal="27" sl="112" sc="1" el="112" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="115" ordinal="28" sl="115" sc="1" el="115" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="117" ordinal="29" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="118" ordinal="30" sl="118" sc="1" el="118" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="119" ordinal="31" sl="119" sc="1" el="119" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="120" ordinal="32" sl="120" sc="1" el="120" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="121" ordinal="33" sl="121" sc="1" el="121" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="122" ordinal="34" sl="122" sc="1" el="122" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="123" ordinal="35" sl="123" sc="1" el="123" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="124" ordinal="36" sl="124" sc="1" el="124" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="125" ordinal="37" sl="125" sc="1" el="125" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="126" ordinal="38" sl="126" sc="1" el="126" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="127" ordinal="39" sl="127" sc="1" el="127" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="128" ordinal="40" sl="128" sc="1" el="128" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="129" ordinal="41" sl="129" sc="1" el="129" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="130" ordinal="42" sl="130" sc="1" el="130" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="131" ordinal="43" sl="131" sc="1" el="131" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="132" ordinal="44" sl="132" sc="1" el="132" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="133" ordinal="45" sl="133" sc="1" el="133" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="134" ordinal="46" sl="134" sc="1" el="134" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="135" ordinal="47" sl="135" sc="1" el="135" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="136" ordinal="48" sl="136" sc="1" el="136" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="137" ordinal="49" sl="137" sc="1" el="137" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="138" ordinal="50" sl="138" sc="1" el="138" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="139" ordinal="51" sl="139" sc="1" el="139" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="140" ordinal="52" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="141" ordinal="53" sl="141" sc="1" el="141" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="142" ordinal="54" sl="142" sc="1" el="142" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="143" ordinal="55" sl="143" sc="1" el="143" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="144" ordinal="56" sl="144" sc="1" el="144" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="145" ordinal="57" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="146" ordinal="58" sl="146" sc="1" el="146" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="147" ordinal="59" sl="147" sc="1" el="147" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="148" ordinal="60" sl="148" sc="1" el="148" ec="2" bec="0" bev="0" fileid="176" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="84" ec="1" el="148" bec="0" bev="0" fileid="176" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.MasterServer.Startup::RegisterDatabaseObject(Autofac.ContainerBuilder)</Name> <FileRef uid="176" /> <SequencePoints> <SequencePoint vc="0" uspid="151" ordinal="0" sl="151" sc="1" el="151" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="152" ordinal="1" sl="152" sc="1" el="152" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="153" ordinal="2" sl="153" sc="1" el="153" ec="2" bec="0" bev="0" fileid="176" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="151" ec="1" el="153" bec="0" bev="0" fileid="176" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="36" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>Autofac.ContainerBuilder NosCore.MasterServer.Startup::InitializeContainer(Microsoft.Extensions.DependencyInjection.IServiceCollection)</Name> <FileRef uid="176" /> <SequencePoints> <SequencePoint vc="0" uspid="156" ordinal="0" sl="156" sc="1" el="156" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="157" ordinal="1" sl="157" sc="1" el="157" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="158" ordinal="2" sl="158" sc="1" el="158" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="159" ordinal="3" sl="159" sc="1" el="159" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="160" ordinal="4" sl="160" sc="1" el="160" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="161" ordinal="5" sl="161" sc="1" el="161" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="162" ordinal="6" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="163" ordinal="7" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="164" ordinal="8" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="165" ordinal="9" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="166" ordinal="10" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="167" ordinal="11" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="168" ordinal="12" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="169" ordinal="13" sl="169" sc="1" el="169" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="170" ordinal="14" sl="170" sc="1" el="170" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="171" ordinal="15" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="172" ordinal="16" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="173" ordinal="17" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="174" ordinal="18" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="175" ordinal="19" sl="175" sc="1" el="175" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="176" ordinal="20" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="177" ordinal="21" sl="177" sc="1" el="177" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="179" ordinal="22" sl="179" sc="1" el="179" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="180" ordinal="23" sl="180" sc="1" el="180" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="181" ordinal="24" sl="181" sc="1" el="181" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="183" ordinal="25" sl="183" sc="1" el="183" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="184" ordinal="26" sl="184" sc="1" el="184" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="185" ordinal="27" sl="185" sc="1" el="185" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="186" ordinal="28" sl="186" sc="1" el="186" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="187" ordinal="29" sl="187" sc="1" el="187" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="188" ordinal="30" sl="188" sc="1" el="188" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="189" ordinal="31" sl="189" sc="1" el="189" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="191" ordinal="32" sl="191" sc="1" el="191" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="192" ordinal="33" sl="192" sc="1" el="192" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="193" ordinal="34" sl="193" sc="1" el="193" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="194" ordinal="35" sl="194" sc="1" el="194" ec="2" bec="0" bev="0" fileid="176" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="156" ec="1" el="194" bec="0" bev="0" fileid="176" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="40" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.IServiceProvider NosCore.MasterServer.Startup::ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)</Name> <FileRef uid="176" /> <SequencePoints> <SequencePoint vc="0" uspid="199" ordinal="0" sl="199" sc="1" el="199" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="200" ordinal="1" sl="200" sc="1" el="200" ec="2" bec="2" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="201" ordinal="2" sl="201" sc="1" el="201" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="202" ordinal="3" sl="202" sc="1" el="202" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="203" ordinal="4" sl="203" sc="1" el="203" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="204" ordinal="5" sl="204" sc="1" el="204" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="205" ordinal="6" sl="205" sc="1" el="205" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="206" ordinal="7" sl="206" sc="1" el="206" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="208" ordinal="8" sl="208" sc="1" el="208" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="209" ordinal="9" sl="209" sc="1" el="209" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="211" ordinal="10" sl="211" sc="1" el="211" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="212" ordinal="11" sl="212" sc="1" el="212" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="213" ordinal="12" sl="213" sc="1" el="213" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="214" ordinal="13" sl="214" sc="1" el="214" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="215" ordinal="14" sl="215" sc="1" el="215" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="217" ordinal="15" sl="217" sc="1" el="217" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="218" ordinal="16" sl="218" sc="1" el="218" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="219" ordinal="17" sl="219" sc="1" el="219" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="220" ordinal="18" sl="220" sc="1" el="220" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="221" ordinal="19" sl="221" sc="1" el="221" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="223" ordinal="20" sl="223" sc="1" el="223" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="224" ordinal="21" sl="224" sc="1" el="224" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="225" ordinal="22" sl="225" sc="1" el="225" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="226" ordinal="23" sl="226" sc="1" el="226" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="227" ordinal="24" sl="227" sc="1" el="227" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="228" ordinal="25" sl="228" sc="1" el="228" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="230" ordinal="26" sl="230" sc="1" el="230" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="231" ordinal="27" sl="231" sc="1" el="231" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="232" ordinal="28" sl="232" sc="1" el="232" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="233" ordinal="29" sl="233" sc="1" el="233" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="234" ordinal="30" sl="234" sc="1" el="234" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="235" ordinal="31" sl="235" sc="1" el="235" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="236" ordinal="32" sl="236" sc="1" el="236" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="237" ordinal="33" sl="237" sc="1" el="237" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="238" ordinal="34" sl="238" sc="1" el="238" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="239" ordinal="35" sl="239" sc="1" el="239" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="241" ordinal="36" sl="241" sc="1" el="241" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="242" ordinal="37" sl="242" sc="1" el="242" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="243" ordinal="38" sl="243" sc="1" el="243" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="244" ordinal="39" sl="244" sc="1" el="244" ec="2" bec="0" bev="0" fileid="176" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="200" ordinal="0" path="0" offset="19" offsetend="21" sl="200" fileid="176" /> <BranchPoint vc="0" uspid="200" ordinal="1" path="1" offset="19" offsetend="34" sl="200" fileid="176" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="199" ec="1" el="244" bec="0" bev="0" fileid="176" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="12" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.MasterServer.Startup::Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder)</Name> <FileRef uid="176" /> <SequencePoints> <SequencePoint vc="0" uspid="248" ordinal="0" sl="248" sc="1" el="248" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="249" ordinal="1" sl="249" sc="1" el="249" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="250" ordinal="2" sl="250" sc="1" el="250" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="251" ordinal="3" sl="251" sc="1" el="251" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="252" ordinal="4" sl="252" sc="1" el="252" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="254" ordinal="5" sl="254" sc="1" el="254" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="256" ordinal="6" sl="256" sc="1" el="256" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="257" ordinal="7" sl="257" sc="1" el="257" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="258" ordinal="8" sl="258" sc="1" el="258" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="259" ordinal="9" sl="259" sc="1" el="259" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="260" ordinal="10" sl="260" sc="1" el="260" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="261" ordinal="11" sl="261" sc="1" el="261" ec="2" bec="0" bev="0" fileid="176" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="248" ec="1" el="261" bec="0" bev="0" fileid="176" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.MasterServer.Startup::.ctor(Microsoft.Extensions.Configuration.IConfiguration)</Name> <FileRef uid="176" /> <SequencePoints> <SequencePoint vc="0" uspid="78" ordinal="0" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="79" ordinal="1" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="80" ordinal="2" sl="80" sc="1" el="80" ec="2" bec="0" bev="0" fileid="176" /> <SequencePoint vc="0" uspid="81" ordinal="3" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="176" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="5" offset="5" sc="0" sl="78" ec="1" el="81" bec="0" bev="0" fileid="176" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="10" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="5" /> <FullName>NosCore.MasterServer.Controllers.BazaarController</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Collections.Generic.List`1<NosCore.Data.WebApi.BazaarLink> NosCore.MasterServer.Controllers.BazaarController::GetBazaar(System.Int64,System.Nullable`1<System.Byte>,System.Nullable`1<System.Byte>,System.Nullable`1<NosCore.Packets.Enumerations.BazaarListType>,System.Nullable`1<System.Byte>,System.Nullable`1<System.Byte>,System.Nullable`1<System.Byte>,System.Nullable`1<System.Byte>,System.Nullable`1<System.Int64>)</Name> <FileRef uid="177" /> <SequencePoints> <SequencePoint vc="0" uspid="45" ordinal="0" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="177" /> <SequencePoint vc="0" uspid="46" ordinal="1" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="177" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="45" ec="1" el="46" bec="0" bev="0" fileid="177" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task`1<System.Boolean> NosCore.MasterServer.Controllers.BazaarController::DeleteBazaarAsync(System.Int64,System.Int16,System.String)</Name> <FileRef uid="177" /> <SequencePoints> <SequencePoint vc="0" uspid="50" ordinal="0" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="177" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="50" ec="1" el="50" bec="0" bev="0" fileid="177" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task`1<NosCore.Data.Enumerations.I18N.LanguageKey> NosCore.MasterServer.Controllers.BazaarController::AddBazaarAsync(NosCore.Data.WebApi.BazaarRequest)</Name> <FileRef uid="177" /> <SequencePoints> <SequencePoint vc="0" uspid="53" ordinal="0" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="177" /> <SequencePoint vc="0" uspid="54" ordinal="1" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="177" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="53" ec="1" el="54" bec="0" bev="0" fileid="177" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task`1<NosCore.Data.WebApi.BazaarLink> NosCore.MasterServer.Controllers.BazaarController::ModifyBazaarAsync(System.Int64,Json.Patch.JsonPatch)</Name> <FileRef uid="177" /> <SequencePoints> <SequencePoint vc="0" uspid="57" ordinal="0" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="177" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="57" ec="1" el="57" bec="0" bev="0" fileid="177" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.MasterServer.Controllers.BazaarController::.ctor(NosCore.GameObject.Services.BazaarService.IBazaarService)</Name> <FileRef uid="177" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="177" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="177" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="177" /> <SequencePoint vc="0" uspid="41" ordinal="3" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="177" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="38" ec="1" el="41" bec="0" bev="0" fileid="177" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.MasterServer.Controllers.BlacklistController</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task`1<NosCore.Data.Enumerations.I18N.LanguageKey> NosCore.MasterServer.Controllers.BlacklistController::AddBlacklistAsync(NosCore.Data.WebApi.BlacklistRequest)</Name> <FileRef uid="178" /> <SequencePoints> <SequencePoint vc="0" uspid="44" ordinal="0" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="178" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="44" ec="1" el="44" bec="0" bev="0" fileid="178" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task`1<System.Collections.Generic.List`1<NosCore.Data.WebApi.CharacterRelationStatus>> NosCore.MasterServer.Controllers.BlacklistController::GetBlacklistedAsync(System.Int64)</Name> <FileRef uid="178" /> <SequencePoints> <SequencePoint vc="0" uspid="47" ordinal="0" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="178" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="47" ec="1" el="47" bec="0" bev="0" fileid="178" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.MasterServer.Controllers.BlacklistController::.ctor(NosCore.GameObject.Services.BlackListService.IBlacklistService)</Name> <FileRef uid="178" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="178" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="178" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="178" /> <SequencePoint vc="0" uspid="41" ordinal="3" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="178" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="38" ec="1" el="41" bec="0" bev="0" fileid="178" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.MasterServer.Controllers.FriendController</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task`1<NosCore.Data.Enumerations.I18N.LanguageKey> NosCore.MasterServer.Controllers.FriendController::AddFriendAsync(NosCore.Data.WebApi.FriendShipRequest)</Name> <FileRef uid="179" /> <SequencePoints> <SequencePoint vc="0" uspid="44" ordinal="0" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="179" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="44" ec="1" el="44" bec="0" bev="0" fileid="179" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task`1<System.Collections.Generic.List`1<NosCore.Data.WebApi.CharacterRelationStatus>> NosCore.MasterServer.Controllers.FriendController::GetFriendsAsync(System.Int64)</Name> <FileRef uid="179" /> <SequencePoints> <SequencePoint vc="0" uspid="47" ordinal="0" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="179" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="47" ec="1" el="47" bec="0" bev="0" fileid="179" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.MasterServer.Controllers.FriendController::.ctor(NosCore.GameObject.Services.FriendService.IFriendService)</Name> <FileRef uid="179" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="179" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="179" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="179" /> <SequencePoint vc="0" uspid="41" ordinal="3" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="179" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="38" ec="1" el="41" bec="0" bev="0" fileid="179" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="5" /> <FullName>NosCore.MasterServer.Controllers.MailController</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Collections.Generic.List`1<NosCore.Data.WebApi.MailData> NosCore.MasterServer.Controllers.MailController::GetMails(System.Int64,System.Int64,System.Boolean)</Name> <FileRef uid="180" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="180" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="43" ec="1" el="43" bec="0" bev="0" fileid="180" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task`1<System.Boolean> NosCore.MasterServer.Controllers.MailController::DeleteMailAsync(System.Int64,System.Int64,System.Boolean)</Name> <FileRef uid="180" /> <SequencePoints> <SequencePoint vc="0" uspid="46" ordinal="0" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="180" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="46" ec="1" el="46" bec="0" bev="0" fileid="180" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task`1<NosCore.Data.WebApi.MailData> NosCore.MasterServer.Controllers.MailController::ViewMailAsync(System.Int64,Json.Patch.JsonPatch)</Name> <FileRef uid="180" /> <SequencePoints> <SequencePoint vc="0" uspid="49" ordinal="0" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="180" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="49" ec="1" el="49" bec="0" bev="0" fileid="180" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task`1<System.Boolean> NosCore.MasterServer.Controllers.MailController::SendMailAsync(NosCore.Data.WebApi.MailRequest)</Name> <FileRef uid="180" /> <SequencePoints> <SequencePoint vc="0" uspid="52" ordinal="0" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="180" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="52" ec="1" el="52" bec="0" bev="0" fileid="180" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.MasterServer.Controllers.MailController::.ctor(NosCore.GameObject.Services.MailService.IMailService)</Name> <FileRef uid="180" /> <SequencePoints> <SequencePoint vc="0" uspid="37" ordinal="0" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="180" /> <SequencePoint vc="0" uspid="38" ordinal="1" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="180" /> <SequencePoint vc="0" uspid="39" ordinal="2" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="180" /> <SequencePoint vc="0" uspid="40" ordinal="3" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="180" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="37" ec="1" el="40" bec="0" bev="0" fileid="180" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="4" /> <FullName>NosCore.MasterServer.Controllers.WarehouseController</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Collections.Generic.List`1<NosCore.Data.WebApi.WarehouseLink> NosCore.MasterServer.Controllers.WarehouseController::GetWarehouseItems(System.Nullable`1<System.Guid>,System.Nullable`1<System.Int64>,NosCore.Data.Enumerations.Miniland.WarehouseType,System.Nullable`1<System.Byte>)</Name> <FileRef uid="181" /> <SequencePoints> <SequencePoint vc="0" uspid="44" ordinal="0" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="181" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="44" ec="1" el="44" bec="0" bev="0" fileid="181" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task`1<System.Boolean> NosCore.MasterServer.Controllers.WarehouseController::DeleteWarehouseItemAsync(System.Guid)</Name> <FileRef uid="181" /> <SequencePoints> <SequencePoint vc="0" uspid="47" ordinal="0" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="181" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="47" ec="1" el="47" bec="0" bev="0" fileid="181" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task`1<System.Boolean> NosCore.MasterServer.Controllers.WarehouseController::AddWarehouseItemAsync(NosCore.Data.WebApi.WareHouseDepositRequest)</Name> <FileRef uid="181" /> <SequencePoints> <SequencePoint vc="0" uspid="50" ordinal="0" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="181" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="50" ec="1" el="50" bec="0" bev="0" fileid="181" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.MasterServer.Controllers.WarehouseController::.ctor(NosCore.GameObject.Services.WarehouseService.IWarehouseService)</Name> <FileRef uid="181" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="181" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="181" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="181" /> <SequencePoint vc="0" uspid="41" ordinal="3" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="181" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="38" ec="1" el="41" bec="0" bev="0" fileid="181" xmlns:p8="xsi" /> </Method> </Methods> </Class> </Classes> </Module> <Module hash="A5D69CC3-4062-4AA9-9BEB-7DC8D6C09EE4"> <ModulePath>NosCore.PacketHandlers.dll</ModulePath> <ModuleTime>2020-12-29T09:41:25</ModuleTime> <ModuleName>NosCore.PacketHandlers</ModuleName> <Files> <File uid="182" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Warehouse\DepositPacketHandler.cs" /> <File uid="183" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Warehouse\FDepositPacketHandler.cs" /> <File uid="184" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Warehouse\FReposPacketHandler.cs" /> <File uid="185" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Warehouse\FStashEndPacketHandler.cs" /> <File uid="186" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Warehouse\FWithdrawPacketHandler.cs" /> <File uid="187" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Warehouse\ReposPacketHandler.cs" /> <File uid="188" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Warehouse\StashEndPacketHandler.cs" /> <File uid="189" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Warehouse\WithdrawPacketHandler.cs" /> <File uid="190" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Shops\BuyPacketHandler.cs" /> <File uid="191" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Shops\MShopPacketHandler.cs" /> <File uid="192" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Shops\NrunPacketHandler.cs" /> <File uid="193" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Shops\RequestNpcPacketHandler.cs" /> <File uid="194" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Shops\SellPacketHandler.cs" /> <File uid="195" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Shops\ShoppingPacketHandler.cs" /> <File uid="196" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Quest\QTPacketHandler.cs" /> <File uid="197" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Quest\ScriptPacketHandler.cs" /> <File uid="198" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Parcel\PclPacketHandler.cs" /> <File uid="199" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Parcel\PstClientPacketHandler.cs" /> <File uid="200" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\NoAction\CClosePacketHandler.cs" /> <File uid="201" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\NoAction\LbsPacketHandler.cs" /> <File uid="202" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\NoAction\SnapPacketHandler.cs" /> <File uid="203" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\NoAction\ZeroPacketHandler.cs" /> <File uid="204" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Movement\ClientDirPacketHandler.cs" /> <File uid="205" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Movement\PreqPacketHandler.cs" /> <File uid="206" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Movement\SitPacketHandler.cs" /> <File uid="207" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Movement\WalkPacketHandler.cs" /> <File uid="208" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Miniland\AddobjPacketHandler.cs" /> <File uid="209" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Miniland\MJoinPacketHandler.cs" /> <File uid="210" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Miniland\MlobjPacketHandler.cs" /> <File uid="211" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Miniland\RmvobjPacketHandler.cs" /> <File uid="212" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Miniland\MinilandObjects\MgPacketHandler.cs" /> <File uid="213" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Miniland\MinilandObjects\UseobjPacketHandler.cs" /> <File uid="214" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Login\NoS0575PacketHandler.cs" /> <File uid="215" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Login\NoS0577PacketHandler.cs" /> <File uid="216" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Inventory\BiPacketHandler.cs" /> <File uid="217" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Inventory\GetPacketHandler.cs" /> <File uid="218" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Inventory\PutPacketHandler.cs" /> <File uid="219" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Inventory\UseItemPacketHandler.cs" /> <File uid="220" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Inventory\WearPacketHandler.cs" /> <File uid="221" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Group\GroupTalkPacketHandler.cs" /> <File uid="222" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Group\PjoinPacketHandler.cs" /> <File uid="223" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Game\GameStartPacketHandler.cs" /> <File uid="224" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Game\GuriPacketHandler.cs" /> <File uid="225" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Game\NcifPacketHandler.cs" /> <File uid="226" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Friend\BlDelPacketHandler.cs" /> <File uid="227" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Friend\BlInsPacketHandler.cs" /> <File uid="228" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Friend\BlPacketHandler.cs" /> <File uid="229" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Friend\FdelPacketHandler.cs" /> <File uid="230" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Friend\FinsPacketHandler.cs" /> <File uid="231" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Exchange\ExchangeRequestPacketHandler.cs" /> <File uid="232" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Exchange\ExcListPacketHandler.cs" /> <File uid="233" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\ChangeChannelPacketHandler.cs" /> <File uid="234" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\ChangeClassPacketHandler.cs" /> <File uid="235" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\CreateItemPacketHandler.cs" /> <File uid="236" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\EffectCommandPacketHandler.cs" /> <File uid="237" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\GiftPacketHandler.cs" /> <File uid="238" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\InvisibleCommandPacketHandler.cs" /> <File uid="239" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\KickPacketHandler.cs" /> <File uid="240" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\PositionPacketHandler.cs" /> <File uid="241" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\SetGoldCommandPacketHandler.cs" /> <File uid="242" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\SetHeroLevelCommandPacketHandler.cs" /> <File uid="243" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\SetJobLevelCommandPacketHandler.cs" /> <File uid="244" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\SetLevelCommandPacketHandler.cs" /> <File uid="245" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\SetMaintenancePacketHandler.cs" /> <File uid="246" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\SetReputationPacketHandler.cs" /> <File uid="247" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\ShoutPacketHandler.cs" /> <File uid="248" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\SizePacketHandler.cs" /> <File uid="249" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\SpeedPacketHandler.cs" /> <File uid="250" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Command\TeleportPacketHandler.cs" /> <File uid="251" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Chat\BtkPacketHandler.cs" /> <File uid="252" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Chat\ClientSayPacketHandler.cs" /> <File uid="253" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Chat\WhisperPacketHandler.cs" /> <File uid="254" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\CharacterScreen\CharacterDeletePacketHandler.cs" /> <File uid="255" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\CharacterScreen\CharNewJobPacketHandler.cs" /> <File uid="256" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\CharacterScreen\CharNewPacketHandler.cs" /> <File uid="257" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\CharacterScreen\CharRenPacketHandler.cs" /> <File uid="258" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\CharacterScreen\DacPacketHandler.cs" /> <File uid="259" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\CharacterScreen\EntryPointPacketHandler.cs" /> <File uid="260" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\CharacterScreen\SelectPacketHandler.cs" /> <File uid="261" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Bazaar\CBListPacketHandler.cs" /> <File uid="262" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Bazaar\CBuyPacketHandler.cs" /> <File uid="263" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Bazaar\CModPacketHandler.cs" /> <File uid="264" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Bazaar\CRegPacketHandler.cs" /> <File uid="265" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Bazaar\CScalcPacketHandler.cs" /> <File uid="266" fullPath="C:\dev\NosCore\src\NosCore.PacketHandlers\Bazaar\CSListPacketHandler.cs" /> </Files> <Classes> <Class> <Summary numSequencePoints="10" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Warehouse.DepositPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Warehouse.DepositPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Warehouse.DepositPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="182" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="182" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="182" /> <SequencePoint vc="0" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="182" /> <SequencePoint vc="0" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="182" /> <SequencePoint vc="0" uspid="44" ordinal="4" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="182" /> <SequencePoint vc="0" uspid="45" ordinal="5" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="182" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="40" ec="1" el="45" bec="0" bev="0" fileid="182" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Warehouse.DepositPacketHandler::.ctor(NosCore.GameObject.HttpClients.WarehouseHttpClient.IWarehouseHub)</Name> <FileRef uid="182" /> <SequencePoints> <SequencePoint vc="0" uspid="34" ordinal="0" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="182" /> <SequencePoint vc="0" uspid="35" ordinal="1" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="182" /> <SequencePoint vc="0" uspid="36" ordinal="2" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="182" /> <SequencePoint vc="0" uspid="37" ordinal="3" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="182" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="34" ec="1" el="37" bec="0" bev="0" fileid="182" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Warehouse.FDepositPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Warehouse.FDepositPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Warehouse.FDepositPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="183" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="183" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="183" /> <SequencePoint vc="0" uspid="32" ordinal="2" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="183" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="32" bec="0" bev="0" fileid="183" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Warehouse.FReposPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Warehouse.FReposPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Warehouse.FReposPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="184" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="184" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="184" /> <SequencePoint vc="0" uspid="32" ordinal="2" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="184" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="32" bec="0" bev="0" fileid="184" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Warehouse.FStashEndPackettHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Warehouse.FStashEndPackettHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Warehouse.FStashEndPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="185" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="185" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="185" /> <SequencePoint vc="0" uspid="32" ordinal="2" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="185" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="32" bec="0" bev="0" fileid="185" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Warehouse.FWithdrawPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Warehouse.FWithdrawPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Warehouse.FWithdrawPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="186" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="186" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="186" /> <SequencePoint vc="0" uspid="32" ordinal="2" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="186" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="32" bec="0" bev="0" fileid="186" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Warehouse.ReposPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Warehouse.ReposPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Warehouse.ReposPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="187" /> <SequencePoints> <SequencePoint vc="0" uspid="34" ordinal="0" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="187" /> <SequencePoint vc="0" uspid="35" ordinal="1" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="187" /> <SequencePoint vc="0" uspid="36" ordinal="2" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="187" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="34" ec="1" el="36" bec="0" bev="0" fileid="187" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Warehouse.ReposPacketHandler::.ctor()</Name> <FileRef uid="187" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="187" /> <SequencePoint vc="0" uspid="30" ordinal="1" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="187" /> <SequencePoint vc="0" uspid="31" ordinal="2" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="187" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="29" ec="1" el="31" bec="0" bev="0" fileid="187" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Warehouse.StashEndPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Warehouse.StashEndPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Warehouse.StashEndPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="188" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="188" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="188" /> <SequencePoint vc="0" uspid="32" ordinal="2" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="188" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="32" bec="0" bev="0" fileid="188" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Warehouse.WithdrawPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Warehouse.WithdrawPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Warehouse.WithdrawPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="189" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="189" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="189" /> <SequencePoint vc="0" uspid="32" ordinal="2" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="189" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="32" bec="0" bev="0" fileid="189" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="19" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Shops.BuyPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="15" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Shops.BuyPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Shops.BuyPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="190" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="45" ordinal="1" sl="45" sc="1" el="45" ec="2" bec="4" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="48" ordinal="2" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="49" ordinal="3" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="51" ordinal="4" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="52" ordinal="5" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="55" ordinal="6" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="56" ordinal="7" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="57" ordinal="8" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="60" ordinal="9" sl="60" sc="1" el="60" ec="2" bec="2" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="61" ordinal="10" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="62" ordinal="11" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="65" ordinal="12" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="66" ordinal="13" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="68" ordinal="14" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="190" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="45" ordinal="0" path="0" offset="30" offsetend="34" sl="45" fileid="190" /> <BranchPoint vc="0" uspid="45" ordinal="1" path="1" offset="30" offsetend="40" sl="45" fileid="190" /> <BranchPoint vc="0" uspid="45" ordinal="3" path="1" offset="36" offsetend="65" sl="45" fileid="190" /> <BranchPoint vc="0" uspid="45" ordinal="2" path="0" offset="36" offsetend="101" sl="45" fileid="190" /> <BranchPoint vc="0" uspid="60" ordinal="4" path="0" offset="153" offsetend="155" sl="60" fileid="190" /> <BranchPoint vc="0" uspid="60" ordinal="5" path="1" offset="153" offsetend="199" sl="60" fileid="190" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="43" ec="1" el="68" bec="0" bev="0" fileid="190" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Shops.BuyPacketHandler::.ctor(Serilog.ILogger)</Name> <FileRef uid="190" /> <SequencePoints> <SequencePoint vc="0" uspid="37" ordinal="0" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="38" ordinal="1" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="39" ordinal="2" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="190" /> <SequencePoint vc="0" uspid="40" ordinal="3" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="190" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="37" ec="1" el="40" bec="0" bev="0" fileid="190" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Shops.MShopPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Shops.MShopPacketHandler::.ctor(NosCore.PathFinder.Interfaces.IHeuristic)</Name> <FileRef uid="191" /> <SequencePoints> <SequencePoint vc="0" uspid="47" ordinal="0" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="191" /> <SequencePoint vc="0" uspid="48" ordinal="1" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="191" /> <SequencePoint vc="0" uspid="49" ordinal="2" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="191" /> <SequencePoint vc="0" uspid="50" ordinal="3" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="191" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="47" ec="1" el="50" bec="0" bev="0" fileid="191" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Shops.NrunPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Shops.NrunPacketHandler::.ctor(Serilog.ILogger,NosCore.GameObject.Services.NRunService.INrunService)</Name> <FileRef uid="192" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="192" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="192" /> <SequencePoint vc="0" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="192" /> <SequencePoint vc="0" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="192" /> <SequencePoint vc="0" uspid="44" ordinal="4" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="192" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="40" ec="1" el="44" bec="0" bev="0" fileid="192" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="21" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Shops.RequestNpcPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="17" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Shops.RequestNpcPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Npcs.RequestNpcPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="193" /> <SequencePoints> <SequencePoint vc="0" uspid="44" ordinal="0" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="46" ordinal="1" sl="46" sc="1" el="46" ec="2" bec="4" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="49" ordinal="2" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="50" ordinal="3" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="52" ordinal="4" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="53" ordinal="5" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="54" ordinal="6" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="57" ordinal="7" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="58" ordinal="8" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="59" ordinal="9" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="62" ordinal="10" sl="62" sc="1" el="62" ec="2" bec="2" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="63" ordinal="11" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="64" ordinal="12" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="65" ordinal="13" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="68" ordinal="14" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="69" ordinal="15" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="70" ordinal="16" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="193" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="46" ordinal="0" path="0" offset="30" offsetend="34" sl="46" fileid="193" /> <BranchPoint vc="0" uspid="46" ordinal="1" path="1" offset="30" offsetend="40" sl="46" fileid="193" /> <BranchPoint vc="0" uspid="46" ordinal="3" path="1" offset="36" offsetend="65" sl="46" fileid="193" /> <BranchPoint vc="0" uspid="46" ordinal="2" path="0" offset="36" offsetend="101" sl="46" fileid="193" /> <BranchPoint vc="0" uspid="62" ordinal="4" path="0" offset="153" offsetend="155" sl="62" fileid="193" /> <BranchPoint vc="0" uspid="62" ordinal="5" path="1" offset="153" offsetend="189" sl="62" fileid="193" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="44" ec="1" el="70" bec="0" bev="0" fileid="193" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Shops.RequestNpcPacketHandler::.ctor(Serilog.ILogger)</Name> <FileRef uid="193" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="193" /> <SequencePoint vc="0" uspid="41" ordinal="3" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="193" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="38" ec="1" el="41" bec="0" bev="0" fileid="193" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Shops.SellPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Shops.SellPacketHandler::.ctor(Microsoft.Extensions.Options.IOptions`1<NosCore.Core.Configuration.WorldConfiguration>)</Name> <FileRef uid="194" /> <SequencePoints> <SequencePoint vc="0" uspid="41" ordinal="0" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="194" /> <SequencePoint vc="0" uspid="42" ordinal="1" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="194" /> <SequencePoint vc="0" uspid="43" ordinal="2" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="194" /> <SequencePoint vc="0" uspid="44" ordinal="3" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="194" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="41" ec="1" el="44" bec="0" bev="0" fileid="194" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Shops.ShoppingPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Shops.ShoppingPacketHandler::.ctor(Serilog.ILogger,NosCore.Algorithm.DignityService.IDignityService)</Name> <FileRef uid="195" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="195" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="195" /> <SequencePoint vc="0" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="195" /> <SequencePoint vc="0" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="195" /> <SequencePoint vc="0" uspid="44" ordinal="4" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="195" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="40" ec="1" el="44" bec="0" bev="0" fileid="195" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Quest.QtPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Quest.QtPacketHandler::.ctor(NosCore.GameObject.Services.QuestService.IQuestService)</Name> <FileRef uid="196" /> <SequencePoints> <SequencePoint vc="0" uspid="17" ordinal="0" sl="17" sc="1" el="17" ec="2" bec="0" bev="0" fileid="196" /> <SequencePoint vc="0" uspid="18" ordinal="1" sl="18" sc="1" el="18" ec="2" bec="0" bev="0" fileid="196" /> <SequencePoint vc="0" uspid="19" ordinal="2" sl="19" sc="1" el="19" ec="2" bec="0" bev="0" fileid="196" /> <SequencePoint vc="0" uspid="20" ordinal="3" sl="20" sc="1" el="20" ec="2" bec="0" bev="0" fileid="196" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="17" ec="1" el="20" bec="0" bev="0" fileid="196" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Quest.ScriptPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Quest.ScriptPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Quest.ScriptClientPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="197" /> <SequencePoints> <SequencePoint vc="0" uspid="19" ordinal="0" sl="19" sc="1" el="19" ec="2" bec="0" bev="0" fileid="197" /> <SequencePoint vc="0" uspid="20" ordinal="1" sl="20" sc="1" el="20" ec="2" bec="0" bev="0" fileid="197" /> <SequencePoint vc="0" uspid="21" ordinal="2" sl="21" sc="1" el="21" ec="2" bec="0" bev="0" fileid="197" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="19" ec="1" el="21" bec="0" bev="0" fileid="197" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Quest.ScriptPacketHandler::.ctor(NosCore.GameObject.Services.QuestService.IQuestService)</Name> <FileRef uid="197" /> <SequencePoints> <SequencePoint vc="0" uspid="13" ordinal="0" sl="13" sc="1" el="13" ec="2" bec="0" bev="0" fileid="197" /> <SequencePoint vc="0" uspid="14" ordinal="1" sl="14" sc="1" el="14" ec="2" bec="0" bev="0" fileid="197" /> <SequencePoint vc="0" uspid="15" ordinal="2" sl="15" sc="1" el="15" ec="2" bec="0" bev="0" fileid="197" /> <SequencePoint vc="0" uspid="16" ordinal="3" sl="16" sc="1" el="16" ec="2" bec="0" bev="0" fileid="197" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="13" ec="1" el="16" bec="0" bev="0" fileid="197" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Parcel.PclPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Parcel.PclPacketHandler::.ctor(NosCore.GameObject.HttpClients.MailHttpClient.IMailHub,NosCore.GameObject.Services.ItemGenerationService.IItemGenerationService,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.IItemInstanceDto,System.Guid>)</Name> <FileRef uid="198" /> <SequencePoints> <SequencePoint vc="0" uspid="46" ordinal="0" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="198" /> <SequencePoint vc="0" uspid="47" ordinal="1" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="198" /> <SequencePoint vc="0" uspid="48" ordinal="2" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="198" /> <SequencePoint vc="0" uspid="49" ordinal="3" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="198" /> <SequencePoint vc="0" uspid="50" ordinal="4" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="198" /> <SequencePoint vc="0" uspid="51" ordinal="5" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="198" /> <SequencePoint vc="0" uspid="52" ordinal="6" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="198" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="46" ec="1" el="52" bec="0" bev="0" fileid="198" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Parcel.PstClientPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Parcel.PstClientPacketHandler::.ctor(NosCore.GameObject.HttpClients.MailHttpClient.IMailHub,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.CharacterDto,System.Int64>)</Name> <FileRef uid="199" /> <SequencePoints> <SequencePoint vc="0" uspid="42" ordinal="0" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="199" /> <SequencePoint vc="0" uspid="43" ordinal="1" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="199" /> <SequencePoint vc="0" uspid="44" ordinal="2" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="199" /> <SequencePoint vc="0" uspid="45" ordinal="3" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="199" /> <SequencePoint vc="0" uspid="46" ordinal="4" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="199" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="42" ec="1" el="46" bec="0" bev="0" fileid="199" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.NoAction.CClosePackettHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.NoAction.CClosePackettHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Shops.CClosePacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="200" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="200" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="200" /> <SequencePoint vc="0" uspid="32" ordinal="2" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="200" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="32" bec="0" bev="0" fileid="200" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.NoAction.LbsPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.NoAction.LbsPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.LbsPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="201" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="201" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="201" /> <SequencePoint vc="0" uspid="32" ordinal="2" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="201" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="32" bec="0" bev="0" fileid="201" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.NoAction.SnapPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.NoAction.SnapPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Player.SnapPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="202" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="202" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="202" /> <SequencePoint vc="0" uspid="32" ordinal="2" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="202" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="32" bec="0" bev="0" fileid="202" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.NoAction.ZeroPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.NoAction.ZeroPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Infrastructure.ZeroPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="203" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="203" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="203" /> <SequencePoint vc="0" uspid="32" ordinal="2" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="203" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="32" bec="0" bev="0" fileid="203" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="13" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Movement.ClientDirPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Movement.ClientDirPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Movement.ClientDirPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="204" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="204" /> <SequencePoint vc="0" uspid="45" ordinal="1" sl="45" sc="1" el="45" ec="2" bec="2" bev="0" fileid="204" /> <SequencePoint vc="0" uspid="48" ordinal="2" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="204" /> <SequencePoint vc="0" uspid="49" ordinal="3" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="204" /> <SequencePoint vc="0" uspid="51" ordinal="4" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="204" /> <SequencePoint vc="0" uspid="52" ordinal="5" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="204" /> <SequencePoint vc="0" uspid="53" ordinal="6" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="204" /> <SequencePoint vc="0" uspid="56" ordinal="7" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="204" /> <SequencePoint vc="0" uspid="57" ordinal="8" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="204" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="45" ordinal="1" path="1" offset="12" offsetend="16" sl="45" fileid="204" /> <BranchPoint vc="0" uspid="45" ordinal="0" path="0" offset="12" offsetend="25" sl="45" fileid="204" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="43" ec="1" el="57" bec="0" bev="0" fileid="204" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Movement.ClientDirPacketHandler::.ctor(Serilog.ILogger)</Name> <FileRef uid="204" /> <SequencePoints> <SequencePoint vc="0" uspid="37" ordinal="0" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="204" /> <SequencePoint vc="0" uspid="38" ordinal="1" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="204" /> <SequencePoint vc="0" uspid="39" ordinal="2" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="204" /> <SequencePoint vc="0" uspid="40" ordinal="3" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="204" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="37" ec="1" el="40" bec="0" bev="0" fileid="204" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Movement.PreqPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Movement.PreqPacketHandler::.ctor(NosCore.GameObject.Services.MapInstanceAccessService.IMapInstanceAccessorService,NosCore.GameObject.Services.MinilandService.IMinilandService,NosCore.PathFinder.Interfaces.IHeuristic)</Name> <FileRef uid="205" /> <SequencePoints> <SequencePoint vc="0" uspid="44" ordinal="0" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="205" /> <SequencePoint vc="0" uspid="45" ordinal="1" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="205" /> <SequencePoint vc="0" uspid="46" ordinal="2" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="205" /> <SequencePoint vc="0" uspid="47" ordinal="3" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="205" /> <SequencePoint vc="0" uspid="48" ordinal="4" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="205" /> <SequencePoint vc="0" uspid="49" ordinal="5" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="205" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="44" ec="1" el="49" bec="0" bev="0" fileid="205" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="31" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Movement.SitPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="27" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Movement.SitPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Movement.SitPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="206" /> <SequencePoints> <SequencePoint vc="0" uspid="45" ordinal="0" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="46" ordinal="1" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="47" ordinal="2" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="48" ordinal="3" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="49" ordinal="4" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="50" ordinal="5" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="51" ordinal="6" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="52" ordinal="7" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="53" ordinal="8" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="54" ordinal="9" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="55" ordinal="10" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="56" ordinal="11" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="57" ordinal="12" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="58" ordinal="13" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="59" ordinal="14" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="60" ordinal="15" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="61" ordinal="16" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="62" ordinal="17" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="63" ordinal="18" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="64" ordinal="19" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="65" ordinal="20" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="66" ordinal="21" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="67" ordinal="22" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="68" ordinal="23" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="69" ordinal="24" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="70" ordinal="25" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="71" ordinal="26" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="206" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="45" ec="1" el="71" bec="0" bev="0" fileid="206" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Movement.SitPacketHandler::.ctor(Serilog.ILogger)</Name> <FileRef uid="206" /> <SequencePoints> <SequencePoint vc="0" uspid="39" ordinal="0" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="40" ordinal="1" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="41" ordinal="2" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="206" /> <SequencePoint vc="0" uspid="42" ordinal="3" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="206" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="39" ec="1" el="42" bec="0" bev="0" fileid="206" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Movement.WalkPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Movement.WalkPacketHandler::.ctor(NosCore.PathFinder.Interfaces.IHeuristic,Serilog.ILogger)</Name> <FileRef uid="207" /> <SequencePoints> <SequencePoint vc="0" uspid="41" ordinal="0" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="207" /> <SequencePoint vc="0" uspid="42" ordinal="1" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="207" /> <SequencePoint vc="0" uspid="43" ordinal="2" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="207" /> <SequencePoint vc="0" uspid="44" ordinal="3" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="207" /> <SequencePoint vc="0" uspid="45" ordinal="4" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="207" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="41" ec="1" el="45" bec="0" bev="0" fileid="207" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Miniland.AddobjPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Miniland.AddobjPacketHandler::.ctor(NosCore.GameObject.Services.MinilandService.IMinilandService)</Name> <FileRef uid="208" /> <SequencePoints> <SequencePoint vc="0" uspid="45" ordinal="0" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="208" /> <SequencePoint vc="0" uspid="46" ordinal="1" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="208" /> <SequencePoint vc="0" uspid="47" ordinal="2" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="208" /> <SequencePoint vc="0" uspid="48" ordinal="3" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="208" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="45" ec="1" el="48" bec="0" bev="0" fileid="208" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Miniland.MJoinPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Miniland.MJoinPacketHandler::.ctor(NosCore.GameObject.HttpClients.FriendHttpClient.IFriendHub,NosCore.GameObject.Services.MinilandService.IMinilandService)</Name> <FileRef uid="209" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="209" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="209" /> <SequencePoint vc="0" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="209" /> <SequencePoint vc="0" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="209" /> <SequencePoint vc="0" uspid="44" ordinal="4" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="209" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="40" ec="1" el="44" bec="0" bev="0" fileid="209" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Miniland.MlEditPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Miniland.MlEditPacketHandler::.ctor(NosCore.GameObject.Services.MinilandService.IMinilandService)</Name> <FileRef uid="210" /> <SequencePoints> <SequencePoint vc="0" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="210" /> <SequencePoint vc="0" uspid="36" ordinal="1" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="210" /> <SequencePoint vc="0" uspid="37" ordinal="2" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="210" /> <SequencePoint vc="0" uspid="38" ordinal="3" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="210" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="35" ec="1" el="38" bec="0" bev="0" fileid="210" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Miniland.RmvobjPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Miniland.RmvobjPacketHandler::.ctor(NosCore.GameObject.Services.MinilandService.IMinilandService)</Name> <FileRef uid="211" /> <SequencePoints> <SequencePoint vc="0" uspid="41" ordinal="0" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="211" /> <SequencePoint vc="0" uspid="42" ordinal="1" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="211" /> <SequencePoint vc="0" uspid="43" ordinal="2" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="211" /> <SequencePoint vc="0" uspid="44" ordinal="3" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="211" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="41" ec="1" el="44" bec="0" bev="0" fileid="211" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="56" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="5" /> <FullName>NosCore.PacketHandlers.Miniland.MinilandObjects.MgPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Miniland.MinilandObjects.MgPacketHandler::ShowMinilandManagmentAsync()</Name> <FileRef uid="212" /> <SequencePoints> <SequencePoint vc="0" uspid="144" ordinal="0" sl="144" sc="1" el="144" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="145" ordinal="1" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="146" ordinal="2" sl="146" sc="1" el="146" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="147" ordinal="3" sl="147" sc="1" el="147" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="148" ordinal="4" sl="148" sc="1" el="148" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="149" ordinal="5" sl="149" sc="1" el="149" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="150" ordinal="6" sl="150" sc="1" el="150" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="151" ordinal="7" sl="151" sc="1" el="151" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="152" ordinal="8" sl="152" sc="1" el="152" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="153" ordinal="9" sl="153" sc="1" el="153" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="154" ordinal="10" sl="154" sc="1" el="154" ec="2" bec="0" bev="0" fileid="212" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="144" ec="1" el="154" bec="0" bev="0" fileid="212" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="14" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Miniland.MinilandObjects.MgPacketHandler::ShowGiftsAsync()</Name> <FileRef uid="212" /> <SequencePoints> <SequencePoint vc="0" uspid="230" ordinal="0" sl="230" sc="1" el="230" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="231" ordinal="1" sl="231" sc="1" el="231" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="232" ordinal="2" sl="232" sc="1" el="232" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="233" ordinal="3" sl="233" sc="1" el="233" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="234" ordinal="4" sl="234" sc="1" el="234" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="235" ordinal="5" sl="235" sc="1" el="235" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="236" ordinal="6" sl="236" sc="1" el="236" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="237" ordinal="7" sl="237" sc="1" el="237" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="238" ordinal="8" sl="238" sc="1" el="238" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="239" ordinal="9" sl="239" sc="1" el="239" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="240" ordinal="10" sl="240" sc="1" el="240" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="241" ordinal="11" sl="241" sc="1" el="241" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="242" ordinal="12" sl="242" sc="1" el="242" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="243" ordinal="13" sl="243" sc="1" el="243" ec="2" bec="0" bev="0" fileid="212" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="230" ec="1" el="243" bec="0" bev="0" fileid="212" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="17" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Miniland.MinilandObjects.MgPacketHandler::ShowGiftsAsync(NosCore.Packets.ServerPackets.Miniland.MloPmgSubPacket[])</Name> <FileRef uid="212" /> <SequencePoints> <SequencePoint vc="0" uspid="246" ordinal="0" sl="246" sc="1" el="246" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="247" ordinal="1" sl="247" sc="1" el="247" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="248" ordinal="2" sl="248" sc="1" el="248" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="249" ordinal="3" sl="249" sc="1" el="249" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="250" ordinal="4" sl="250" sc="1" el="250" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="251" ordinal="5" sl="251" sc="1" el="251" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="252" ordinal="6" sl="252" sc="1" el="252" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="253" ordinal="7" sl="253" sc="1" el="253" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="254" ordinal="8" sl="254" sc="1" el="254" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="255" ordinal="9" sl="255" sc="1" el="255" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="256" ordinal="10" sl="256" sc="1" el="256" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="257" ordinal="11" sl="257" sc="1" el="257" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="258" ordinal="12" sl="258" sc="1" el="258" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="259" ordinal="13" sl="259" sc="1" el="259" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="260" ordinal="14" sl="260" sc="1" el="260" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="261" ordinal="15" sl="261" sc="1" el="261" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="262" ordinal="16" sl="262" sc="1" el="262" ec="2" bec="0" bev="0" fileid="212" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="246" ec="1" el="262" bec="0" bev="0" fileid="212" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Miniland.MinilandObjects.MgPacketHandler::BroadcastEffectAsync()</Name> <FileRef uid="212" /> <SequencePoints> <SequencePoint vc="0" uspid="366" ordinal="0" sl="366" sc="1" el="366" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="367" ordinal="1" sl="367" sc="1" el="367" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="368" ordinal="2" sl="368" sc="1" el="368" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="369" ordinal="3" sl="369" sc="1" el="369" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="370" ordinal="4" sl="370" sc="1" el="370" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="371" ordinal="5" sl="371" sc="1" el="371" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="372" ordinal="6" sl="372" sc="1" el="372" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="373" ordinal="7" sl="373" sc="1" el="373" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="374" ordinal="8" sl="374" sc="1" el="374" ec="2" bec="0" bev="0" fileid="212" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="366" ec="1" el="374" bec="0" bev="0" fileid="212" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Miniland.MinilandObjects.MgPacketHandler::.ctor(NosCore.GameObject.Services.MinilandService.IMinilandService,NosCore.GameObject.Services.ItemGenerationService.IItemGenerationService)</Name> <FileRef uid="212" /> <SequencePoints> <SequencePoint vc="0" uspid="54" ordinal="0" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="55" ordinal="1" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="56" ordinal="2" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="57" ordinal="3" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="212" /> <SequencePoint vc="0" uspid="58" ordinal="4" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="212" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="54" ec="1" el="58" bec="0" bev="0" fileid="212" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Miniland.MinilandObjects.UseobjPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Miniland.MinilandObjects.UseobjPacketHandler::.ctor(NosCore.GameObject.Services.MinilandService.IMinilandService,NosCore.GameObject.HttpClients.WarehouseHttpClient.IWarehouseHub)</Name> <FileRef uid="213" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="213" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="213" /> <SequencePoint vc="0" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="213" /> <SequencePoint vc="0" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="213" /> <SequencePoint vc="0" uspid="44" ordinal="4" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="213" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="40" ec="1" el="44" bec="0" bev="0" fileid="213" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="15" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Login.NoS0575PacketHandler</FullName> <Methods> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Login.NoS0575PacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Login.NoS0575Packet,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="214" /> <SequencePoints> <SequencePoint vc="0" uspid="47" ordinal="0" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="214" /> <SequencePoint vc="0" uspid="48" ordinal="1" sl="48" sc="1" el="48" ec="2" bec="2" bev="0" fileid="214" /> <SequencePoint vc="0" uspid="49" ordinal="2" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="214" /> <SequencePoint vc="0" uspid="50" ordinal="3" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="214" /> <SequencePoint vc="0" uspid="51" ordinal="4" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="214" /> <SequencePoint vc="0" uspid="52" ordinal="5" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="214" /> <SequencePoint vc="0" uspid="55" ordinal="6" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="214" /> <SequencePoint vc="0" uspid="56" ordinal="7" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="214" /> <SequencePoint vc="0" uspid="58" ordinal="8" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="214" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="48" ordinal="0" path="0" offset="22" offsetend="24" sl="48" fileid="214" /> <BranchPoint vc="0" uspid="48" ordinal="1" path="1" offset="22" offsetend="71" sl="48" fileid="214" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="47" ec="1" el="58" bec="0" bev="0" fileid="214" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Login.NoS0575PacketHandler::.ctor(NosCore.GameObject.Networking.LoginService.ILoginService,Microsoft.Extensions.Options.IOptions`1<NosCore.Core.Configuration.LoginConfiguration>,Serilog.ILogger)</Name> <FileRef uid="214" /> <SequencePoints> <SequencePoint vc="0" uspid="39" ordinal="0" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="214" /> <SequencePoint vc="0" uspid="40" ordinal="1" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="214" /> <SequencePoint vc="0" uspid="41" ordinal="2" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="214" /> <SequencePoint vc="0" uspid="42" ordinal="3" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="214" /> <SequencePoint vc="0" uspid="43" ordinal="4" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="214" /> <SequencePoint vc="0" uspid="44" ordinal="5" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="214" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="39" ec="1" el="44" bec="0" bev="0" fileid="214" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Login.NoS0577PacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Login.NoS0577PacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Login.NoS0577Packet,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="215" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="215" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="215" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="215" /> <SequencePoint vc="0" uspid="41" ordinal="3" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="215" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="38" ec="1" el="41" bec="0" bev="0" fileid="215" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Login.NoS0577PacketHandler::.ctor(NosCore.GameObject.Networking.LoginService.ILoginService)</Name> <FileRef uid="215" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="215" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="215" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="215" /> <SequencePoint vc="0" uspid="35" ordinal="3" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="215" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="32" ec="1" el="35" bec="0" bev="0" fileid="215" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Inventory.BiPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Inventory.BiPacketHandler::.ctor(Serilog.ILogger)</Name> <FileRef uid="216" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="216" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="216" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="216" /> <SequencePoint vc="0" uspid="41" ordinal="3" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="216" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="38" ec="1" el="41" bec="0" bev="0" fileid="216" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Inventory.GetPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Inventory.GetPacketHandler::.ctor(Serilog.ILogger,NosCore.PathFinder.Interfaces.IHeuristic)</Name> <FileRef uid="217" /> <SequencePoints> <SequencePoint vc="0" uspid="42" ordinal="0" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="217" /> <SequencePoint vc="0" uspid="43" ordinal="1" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="217" /> <SequencePoint vc="0" uspid="44" ordinal="2" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="217" /> <SequencePoint vc="0" uspid="45" ordinal="3" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="217" /> <SequencePoint vc="0" uspid="46" ordinal="4" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="217" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="42" ec="1" el="46" bec="0" bev="0" fileid="217" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Inventory.PutPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Inventory.PutPacketHandler::.ctor(Microsoft.Extensions.Options.IOptions`1<NosCore.Core.Configuration.WorldConfiguration>)</Name> <FileRef uid="218" /> <SequencePoints> <SequencePoint vc="0" uspid="41" ordinal="0" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="218" /> <SequencePoint vc="0" uspid="42" ordinal="1" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="218" /> <SequencePoint vc="0" uspid="43" ordinal="2" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="218" /> <SequencePoint vc="0" uspid="44" ordinal="3" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="218" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="41" ec="1" el="44" bec="0" bev="0" fileid="218" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="16" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="16" minCyclomaticComplexity="16" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Inventory.UseItemPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="16" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="16" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="16" minCyclomaticComplexity="16" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Inventory.UseItemPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Inventory.UseItemPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="219" /> <SequencePoints> <SequencePoint vc="0" uspid="34" ordinal="0" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="219" /> <SequencePoint vc="0" uspid="35" ordinal="1" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="219" /> <SequencePoint vc="0" uspid="36" ordinal="2" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="219" /> <SequencePoint vc="0" uspid="37" ordinal="3" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="219" /> <SequencePoint vc="0" uspid="39" ordinal="4" sl="39" sc="1" el="39" ec="2" bec="8" bev="0" fileid="219" /> <SequencePoint vc="0" uspid="40" ordinal="5" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="219" /> <SequencePoint vc="0" uspid="42" ordinal="6" sl="42" sc="1" el="42" ec="2" bec="8" bev="0" fileid="219" /> <SequencePoint vc="0" uspid="43" ordinal="7" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="219" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="39" ordinal="1" path="1" offset="31" offsetend="35" sl="39" fileid="219" /> <BranchPoint vc="0" uspid="39" ordinal="2" path="0" offset="42" offsetend="44" sl="39" fileid="219" /> <BranchPoint vc="0" uspid="39" ordinal="3" path="1" offset="42" offsetend="47" sl="39" fileid="219" /> <BranchPoint vc="0" uspid="39" ordinal="4" path="0" offset="53" offsetend="55" sl="39" fileid="219" /> <BranchPoint vc="0" uspid="39" ordinal="5" path="1" offset="53" offsetend="58" sl="39" fileid="219" /> <BranchPoint vc="0" uspid="39" ordinal="6" path="0" offset="79" offsetend="81" sl="39" fileid="219" /> <BranchPoint vc="0" uspid="39" ordinal="7" path="1" offset="79" offsetend="84" sl="39" fileid="219" /> <BranchPoint vc="0" uspid="39" ordinal="0" path="0" offset="31" offsetend="103" sl="39" fileid="219" /> <BranchPoint vc="0" uspid="42" ordinal="8" path="0" offset="104" offsetend="106" sl="42" fileid="219" /> <BranchPoint vc="0" uspid="42" ordinal="9" path="1" offset="104" offsetend="109" sl="42" fileid="219" /> <BranchPoint vc="0" uspid="42" ordinal="10" path="0" offset="116" offsetend="118" sl="42" fileid="219" /> <BranchPoint vc="0" uspid="42" ordinal="11" path="1" offset="116" offsetend="122" sl="42" fileid="219" /> <BranchPoint vc="0" uspid="42" ordinal="12" path="0" offset="128" offsetend="130" sl="42" fileid="219" /> <BranchPoint vc="0" uspid="42" ordinal="13" path="1" offset="128" offsetend="134" sl="42" fileid="219" /> <BranchPoint vc="0" uspid="42" ordinal="14" path="0" offset="139" offsetend="141" sl="42" fileid="219" /> <BranchPoint vc="0" uspid="42" ordinal="15" path="1" offset="139" offsetend="164" sl="42" fileid="219" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="34" ec="1" el="43" bec="0" bev="0" fileid="219" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="10" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Inventory.WearPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="10" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Inventory.WearPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Inventory.WearPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="220" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="220" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="220" /> <SequencePoint vc="0" uspid="32" ordinal="2" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="220" /> <SequencePoint vc="0" uspid="33" ordinal="3" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="220" /> <SequencePoint vc="0" uspid="34" ordinal="4" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="220" /> <SequencePoint vc="0" uspid="35" ordinal="5" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="220" /> <SequencePoint vc="0" uspid="36" ordinal="6" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="220" /> <SequencePoint vc="0" uspid="37" ordinal="7" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="220" /> <SequencePoint vc="0" uspid="38" ordinal="8" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="220" /> <SequencePoint vc="0" uspid="39" ordinal="9" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="220" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="30" ec="1" el="39" bec="0" bev="0" fileid="220" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Group.GroupTalkPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Group.GroupTalkPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Chat.GroupTalkPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="221" /> <SequencePoints> <SequencePoint vc="0" uspid="34" ordinal="0" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="221" /> <SequencePoint vc="0" uspid="35" ordinal="1" sl="35" sc="1" el="35" ec="2" bec="2" bev="0" fileid="221" /> <SequencePoint vc="0" uspid="36" ordinal="2" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="221" /> <SequencePoint vc="0" uspid="37" ordinal="3" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="221" /> <SequencePoint vc="0" uspid="40" ordinal="4" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="221" /> <SequencePoint vc="0" uspid="41" ordinal="5" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="221" /> <SequencePoint vc="0" uspid="42" ordinal="6" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="221" /> <SequencePoint vc="0" uspid="43" ordinal="7" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="221" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="35" ordinal="0" path="0" offset="22" offsetend="24" sl="35" fileid="221" /> <BranchPoint vc="0" uspid="35" ordinal="1" path="1" offset="22" offsetend="33" sl="35" fileid="221" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="34" ec="1" el="43" bec="0" bev="0" fileid="221" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Group.PjoinPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Group.PjoinPacketHandler::.ctor(Serilog.ILogger,NosCore.GameObject.HttpClients.BlacklistHttpClient.IBlacklistHub)</Name> <FileRef uid="222" /> <SequencePoints> <SequencePoint vc="0" uspid="48" ordinal="0" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="222" /> <SequencePoint vc="0" uspid="49" ordinal="1" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="222" /> <SequencePoint vc="0" uspid="50" ordinal="2" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="222" /> <SequencePoint vc="0" uspid="51" ordinal="3" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="222" /> <SequencePoint vc="0" uspid="52" ordinal="4" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="222" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="48" ec="1" el="52" bec="0" bev="0" fileid="222" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="16" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Game.GameStartPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="16" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Game.GameStartPacketHandler::.ctor(Microsoft.Extensions.Options.IOptions`1<NosCore.Core.Configuration.WorldConfiguration>,NosCore.GameObject.HttpClients.FriendHttpClient.IFriendHub,NosCore.Core.HttpClients.ChannelHttpClients.IChannelHub,NosCore.Core.HttpClients.ConnectedAccountHttpClients.IConnectedAccountHttpClient,NosCore.GameObject.HttpClients.BlacklistHttpClient.IBlacklistHub,NosCore.GameObject.HttpClients.PacketHttpClient.IPacketHttpClient,NosCore.Packets.Interfaces.ISerializer,NosCore.GameObject.HttpClients.MailHttpClient.IMailHub,NosCore.GameObject.Services.QuestService.IQuestService)</Name> <FileRef uid="223" /> <SequencePoints> <SequencePoint vc="0" uspid="56" ordinal="0" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="223" /> <SequencePoint vc="0" uspid="57" ordinal="1" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="223" /> <SequencePoint vc="0" uspid="58" ordinal="2" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="223" /> <SequencePoint vc="0" uspid="59" ordinal="3" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="223" /> <SequencePoint vc="0" uspid="60" ordinal="4" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="223" /> <SequencePoint vc="0" uspid="61" ordinal="5" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="223" /> <SequencePoint vc="0" uspid="62" ordinal="6" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="223" /> <SequencePoint vc="0" uspid="63" ordinal="7" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="223" /> <SequencePoint vc="0" uspid="64" ordinal="8" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="223" /> <SequencePoint vc="0" uspid="65" ordinal="9" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="223" /> <SequencePoint vc="0" uspid="66" ordinal="10" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="223" /> <SequencePoint vc="0" uspid="67" ordinal="11" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="223" /> <SequencePoint vc="0" uspid="68" ordinal="12" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="223" /> <SequencePoint vc="0" uspid="69" ordinal="13" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="223" /> <SequencePoint vc="0" uspid="70" ordinal="14" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="223" /> <SequencePoint vc="0" uspid="71" ordinal="15" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="223" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="56" ec="1" el="71" bec="0" bev="0" fileid="223" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Game.GuriPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Game.GuriPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.UI.GuriPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="224" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="224" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="224" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="224" /> <SequencePoint vc="0" uspid="41" ordinal="3" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="224" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="38" ec="1" el="41" bec="0" bev="0" fileid="224" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Game.GuriPacketHandler::.ctor(NosCore.GameObject.Services.GuriRunnerService.IGuriRunnerService)</Name> <FileRef uid="224" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="224" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="224" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="224" /> <SequencePoint vc="0" uspid="35" ordinal="3" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="224" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="32" ec="1" el="35" bec="0" bev="0" fileid="224" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Game.NcifPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Game.NcifPacketHandler::.ctor(Serilog.ILogger)</Name> <FileRef uid="225" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="225" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="225" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="225" /> <SequencePoint vc="0" uspid="41" ordinal="3" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="225" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="38" ec="1" el="41" bec="0" bev="0" fileid="225" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Friend.BlDelPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Friend.BlDelPacketHandler::.ctor(NosCore.GameObject.HttpClients.BlacklistHttpClient.IBlacklistHub)</Name> <FileRef uid="226" /> <SequencePoints> <SequencePoint vc="0" uspid="37" ordinal="0" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="226" /> <SequencePoint vc="0" uspid="38" ordinal="1" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="226" /> <SequencePoint vc="0" uspid="39" ordinal="2" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="226" /> <SequencePoint vc="0" uspid="40" ordinal="3" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="226" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="37" ec="1" el="40" bec="0" bev="0" fileid="226" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Friend.BlInsPackettHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Friend.BlInsPackettHandler::.ctor(NosCore.GameObject.HttpClients.BlacklistHttpClient.IBlacklistHub,Serilog.ILogger)</Name> <FileRef uid="227" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="227" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="227" /> <SequencePoint vc="0" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="227" /> <SequencePoint vc="0" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="227" /> <SequencePoint vc="0" uspid="44" ordinal="4" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="227" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="40" ec="1" el="44" bec="0" bev="0" fileid="227" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="16" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Friend.BlPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="16" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Friend.BlPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Relations.BlPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="228" /> <SequencePoints> <SequencePoint vc="0" uspid="34" ordinal="0" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="228" /> <SequencePoint vc="0" uspid="35" ordinal="1" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="228" /> <SequencePoint vc="0" uspid="36" ordinal="2" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="228" /> <SequencePoint vc="0" uspid="38" ordinal="3" sl="38" sc="1" el="38" ec="2" bec="2" bev="0" fileid="228" /> <SequencePoint vc="0" uspid="39" ordinal="4" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="228" /> <SequencePoint vc="0" uspid="40" ordinal="5" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="228" /> <SequencePoint vc="0" uspid="41" ordinal="6" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="228" /> <SequencePoint vc="0" uspid="42" ordinal="7" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="228" /> <SequencePoint vc="0" uspid="43" ordinal="8" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="228" /> <SequencePoint vc="0" uspid="44" ordinal="9" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="228" /> <SequencePoint vc="0" uspid="47" ordinal="10" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="228" /> <SequencePoint vc="0" uspid="48" ordinal="11" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="228" /> <SequencePoint vc="0" uspid="49" ordinal="12" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="228" /> <SequencePoint vc="0" uspid="50" ordinal="13" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="228" /> <SequencePoint vc="0" uspid="52" ordinal="14" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="228" /> <SequencePoint vc="0" uspid="53" ordinal="15" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="228" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="38" ordinal="0" path="0" offset="43" offsetend="45" sl="38" fileid="228" /> <BranchPoint vc="0" uspid="38" ordinal="1" path="1" offset="43" offsetend="91" sl="38" fileid="228" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="34" ec="1" el="53" bec="0" bev="0" fileid="228" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Friend.FdelPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Friend.FdelPacketHandler::.ctor(NosCore.GameObject.HttpClients.FriendHttpClient.IFriendHub,NosCore.Core.HttpClients.ChannelHttpClients.IChannelHub,NosCore.Core.HttpClients.ConnectedAccountHttpClients.IConnectedAccountHttpClient)</Name> <FileRef uid="229" /> <SequencePoints> <SequencePoint vc="0" uspid="42" ordinal="0" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="229" /> <SequencePoint vc="0" uspid="43" ordinal="1" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="229" /> <SequencePoint vc="0" uspid="44" ordinal="2" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="229" /> <SequencePoint vc="0" uspid="45" ordinal="3" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="229" /> <SequencePoint vc="0" uspid="46" ordinal="4" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="229" /> <SequencePoint vc="0" uspid="47" ordinal="5" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="229" /> <SequencePoint vc="0" uspid="48" ordinal="6" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="229" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="42" ec="1" el="48" bec="0" bev="0" fileid="229" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Friend.FinsPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Friend.FinsPacketHandler::.ctor(NosCore.GameObject.HttpClients.FriendHttpClient.IFriendHub,NosCore.Core.HttpClients.ChannelHttpClients.IChannelHub,NosCore.Core.HttpClients.ConnectedAccountHttpClients.IConnectedAccountHttpClient)</Name> <FileRef uid="230" /> <SequencePoints> <SequencePoint vc="0" uspid="44" ordinal="0" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="230" /> <SequencePoint vc="0" uspid="45" ordinal="1" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="230" /> <SequencePoint vc="0" uspid="46" ordinal="2" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="230" /> <SequencePoint vc="0" uspid="47" ordinal="3" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="230" /> <SequencePoint vc="0" uspid="48" ordinal="4" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="230" /> <SequencePoint vc="0" uspid="49" ordinal="5" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="230" /> <SequencePoint vc="0" uspid="50" ordinal="6" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="230" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="44" ec="1" el="50" bec="0" bev="0" fileid="230" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Exchange.ExchangeRequestPackettHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Exchange.ExchangeRequestPackettHandler::.ctor(NosCore.GameObject.Services.ExchangeService.IExchangeService,Serilog.ILogger,NosCore.GameObject.HttpClients.BlacklistHttpClient.IBlacklistHub)</Name> <FileRef uid="231" /> <SequencePoints> <SequencePoint vc="0" uspid="47" ordinal="0" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="231" /> <SequencePoint vc="0" uspid="48" ordinal="1" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="231" /> <SequencePoint vc="0" uspid="49" ordinal="2" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="231" /> <SequencePoint vc="0" uspid="50" ordinal="3" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="231" /> <SequencePoint vc="0" uspid="51" ordinal="4" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="231" /> <SequencePoint vc="0" uspid="52" ordinal="5" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="231" /> <SequencePoint vc="0" uspid="53" ordinal="6" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="231" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="47" ec="1" el="53" bec="0" bev="0" fileid="231" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Exchange.ExcListPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Exchange.ExcListPacketHandler::.ctor(NosCore.GameObject.Services.ExchangeService.IExchangeService,Serilog.ILogger)</Name> <FileRef uid="232" /> <SequencePoints> <SequencePoint vc="0" uspid="42" ordinal="0" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="232" /> <SequencePoint vc="0" uspid="43" ordinal="1" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="232" /> <SequencePoint vc="0" uspid="44" ordinal="2" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="232" /> <SequencePoint vc="0" uspid="45" ordinal="3" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="232" /> <SequencePoint vc="0" uspid="46" ordinal="4" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="232" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="42" ec="1" el="46" bec="0" bev="0" fileid="232" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Command.ChangeChannelPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Command.ChangeChannelPacketHandler::ExecuteAsync(NosCore.Data.CommandPackets.ChangeChannelPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="233" /> <SequencePoints> <SequencePoint vc="0" uspid="37" ordinal="0" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="233" /> <SequencePoint vc="0" uspid="38" ordinal="1" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="233" /> <SequencePoint vc="0" uspid="39" ordinal="2" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="233" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="37" ec="1" el="39" bec="0" bev="0" fileid="233" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Command.ChangeChannelPacketHandler::.ctor(NosCore.GameObject.Networking.LoginService.ILoginService)</Name> <FileRef uid="233" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="233" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="233" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="233" /> <SequencePoint vc="0" uspid="35" ordinal="3" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="233" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="32" ec="1" el="35" bec="0" bev="0" fileid="233" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Command.ChangeClassPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Command.ChangeClassPacketHandler::.ctor(NosCore.GameObject.HttpClients.StatHttpClient.IStatHttpClient,NosCore.Core.HttpClients.ConnectedAccountHttpClients.IConnectedAccountHttpClient)</Name> <FileRef uid="234" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="234" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="234" /> <SequencePoint vc="0" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="234" /> <SequencePoint vc="0" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="234" /> <SequencePoint vc="0" uspid="44" ordinal="4" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="234" /> <SequencePoint vc="0" uspid="45" ordinal="5" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="234" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="40" ec="1" el="45" bec="0" bev="0" fileid="234" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Command.CreateItemPackettHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Command.CreateItemPackettHandler::.ctor(Serilog.ILogger,System.Collections.Generic.List`1<NosCore.Data.StaticEntities.ItemDto>,Microsoft.Extensions.Options.IOptions`1<NosCore.Core.Configuration.WorldConfiguration>,NosCore.GameObject.Services.ItemGenerationService.IItemGenerationService)</Name> <FileRef uid="235" /> <SequencePoints> <SequencePoint vc="0" uspid="51" ordinal="0" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="235" /> <SequencePoint vc="0" uspid="52" ordinal="1" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="235" /> <SequencePoint vc="0" uspid="53" ordinal="2" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="235" /> <SequencePoint vc="0" uspid="54" ordinal="3" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="235" /> <SequencePoint vc="0" uspid="55" ordinal="4" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="235" /> <SequencePoint vc="0" uspid="56" ordinal="5" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="235" /> <SequencePoint vc="0" uspid="57" ordinal="6" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="235" /> <SequencePoint vc="0" uspid="58" ordinal="7" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="235" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="51" ec="1" el="58" bec="0" bev="0" fileid="235" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Command.EffectCommandPackettHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Command.EffectCommandPackettHandler::ExecuteAsync(NosCore.Data.CommandPackets.EffectCommandPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="236" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="236" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="236" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="236" /> <SequencePoint vc="0" uspid="35" ordinal="3" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="236" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="35" bec="0" bev="0" fileid="236" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Command.GiftPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Command.GiftPacketHandler::.ctor(NosCore.Core.HttpClients.ConnectedAccountHttpClients.IConnectedAccountHttpClient,NosCore.GameObject.HttpClients.MailHttpClient.IMailHub)</Name> <FileRef uid="237" /> <SequencePoints> <SequencePoint vc="0" uspid="39" ordinal="0" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="237" /> <SequencePoint vc="0" uspid="40" ordinal="1" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="237" /> <SequencePoint vc="0" uspid="41" ordinal="2" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="237" /> <SequencePoint vc="0" uspid="42" ordinal="3" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="237" /> <SequencePoint vc="0" uspid="43" ordinal="4" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="237" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="39" ec="1" el="43" bec="0" bev="0" fileid="237" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Command.InvisibleCommandPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Command.InvisibleCommandPacketHandler::ExecuteAsync(NosCore.Data.CommandPackets.InvisibleCommandPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="238" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="238" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="238" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="238" /> <SequencePoint vc="0" uspid="35" ordinal="3" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="238" /> <SequencePoint vc="0" uspid="37" ordinal="4" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="238" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="37" bec="0" bev="0" fileid="238" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Command.KickPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Command.KickPacketHandler::.ctor(NosCore.Core.HttpClients.ConnectedAccountHttpClients.IConnectedAccountHttpClient)</Name> <FileRef uid="239" /> <SequencePoints> <SequencePoint vc="0" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="239" /> <SequencePoint vc="0" uspid="36" ordinal="1" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="239" /> <SequencePoint vc="0" uspid="37" ordinal="2" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="239" /> <SequencePoint vc="0" uspid="38" ordinal="3" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="239" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="35" ec="1" el="38" bec="0" bev="0" fileid="239" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Command.PositionPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Command.PositionPacketHandler::ExecuteAsync(NosCore.Data.CommandPackets.PositionPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="240" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="240" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="240" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="240" /> <SequencePoint vc="0" uspid="35" ordinal="3" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="240" /> <SequencePoint vc="0" uspid="36" ordinal="4" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="240" /> <SequencePoint vc="0" uspid="37" ordinal="5" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="240" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="37" bec="0" bev="0" fileid="240" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Command.SetGoldCommandPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Command.SetGoldCommandPacketHandler::.ctor(NosCore.Core.HttpClients.ConnectedAccountHttpClients.IConnectedAccountHttpClient,NosCore.GameObject.HttpClients.StatHttpClient.IStatHttpClient)</Name> <FileRef uid="241" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="241" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="241" /> <SequencePoint vc="0" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="241" /> <SequencePoint vc="0" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="241" /> <SequencePoint vc="0" uspid="44" ordinal="4" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="241" /> <SequencePoint vc="0" uspid="45" ordinal="5" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="241" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="40" ec="1" el="45" bec="0" bev="0" fileid="241" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Command.SetHeroLevelCommandPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Command.SetHeroLevelCommandPacketHandler::.ctor(NosCore.Core.HttpClients.ConnectedAccountHttpClients.IConnectedAccountHttpClient,NosCore.Core.HttpClients.ChannelHttpClients.IChannelHub,NosCore.GameObject.HttpClients.StatHttpClient.IStatHttpClient)</Name> <FileRef uid="242" /> <SequencePoints> <SequencePoint vc="0" uspid="47" ordinal="0" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="242" /> <SequencePoint vc="0" uspid="48" ordinal="1" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="242" /> <SequencePoint vc="0" uspid="49" ordinal="2" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="242" /> <SequencePoint vc="0" uspid="50" ordinal="3" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="242" /> <SequencePoint vc="0" uspid="51" ordinal="4" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="242" /> <SequencePoint vc="0" uspid="52" ordinal="5" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="242" /> <SequencePoint vc="0" uspid="53" ordinal="6" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="242" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="47" ec="1" el="53" bec="0" bev="0" fileid="242" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Command.SetJobLevelCommandPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Command.SetJobLevelCommandPacketHandler::.ctor(NosCore.Core.HttpClients.ConnectedAccountHttpClients.IConnectedAccountHttpClient,NosCore.GameObject.HttpClients.StatHttpClient.IStatHttpClient)</Name> <FileRef uid="243" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="243" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="243" /> <SequencePoint vc="0" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="243" /> <SequencePoint vc="0" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="243" /> <SequencePoint vc="0" uspid="44" ordinal="4" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="243" /> <SequencePoint vc="0" uspid="45" ordinal="5" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="243" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="40" ec="1" el="45" bec="0" bev="0" fileid="243" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Command.SetLevelCommandPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Command.SetLevelCommandPacketHandler::.ctor(NosCore.Core.HttpClients.ChannelHttpClients.IChannelHub,NosCore.GameObject.HttpClients.StatHttpClient.IStatHttpClient,NosCore.Core.HttpClients.ConnectedAccountHttpClients.IConnectedAccountHttpClient)</Name> <FileRef uid="244" /> <SequencePoints> <SequencePoint vc="0" uspid="47" ordinal="0" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="244" /> <SequencePoint vc="0" uspid="48" ordinal="1" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="244" /> <SequencePoint vc="0" uspid="49" ordinal="2" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="244" /> <SequencePoint vc="0" uspid="50" ordinal="3" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="244" /> <SequencePoint vc="0" uspid="51" ordinal="4" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="244" /> <SequencePoint vc="0" uspid="52" ordinal="5" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="244" /> <SequencePoint vc="0" uspid="53" ordinal="6" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="244" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="47" ec="1" el="53" bec="0" bev="0" fileid="244" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Command.SetMaintenancePacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Command.SetMaintenancePacketHandler::.ctor(NosCore.Core.HttpClients.ChannelHttpClients.IChannelHub,NosCore.Core.Channel)</Name> <FileRef uid="245" /> <SequencePoints> <SequencePoint vc="0" uspid="41" ordinal="0" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="245" /> <SequencePoint vc="0" uspid="42" ordinal="1" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="245" /> <SequencePoint vc="0" uspid="43" ordinal="2" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="245" /> <SequencePoint vc="0" uspid="44" ordinal="3" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="245" /> <SequencePoint vc="0" uspid="45" ordinal="4" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="245" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="41" ec="1" el="45" bec="0" bev="0" fileid="245" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Command.SetReputationPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Command.SetReputationPacketHandler::.ctor(NosCore.Core.HttpClients.ConnectedAccountHttpClients.IConnectedAccountHttpClient,NosCore.GameObject.HttpClients.StatHttpClient.IStatHttpClient)</Name> <FileRef uid="246" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="246" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="246" /> <SequencePoint vc="0" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="246" /> <SequencePoint vc="0" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="246" /> <SequencePoint vc="0" uspid="44" ordinal="4" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="246" /> <SequencePoint vc="0" uspid="45" ordinal="5" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="246" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="40" ec="1" el="45" bec="0" bev="0" fileid="246" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Command.ShoutPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Command.ShoutPacketHandler::.ctor(NosCore.Packets.Interfaces.ISerializer,NosCore.GameObject.HttpClients.PacketHttpClient.IPacketHttpClient)</Name> <FileRef uid="247" /> <SequencePoints> <SequencePoint vc="0" uspid="46" ordinal="0" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="247" /> <SequencePoint vc="0" uspid="47" ordinal="1" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="247" /> <SequencePoint vc="0" uspid="48" ordinal="2" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="247" /> <SequencePoint vc="0" uspid="49" ordinal="3" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="247" /> <SequencePoint vc="0" uspid="50" ordinal="4" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="247" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="46" ec="1" el="50" bec="0" bev="0" fileid="247" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="23" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Command.SizePacketHandler</FullName> <Methods> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="19" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Command.SizePacketHandler::ExecuteAsync(NosCore.Data.CommandPackets.SizePacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="248" /> <SequencePoints> <SequencePoint vc="0" uspid="44" ordinal="0" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="46" ordinal="1" sl="46" sc="1" el="46" ec="2" bec="4" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="49" ordinal="2" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="50" ordinal="3" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="52" ordinal="4" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="53" ordinal="5" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="55" ordinal="6" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="56" ordinal="7" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="58" ordinal="8" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="59" ordinal="9" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="60" ordinal="10" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="63" ordinal="11" sl="63" sc="1" el="63" ec="2" bec="2" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="64" ordinal="12" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="65" ordinal="13" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="66" ordinal="14" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="67" ordinal="15" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="69" ordinal="16" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="70" ordinal="17" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="71" ordinal="18" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="248" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="46" ordinal="1" path="1" offset="31" offsetend="50" sl="46" fileid="248" /> <BranchPoint vc="0" uspid="46" ordinal="3" path="3" offset="31" offsetend="59" sl="46" fileid="248" /> <BranchPoint vc="0" uspid="46" ordinal="2" path="2" offset="31" offsetend="95" sl="46" fileid="248" /> <BranchPoint vc="0" uspid="46" ordinal="0" path="0" offset="31" offsetend="131" sl="46" fileid="248" /> <BranchPoint vc="0" uspid="63" ordinal="4" path="0" offset="183" offsetend="185" sl="63" fileid="248" /> <BranchPoint vc="0" uspid="63" ordinal="5" path="1" offset="183" offsetend="230" sl="63" fileid="248" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="44" ec="1" el="71" bec="0" bev="0" fileid="248" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Command.SizePacketHandler::.ctor(Serilog.ILogger)</Name> <FileRef uid="248" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="248" /> <SequencePoint vc="0" uspid="41" ordinal="3" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="248" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="38" ec="1" el="41" bec="0" bev="0" fileid="248" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Command.SpeedPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Command.SpeedPacketHandler::ExecuteAsync(NosCore.Data.CommandPackets.SpeedPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="249" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="249" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="4" bev="0" fileid="249" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="249" /> <SequencePoint vc="0" uspid="35" ordinal="3" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="249" /> <SequencePoint vc="0" uspid="38" ordinal="4" sl="38" sc="1" el="38" ec="2" bec="2" bev="0" fileid="249" /> <SequencePoint vc="0" uspid="39" ordinal="5" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="249" /> <SequencePoint vc="0" uspid="41" ordinal="6" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="249" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="33" ordinal="0" path="0" offset="8" offsetend="10" sl="33" fileid="249" /> <BranchPoint vc="0" uspid="33" ordinal="1" path="1" offset="8" offsetend="25" sl="33" fileid="249" /> <BranchPoint vc="0" uspid="33" ordinal="2" path="0" offset="28" offsetend="30" sl="33" fileid="249" /> <BranchPoint vc="0" uspid="33" ordinal="3" path="1" offset="28" offsetend="59" sl="33" fileid="249" /> <BranchPoint vc="0" uspid="38" ordinal="4" path="0" offset="73" offsetend="75" sl="38" fileid="249" /> <BranchPoint vc="0" uspid="38" ordinal="5" path="1" offset="73" offsetend="83" sl="38" fileid="249" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="41" bec="0" bev="0" fileid="249" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="26" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Command.TeleportPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="21" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Command.TeleportPacketHandler::ExecuteAsync(NosCore.Data.CommandPackets.TeleportPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="250" /> <SequencePoints> <SequencePoint vc="0" uspid="44" ordinal="0" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="45" ordinal="1" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="46" ordinal="2" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="47" ordinal="3" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="49" ordinal="4" sl="49" sc="1" el="49" ec="2" bec="2" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="50" ordinal="5" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="51" ordinal="6" sl="51" sc="1" el="51" ec="2" bec="2" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="52" ordinal="7" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="53" ordinal="8" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="54" ordinal="9" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="57" ordinal="10" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="58" ordinal="11" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="59" ordinal="12" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="63" ordinal="13" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="65" ordinal="14" sl="65" sc="1" el="65" ec="2" bec="2" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="66" ordinal="15" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="67" ordinal="16" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="70" ordinal="17" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="71" ordinal="18" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="72" ordinal="19" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="74" ordinal="20" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="250" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="49" ordinal="0" path="0" offset="62" offsetend="64" sl="49" fileid="250" /> <BranchPoint vc="0" uspid="51" ordinal="2" path="0" offset="73" offsetend="75" sl="51" fileid="250" /> <BranchPoint vc="0" uspid="51" ordinal="3" path="1" offset="73" offsetend="117" sl="51" fileid="250" /> <BranchPoint vc="0" uspid="49" ordinal="1" path="1" offset="62" offsetend="161" sl="49" fileid="250" /> <BranchPoint vc="0" uspid="65" ordinal="4" path="0" offset="182" offsetend="184" sl="65" fileid="250" /> <BranchPoint vc="0" uspid="65" ordinal="5" path="1" offset="182" offsetend="223" sl="65" fileid="250" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="44" ec="1" el="74" bec="0" bev="0" fileid="250" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Command.TeleportPacketHandler::.ctor(Serilog.ILogger,NosCore.GameObject.Services.MapInstanceAccessService.IMapInstanceAccessorService)</Name> <FileRef uid="250" /> <SequencePoints> <SequencePoint vc="0" uspid="37" ordinal="0" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="38" ordinal="1" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="39" ordinal="2" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="40" ordinal="3" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="250" /> <SequencePoint vc="0" uspid="41" ordinal="4" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="250" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="37" ec="1" el="41" bec="0" bev="0" fileid="250" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="10" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Chat.BtkPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="10" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Chat.BtkPacketHandler::.ctor(Serilog.ILogger,NosCore.Packets.Interfaces.ISerializer,NosCore.GameObject.HttpClients.FriendHttpClient.IFriendHub,NosCore.GameObject.HttpClients.PacketHttpClient.IPacketHttpClient,NosCore.Core.HttpClients.ConnectedAccountHttpClients.IConnectedAccountHttpClient,NosCore.Core.Channel)</Name> <FileRef uid="251" /> <SequencePoints> <SequencePoint vc="0" uspid="53" ordinal="0" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="251" /> <SequencePoint vc="0" uspid="54" ordinal="1" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="251" /> <SequencePoint vc="0" uspid="55" ordinal="2" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="251" /> <SequencePoint vc="0" uspid="56" ordinal="3" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="251" /> <SequencePoint vc="0" uspid="57" ordinal="4" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="251" /> <SequencePoint vc="0" uspid="58" ordinal="5" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="251" /> <SequencePoint vc="0" uspid="59" ordinal="6" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="251" /> <SequencePoint vc="0" uspid="60" ordinal="7" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="251" /> <SequencePoint vc="0" uspid="61" ordinal="8" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="251" /> <SequencePoint vc="0" uspid="62" ordinal="9" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="251" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="53" ec="1" el="62" bec="0" bev="0" fileid="251" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Chat.ClientSayPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.PacketHandlers.Chat.ClientSayPacketHandler::ExecuteAsync(NosCore.Packets.ClientPackets.Chat.ClientSayPacket,NosCore.GameObject.Networking.ClientSession.ClientSession)</Name> <FileRef uid="252" /> <SequencePoints> <SequencePoint vc="0" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="252" /> <SequencePoint vc="0" uspid="38" ordinal="1" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="252" /> <SequencePoint vc="0" uspid="39" ordinal="2" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="252" /> <SequencePoint vc="0" uspid="40" ordinal="3" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="252" /> <SequencePoint vc="0" uspid="41" ordinal="4" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="252" /> <SequencePoint vc="0" uspid="42" ordinal="5" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="252" /> <SequencePoint vc="0" uspid="43" ordinal="6" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="252" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="35" ec="1" el="43" bec="0" bev="0" fileid="252" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Chat.WhisperPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Chat.WhisperPacketHandler::.ctor(Serilog.ILogger,NosCore.Packets.Interfaces.ISerializer,NosCore.GameObject.HttpClients.BlacklistHttpClient.IBlacklistHub,NosCore.Core.HttpClients.ConnectedAccountHttpClients.IConnectedAccountHttpClient,NosCore.GameObject.HttpClients.PacketHttpClient.IPacketHttpClient,NosCore.Core.Channel)</Name> <FileRef uid="253" /> <SequencePoints> <SequencePoint vc="0" uspid="56" ordinal="0" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="253" /> <SequencePoint vc="0" uspid="57" ordinal="1" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="253" /> <SequencePoint vc="0" uspid="58" ordinal="2" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="253" /> <SequencePoint vc="0" uspid="59" ordinal="3" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="253" /> <SequencePoint vc="0" uspid="60" ordinal="4" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="253" /> <SequencePoint vc="0" uspid="61" ordinal="5" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="253" /> <SequencePoint vc="0" uspid="62" ordinal="6" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="253" /> <SequencePoint vc="0" uspid="63" ordinal="7" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="253" /> <SequencePoint vc="0" uspid="64" ordinal="8" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="253" /> <SequencePoint vc="0" uspid="65" ordinal="9" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="253" /> <SequencePoint vc="0" uspid="66" ordinal="10" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="253" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="56" ec="1" el="66" bec="0" bev="0" fileid="253" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.CharacterScreen.CharacterDeletePacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.CharacterScreen.CharacterDeletePacketHandler::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.CharacterDto,System.Int64>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.AccountDto,System.Int64>,NosCore.Shared.Authentication.IHasher)</Name> <FileRef uid="254" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="254" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="254" /> <SequencePoint vc="0" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="254" /> <SequencePoint vc="0" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="254" /> <SequencePoint vc="0" uspid="44" ordinal="4" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="254" /> <SequencePoint vc="0" uspid="45" ordinal="5" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="254" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="40" ec="1" el="45" bec="0" bev="0" fileid="254" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.CharacterScreen.CharNewJobPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.CharacterScreen.CharNewJobPacketHandler::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.CharacterDto,System.Int64>)</Name> <FileRef uid="255" /> <SequencePoints> <SequencePoint vc="0" uspid="36" ordinal="0" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="255" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="255" /> <SequencePoint vc="0" uspid="38" ordinal="2" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="255" /> <SequencePoint vc="0" uspid="39" ordinal="3" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="255" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="36" ec="1" el="39" bec="0" bev="0" fileid="255" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="13" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.CharacterScreen.CharNewPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="13" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.CharacterScreen.CharNewPacketHandler::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.CharacterDto,System.Int64>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.MinilandDto,System.Guid>,NosCore.GameObject.Services.ItemGenerationService.IItemGenerationService,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.QuicklistEntryDto,System.Guid>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.IItemInstanceDto,System.Guid>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.InventoryItemInstanceDto,System.Guid>,NosCore.Algorithm.HpService.IHpService,NosCore.Algorithm.MpService.IMpService,Microsoft.Extensions.Options.IOptions`1<NosCore.Core.Configuration.WorldConfiguration>)</Name> <FileRef uid="256" /> <SequencePoints> <SequencePoint vc="0" uspid="61" ordinal="0" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="256" /> <SequencePoint vc="0" uspid="62" ordinal="1" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="256" /> <SequencePoint vc="0" uspid="63" ordinal="2" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="256" /> <SequencePoint vc="0" uspid="64" ordinal="3" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="256" /> <SequencePoint vc="0" uspid="65" ordinal="4" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="256" /> <SequencePoint vc="0" uspid="66" ordinal="5" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="256" /> <SequencePoint vc="0" uspid="67" ordinal="6" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="256" /> <SequencePoint vc="0" uspid="68" ordinal="7" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="256" /> <SequencePoint vc="0" uspid="69" ordinal="8" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="256" /> <SequencePoint vc="0" uspid="70" ordinal="9" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="256" /> <SequencePoint vc="0" uspid="71" ordinal="10" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="256" /> <SequencePoint vc="0" uspid="72" ordinal="11" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="256" /> <SequencePoint vc="0" uspid="73" ordinal="12" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="256" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="61" ec="1" el="73" bec="0" bev="0" fileid="256" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.CharacterScreen.CharRenPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.CharacterScreen.CharRenPacketHandler::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.CharacterDto,System.Int64>)</Name> <FileRef uid="257" /> <SequencePoints> <SequencePoint vc="0" uspid="39" ordinal="0" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="257" /> <SequencePoint vc="0" uspid="40" ordinal="1" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="257" /> <SequencePoint vc="0" uspid="41" ordinal="2" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="257" /> <SequencePoint vc="0" uspid="42" ordinal="3" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="257" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="39" ec="1" el="42" bec="0" bev="0" fileid="257" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.CharacterScreen.DacPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.CharacterScreen.DacPacketHandler::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.AccountDto,System.Int64>,Serilog.ILogger,NosCore.Core.HttpClients.AuthHttpClients.IAuthHub,NosCore.Core.HttpClients.ConnectedAccountHttpClients.IConnectedAccountHttpClient,NosCore.Core.HttpClients.ChannelHttpClients.IChannelHub)</Name> <FileRef uid="258" /> <SequencePoints> <SequencePoint vc="0" uspid="44" ordinal="0" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="258" /> <SequencePoint vc="0" uspid="45" ordinal="1" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="258" /> <SequencePoint vc="0" uspid="46" ordinal="2" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="258" /> <SequencePoint vc="0" uspid="47" ordinal="3" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="258" /> <SequencePoint vc="0" uspid="48" ordinal="4" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="258" /> <SequencePoint vc="0" uspid="49" ordinal="5" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="258" /> <SequencePoint vc="0" uspid="50" ordinal="6" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="258" /> <SequencePoint vc="0" uspid="51" ordinal="7" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="258" /> <SequencePoint vc="0" uspid="52" ordinal="8" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="258" /> <SequencePoint vc="0" uspid="53" ordinal="9" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="258" /> <SequencePoint vc="0" uspid="54" ordinal="10" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="258" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="44" ec="1" el="54" bec="0" bev="0" fileid="258" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="14" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.CharacterScreen.EntryPointPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="14" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.CharacterScreen.EntryPointPacketHandler::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.CharacterDto,System.Int64>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.AccountDto,System.Int64>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.MateDto,System.Int64>,Serilog.ILogger,NosCore.Core.HttpClients.AuthHttpClients.IAuthHub,NosCore.Core.HttpClients.ConnectedAccountHttpClients.IConnectedAccountHttpClient,NosCore.Core.HttpClients.ChannelHttpClients.IChannelHub,NosCore.Shared.Authentication.IHasher)</Name> <FileRef uid="259" /> <SequencePoints> <SequencePoint vc="0" uspid="59" ordinal="0" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="259" /> <SequencePoint vc="0" uspid="60" ordinal="1" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="259" /> <SequencePoint vc="0" uspid="61" ordinal="2" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="259" /> <SequencePoint vc="0" uspid="62" ordinal="3" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="259" /> <SequencePoint vc="0" uspid="63" ordinal="4" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="259" /> <SequencePoint vc="0" uspid="64" ordinal="5" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="259" /> <SequencePoint vc="0" uspid="65" ordinal="6" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="259" /> <SequencePoint vc="0" uspid="66" ordinal="7" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="259" /> <SequencePoint vc="0" uspid="67" ordinal="8" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="259" /> <SequencePoint vc="0" uspid="68" ordinal="9" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="259" /> <SequencePoint vc="0" uspid="69" ordinal="10" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="259" /> <SequencePoint vc="0" uspid="70" ordinal="11" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="259" /> <SequencePoint vc="0" uspid="71" ordinal="12" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="259" /> <SequencePoint vc="0" uspid="72" ordinal="13" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="259" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="59" ec="1" el="72" bec="0" bev="0" fileid="259" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="21" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.CharacterScreen.SelectPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="21" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.CharacterScreen.SelectPacketHandler::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.CharacterDto,System.Int64>,Serilog.ILogger,NosCore.GameObject.Services.ItemGenerationService.IItemGenerationService,NosCore.GameObject.Services.MapInstanceAccessService.IMapInstanceAccessorService,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.IItemInstanceDto,System.Guid>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.InventoryItemInstanceDto,System.Guid>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.StaticBonusDto,System.Int64>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.QuicklistEntryDto,System.Guid>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.TitleDto,System.Guid>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.CharacterQuestDto,System.Guid>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.ScriptDto,System.Guid>,System.Collections.Generic.List`1<NosCore.Data.StaticEntities.QuestDto>,System.Collections.Generic.List`1<NosCore.Data.StaticEntities.QuestObjectiveDto>)</Name> <FileRef uid="260" /> <SequencePoints> <SequencePoint vc="0" uspid="61" ordinal="0" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="62" ordinal="1" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="63" ordinal="2" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="64" ordinal="3" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="65" ordinal="4" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="66" ordinal="5" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="67" ordinal="6" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="68" ordinal="7" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="69" ordinal="8" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="70" ordinal="9" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="71" ordinal="10" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="72" ordinal="11" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="73" ordinal="12" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="74" ordinal="13" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="75" ordinal="14" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="76" ordinal="15" sl="76" sc="1" el="76" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="77" ordinal="16" sl="77" sc="1" el="77" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="78" ordinal="17" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="79" ordinal="18" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="80" ordinal="19" sl="80" sc="1" el="80" ec="2" bec="0" bev="0" fileid="260" /> <SequencePoint vc="0" uspid="81" ordinal="20" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="260" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="61" ec="1" el="81" bec="0" bev="0" fileid="260" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Bazaar.CBListPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Bazaar.CBListPacketHandler::.ctor(NosCore.GameObject.HttpClients.BazaarHttpClient.IBazaarHub,System.Collections.Generic.List`1<NosCore.Data.StaticEntities.ItemDto>)</Name> <FileRef uid="261" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="261" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="261" /> <SequencePoint vc="0" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="261" /> <SequencePoint vc="0" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="261" /> <SequencePoint vc="0" uspid="44" ordinal="4" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="261" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="40" ec="1" el="44" bec="0" bev="0" fileid="261" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Bazaar.CBuyPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Bazaar.CBuyPacketHandler::.ctor(NosCore.GameObject.HttpClients.BazaarHttpClient.IBazaarHub,NosCore.GameObject.Services.ItemGenerationService.IItemGenerationService,Serilog.ILogger,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.IItemInstanceDto,System.Guid>)</Name> <FileRef uid="262" /> <SequencePoints> <SequencePoint vc="0" uspid="49" ordinal="0" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="262" /> <SequencePoint vc="0" uspid="50" ordinal="1" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="262" /> <SequencePoint vc="0" uspid="51" ordinal="2" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="262" /> <SequencePoint vc="0" uspid="52" ordinal="3" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="262" /> <SequencePoint vc="0" uspid="53" ordinal="4" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="262" /> <SequencePoint vc="0" uspid="54" ordinal="5" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="262" /> <SequencePoint vc="0" uspid="55" ordinal="6" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="262" /> <SequencePoint vc="0" uspid="56" ordinal="7" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="262" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="49" ec="1" el="56" bec="0" bev="0" fileid="262" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Bazaar.CModPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Bazaar.CModPacketHandler::.ctor(NosCore.GameObject.HttpClients.BazaarHttpClient.IBazaarHub,Serilog.ILogger)</Name> <FileRef uid="263" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="263" /> <SequencePoint vc="0" uspid="44" ordinal="1" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="263" /> <SequencePoint vc="0" uspid="45" ordinal="2" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="263" /> <SequencePoint vc="0" uspid="46" ordinal="3" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="263" /> <SequencePoint vc="0" uspid="47" ordinal="4" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="263" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="43" ec="1" el="47" bec="0" bev="0" fileid="263" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Bazaar.CRegPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Bazaar.CRegPacketHandler::.ctor(Microsoft.Extensions.Options.IOptions`1<NosCore.Core.Configuration.WorldConfiguration>,NosCore.GameObject.HttpClients.BazaarHttpClient.IBazaarHub,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.IItemInstanceDto,System.Guid>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.InventoryItemInstanceDto,System.Guid>)</Name> <FileRef uid="264" /> <SequencePoints> <SequencePoint vc="0" uspid="54" ordinal="0" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="264" /> <SequencePoint vc="0" uspid="55" ordinal="1" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="264" /> <SequencePoint vc="0" uspid="56" ordinal="2" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="264" /> <SequencePoint vc="0" uspid="57" ordinal="3" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="264" /> <SequencePoint vc="0" uspid="58" ordinal="4" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="264" /> <SequencePoint vc="0" uspid="59" ordinal="5" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="264" /> <SequencePoint vc="0" uspid="60" ordinal="6" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="264" /> <SequencePoint vc="0" uspid="61" ordinal="7" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="264" /> <SequencePoint vc="0" uspid="62" ordinal="8" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="264" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="54" ec="1" el="62" bec="0" bev="0" fileid="264" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Bazaar.CScalcPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Bazaar.CScalcPacketHandler::.ctor(Microsoft.Extensions.Options.IOptions`1<NosCore.Core.Configuration.WorldConfiguration>,NosCore.GameObject.HttpClients.BazaarHttpClient.IBazaarHub,NosCore.GameObject.Services.ItemGenerationService.IItemGenerationService,Serilog.ILogger,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.IItemInstanceDto,System.Guid>)</Name> <FileRef uid="265" /> <SequencePoints> <SequencePoint vc="0" uspid="51" ordinal="0" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="265" /> <SequencePoint vc="0" uspid="52" ordinal="1" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="265" /> <SequencePoint vc="0" uspid="53" ordinal="2" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="265" /> <SequencePoint vc="0" uspid="54" ordinal="3" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="265" /> <SequencePoint vc="0" uspid="55" ordinal="4" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="265" /> <SequencePoint vc="0" uspid="56" ordinal="5" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="265" /> <SequencePoint vc="0" uspid="57" ordinal="6" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="265" /> <SequencePoint vc="0" uspid="58" ordinal="7" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="265" /> <SequencePoint vc="0" uspid="59" ordinal="8" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="265" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="51" ec="1" el="59" bec="0" bev="0" fileid="265" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Bazaar.CSListPacketHandler</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Bazaar.CSListPacketHandler::.ctor(NosCore.GameObject.HttpClients.BazaarHttpClient.IBazaarHub)</Name> <FileRef uid="266" /> <SequencePoints> <SequencePoint vc="0" uspid="37" ordinal="0" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="266" /> <SequencePoint vc="0" uspid="38" ordinal="1" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="266" /> <SequencePoint vc="0" uspid="39" ordinal="2" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="266" /> <SequencePoint vc="0" uspid="40" ordinal="3" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="266" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="37" ec="1" el="40" bec="0" bev="0" fileid="266" xmlns:p8="xsi" /> </Method> </Methods> </Class> </Classes> </Module> <Module hash="0F531AF4-AFB2-4B05-80A3-C860B89B47B0"> <ModulePath>NosCore.PacketHandlers.Tests.dll</ModulePath> <ModuleTime>2020-12-29T09:41:25</ModuleTime> <ModuleName>NosCore.PacketHandlers.Tests</ModuleName> <Files> <File uid="267" fullPath="C:\Users\Erwan\.nuget\packages\microsoft.net.test.sdk\16.8.3\build\netcoreapp2.1\Microsoft.NET.Test.Sdk.Program.cs" /> <File uid="268" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\SetupAssemblyInitializer.cs" /> <File uid="269" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Shops\MShopPacketHandlerTests.cs" /> <File uid="270" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Shops\SellPacketHandlerTests.cs" /> <File uid="271" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Parcel\PstClientPacketHandlerTests.cs" /> <File uid="272" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Miniland\MJoinPacketHandlerTests.cs" /> <File uid="273" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Miniland\MlEditPacketHandlerTests.cs" /> <File uid="274" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Login\NoS0575PacketHandlerTests.cs" /> <File uid="275" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Login\NoS0577PacketHandlerTests.cs" /> <File uid="276" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Inventory\BiPacketHandlerTests.cs" /> <File uid="277" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Inventory\GetPacketHandlerTests.cs" /> <File uid="278" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Inventory\PutPacketHandlerTests.cs" /> <File uid="279" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Inventory\SpTransformPacketHandlerTests.cs" /> <File uid="280" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Inventory\UseItemPacketHandlerTests.cs" /> <File uid="281" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Inventory\WearPacketHandlerTests.cs" /> <File uid="282" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Group\PJoinPacketHandlerTests.cs" /> <File uid="283" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Group\PleavePacketHandlerTests.cs" /> <File uid="284" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Friend\BlDelPacketHandlerTests.cs" /> <File uid="285" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Friend\BlInsPacketHandlerTests.cs" /> <File uid="286" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Friend\BlPacketHandlerTests.cs" /> <File uid="287" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Friend\fDelPacketHandlerTests.cs" /> <File uid="288" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Friend\FinsPacketHandlerTests.cs" /> <File uid="289" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Friend\FlPacketHandlerTests.cs" /> <File uid="290" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\CharacterScreen\CharNewPacketHandlerTests.cs" /> <File uid="291" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\CharacterScreen\CharRenPacketHandlerTests.cs" /> <File uid="292" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\CharacterScreen\DacPacketHandlerTests.cs" /> <File uid="293" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Bazaar\CBuyPacketHandlerTests.cs" /> <File uid="294" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Bazaar\CModPacketHandlerTests.cs" /> <File uid="295" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Bazaar\CRegPacketHandlerTests.cs" /> <File uid="296" fullPath="C:\dev\NosCore\test\NosCore.PacketHandlers.Tests\Bazaar\CScalcPacketHandlerTests.cs" /> </Files> <Classes> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>AutoGeneratedProgram</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void AutoGeneratedProgram::Main(System.String[])</Name> <FileRef uid="267" /> <SequencePoints> <SequencePoint vc="0" uspid="4" ordinal="0" sl="4" sc="1" el="4" ec="2" bec="0" bev="0" fileid="267" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="4" ec="1" el="4" bec="0" bev="0" fileid="267" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.SetupAssemblyInitializer</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.SetupAssemblyInitializer::AssemblyInit(Microsoft.VisualStudio.TestTools.UnitTesting.TestContext)</Name> <FileRef uid="268" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="268" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="268" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="268" /> <SequencePoint vc="0" uspid="35" ordinal="3" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="268" /> <SequencePoint vc="0" uspid="36" ordinal="4" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="268" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="36" bec="0" bev="0" fileid="268" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="12" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Tests.Shops.MShopPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Shops.MShopPacketHandlerTests::.ctor()</Name> <FileRef uid="269" /> <SequencePoints> <SequencePoint vc="0" uspid="56" ordinal="0" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="269" /> <SequencePoint vc="0" uspid="57" ordinal="1" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="269" /> <SequencePoint vc="0" uspid="58" ordinal="2" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="269" /> <SequencePoint vc="0" uspid="59" ordinal="3" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="269" /> <SequencePoint vc="0" uspid="60" ordinal="4" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="269" /> <SequencePoint vc="0" uspid="61" ordinal="5" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="269" /> <SequencePoint vc="0" uspid="62" ordinal="6" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="269" /> <SequencePoint vc="0" uspid="63" ordinal="7" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="269" /> <SequencePoint vc="0" uspid="64" ordinal="8" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="269" /> <SequencePoint vc="0" uspid="65" ordinal="9" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="269" /> <SequencePoint vc="0" uspid="66" ordinal="10" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="269" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="56" ec="1" el="66" bec="0" bev="0" fileid="269" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Shops.MShopPacketHandlerTests::.cctor()</Name> <FileRef uid="269" /> <SequencePoints> <SequencePoint vc="0" uspid="55" ordinal="0" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="269" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="55" ec="1" el="55" bec="0" bev="0" fileid="269" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.Shops.SellPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Shops.SellPacketHandlerTests::.ctor()</Name> <FileRef uid="270" /> <SequencePoints> <SequencePoint vc="0" uspid="53" ordinal="0" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="270" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="53" ec="1" el="53" bec="0" bev="0" fileid="270" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.Parcel.PstClientPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Parcel.PstClientPacketHandlerTests::Setup()</Name> <FileRef uid="271" /> <SequencePoints> <SequencePoint vc="0" uspid="29" ordinal="0" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="271" /> <SequencePoint vc="0" uspid="30" ordinal="1" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="271" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="29" ec="1" el="30" bec="0" bev="0" fileid="271" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Tests.Miniland.MJoinPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Miniland.MJoinPacketHandlerTests::.ctor()</Name> <FileRef uid="272" /> <SequencePoints> <SequencePoint vc="0" uspid="53" ordinal="0" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="272" /> <SequencePoint vc="0" uspid="54" ordinal="1" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="272" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="53" ec="1" el="54" bec="0" bev="0" fileid="272" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Miniland.MJoinPacketHandlerTests::.cctor()</Name> <FileRef uid="272" /> <SequencePoints> <SequencePoint vc="0" uspid="52" ordinal="0" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="272" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="52" ec="1" el="52" bec="0" bev="0" fileid="272" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Tests.Miniland.MlEditPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Miniland.MlEditPacketHandlerTests::.ctor()</Name> <FileRef uid="273" /> <SequencePoints> <SequencePoint vc="0" uspid="53" ordinal="0" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="273" /> <SequencePoint vc="0" uspid="54" ordinal="1" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="273" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="53" ec="1" el="54" bec="0" bev="0" fileid="273" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Miniland.MlEditPacketHandlerTests::.cctor()</Name> <FileRef uid="273" /> <SequencePoints> <SequencePoint vc="0" uspid="49" ordinal="0" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="273" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="49" ec="1" el="49" bec="0" bev="0" fileid="273" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Tests.Login.NoS0575PacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Login.NoS0575PacketHandlerTests::.ctor()</Name> <FileRef uid="274" /> <SequencePoints> <SequencePoint vc="0" uspid="49" ordinal="0" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="274" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="49" ec="1" el="49" bec="0" bev="0" fileid="274" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Login.NoS0575PacketHandlerTests::.cctor()</Name> <FileRef uid="274" /> <SequencePoints> <SequencePoint vc="0" uspid="48" ordinal="0" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="274" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="48" ec="1" el="48" bec="0" bev="0" fileid="274" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="13" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.PacketHandlers.Tests.Login.NoS0577PacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.PacketHandlers.Tests.Login.NoS0577PacketHandlerTests::GuidToToken(System.String)</Name> <FileRef uid="275" /> <SequencePoints> <SequencePoint vc="0" uspid="68" ordinal="0" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="275" /> <SequencePoint vc="0" uspid="69" ordinal="1" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="275" /> <SequencePoint vc="0" uspid="70" ordinal="2" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="275" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="68" ec="1" el="70" bec="0" bev="0" fileid="275" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Login.NoS0577PacketHandlerTests::.ctor()</Name> <FileRef uid="275" /> <SequencePoints> <SequencePoint vc="0" uspid="54" ordinal="0" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="275" /> <SequencePoint vc="0" uspid="55" ordinal="1" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="275" /> <SequencePoint vc="0" uspid="57" ordinal="2" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="275" /> <SequencePoint vc="0" uspid="58" ordinal="3" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="275" /> <SequencePoint vc="0" uspid="59" ordinal="4" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="275" /> <SequencePoint vc="0" uspid="60" ordinal="5" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="275" /> <SequencePoint vc="0" uspid="61" ordinal="6" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="275" /> <SequencePoint vc="0" uspid="62" ordinal="7" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="275" /> <SequencePoint vc="0" uspid="63" ordinal="8" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="275" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="54" ec="1" el="63" bec="0" bev="0" fileid="275" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Login.NoS0577PacketHandlerTests::.cctor()</Name> <FileRef uid="275" /> <SequencePoints> <SequencePoint vc="0" uspid="56" ordinal="0" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="275" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="56" ec="1" el="56" bec="0" bev="0" fileid="275" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Tests.Inventory.BiPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Inventory.BiPacketHandlerTests::Cleanup()</Name> <FileRef uid="276" /> <SequencePoints> <SequencePoint vc="0" uspid="47" ordinal="0" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="276" /> <SequencePoint vc="0" uspid="48" ordinal="1" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="276" /> <SequencePoint vc="0" uspid="49" ordinal="2" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="276" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="47" ec="1" el="49" bec="0" bev="0" fileid="276" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Inventory.BiPacketHandlerTests::.cctor()</Name> <FileRef uid="276" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="276" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="40" ec="1" el="40" bec="0" bev="0" fileid="276" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Tests.Inventory.GetPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Inventory.GetPacketHandlerTests::Cleanup()</Name> <FileRef uid="277" /> <SequencePoints> <SequencePoint vc="0" uspid="51" ordinal="0" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="277" /> <SequencePoint vc="0" uspid="52" ordinal="1" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="277" /> <SequencePoint vc="0" uspid="53" ordinal="2" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="277" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="51" ec="1" el="53" bec="0" bev="0" fileid="277" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Inventory.GetPacketHandlerTests::.cctor()</Name> <FileRef uid="277" /> <SequencePoints> <SequencePoint vc="0" uspid="44" ordinal="0" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="277" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="44" ec="1" el="44" bec="0" bev="0" fileid="277" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.Inventory.PutPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Inventory.PutPacketHandlerTests::Cleanup()</Name> <FileRef uid="278" /> <SequencePoints> <SequencePoint vc="0" uspid="49" ordinal="0" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="278" /> <SequencePoint vc="0" uspid="50" ordinal="1" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="278" /> <SequencePoint vc="0" uspid="51" ordinal="2" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="278" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="49" ec="1" el="51" bec="0" bev="0" fileid="278" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.Inventory.SpTransformPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Inventory.SpTransformPacketHandlerTests::Cleanup()</Name> <FileRef uid="279" /> <SequencePoints> <SequencePoint vc="0" uspid="50" ordinal="0" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="279" /> <SequencePoint vc="0" uspid="51" ordinal="1" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="279" /> <SequencePoint vc="0" uspid="52" ordinal="2" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="279" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="50" ec="1" el="52" bec="0" bev="0" fileid="279" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.Inventory.UseItemPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Inventory.UseItemPacketHandlerTests::Cleanup()</Name> <FileRef uid="280" /> <SequencePoints> <SequencePoint vc="0" uspid="51" ordinal="0" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="280" /> <SequencePoint vc="0" uspid="52" ordinal="1" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="280" /> <SequencePoint vc="0" uspid="53" ordinal="2" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="280" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="51" ec="1" el="53" bec="0" bev="0" fileid="280" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Tests.Inventory.WearPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Inventory.WearPacketHandlerTests::Cleanup()</Name> <FileRef uid="281" /> <SequencePoints> <SequencePoint vc="0" uspid="63" ordinal="0" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="281" /> <SequencePoint vc="0" uspid="64" ordinal="1" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="281" /> <SequencePoint vc="0" uspid="65" ordinal="2" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="281" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="63" ec="1" el="65" bec="0" bev="0" fileid="281" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Inventory.WearPacketHandlerTests::.cctor()</Name> <FileRef uid="281" /> <SequencePoints> <SequencePoint vc="0" uspid="55" ordinal="0" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="281" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="55" ec="1" el="55" bec="0" bev="0" fileid="281" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.PacketHandlers.Tests.Group.PJoinPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Group.PJoinPacketHandlerTests::Cleanup()</Name> <FileRef uid="282" /> <SequencePoints> <SequencePoint vc="0" uspid="48" ordinal="0" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="282" /> <SequencePoint vc="0" uspid="49" ordinal="1" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="282" /> <SequencePoint vc="0" uspid="50" ordinal="2" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="282" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="48" ec="1" el="50" bec="0" bev="0" fileid="282" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Group.PJoinPacketHandlerTests::.ctor()</Name> <FileRef uid="282" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="282" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="43" ec="1" el="43" bec="0" bev="0" fileid="282" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Group.PJoinPacketHandlerTests::.cctor()</Name> <FileRef uid="282" /> <SequencePoints> <SequencePoint vc="0" uspid="42" ordinal="0" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="282" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="42" ec="1" el="42" bec="0" bev="0" fileid="282" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Tests.Group.PleavePacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Group.PleavePacketHandlerTests::.ctor()</Name> <FileRef uid="283" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="283" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="43" ec="1" el="43" bec="0" bev="0" fileid="283" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Group.PleavePacketHandlerTests::.cctor()</Name> <FileRef uid="283" /> <SequencePoints> <SequencePoint vc="0" uspid="42" ordinal="0" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="283" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="42" ec="1" el="42" bec="0" bev="0" fileid="283" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.Friend.BDelPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Friend.BDelPacketHandlerTests::.cctor()</Name> <FileRef uid="284" /> <SequencePoints> <SequencePoint vc="0" uspid="50" ordinal="0" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="284" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="50" ec="1" el="50" bec="0" bev="0" fileid="284" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.Friend.BlInsPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Friend.BlInsPacketHandlerTests::.cctor()</Name> <FileRef uid="285" /> <SequencePoints> <SequencePoint vc="0" uspid="41" ordinal="0" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="285" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="41" ec="1" el="41" bec="0" bev="0" fileid="285" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.Friend.BlPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Friend.BlPacketHandlerTests::.cctor()</Name> <FileRef uid="286" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="286" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="43" ec="1" el="43" bec="0" bev="0" fileid="286" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.Friend.FDelPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Friend.FDelPacketHandlerTests::.cctor()</Name> <FileRef uid="287" /> <SequencePoints> <SequencePoint vc="0" uspid="53" ordinal="0" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="287" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="53" ec="1" el="53" bec="0" bev="0" fileid="287" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Tests.Friend.FinsPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Friend.FinsPacketHandlerTests::.ctor()</Name> <FileRef uid="288" /> <SequencePoints> <SequencePoint vc="0" uspid="51" ordinal="0" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="288" /> <SequencePoint vc="0" uspid="53" ordinal="1" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="288" /> <SequencePoint vc="0" uspid="55" ordinal="2" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="288" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="51" ec="1" el="55" bec="0" bev="0" fileid="288" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Friend.FinsPacketHandlerTests::.cctor()</Name> <FileRef uid="288" /> <SequencePoints> <SequencePoint vc="0" uspid="50" ordinal="0" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="288" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="50" ec="1" el="50" bec="0" bev="0" fileid="288" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.Friend.FlPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Friend.FlPacketHandlerTests::.cctor()</Name> <FileRef uid="289" /> <SequencePoints> <SequencePoint vc="0" uspid="45" ordinal="0" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="289" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="45" ec="1" el="45" bec="0" bev="0" fileid="289" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.CharacterScreen.CharNewPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.CharacterScreen.CharNewPacketHandlerTests::.cctor()</Name> <FileRef uid="290" /> <SequencePoints> <SequencePoint vc="0" uspid="50" ordinal="0" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="290" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="50" ec="1" el="50" bec="0" bev="0" fileid="290" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.CharacterScreen.CharRenPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.CharacterScreen.CharRenPacketHandlerTests::.cctor()</Name> <FileRef uid="291" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="291" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="43" ec="1" el="43" bec="0" bev="0" fileid="291" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.PacketHandlers.Tests.CharacterScreen.DacPacketHandlerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.CharacterScreen.DacPacketHandlerTests::.ctor()</Name> <FileRef uid="292" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="292" /> <SequencePoint vc="0" uspid="44" ordinal="1" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="292" /> <SequencePoint vc="0" uspid="45" ordinal="2" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="292" /> <SequencePoint vc="0" uspid="46" ordinal="3" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="292" /> <SequencePoint vc="0" uspid="47" ordinal="4" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="292" /> <SequencePoint vc="0" uspid="48" ordinal="5" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="292" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="43" ec="1" el="48" bec="0" bev="0" fileid="292" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.CharacterScreen.DacPacketHandlerTests::.cctor()</Name> <FileRef uid="292" /> <SequencePoints> <SequencePoint vc="0" uspid="42" ordinal="0" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="292" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="42" ec="1" el="42" bec="0" bev="0" fileid="292" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.Bazaar.CBuyPacketHandlerTest</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Bazaar.CBuyPacketHandlerTest::.cctor()</Name> <FileRef uid="293" /> <SequencePoints> <SequencePoint vc="0" uspid="50" ordinal="0" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="293" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="50" ec="1" el="50" bec="0" bev="0" fileid="293" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.Bazaar.CModPacketHandlerTest</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Bazaar.CModPacketHandlerTest::.cctor()</Name> <FileRef uid="294" /> <SequencePoints> <SequencePoint vc="0" uspid="44" ordinal="0" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="294" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="44" ec="1" el="44" bec="0" bev="0" fileid="294" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.Bazaar.CRegPacketHandlerTest</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Bazaar.CRegPacketHandlerTest::.ctor()</Name> <FileRef uid="295" /> <SequencePoints> <SequencePoint vc="0" uspid="65" ordinal="0" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="295" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="65" ec="1" el="65" bec="0" bev="0" fileid="295" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.PacketHandlers.Tests.Bazaar.CScalcPacketHandlerTest</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.PacketHandlers.Tests.Bazaar.CScalcPacketHandlerTest::.cctor()</Name> <FileRef uid="296" /> <SequencePoints> <SequencePoint vc="0" uspid="49" ordinal="0" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="296" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="49" ec="1" el="49" bec="0" bev="0" fileid="296" xmlns:p8="xsi" /> </Method> </Methods> </Class> </Classes> </Module> <Module hash="8535B758-58F9-42F9-BE23-E8614BDC6D01"> <ModulePath>NosCore.Parser.dll</ModulePath> <ModuleTime>2020-12-29T09:41:25</ModuleTime> <ModuleName>NosCore.Parser</ModuleName> <Files> <File uid="297" fullPath="C:\dev\NosCore\src\NosCore.Parser\ImportFactory.cs" /> <File uid="298" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parser.cs" /> <File uid="299" fullPath="C:\dev\NosCore\src\NosCore.Parser\ParserConfiguration.cs" /> <File uid="300" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\ActParser.cs" /> <File uid="301" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\CardParser.cs" /> <File uid="302" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\DropParser.cs" /> <File uid="303" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\I18NParser.cs" /> <File uid="304" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\ItemParser.cs" /> <File uid="305" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\MapMonsterParser.cs" /> <File uid="306" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\MapNpcParser.cs" /> <File uid="307" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\MapParser.cs" /> <File uid="308" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\MapTypeMapParser.cs" /> <File uid="309" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\MapTypeParser.cs" /> <File uid="310" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\NpcMonsterParser.cs" /> <File uid="311" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\NpcTalkParser.cs" /> <File uid="312" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\PortalParser.cs" /> <File uid="313" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\QuestParser.cs" /> <File uid="314" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\QuestPrizeParser.cs" /> <File uid="315" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\RespawnMapTypeParser.cs" /> <File uid="316" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\ScriptParser.cs" /> <File uid="317" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\ShopItemParser.cs" /> <File uid="318" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\ShopParser.cs" /> <File uid="319" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\SkillParser.cs" /> <File uid="320" fullPath="C:\dev\NosCore\src\NosCore.Parser\Parsers\Generic\GenericParser.cs" /> </Files> <Classes> <Class> <Summary numSequencePoints="94" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="16" /> <FullName>NosCore.Parser.ImportFactory</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.ImportFactory::ImportCardsAsync()</Name> <FileRef uid="297" /> <SequencePoints> <SequencePoint vc="0" uspid="149" ordinal="0" sl="149" sc="1" el="149" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="150" ordinal="1" sl="150" sc="1" el="150" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="151" ordinal="2" sl="151" sc="1" el="151" ec="2" bec="0" bev="0" fileid="297" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="149" ec="1" el="151" bec="0" bev="0" fileid="297" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.ImportFactory::ImportMapMonstersAsync()</Name> <FileRef uid="297" /> <SequencePoints> <SequencePoint vc="0" uspid="160" ordinal="0" sl="160" sc="1" el="160" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="161" ordinal="1" sl="161" sc="1" el="161" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="162" ordinal="2" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="297" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="160" ec="1" el="162" bec="0" bev="0" fileid="297" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.ImportFactory::ImportShopsAsync()</Name> <FileRef uid="297" /> <SequencePoints> <SequencePoint vc="0" uspid="165" ordinal="0" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="166" ordinal="1" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="167" ordinal="2" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="297" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="165" ec="1" el="167" bec="0" bev="0" fileid="297" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.ImportFactory::ImportShopItemsAsync()</Name> <FileRef uid="297" /> <SequencePoints> <SequencePoint vc="0" uspid="170" ordinal="0" sl="170" sc="1" el="170" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="171" ordinal="1" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="172" ordinal="2" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="297" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="170" ec="1" el="172" bec="0" bev="0" fileid="297" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.ImportFactory::ImportMapsAsync()</Name> <FileRef uid="297" /> <SequencePoints> <SequencePoint vc="0" uspid="175" ordinal="0" sl="175" sc="1" el="175" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="176" ordinal="1" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="177" ordinal="2" sl="177" sc="1" el="177" ec="2" bec="0" bev="0" fileid="297" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="175" ec="1" el="177" bec="0" bev="0" fileid="297" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.ImportFactory::ImportScriptsAsync()</Name> <FileRef uid="297" /> <SequencePoints> <SequencePoint vc="0" uspid="180" ordinal="0" sl="180" sc="1" el="180" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="181" ordinal="1" sl="181" sc="1" el="181" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="182" ordinal="2" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="297" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="5" offset="5" sc="0" sl="180" ec="1" el="182" bec="0" bev="0" fileid="297" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.ImportFactory::ImportMapTypeAsync()</Name> <FileRef uid="297" /> <SequencePoints> <SequencePoint vc="0" uspid="192" ordinal="0" sl="192" sc="1" el="192" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="193" ordinal="1" sl="193" sc="1" el="193" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="194" ordinal="2" sl="194" sc="1" el="194" ec="2" bec="0" bev="0" fileid="297" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="6" offset="6" sc="0" sl="192" ec="1" el="194" bec="0" bev="0" fileid="297" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.ImportFactory::ImportMapTypeMapAsync()</Name> <FileRef uid="297" /> <SequencePoints> <SequencePoint vc="0" uspid="197" ordinal="0" sl="197" sc="1" el="197" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="198" ordinal="1" sl="198" sc="1" el="198" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="199" ordinal="2" sl="199" sc="1" el="199" ec="2" bec="0" bev="0" fileid="297" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="7" offset="7" sc="0" sl="197" ec="1" el="199" bec="0" bev="0" fileid="297" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.ImportFactory::ImportNpcMonstersAsync()</Name> <FileRef uid="297" /> <SequencePoints> <SequencePoint vc="0" uspid="202" ordinal="0" sl="202" sc="1" el="202" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="203" ordinal="1" sl="203" sc="1" el="203" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="204" ordinal="2" sl="204" sc="1" el="204" ec="2" bec="0" bev="0" fileid="297" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="8" offset="8" sc="0" sl="202" ec="1" el="204" bec="0" bev="0" fileid="297" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.ImportFactory::ImportRespawnMapTypeAsync()</Name> <FileRef uid="297" /> <SequencePoints> <SequencePoint vc="0" uspid="207" ordinal="0" sl="207" sc="1" el="207" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="208" ordinal="1" sl="208" sc="1" el="208" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="209" ordinal="2" sl="209" sc="1" el="209" ec="2" bec="0" bev="0" fileid="297" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="9" offset="9" sc="0" sl="207" ec="1" el="209" bec="0" bev="0" fileid="297" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.ImportFactory::ImportSkillsAsync()</Name> <FileRef uid="297" /> <SequencePoints> <SequencePoint vc="0" uspid="228" ordinal="0" sl="228" sc="1" el="228" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="229" ordinal="1" sl="229" sc="1" el="229" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="230" ordinal="2" sl="230" sc="1" el="230" ec="2" bec="0" bev="0" fileid="297" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="10" offset="10" sc="0" sl="228" ec="1" el="230" bec="0" bev="0" fileid="297" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.ImportFactory::ImportDropsAsync()</Name> <FileRef uid="297" /> <SequencePoints> <SequencePoint vc="0" uspid="233" ordinal="0" sl="233" sc="1" el="233" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="234" ordinal="1" sl="234" sc="1" el="234" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="235" ordinal="2" sl="235" sc="1" el="235" ec="2" bec="0" bev="0" fileid="297" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="11" offset="11" sc="0" sl="233" ec="1" el="235" bec="0" bev="0" fileid="297" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.ImportFactory::ImportPortalsAsync()</Name> <FileRef uid="297" /> <SequencePoints> <SequencePoint vc="0" uspid="238" ordinal="0" sl="238" sc="1" el="238" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="239" ordinal="1" sl="239" sc="1" el="239" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="240" ordinal="2" sl="240" sc="1" el="240" ec="2" bec="0" bev="0" fileid="297" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="12" offset="12" sc="0" sl="238" ec="1" el="240" bec="0" bev="0" fileid="297" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.ImportFactory::ImportItemsAsync()</Name> <FileRef uid="297" /> <SequencePoints> <SequencePoint vc="0" uspid="257" ordinal="0" sl="257" sc="1" el="257" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="258" ordinal="1" sl="258" sc="1" el="258" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="259" ordinal="2" sl="259" sc="1" el="259" ec="2" bec="0" bev="0" fileid="297" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="13" offset="13" sc="0" sl="257" ec="1" el="259" bec="0" bev="0" fileid="297" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.ImportFactory::SetFolder(System.String)</Name> <FileRef uid="297" /> <SequencePoints> <SequencePoint vc="0" uspid="262" ordinal="0" sl="262" sc="1" el="262" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="263" ordinal="1" sl="263" sc="1" el="263" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="264" ordinal="2" sl="264" sc="1" el="264" ec="2" bec="0" bev="0" fileid="297" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="14" offset="14" sc="0" sl="262" ec="1" el="264" bec="0" bev="0" fileid="297" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="49" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.ImportFactory::.ctor(NosCore.Parser.Parsers.CardParser,NosCore.Parser.Parsers.DropParser,NosCore.Parser.Parsers.ItemParser,NosCore.Parser.Parsers.MapMonsterParser,NosCore.Parser.Parsers.MapNpcParser,NosCore.Parser.Parsers.MapParser,NosCore.Parser.Parsers.MapTypeMapParser,NosCore.Parser.Parsers.MapTypeParser,NosCore.Parser.Parsers.NpcMonsterParser,NosCore.Parser.Parsers.PortalParser,NosCore.Parser.Parsers.RespawnMapTypeParser,NosCore.Parser.Parsers.ShopItemParser,NosCore.Parser.Parsers.ShopParser,NosCore.Parser.Parsers.SkillParser,NosCore.Parser.Parsers.NpcTalkParser,NosCore.Parser.Parsers.QuestPrizeParser,NosCore.Parser.Parsers.QuestParser,NosCore.Parser.Parsers.ActParser,NosCore.Parser.Parsers.ScriptParser,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.AccountDto,System.Int64>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.I18N.I18NQuestDto,System.Int32>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.I18N.I18NSkillDto,System.Int32>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.I18N.I18NNpcMonsterTalkDto,System.Int32>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.I18N.I18NNpcMonsterDto,System.Int32>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.I18N.I18NMapPointDataDto,System.Int32>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.I18N.I18NMapIdDataDto,System.Int32>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.I18N.I18NItemDto,System.Int32>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.I18N.I18NBCardDto,System.Int32>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.I18N.I18NCardDto,System.Int32>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.I18N.I18NActDescDto,System.Int32>,Serilog.ILogger)</Name> <FileRef uid="297" /> <SequencePoints> <SequencePoint vc="0" uspid="51" ordinal="0" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="71" ordinal="1" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="72" ordinal="2" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="74" ordinal="3" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="75" ordinal="4" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="76" ordinal="5" sl="76" sc="1" el="76" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="77" ordinal="6" sl="77" sc="1" el="77" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="78" ordinal="7" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="79" ordinal="8" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="80" ordinal="9" sl="80" sc="1" el="80" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="81" ordinal="10" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="82" ordinal="11" sl="82" sc="1" el="82" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="83" ordinal="12" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="84" ordinal="13" sl="84" sc="1" el="84" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="85" ordinal="14" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="86" ordinal="15" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="87" ordinal="16" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="88" ordinal="17" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="89" ordinal="18" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="90" ordinal="19" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="91" ordinal="20" sl="91" sc="1" el="91" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="92" ordinal="21" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="93" ordinal="22" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="94" ordinal="23" sl="94" sc="1" el="94" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="95" ordinal="24" sl="95" sc="1" el="95" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="96" ordinal="25" sl="96" sc="1" el="96" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="97" ordinal="26" sl="97" sc="1" el="97" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="98" ordinal="27" sl="98" sc="1" el="98" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="99" ordinal="28" sl="99" sc="1" el="99" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="100" ordinal="29" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="101" ordinal="30" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="102" ordinal="31" sl="102" sc="1" el="102" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="103" ordinal="32" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="104" ordinal="33" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="105" ordinal="34" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="106" ordinal="35" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="107" ordinal="36" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="108" ordinal="37" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="109" ordinal="38" sl="109" sc="1" el="109" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="110" ordinal="39" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="111" ordinal="40" sl="111" sc="1" el="111" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="112" ordinal="41" sl="112" sc="1" el="112" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="113" ordinal="42" sl="113" sc="1" el="113" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="114" ordinal="43" sl="114" sc="1" el="114" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="115" ordinal="44" sl="115" sc="1" el="115" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="116" ordinal="45" sl="116" sc="1" el="116" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="117" ordinal="46" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="118" ordinal="47" sl="118" sc="1" el="118" ec="2" bec="0" bev="0" fileid="297" /> <SequencePoint vc="0" uspid="119" ordinal="48" sl="119" sc="1" el="119" ec="2" bec="0" bev="0" fileid="297" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="15" offset="15" sc="0" sl="51" ec="1" el="119" bec="0" bev="0" fileid="297" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Parser.Parser</FullName> <Methods> <Method cyclomaticComplexity="4" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="10" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="4" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parser::RegisterDatabaseObject(Autofac.ContainerBuilder,System.Boolean)</Name> <FileRef uid="298" /> <SequencePoints> <SequencePoint vc="0" uspid="56" ordinal="0" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="298" /> <SequencePoint vc="0" uspid="57" ordinal="1" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="298" /> <SequencePoint vc="0" uspid="58" ordinal="2" sl="58" sc="1" el="58" ec="2" bec="2" bev="0" fileid="298" /> <SequencePoint vc="0" uspid="59" ordinal="3" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="298" /> <SequencePoint vc="0" uspid="60" ordinal="4" sl="60" sc="1" el="60" ec="2" bec="2" bev="0" fileid="298" /> <SequencePoint vc="0" uspid="61" ordinal="5" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="298" /> <SequencePoint vc="0" uspid="62" ordinal="6" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="298" /> <SequencePoint vc="0" uspid="63" ordinal="7" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="298" /> <SequencePoint vc="0" uspid="64" ordinal="8" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="298" /> <SequencePoint vc="0" uspid="65" ordinal="9" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="298" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="58" ordinal="0" path="0" offset="21" offsetend="23" sl="58" fileid="298" /> <BranchPoint vc="0" uspid="60" ordinal="2" path="0" offset="31" offsetend="33" sl="60" fileid="298" /> <BranchPoint vc="0" uspid="60" ordinal="3" path="1" offset="31" offsetend="56" sl="60" fileid="298" /> <BranchPoint vc="0" uspid="58" ordinal="1" path="1" offset="21" offsetend="78" sl="58" fileid="298" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="56" ec="1" el="65" bec="0" bev="0" fileid="298" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parser::.cctor()</Name> <FileRef uid="298" /> <SequencePoints> <SequencePoint vc="0" uspid="52" ordinal="0" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="298" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="52" ec="1" el="52" bec="0" bev="0" fileid="298" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Parser.ParserConfiguration</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.ParserConfiguration::.ctor()</Name> <FileRef uid="299" /> <SequencePoints> <SequencePoint vc="0" uspid="28" ordinal="0" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="299" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="28" ec="1" el="28" bec="0" bev="0" fileid="299" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Parser.Parsers.ActParser</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.ActParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.ActDto,System.Byte>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.ActPartDto,System.Byte>,Serilog.ILogger)</Name> <FileRef uid="300" /> <SequencePoints> <SequencePoint vc="0" uspid="63" ordinal="0" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="300" /> <SequencePoint vc="0" uspid="69" ordinal="1" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="300" /> <SequencePoint vc="0" uspid="70" ordinal="2" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="300" /> <SequencePoint vc="0" uspid="71" ordinal="3" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="300" /> <SequencePoint vc="0" uspid="72" ordinal="4" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="300" /> <SequencePoint vc="0" uspid="73" ordinal="5" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="300" /> <SequencePoint vc="0" uspid="74" ordinal="6" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="300" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="63" ec="1" el="74" bec="0" bev="0" fileid="300" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="31" visitedSequencePoints="0" numBranchPoints="14" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="14" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Parser.Parsers.CardParser</FullName> <Methods> <Method cyclomaticComplexity="14" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="24" visitedSequencePoints="0" numBranchPoints="14" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="14" minCyclomaticComplexity="14" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Collections.Generic.List`1<NosCore.Data.StaticEntities.BCardDto> NosCore.Parser.Parsers.CardParser::AddBCards(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="301" /> <SequencePoints> <SequencePoint vc="0" uspid="89" ordinal="0" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="90" ordinal="1" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="91" ordinal="2" sl="91" sc="1" el="91" ec="2" bec="2" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="92" ordinal="3" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="93" ordinal="4" sl="93" sc="1" el="93" ec="2" bec="2" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="94" ordinal="5" sl="94" sc="1" el="94" ec="2" bec="2" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="96" ordinal="6" sl="96" sc="1" el="96" ec="2" bec="4" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="97" ordinal="7" sl="97" sc="1" el="97" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="98" ordinal="8" sl="98" sc="1" el="98" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="101" ordinal="9" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="102" ordinal="10" sl="102" sc="1" el="102" ec="2" bec="4" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="103" ordinal="11" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="104" ordinal="12" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="105" ordinal="13" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="106" ordinal="14" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="107" ordinal="15" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="108" ordinal="16" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="109" ordinal="17" sl="109" sc="1" el="109" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="110" ordinal="18" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="111" ordinal="19" sl="111" sc="1" el="111" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="112" ordinal="20" sl="112" sc="1" el="112" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="113" ordinal="21" sl="113" sc="1" el="113" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="115" ordinal="22" sl="115" sc="1" el="115" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="116" ordinal="23" sl="116" sc="1" el="116" ec="2" bec="0" bev="0" fileid="301" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="91" ordinal="13" path="1" offset="373" offsetend="14" sl="91" fileid="301" /> <BranchPoint vc="0" uspid="93" ordinal="0" path="0" offset="17" offsetend="19" sl="93" fileid="301" /> <BranchPoint vc="0" uspid="93" ordinal="1" path="1" offset="17" offsetend="26" sl="93" fileid="301" /> <BranchPoint vc="0" uspid="94" ordinal="2" path="0" offset="34" offsetend="36" sl="94" fileid="301" /> <BranchPoint vc="0" uspid="94" ordinal="3" path="1" offset="34" offsetend="39" sl="94" fileid="301" /> <BranchPoint vc="0" uspid="96" ordinal="4" path="0" offset="68" offsetend="70" sl="96" fileid="301" /> <BranchPoint vc="0" uspid="96" ordinal="5" path="1" offset="68" offsetend="97" sl="96" fileid="301" /> <BranchPoint vc="0" uspid="96" ordinal="6" path="0" offset="102" offsetend="104" sl="96" fileid="301" /> <BranchPoint vc="0" uspid="96" ordinal="7" path="1" offset="102" offsetend="110" sl="96" fileid="301" /> <BranchPoint vc="0" uspid="102" ordinal="8" path="0" offset="228" offsetend="230" sl="102" fileid="301" /> <BranchPoint vc="0" uspid="102" ordinal="9" path="1" offset="228" offsetend="233" sl="102" fileid="301" /> <BranchPoint vc="0" uspid="102" ordinal="10" path="0" offset="246" offsetend="248" sl="102" fileid="301" /> <BranchPoint vc="0" uspid="102" ordinal="11" path="1" offset="246" offsetend="253" sl="102" fileid="301" /> <BranchPoint vc="0" uspid="91" ordinal="12" path="0" offset="373" offsetend="378" sl="91" fileid="301" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="89" ec="1" el="116" bec="0" bev="0" fileid="301" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.CardParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.CardDto,System.Int16>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.BCardDto,System.Int16>,Serilog.ILogger)</Name> <FileRef uid="301" /> <SequencePoints> <SequencePoint vc="0" uspid="51" ordinal="0" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="57" ordinal="1" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="58" ordinal="2" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="59" ordinal="3" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="60" ordinal="4" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="61" ordinal="5" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="301" /> <SequencePoint vc="0" uspid="62" ordinal="6" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="301" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="51" ec="1" el="62" bec="0" bev="0" fileid="301" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="524" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.Parser.Parsers.DropParser</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="10" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>NosCore.Data.StaticEntities.DropDto NosCore.Parser.Parsers.DropParser::GenerateDropDto(System.Int16,System.Int32,System.Nullable`1<System.Int16>,System.Int32,System.Int16)</Name> <FileRef uid="302" /> <SequencePoints> <SequencePoint vc="0" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="36" ordinal="1" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="37" ordinal="2" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="38" ordinal="3" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="39" ordinal="4" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="40" ordinal="5" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="41" ordinal="6" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="42" ordinal="7" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="43" ordinal="8" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="44" ordinal="9" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="302" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="35" ec="1" el="44" bec="0" bev="0" fileid="302" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="510" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.Parsers.DropParser::InsertDropAsync()</Name> <FileRef uid="302" /> <SequencePoints> <SequencePoint vc="0" uspid="47" ordinal="0" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="48" ordinal="1" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="49" ordinal="2" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="50" ordinal="3" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="51" ordinal="4" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="52" ordinal="5" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="53" ordinal="6" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="54" ordinal="7" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="55" ordinal="8" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="56" ordinal="9" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="57" ordinal="10" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="58" ordinal="11" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="59" ordinal="12" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="60" ordinal="13" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="61" ordinal="14" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="62" ordinal="15" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="63" ordinal="16" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="64" ordinal="17" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="65" ordinal="18" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="66" ordinal="19" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="67" ordinal="20" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="68" ordinal="21" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="69" ordinal="22" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="70" ordinal="23" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="71" ordinal="24" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="72" ordinal="25" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="73" ordinal="26" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="74" ordinal="27" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="75" ordinal="28" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="76" ordinal="29" sl="76" sc="1" el="76" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="77" ordinal="30" sl="77" sc="1" el="77" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="78" ordinal="31" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="79" ordinal="32" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="80" ordinal="33" sl="80" sc="1" el="80" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="81" ordinal="34" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="82" ordinal="35" sl="82" sc="1" el="82" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="83" ordinal="36" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="84" ordinal="37" sl="84" sc="1" el="84" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="85" ordinal="38" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="86" ordinal="39" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="87" ordinal="40" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="88" ordinal="41" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="89" ordinal="42" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="90" ordinal="43" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="91" ordinal="44" sl="91" sc="1" el="91" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="92" ordinal="45" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="93" ordinal="46" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="94" ordinal="47" sl="94" sc="1" el="94" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="95" ordinal="48" sl="95" sc="1" el="95" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="96" ordinal="49" sl="96" sc="1" el="96" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="97" ordinal="50" sl="97" sc="1" el="97" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="98" ordinal="51" sl="98" sc="1" el="98" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="99" ordinal="52" sl="99" sc="1" el="99" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="100" ordinal="53" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="101" ordinal="54" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="102" ordinal="55" sl="102" sc="1" el="102" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="103" ordinal="56" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="104" ordinal="57" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="105" ordinal="58" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="106" ordinal="59" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="107" ordinal="60" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="108" ordinal="61" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="109" ordinal="62" sl="109" sc="1" el="109" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="110" ordinal="63" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="111" ordinal="64" sl="111" sc="1" el="111" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="112" ordinal="65" sl="112" sc="1" el="112" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="113" ordinal="66" sl="113" sc="1" el="113" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="114" ordinal="67" sl="114" sc="1" el="114" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="115" ordinal="68" sl="115" sc="1" el="115" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="116" ordinal="69" sl="116" sc="1" el="116" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="117" ordinal="70" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="118" ordinal="71" sl="118" sc="1" el="118" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="119" ordinal="72" sl="119" sc="1" el="119" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="120" ordinal="73" sl="120" sc="1" el="120" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="121" ordinal="74" sl="121" sc="1" el="121" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="122" ordinal="75" sl="122" sc="1" el="122" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="123" ordinal="76" sl="123" sc="1" el="123" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="124" ordinal="77" sl="124" sc="1" el="124" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="125" ordinal="78" sl="125" sc="1" el="125" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="126" ordinal="79" sl="126" sc="1" el="126" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="127" ordinal="80" sl="127" sc="1" el="127" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="128" ordinal="81" sl="128" sc="1" el="128" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="129" ordinal="82" sl="129" sc="1" el="129" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="130" ordinal="83" sl="130" sc="1" el="130" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="131" ordinal="84" sl="131" sc="1" el="131" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="132" ordinal="85" sl="132" sc="1" el="132" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="133" ordinal="86" sl="133" sc="1" el="133" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="134" ordinal="87" sl="134" sc="1" el="134" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="135" ordinal="88" sl="135" sc="1" el="135" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="136" ordinal="89" sl="136" sc="1" el="136" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="137" ordinal="90" sl="137" sc="1" el="137" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="138" ordinal="91" sl="138" sc="1" el="138" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="139" ordinal="92" sl="139" sc="1" el="139" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="140" ordinal="93" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="141" ordinal="94" sl="141" sc="1" el="141" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="142" ordinal="95" sl="142" sc="1" el="142" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="143" ordinal="96" sl="143" sc="1" el="143" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="144" ordinal="97" sl="144" sc="1" el="144" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="145" ordinal="98" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="146" ordinal="99" sl="146" sc="1" el="146" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="147" ordinal="100" sl="147" sc="1" el="147" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="148" ordinal="101" sl="148" sc="1" el="148" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="149" ordinal="102" sl="149" sc="1" el="149" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="150" ordinal="103" sl="150" sc="1" el="150" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="151" ordinal="104" sl="151" sc="1" el="151" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="152" ordinal="105" sl="152" sc="1" el="152" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="153" ordinal="106" sl="153" sc="1" el="153" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="154" ordinal="107" sl="154" sc="1" el="154" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="155" ordinal="108" sl="155" sc="1" el="155" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="156" ordinal="109" sl="156" sc="1" el="156" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="157" ordinal="110" sl="157" sc="1" el="157" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="158" ordinal="111" sl="158" sc="1" el="158" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="159" ordinal="112" sl="159" sc="1" el="159" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="160" ordinal="113" sl="160" sc="1" el="160" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="161" ordinal="114" sl="161" sc="1" el="161" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="162" ordinal="115" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="163" ordinal="116" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="164" ordinal="117" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="165" ordinal="118" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="166" ordinal="119" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="167" ordinal="120" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="168" ordinal="121" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="169" ordinal="122" sl="169" sc="1" el="169" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="170" ordinal="123" sl="170" sc="1" el="170" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="171" ordinal="124" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="172" ordinal="125" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="173" ordinal="126" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="174" ordinal="127" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="175" ordinal="128" sl="175" sc="1" el="175" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="176" ordinal="129" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="177" ordinal="130" sl="177" sc="1" el="177" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="178" ordinal="131" sl="178" sc="1" el="178" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="179" ordinal="132" sl="179" sc="1" el="179" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="180" ordinal="133" sl="180" sc="1" el="180" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="181" ordinal="134" sl="181" sc="1" el="181" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="182" ordinal="135" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="183" ordinal="136" sl="183" sc="1" el="183" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="184" ordinal="137" sl="184" sc="1" el="184" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="185" ordinal="138" sl="185" sc="1" el="185" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="186" ordinal="139" sl="186" sc="1" el="186" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="187" ordinal="140" sl="187" sc="1" el="187" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="188" ordinal="141" sl="188" sc="1" el="188" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="189" ordinal="142" sl="189" sc="1" el="189" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="190" ordinal="143" sl="190" sc="1" el="190" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="191" ordinal="144" sl="191" sc="1" el="191" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="192" ordinal="145" sl="192" sc="1" el="192" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="193" ordinal="146" sl="193" sc="1" el="193" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="194" ordinal="147" sl="194" sc="1" el="194" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="195" ordinal="148" sl="195" sc="1" el="195" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="196" ordinal="149" sl="196" sc="1" el="196" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="197" ordinal="150" sl="197" sc="1" el="197" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="198" ordinal="151" sl="198" sc="1" el="198" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="199" ordinal="152" sl="199" sc="1" el="199" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="200" ordinal="153" sl="200" sc="1" el="200" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="201" ordinal="154" sl="201" sc="1" el="201" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="202" ordinal="155" sl="202" sc="1" el="202" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="203" ordinal="156" sl="203" sc="1" el="203" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="204" ordinal="157" sl="204" sc="1" el="204" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="205" ordinal="158" sl="205" sc="1" el="205" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="206" ordinal="159" sl="206" sc="1" el="206" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="207" ordinal="160" sl="207" sc="1" el="207" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="208" ordinal="161" sl="208" sc="1" el="208" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="209" ordinal="162" sl="209" sc="1" el="209" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="210" ordinal="163" sl="210" sc="1" el="210" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="211" ordinal="164" sl="211" sc="1" el="211" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="212" ordinal="165" sl="212" sc="1" el="212" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="213" ordinal="166" sl="213" sc="1" el="213" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="214" ordinal="167" sl="214" sc="1" el="214" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="215" ordinal="168" sl="215" sc="1" el="215" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="216" ordinal="169" sl="216" sc="1" el="216" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="217" ordinal="170" sl="217" sc="1" el="217" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="218" ordinal="171" sl="218" sc="1" el="218" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="219" ordinal="172" sl="219" sc="1" el="219" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="220" ordinal="173" sl="220" sc="1" el="220" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="221" ordinal="174" sl="221" sc="1" el="221" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="222" ordinal="175" sl="222" sc="1" el="222" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="223" ordinal="176" sl="223" sc="1" el="223" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="224" ordinal="177" sl="224" sc="1" el="224" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="225" ordinal="178" sl="225" sc="1" el="225" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="226" ordinal="179" sl="226" sc="1" el="226" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="227" ordinal="180" sl="227" sc="1" el="227" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="228" ordinal="181" sl="228" sc="1" el="228" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="229" ordinal="182" sl="229" sc="1" el="229" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="230" ordinal="183" sl="230" sc="1" el="230" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="231" ordinal="184" sl="231" sc="1" el="231" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="232" ordinal="185" sl="232" sc="1" el="232" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="233" ordinal="186" sl="233" sc="1" el="233" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="234" ordinal="187" sl="234" sc="1" el="234" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="235" ordinal="188" sl="235" sc="1" el="235" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="236" ordinal="189" sl="236" sc="1" el="236" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="237" ordinal="190" sl="237" sc="1" el="237" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="238" ordinal="191" sl="238" sc="1" el="238" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="239" ordinal="192" sl="239" sc="1" el="239" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="240" ordinal="193" sl="240" sc="1" el="240" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="241" ordinal="194" sl="241" sc="1" el="241" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="242" ordinal="195" sl="242" sc="1" el="242" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="243" ordinal="196" sl="243" sc="1" el="243" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="244" ordinal="197" sl="244" sc="1" el="244" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="245" ordinal="198" sl="245" sc="1" el="245" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="246" ordinal="199" sl="246" sc="1" el="246" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="247" ordinal="200" sl="247" sc="1" el="247" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="248" ordinal="201" sl="248" sc="1" el="248" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="249" ordinal="202" sl="249" sc="1" el="249" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="250" ordinal="203" sl="250" sc="1" el="250" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="251" ordinal="204" sl="251" sc="1" el="251" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="252" ordinal="205" sl="252" sc="1" el="252" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="253" ordinal="206" sl="253" sc="1" el="253" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="254" ordinal="207" sl="254" sc="1" el="254" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="255" ordinal="208" sl="255" sc="1" el="255" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="256" ordinal="209" sl="256" sc="1" el="256" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="257" ordinal="210" sl="257" sc="1" el="257" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="258" ordinal="211" sl="258" sc="1" el="258" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="259" ordinal="212" sl="259" sc="1" el="259" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="260" ordinal="213" sl="260" sc="1" el="260" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="261" ordinal="214" sl="261" sc="1" el="261" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="262" ordinal="215" sl="262" sc="1" el="262" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="263" ordinal="216" sl="263" sc="1" el="263" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="264" ordinal="217" sl="264" sc="1" el="264" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="265" ordinal="218" sl="265" sc="1" el="265" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="266" ordinal="219" sl="266" sc="1" el="266" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="267" ordinal="220" sl="267" sc="1" el="267" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="268" ordinal="221" sl="268" sc="1" el="268" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="269" ordinal="222" sl="269" sc="1" el="269" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="270" ordinal="223" sl="270" sc="1" el="270" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="271" ordinal="224" sl="271" sc="1" el="271" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="272" ordinal="225" sl="272" sc="1" el="272" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="273" ordinal="226" sl="273" sc="1" el="273" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="274" ordinal="227" sl="274" sc="1" el="274" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="275" ordinal="228" sl="275" sc="1" el="275" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="276" ordinal="229" sl="276" sc="1" el="276" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="277" ordinal="230" sl="277" sc="1" el="277" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="278" ordinal="231" sl="278" sc="1" el="278" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="279" ordinal="232" sl="279" sc="1" el="279" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="280" ordinal="233" sl="280" sc="1" el="280" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="281" ordinal="234" sl="281" sc="1" el="281" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="282" ordinal="235" sl="282" sc="1" el="282" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="283" ordinal="236" sl="283" sc="1" el="283" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="284" ordinal="237" sl="284" sc="1" el="284" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="285" ordinal="238" sl="285" sc="1" el="285" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="286" ordinal="239" sl="286" sc="1" el="286" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="287" ordinal="240" sl="287" sc="1" el="287" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="288" ordinal="241" sl="288" sc="1" el="288" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="289" ordinal="242" sl="289" sc="1" el="289" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="290" ordinal="243" sl="290" sc="1" el="290" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="291" ordinal="244" sl="291" sc="1" el="291" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="292" ordinal="245" sl="292" sc="1" el="292" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="293" ordinal="246" sl="293" sc="1" el="293" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="294" ordinal="247" sl="294" sc="1" el="294" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="295" ordinal="248" sl="295" sc="1" el="295" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="296" ordinal="249" sl="296" sc="1" el="296" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="297" ordinal="250" sl="297" sc="1" el="297" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="298" ordinal="251" sl="298" sc="1" el="298" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="299" ordinal="252" sl="299" sc="1" el="299" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="300" ordinal="253" sl="300" sc="1" el="300" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="301" ordinal="254" sl="301" sc="1" el="301" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="302" ordinal="255" sl="302" sc="1" el="302" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="303" ordinal="256" sl="303" sc="1" el="303" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="304" ordinal="257" sl="304" sc="1" el="304" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="305" ordinal="258" sl="305" sc="1" el="305" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="306" ordinal="259" sl="306" sc="1" el="306" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="307" ordinal="260" sl="307" sc="1" el="307" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="308" ordinal="261" sl="308" sc="1" el="308" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="309" ordinal="262" sl="309" sc="1" el="309" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="310" ordinal="263" sl="310" sc="1" el="310" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="311" ordinal="264" sl="311" sc="1" el="311" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="312" ordinal="265" sl="312" sc="1" el="312" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="313" ordinal="266" sl="313" sc="1" el="313" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="314" ordinal="267" sl="314" sc="1" el="314" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="315" ordinal="268" sl="315" sc="1" el="315" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="316" ordinal="269" sl="316" sc="1" el="316" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="317" ordinal="270" sl="317" sc="1" el="317" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="318" ordinal="271" sl="318" sc="1" el="318" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="319" ordinal="272" sl="319" sc="1" el="319" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="320" ordinal="273" sl="320" sc="1" el="320" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="321" ordinal="274" sl="321" sc="1" el="321" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="322" ordinal="275" sl="322" sc="1" el="322" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="323" ordinal="276" sl="323" sc="1" el="323" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="324" ordinal="277" sl="324" sc="1" el="324" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="325" ordinal="278" sl="325" sc="1" el="325" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="326" ordinal="279" sl="326" sc="1" el="326" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="327" ordinal="280" sl="327" sc="1" el="327" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="328" ordinal="281" sl="328" sc="1" el="328" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="329" ordinal="282" sl="329" sc="1" el="329" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="330" ordinal="283" sl="330" sc="1" el="330" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="331" ordinal="284" sl="331" sc="1" el="331" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="332" ordinal="285" sl="332" sc="1" el="332" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="333" ordinal="286" sl="333" sc="1" el="333" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="334" ordinal="287" sl="334" sc="1" el="334" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="335" ordinal="288" sl="335" sc="1" el="335" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="336" ordinal="289" sl="336" sc="1" el="336" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="337" ordinal="290" sl="337" sc="1" el="337" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="338" ordinal="291" sl="338" sc="1" el="338" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="339" ordinal="292" sl="339" sc="1" el="339" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="340" ordinal="293" sl="340" sc="1" el="340" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="341" ordinal="294" sl="341" sc="1" el="341" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="342" ordinal="295" sl="342" sc="1" el="342" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="343" ordinal="296" sl="343" sc="1" el="343" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="344" ordinal="297" sl="344" sc="1" el="344" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="345" ordinal="298" sl="345" sc="1" el="345" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="346" ordinal="299" sl="346" sc="1" el="346" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="347" ordinal="300" sl="347" sc="1" el="347" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="348" ordinal="301" sl="348" sc="1" el="348" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="349" ordinal="302" sl="349" sc="1" el="349" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="350" ordinal="303" sl="350" sc="1" el="350" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="351" ordinal="304" sl="351" sc="1" el="351" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="352" ordinal="305" sl="352" sc="1" el="352" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="353" ordinal="306" sl="353" sc="1" el="353" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="354" ordinal="307" sl="354" sc="1" el="354" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="355" ordinal="308" sl="355" sc="1" el="355" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="356" ordinal="309" sl="356" sc="1" el="356" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="357" ordinal="310" sl="357" sc="1" el="357" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="358" ordinal="311" sl="358" sc="1" el="358" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="359" ordinal="312" sl="359" sc="1" el="359" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="360" ordinal="313" sl="360" sc="1" el="360" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="361" ordinal="314" sl="361" sc="1" el="361" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="362" ordinal="315" sl="362" sc="1" el="362" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="363" ordinal="316" sl="363" sc="1" el="363" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="364" ordinal="317" sl="364" sc="1" el="364" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="365" ordinal="318" sl="365" sc="1" el="365" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="366" ordinal="319" sl="366" sc="1" el="366" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="367" ordinal="320" sl="367" sc="1" el="367" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="368" ordinal="321" sl="368" sc="1" el="368" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="369" ordinal="322" sl="369" sc="1" el="369" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="370" ordinal="323" sl="370" sc="1" el="370" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="371" ordinal="324" sl="371" sc="1" el="371" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="372" ordinal="325" sl="372" sc="1" el="372" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="373" ordinal="326" sl="373" sc="1" el="373" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="374" ordinal="327" sl="374" sc="1" el="374" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="375" ordinal="328" sl="375" sc="1" el="375" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="376" ordinal="329" sl="376" sc="1" el="376" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="377" ordinal="330" sl="377" sc="1" el="377" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="378" ordinal="331" sl="378" sc="1" el="378" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="379" ordinal="332" sl="379" sc="1" el="379" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="380" ordinal="333" sl="380" sc="1" el="380" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="381" ordinal="334" sl="381" sc="1" el="381" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="382" ordinal="335" sl="382" sc="1" el="382" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="383" ordinal="336" sl="383" sc="1" el="383" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="384" ordinal="337" sl="384" sc="1" el="384" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="385" ordinal="338" sl="385" sc="1" el="385" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="386" ordinal="339" sl="386" sc="1" el="386" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="387" ordinal="340" sl="387" sc="1" el="387" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="388" ordinal="341" sl="388" sc="1" el="388" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="389" ordinal="342" sl="389" sc="1" el="389" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="390" ordinal="343" sl="390" sc="1" el="390" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="391" ordinal="344" sl="391" sc="1" el="391" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="392" ordinal="345" sl="392" sc="1" el="392" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="393" ordinal="346" sl="393" sc="1" el="393" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="394" ordinal="347" sl="394" sc="1" el="394" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="395" ordinal="348" sl="395" sc="1" el="395" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="396" ordinal="349" sl="396" sc="1" el="396" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="397" ordinal="350" sl="397" sc="1" el="397" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="398" ordinal="351" sl="398" sc="1" el="398" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="399" ordinal="352" sl="399" sc="1" el="399" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="400" ordinal="353" sl="400" sc="1" el="400" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="401" ordinal="354" sl="401" sc="1" el="401" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="402" ordinal="355" sl="402" sc="1" el="402" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="403" ordinal="356" sl="403" sc="1" el="403" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="404" ordinal="357" sl="404" sc="1" el="404" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="405" ordinal="358" sl="405" sc="1" el="405" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="406" ordinal="359" sl="406" sc="1" el="406" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="407" ordinal="360" sl="407" sc="1" el="407" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="408" ordinal="361" sl="408" sc="1" el="408" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="409" ordinal="362" sl="409" sc="1" el="409" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="410" ordinal="363" sl="410" sc="1" el="410" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="411" ordinal="364" sl="411" sc="1" el="411" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="412" ordinal="365" sl="412" sc="1" el="412" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="413" ordinal="366" sl="413" sc="1" el="413" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="414" ordinal="367" sl="414" sc="1" el="414" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="415" ordinal="368" sl="415" sc="1" el="415" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="416" ordinal="369" sl="416" sc="1" el="416" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="417" ordinal="370" sl="417" sc="1" el="417" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="418" ordinal="371" sl="418" sc="1" el="418" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="419" ordinal="372" sl="419" sc="1" el="419" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="420" ordinal="373" sl="420" sc="1" el="420" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="421" ordinal="374" sl="421" sc="1" el="421" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="422" ordinal="375" sl="422" sc="1" el="422" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="423" ordinal="376" sl="423" sc="1" el="423" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="424" ordinal="377" sl="424" sc="1" el="424" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="425" ordinal="378" sl="425" sc="1" el="425" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="426" ordinal="379" sl="426" sc="1" el="426" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="427" ordinal="380" sl="427" sc="1" el="427" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="428" ordinal="381" sl="428" sc="1" el="428" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="429" ordinal="382" sl="429" sc="1" el="429" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="430" ordinal="383" sl="430" sc="1" el="430" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="431" ordinal="384" sl="431" sc="1" el="431" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="432" ordinal="385" sl="432" sc="1" el="432" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="433" ordinal="386" sl="433" sc="1" el="433" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="434" ordinal="387" sl="434" sc="1" el="434" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="435" ordinal="388" sl="435" sc="1" el="435" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="436" ordinal="389" sl="436" sc="1" el="436" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="437" ordinal="390" sl="437" sc="1" el="437" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="438" ordinal="391" sl="438" sc="1" el="438" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="439" ordinal="392" sl="439" sc="1" el="439" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="440" ordinal="393" sl="440" sc="1" el="440" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="441" ordinal="394" sl="441" sc="1" el="441" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="442" ordinal="395" sl="442" sc="1" el="442" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="443" ordinal="396" sl="443" sc="1" el="443" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="444" ordinal="397" sl="444" sc="1" el="444" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="445" ordinal="398" sl="445" sc="1" el="445" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="446" ordinal="399" sl="446" sc="1" el="446" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="447" ordinal="400" sl="447" sc="1" el="447" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="448" ordinal="401" sl="448" sc="1" el="448" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="449" ordinal="402" sl="449" sc="1" el="449" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="450" ordinal="403" sl="450" sc="1" el="450" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="451" ordinal="404" sl="451" sc="1" el="451" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="452" ordinal="405" sl="452" sc="1" el="452" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="453" ordinal="406" sl="453" sc="1" el="453" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="454" ordinal="407" sl="454" sc="1" el="454" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="455" ordinal="408" sl="455" sc="1" el="455" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="456" ordinal="409" sl="456" sc="1" el="456" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="457" ordinal="410" sl="457" sc="1" el="457" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="458" ordinal="411" sl="458" sc="1" el="458" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="459" ordinal="412" sl="459" sc="1" el="459" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="460" ordinal="413" sl="460" sc="1" el="460" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="461" ordinal="414" sl="461" sc="1" el="461" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="462" ordinal="415" sl="462" sc="1" el="462" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="463" ordinal="416" sl="463" sc="1" el="463" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="464" ordinal="417" sl="464" sc="1" el="464" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="465" ordinal="418" sl="465" sc="1" el="465" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="466" ordinal="419" sl="466" sc="1" el="466" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="467" ordinal="420" sl="467" sc="1" el="467" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="468" ordinal="421" sl="468" sc="1" el="468" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="469" ordinal="422" sl="469" sc="1" el="469" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="470" ordinal="423" sl="470" sc="1" el="470" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="471" ordinal="424" sl="471" sc="1" el="471" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="472" ordinal="425" sl="472" sc="1" el="472" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="473" ordinal="426" sl="473" sc="1" el="473" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="474" ordinal="427" sl="474" sc="1" el="474" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="475" ordinal="428" sl="475" sc="1" el="475" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="476" ordinal="429" sl="476" sc="1" el="476" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="477" ordinal="430" sl="477" sc="1" el="477" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="478" ordinal="431" sl="478" sc="1" el="478" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="479" ordinal="432" sl="479" sc="1" el="479" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="480" ordinal="433" sl="480" sc="1" el="480" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="481" ordinal="434" sl="481" sc="1" el="481" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="482" ordinal="435" sl="482" sc="1" el="482" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="483" ordinal="436" sl="483" sc="1" el="483" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="484" ordinal="437" sl="484" sc="1" el="484" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="485" ordinal="438" sl="485" sc="1" el="485" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="486" ordinal="439" sl="486" sc="1" el="486" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="487" ordinal="440" sl="487" sc="1" el="487" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="488" ordinal="441" sl="488" sc="1" el="488" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="489" ordinal="442" sl="489" sc="1" el="489" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="490" ordinal="443" sl="490" sc="1" el="490" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="491" ordinal="444" sl="491" sc="1" el="491" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="492" ordinal="445" sl="492" sc="1" el="492" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="493" ordinal="446" sl="493" sc="1" el="493" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="494" ordinal="447" sl="494" sc="1" el="494" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="495" ordinal="448" sl="495" sc="1" el="495" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="496" ordinal="449" sl="496" sc="1" el="496" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="497" ordinal="450" sl="497" sc="1" el="497" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="498" ordinal="451" sl="498" sc="1" el="498" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="499" ordinal="452" sl="499" sc="1" el="499" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="500" ordinal="453" sl="500" sc="1" el="500" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="501" ordinal="454" sl="501" sc="1" el="501" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="502" ordinal="455" sl="502" sc="1" el="502" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="503" ordinal="456" sl="503" sc="1" el="503" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="504" ordinal="457" sl="504" sc="1" el="504" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="505" ordinal="458" sl="505" sc="1" el="505" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="506" ordinal="459" sl="506" sc="1" el="506" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="507" ordinal="460" sl="507" sc="1" el="507" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="508" ordinal="461" sl="508" sc="1" el="508" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="509" ordinal="462" sl="509" sc="1" el="509" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="510" ordinal="463" sl="510" sc="1" el="510" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="511" ordinal="464" sl="511" sc="1" el="511" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="512" ordinal="465" sl="512" sc="1" el="512" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="513" ordinal="466" sl="513" sc="1" el="513" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="514" ordinal="467" sl="514" sc="1" el="514" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="515" ordinal="468" sl="515" sc="1" el="515" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="516" ordinal="469" sl="516" sc="1" el="516" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="517" ordinal="470" sl="517" sc="1" el="517" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="518" ordinal="471" sl="518" sc="1" el="518" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="519" ordinal="472" sl="519" sc="1" el="519" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="520" ordinal="473" sl="520" sc="1" el="520" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="521" ordinal="474" sl="521" sc="1" el="521" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="522" ordinal="475" sl="522" sc="1" el="522" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="523" ordinal="476" sl="523" sc="1" el="523" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="524" ordinal="477" sl="524" sc="1" el="524" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="525" ordinal="478" sl="525" sc="1" el="525" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="526" ordinal="479" sl="526" sc="1" el="526" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="527" ordinal="480" sl="527" sc="1" el="527" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="528" ordinal="481" sl="528" sc="1" el="528" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="529" ordinal="482" sl="529" sc="1" el="529" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="530" ordinal="483" sl="530" sc="1" el="530" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="531" ordinal="484" sl="531" sc="1" el="531" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="532" ordinal="485" sl="532" sc="1" el="532" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="533" ordinal="486" sl="533" sc="1" el="533" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="534" ordinal="487" sl="534" sc="1" el="534" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="535" ordinal="488" sl="535" sc="1" el="535" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="536" ordinal="489" sl="536" sc="1" el="536" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="537" ordinal="490" sl="537" sc="1" el="537" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="538" ordinal="491" sl="538" sc="1" el="538" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="539" ordinal="492" sl="539" sc="1" el="539" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="540" ordinal="493" sl="540" sc="1" el="540" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="541" ordinal="494" sl="541" sc="1" el="541" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="542" ordinal="495" sl="542" sc="1" el="542" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="543" ordinal="496" sl="543" sc="1" el="543" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="544" ordinal="497" sl="544" sc="1" el="544" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="545" ordinal="498" sl="545" sc="1" el="545" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="546" ordinal="499" sl="546" sc="1" el="546" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="547" ordinal="500" sl="547" sc="1" el="547" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="548" ordinal="501" sl="548" sc="1" el="548" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="549" ordinal="502" sl="549" sc="1" el="549" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="550" ordinal="503" sl="550" sc="1" el="550" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="551" ordinal="504" sl="551" sc="1" el="551" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="552" ordinal="505" sl="552" sc="1" el="552" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="553" ordinal="506" sl="553" sc="1" el="553" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="554" ordinal="507" sl="554" sc="1" el="554" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="555" ordinal="508" sl="555" sc="1" el="555" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="556" ordinal="509" sl="556" sc="1" el="556" ec="2" bec="0" bev="0" fileid="302" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="47" ec="1" el="556" bec="0" bev="0" fileid="302" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.DropParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.DropDto,System.Int16>)</Name> <FileRef uid="302" /> <SequencePoints> <SequencePoint vc="0" uspid="30" ordinal="0" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="31" ordinal="1" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="32" ordinal="2" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="302" /> <SequencePoint vc="0" uspid="33" ordinal="3" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="302" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="30" ec="1" el="33" bec="0" bev="0" fileid="302" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="50" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.Parser.Parsers.I18NParser`2</FullName> <Methods> <Method cyclomaticComplexity="4" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="4" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.String NosCore.Parser.Parsers.I18NParser`2::I18NTextFileName(System.String,NosCore.Shared.Enumerations.RegionType)</Name> <FileRef uid="303" /> <SequencePoints> <SequencePoint vc="0" uspid="46" ordinal="0" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="47" ordinal="1" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="48" ordinal="2" sl="48" sc="1" el="48" ec="2" bec="4" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="49" ordinal="3" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="50" ordinal="4" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="303" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="48" ordinal="0" path="0" offset="31" offsetend="33" sl="48" fileid="303" /> <BranchPoint vc="0" uspid="48" ordinal="2" path="0" offset="44" offsetend="46" sl="48" fileid="303" /> <BranchPoint vc="0" uspid="48" ordinal="3" path="1" offset="44" offsetend="49" sl="48" fileid="303" /> <BranchPoint vc="0" uspid="48" ordinal="1" path="1" offset="31" offsetend="56" sl="48" fileid="303" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="46" ec="1" el="50" bec="0" bev="0" fileid="303" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="4" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="40" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="4" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.Parsers.I18NParser`2::InsertI18NAsync(System.String,NosCore.Data.Enumerations.I18N.LogLanguageKey)</Name> <FileRef uid="303" /> <SequencePoints> <SequencePoint vc="0" uspid="53" ordinal="0" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="54" ordinal="1" sl="54" sc="1" el="54" ec="2" bec="4" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="56" ordinal="2" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="57" ordinal="3" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="58" ordinal="4" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="59" ordinal="5" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="60" ordinal="6" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="61" ordinal="7" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="62" ordinal="8" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="63" ordinal="9" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="64" ordinal="10" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="65" ordinal="11" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="66" ordinal="12" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="67" ordinal="13" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="68" ordinal="14" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="69" ordinal="15" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="70" ordinal="16" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="71" ordinal="17" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="72" ordinal="18" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="73" ordinal="19" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="74" ordinal="20" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="75" ordinal="21" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="76" ordinal="22" sl="76" sc="1" el="76" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="77" ordinal="23" sl="77" sc="1" el="77" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="78" ordinal="24" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="79" ordinal="25" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="80" ordinal="26" sl="80" sc="1" el="80" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="81" ordinal="27" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="82" ordinal="28" sl="82" sc="1" el="82" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="83" ordinal="29" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="84" ordinal="30" sl="84" sc="1" el="84" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="85" ordinal="31" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="86" ordinal="32" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="87" ordinal="33" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="88" ordinal="34" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="89" ordinal="35" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="90" ordinal="36" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="91" ordinal="37" sl="91" sc="1" el="91" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="92" ordinal="38" sl="92" sc="1" el="92" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="93" ordinal="39" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="303" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="54" ordinal="0" path="0" offset="46" offsetend="48" sl="54" fileid="303" /> <BranchPoint vc="0" uspid="54" ordinal="1" path="1" offset="46" offsetend="71" sl="54" fileid="303" /> <BranchPoint vc="0" uspid="54" ordinal="2" path="0" offset="77" offsetend="79" sl="54" fileid="303" /> <BranchPoint vc="0" uspid="54" ordinal="3" path="1" offset="77" offsetend="102" sl="54" fileid="303" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="53" ec="1" el="93" bec="0" bev="0" fileid="303" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.I18NParser`2::.ctor(NosCore.Dao.Interfaces.IDao`2<TDto,TPk>,Serilog.ILogger)</Name> <FileRef uid="303" /> <SequencePoints> <SequencePoint vc="0" uspid="39" ordinal="0" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="40" ordinal="1" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="41" ordinal="2" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="42" ordinal="3" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="303" /> <SequencePoint vc="0" uspid="43" ordinal="4" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="303" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="39" ec="1" el="43" bec="0" bev="0" fileid="303" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="440" visitedSequencePoints="0" numBranchPoints="759" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="430" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="38" /> <FullName>NosCore.Parser.Parsers.ItemParser</FullName> <Methods> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="24" visitedSequencePoints="0" numBranchPoints="10" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Collections.Generic.List`1<NosCore.Data.StaticEntities.BCardDto> NosCore.Parser.Parsers.ItemParser::ImportBCards(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="178" ordinal="0" sl="178" sc="1" el="178" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="179" ordinal="1" sl="179" sc="1" el="179" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="180" ordinal="2" sl="180" sc="1" el="180" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="181" ordinal="3" sl="181" sc="1" el="181" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="182" ordinal="4" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="183" ordinal="5" sl="183" sc="1" el="183" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="184" ordinal="6" sl="184" sc="1" el="184" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="185" ordinal="7" sl="185" sc="1" el="185" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="188" ordinal="8" sl="188" sc="1" el="188" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="189" ordinal="9" sl="189" sc="1" el="189" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="190" ordinal="10" sl="190" sc="1" el="190" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="191" ordinal="11" sl="191" sc="1" el="191" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="192" ordinal="12" sl="192" sc="1" el="192" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="193" ordinal="13" sl="193" sc="1" el="193" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="194" ordinal="14" sl="194" sc="1" el="194" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="195" ordinal="15" sl="195" sc="1" el="195" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="196" ordinal="16" sl="196" sc="1" el="196" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="197" ordinal="17" sl="197" sc="1" el="197" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="198" ordinal="18" sl="198" sc="1" el="198" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="199" ordinal="19" sl="199" sc="1" el="199" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="200" ordinal="20" sl="200" sc="1" el="200" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="201" ordinal="21" sl="201" sc="1" el="201" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="203" ordinal="22" sl="203" sc="1" el="203" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="204" ordinal="23" sl="204" sc="1" el="204" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="180" ordinal="9" path="1" offset="322" offsetend="14" sl="180" fileid="304" /> <BranchPoint vc="0" uspid="183" ordinal="0" path="0" offset="42" offsetend="44" sl="183" fileid="304" /> <BranchPoint vc="0" uspid="183" ordinal="1" path="1" offset="42" offsetend="54" sl="183" fileid="304" /> <BranchPoint vc="0" uspid="183" ordinal="2" path="0" offset="59" offsetend="61" sl="183" fileid="304" /> <BranchPoint vc="0" uspid="183" ordinal="3" path="1" offset="59" offsetend="67" sl="183" fileid="304" /> <BranchPoint vc="0" uspid="189" ordinal="4" path="0" offset="194" offsetend="196" sl="189" fileid="304" /> <BranchPoint vc="0" uspid="189" ordinal="5" path="1" offset="194" offsetend="199" sl="189" fileid="304" /> <BranchPoint vc="0" uspid="189" ordinal="6" path="0" offset="214" offsetend="216" sl="189" fileid="304" /> <BranchPoint vc="0" uspid="189" ordinal="7" path="1" offset="214" offsetend="222" sl="189" fileid="304" /> <BranchPoint vc="0" uspid="180" ordinal="8" path="0" offset="322" offsetend="327" sl="180" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="178" ec="1" el="204" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="13" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="13" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="13" minCyclomaticComplexity="13" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Byte NosCore.Parser.Parsers.ItemParser::ImportLevelMinimum(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="207" ordinal="0" sl="207" sc="1" el="207" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="208" ordinal="1" sl="208" sc="1" el="208" ec="2" bec="9" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="209" ordinal="2" sl="209" sc="1" el="209" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="210" ordinal="3" sl="210" sc="1" el="210" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="211" ordinal="4" sl="211" sc="1" el="211" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="212" ordinal="5" sl="212" sc="1" el="212" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="213" ordinal="6" sl="213" sc="1" el="213" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="214" ordinal="7" sl="214" sc="1" el="214" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="215" ordinal="8" sl="215" sc="1" el="215" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="216" ordinal="9" sl="216" sc="1" el="216" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="217" ordinal="10" sl="217" sc="1" el="217" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="208" ordinal="0" path="0" offset="10" offsetend="12" sl="208" fileid="304" /> <BranchPoint vc="0" uspid="208" ordinal="1" path="1" offset="10" offsetend="13" sl="208" fileid="304" /> <BranchPoint vc="0" uspid="208" ordinal="5" path="3" offset="14" offsetend="45" sl="208" fileid="304" /> <BranchPoint vc="0" uspid="208" ordinal="4" path="2" offset="14" offsetend="63" sl="208" fileid="304" /> <BranchPoint vc="0" uspid="208" ordinal="3" path="1" offset="14" offsetend="81" sl="208" fileid="304" /> <BranchPoint vc="0" uspid="208" ordinal="6" path="4" offset="14" offsetend="99" sl="208" fileid="304" /> <BranchPoint vc="0" uspid="213" ordinal="10" path="1" offset="108" offsetend="112" sl="213" fileid="304" /> <BranchPoint vc="0" uspid="208" ordinal="8" path="6" offset="14" offsetend="130" sl="208" fileid="304" /> <BranchPoint vc="0" uspid="208" ordinal="2" path="0" offset="14" offsetend="148" sl="208" fileid="304" /> <BranchPoint vc="0" uspid="208" ordinal="7" path="5" offset="14" offsetend="148" sl="208" fileid="304" /> <BranchPoint vc="0" uspid="213" ordinal="9" path="0" offset="108" offsetend="148" sl="213" fileid="304" /> <BranchPoint vc="0" uspid="215" ordinal="11" path="0" offset="157" offsetend="159" sl="215" fileid="304" /> <BranchPoint vc="0" uspid="215" ordinal="12" path="1" offset="157" offsetend="160" sl="215" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="207" ec="1" el="217" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="34" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="21" visitedSequencePoints="0" numBranchPoints="34" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="34" minCyclomaticComplexity="34" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int32 NosCore.Parser.Parsers.ItemParser::ImportEffectValue(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="220" ordinal="0" sl="220" sc="1" el="220" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="221" ordinal="1" sl="221" sc="1" el="221" ec="2" bec="28" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="222" ordinal="2" sl="222" sc="1" el="222" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="223" ordinal="3" sl="223" sc="1" el="223" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="224" ordinal="4" sl="224" sc="1" el="224" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="225" ordinal="5" sl="225" sc="1" el="225" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="226" ordinal="6" sl="226" sc="1" el="226" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="227" ordinal="7" sl="227" sc="1" el="227" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="228" ordinal="8" sl="228" sc="1" el="228" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="229" ordinal="9" sl="229" sc="1" el="229" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="230" ordinal="10" sl="230" sc="1" el="230" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="231" ordinal="11" sl="231" sc="1" el="231" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="232" ordinal="12" sl="232" sc="1" el="232" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="233" ordinal="13" sl="233" sc="1" el="233" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="234" ordinal="14" sl="234" sc="1" el="234" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="235" ordinal="15" sl="235" sc="1" el="235" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="236" ordinal="16" sl="236" sc="1" el="236" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="237" ordinal="17" sl="237" sc="1" el="237" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="238" ordinal="18" sl="238" sc="1" el="238" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="239" ordinal="19" sl="239" sc="1" el="239" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="240" ordinal="20" sl="240" sc="1" el="240" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="221" ordinal="0" path="0" offset="10" offsetend="12" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="1" path="1" offset="10" offsetend="13" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="2" path="0" offset="15" offsetend="17" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="4" path="0" offset="19" offsetend="23" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="3" path="1" offset="15" offsetend="35" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="8" path="0" offset="39" offsetend="74" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="5" path="1" offset="19" offsetend="132" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="223" ordinal="29" path="1" offset="141" offsetend="148" sl="223" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="13" path="5" offset="39" offsetend="169" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="224" ordinal="31" path="1" offset="181" offsetend="188" sl="224" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="7" path="1" offset="25" offsetend="209" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="15" path="7" offset="39" offsetend="230" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="17" path="1" offset="78" offsetend="251" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="11" path="3" offset="39" offsetend="272" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="12" path="4" offset="39" offsetend="293" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="9" path="1" offset="39" offsetend="314" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="19" path="3" offset="78" offsetend="335" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="224" ordinal="30" path="0" offset="181" offsetend="353" sl="224" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="23" path="7" offset="78" offsetend="371" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="24" path="8" offset="78" offsetend="389" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="25" path="9" offset="78" offsetend="407" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="26" path="10" offset="78" offsetend="425" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="27" path="11" offset="78" offsetend="443" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="6" path="0" offset="25" offsetend="461" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="10" path="2" offset="39" offsetend="461" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="14" path="6" offset="39" offsetend="461" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="16" path="0" offset="78" offsetend="461" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="18" path="2" offset="78" offsetend="461" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="20" path="4" offset="78" offsetend="461" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="21" path="5" offset="78" offsetend="461" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="221" ordinal="22" path="6" offset="78" offsetend="461" sl="221" fileid="304" /> <BranchPoint vc="0" uspid="223" ordinal="28" path="0" offset="141" offsetend="461" sl="223" fileid="304" /> <BranchPoint vc="0" uspid="238" ordinal="32" path="0" offset="470" offsetend="472" sl="238" fileid="304" /> <BranchPoint vc="0" uspid="238" ordinal="33" path="1" offset="470" offsetend="473" sl="238" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="220" ec="1" el="240" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="10" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int32 NosCore.Parser.Parsers.ItemParser::ImportMinilandObjectPoint(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="244" ordinal="0" sl="244" sc="1" el="244" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="245" ordinal="1" sl="245" sc="1" el="245" ec="2" bec="8" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="246" ordinal="2" sl="246" sc="1" el="246" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="247" ordinal="3" sl="247" sc="1" el="247" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="248" ordinal="4" sl="248" sc="1" el="248" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="249" ordinal="5" sl="249" sc="1" el="249" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="250" ordinal="6" sl="250" sc="1" el="250" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="251" ordinal="7" sl="251" sc="1" el="251" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="252" ordinal="8" sl="252" sc="1" el="252" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="253" ordinal="9" sl="253" sc="1" el="253" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="254" ordinal="10" sl="254" sc="1" el="254" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="245" ordinal="0" path="0" offset="10" offsetend="12" sl="245" fileid="304" /> <BranchPoint vc="0" uspid="245" ordinal="1" path="1" offset="10" offsetend="13" sl="245" fileid="304" /> <BranchPoint vc="0" uspid="245" ordinal="3" path="1" offset="17" offsetend="44" sl="245" fileid="304" /> <BranchPoint vc="0" uspid="245" ordinal="4" path="2" offset="17" offsetend="62" sl="245" fileid="304" /> <BranchPoint vc="0" uspid="245" ordinal="5" path="3" offset="17" offsetend="80" sl="245" fileid="304" /> <BranchPoint vc="0" uspid="245" ordinal="6" path="4" offset="17" offsetend="98" sl="245" fileid="304" /> <BranchPoint vc="0" uspid="245" ordinal="7" path="5" offset="17" offsetend="116" sl="245" fileid="304" /> <BranchPoint vc="0" uspid="245" ordinal="2" path="0" offset="17" offsetend="134" sl="245" fileid="304" /> <BranchPoint vc="0" uspid="252" ordinal="8" path="0" offset="143" offsetend="145" sl="252" fileid="304" /> <BranchPoint vc="0" uspid="252" ordinal="9" path="1" offset="143" offsetend="146" sl="252" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="244" ec="1" el="254" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="10" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Byte NosCore.Parser.Parsers.ItemParser::ImportWidth(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="256" ordinal="0" sl="256" sc="1" el="256" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="257" ordinal="1" sl="257" sc="1" el="257" ec="2" bec="8" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="258" ordinal="2" sl="258" sc="1" el="258" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="259" ordinal="3" sl="259" sc="1" el="259" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="260" ordinal="4" sl="260" sc="1" el="260" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="261" ordinal="5" sl="261" sc="1" el="261" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="262" ordinal="6" sl="262" sc="1" el="262" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="263" ordinal="7" sl="263" sc="1" el="263" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="264" ordinal="8" sl="264" sc="1" el="264" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="265" ordinal="9" sl="265" sc="1" el="265" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="266" ordinal="10" sl="266" sc="1" el="266" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="257" ordinal="0" path="0" offset="10" offsetend="12" sl="257" fileid="304" /> <BranchPoint vc="0" uspid="257" ordinal="1" path="1" offset="10" offsetend="13" sl="257" fileid="304" /> <BranchPoint vc="0" uspid="257" ordinal="3" path="1" offset="17" offsetend="44" sl="257" fileid="304" /> <BranchPoint vc="0" uspid="257" ordinal="4" path="2" offset="17" offsetend="63" sl="257" fileid="304" /> <BranchPoint vc="0" uspid="257" ordinal="5" path="3" offset="17" offsetend="82" sl="257" fileid="304" /> <BranchPoint vc="0" uspid="257" ordinal="6" path="4" offset="17" offsetend="101" sl="257" fileid="304" /> <BranchPoint vc="0" uspid="257" ordinal="7" path="5" offset="17" offsetend="120" sl="257" fileid="304" /> <BranchPoint vc="0" uspid="257" ordinal="2" path="0" offset="17" offsetend="139" sl="257" fileid="304" /> <BranchPoint vc="0" uspid="264" ordinal="8" path="0" offset="148" offsetend="150" sl="264" fileid="304" /> <BranchPoint vc="0" uspid="264" ordinal="9" path="1" offset="148" offsetend="151" sl="264" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="256" ec="1" el="266" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="10" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Byte NosCore.Parser.Parsers.ItemParser::ImportHeight(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="268" ordinal="0" sl="268" sc="1" el="268" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="269" ordinal="1" sl="269" sc="1" el="269" ec="2" bec="8" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="270" ordinal="2" sl="270" sc="1" el="270" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="271" ordinal="3" sl="271" sc="1" el="271" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="272" ordinal="4" sl="272" sc="1" el="272" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="273" ordinal="5" sl="273" sc="1" el="273" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="274" ordinal="6" sl="274" sc="1" el="274" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="275" ordinal="7" sl="275" sc="1" el="275" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="276" ordinal="8" sl="276" sc="1" el="276" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="277" ordinal="9" sl="277" sc="1" el="277" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="278" ordinal="10" sl="278" sc="1" el="278" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="269" ordinal="0" path="0" offset="10" offsetend="12" sl="269" fileid="304" /> <BranchPoint vc="0" uspid="269" ordinal="1" path="1" offset="10" offsetend="13" sl="269" fileid="304" /> <BranchPoint vc="0" uspid="269" ordinal="3" path="1" offset="17" offsetend="44" sl="269" fileid="304" /> <BranchPoint vc="0" uspid="269" ordinal="4" path="2" offset="17" offsetend="63" sl="269" fileid="304" /> <BranchPoint vc="0" uspid="269" ordinal="5" path="3" offset="17" offsetend="82" sl="269" fileid="304" /> <BranchPoint vc="0" uspid="269" ordinal="6" path="4" offset="17" offsetend="101" sl="269" fileid="304" /> <BranchPoint vc="0" uspid="269" ordinal="7" path="5" offset="17" offsetend="120" sl="269" fileid="304" /> <BranchPoint vc="0" uspid="269" ordinal="2" path="0" offset="17" offsetend="139" sl="269" fileid="304" /> <BranchPoint vc="0" uspid="276" ordinal="8" path="0" offset="148" offsetend="150" sl="276" fileid="304" /> <BranchPoint vc="0" uspid="276" ordinal="9" path="1" offset="148" offsetend="151" sl="276" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="5" offset="5" sc="0" sl="268" ec="1" el="278" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="10" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.ItemParser::ImportMp(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="280" ordinal="0" sl="280" sc="1" el="280" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="281" ordinal="1" sl="281" sc="1" el="281" ec="2" bec="8" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="282" ordinal="2" sl="282" sc="1" el="282" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="283" ordinal="3" sl="283" sc="1" el="283" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="284" ordinal="4" sl="284" sc="1" el="284" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="285" ordinal="5" sl="285" sc="1" el="285" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="286" ordinal="6" sl="286" sc="1" el="286" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="287" ordinal="7" sl="287" sc="1" el="287" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="288" ordinal="8" sl="288" sc="1" el="288" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="281" ordinal="0" path="0" offset="10" offsetend="12" sl="281" fileid="304" /> <BranchPoint vc="0" uspid="281" ordinal="1" path="1" offset="10" offsetend="13" sl="281" fileid="304" /> <BranchPoint vc="0" uspid="281" ordinal="2" path="0" offset="16" offsetend="20" sl="281" fileid="304" /> <BranchPoint vc="0" uspid="281" ordinal="4" path="0" offset="23" offsetend="27" sl="281" fileid="304" /> <BranchPoint vc="0" uspid="281" ordinal="5" path="1" offset="23" offsetend="34" sl="281" fileid="304" /> <BranchPoint vc="0" uspid="281" ordinal="3" path="1" offset="16" offsetend="52" sl="281" fileid="304" /> <BranchPoint vc="0" uspid="281" ordinal="7" path="1" offset="30" offsetend="70" sl="281" fileid="304" /> <BranchPoint vc="0" uspid="281" ordinal="6" path="0" offset="30" offsetend="88" sl="281" fileid="304" /> <BranchPoint vc="0" uspid="286" ordinal="8" path="0" offset="97" offsetend="99" sl="286" fileid="304" /> <BranchPoint vc="0" uspid="286" ordinal="9" path="1" offset="97" offsetend="100" sl="286" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="6" offset="6" sc="0" sl="280" ec="1" el="288" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.ItemParser::ImportDefenceDodge(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="291" ordinal="0" sl="291" sc="1" el="291" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="292" ordinal="1" sl="292" sc="1" el="292" ec="2" bec="6" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="293" ordinal="2" sl="293" sc="1" el="293" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="294" ordinal="3" sl="294" sc="1" el="294" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="295" ordinal="4" sl="295" sc="1" el="295" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="296" ordinal="5" sl="296" sc="1" el="296" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="297" ordinal="6" sl="297" sc="1" el="297" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="298" ordinal="7" sl="298" sc="1" el="298" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="292" ordinal="0" path="0" offset="10" offsetend="12" sl="292" fileid="304" /> <BranchPoint vc="0" uspid="292" ordinal="1" path="1" offset="10" offsetend="13" sl="292" fileid="304" /> <BranchPoint vc="0" uspid="292" ordinal="2" path="0" offset="15" offsetend="19" sl="292" fileid="304" /> <BranchPoint vc="0" uspid="292" ordinal="3" path="1" offset="15" offsetend="25" sl="292" fileid="304" /> <BranchPoint vc="0" uspid="292" ordinal="5" path="1" offset="21" offsetend="43" sl="292" fileid="304" /> <BranchPoint vc="0" uspid="292" ordinal="4" path="0" offset="21" offsetend="61" sl="292" fileid="304" /> <BranchPoint vc="0" uspid="296" ordinal="6" path="0" offset="70" offsetend="72" sl="296" fileid="304" /> <BranchPoint vc="0" uspid="296" ordinal="7" path="1" offset="70" offsetend="73" sl="296" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="7" offset="7" sc="0" sl="291" ec="1" el="298" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.ItemParser::ImportDamageMinimum(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="301" ordinal="0" sl="301" sc="1" el="301" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="302" ordinal="1" sl="302" sc="1" el="302" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="303" ordinal="2" sl="303" sc="1" el="303" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="304" ordinal="3" sl="304" sc="1" el="304" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="305" ordinal="4" sl="305" sc="1" el="305" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="306" ordinal="5" sl="306" sc="1" el="306" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="307" ordinal="6" sl="307" sc="1" el="307" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="302" ordinal="0" path="0" offset="10" offsetend="12" sl="302" fileid="304" /> <BranchPoint vc="0" uspid="302" ordinal="1" path="1" offset="10" offsetend="13" sl="302" fileid="304" /> <BranchPoint vc="0" uspid="302" ordinal="3" path="1" offset="15" offsetend="19" sl="302" fileid="304" /> <BranchPoint vc="0" uspid="302" ordinal="2" path="0" offset="15" offsetend="37" sl="302" fileid="304" /> <BranchPoint vc="0" uspid="305" ordinal="4" path="0" offset="46" offsetend="48" sl="305" fileid="304" /> <BranchPoint vc="0" uspid="305" ordinal="5" path="1" offset="46" offsetend="49" sl="305" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="8" offset="8" sc="0" sl="301" ec="1" el="307" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.ItemParser::ImportDamageMaximum(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="310" ordinal="0" sl="310" sc="1" el="310" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="311" ordinal="1" sl="311" sc="1" el="311" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="312" ordinal="2" sl="312" sc="1" el="312" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="313" ordinal="3" sl="313" sc="1" el="313" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="314" ordinal="4" sl="314" sc="1" el="314" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="315" ordinal="5" sl="315" sc="1" el="315" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="316" ordinal="6" sl="316" sc="1" el="316" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="311" ordinal="0" path="0" offset="10" offsetend="12" sl="311" fileid="304" /> <BranchPoint vc="0" uspid="311" ordinal="1" path="1" offset="10" offsetend="13" sl="311" fileid="304" /> <BranchPoint vc="0" uspid="311" ordinal="3" path="1" offset="15" offsetend="19" sl="311" fileid="304" /> <BranchPoint vc="0" uspid="311" ordinal="2" path="0" offset="15" offsetend="37" sl="311" fileid="304" /> <BranchPoint vc="0" uspid="314" ordinal="4" path="0" offset="46" offsetend="48" sl="314" fileid="304" /> <BranchPoint vc="0" uspid="314" ordinal="5" path="1" offset="46" offsetend="49" sl="314" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="9" offset="9" sc="0" sl="310" ec="1" el="316" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.ItemParser::ImportHitRate(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="319" ordinal="0" sl="319" sc="1" el="319" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="320" ordinal="1" sl="320" sc="1" el="320" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="321" ordinal="2" sl="321" sc="1" el="321" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="322" ordinal="3" sl="322" sc="1" el="322" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="323" ordinal="4" sl="323" sc="1" el="323" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="324" ordinal="5" sl="324" sc="1" el="324" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="325" ordinal="6" sl="325" sc="1" el="325" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="320" ordinal="0" path="0" offset="10" offsetend="12" sl="320" fileid="304" /> <BranchPoint vc="0" uspid="320" ordinal="1" path="1" offset="10" offsetend="13" sl="320" fileid="304" /> <BranchPoint vc="0" uspid="320" ordinal="3" path="1" offset="15" offsetend="19" sl="320" fileid="304" /> <BranchPoint vc="0" uspid="320" ordinal="2" path="0" offset="15" offsetend="37" sl="320" fileid="304" /> <BranchPoint vc="0" uspid="323" ordinal="4" path="0" offset="46" offsetend="48" sl="323" fileid="304" /> <BranchPoint vc="0" uspid="323" ordinal="5" path="1" offset="46" offsetend="49" sl="323" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="10" offset="10" sc="0" sl="319" ec="1" el="325" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Byte NosCore.Parser.Parsers.ItemParser::ImportCriticalLuckRate(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="328" ordinal="0" sl="328" sc="1" el="328" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="329" ordinal="1" sl="329" sc="1" el="329" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="330" ordinal="2" sl="330" sc="1" el="330" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="331" ordinal="3" sl="331" sc="1" el="331" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="332" ordinal="4" sl="332" sc="1" el="332" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="333" ordinal="5" sl="333" sc="1" el="333" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="334" ordinal="6" sl="334" sc="1" el="334" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="329" ordinal="0" path="0" offset="10" offsetend="12" sl="329" fileid="304" /> <BranchPoint vc="0" uspid="329" ordinal="1" path="1" offset="10" offsetend="13" sl="329" fileid="304" /> <BranchPoint vc="0" uspid="329" ordinal="3" path="1" offset="15" offsetend="19" sl="329" fileid="304" /> <BranchPoint vc="0" uspid="329" ordinal="2" path="0" offset="15" offsetend="37" sl="329" fileid="304" /> <BranchPoint vc="0" uspid="332" ordinal="4" path="0" offset="46" offsetend="48" sl="332" fileid="304" /> <BranchPoint vc="0" uspid="332" ordinal="5" path="1" offset="46" offsetend="49" sl="332" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="11" offset="11" sc="0" sl="328" ec="1" el="334" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Byte NosCore.Parser.Parsers.ItemParser::ImportMaximumAmmo(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="337" ordinal="0" sl="337" sc="1" el="337" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="338" ordinal="1" sl="338" sc="1" el="338" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="339" ordinal="2" sl="339" sc="1" el="339" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="340" ordinal="3" sl="340" sc="1" el="340" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="341" ordinal="4" sl="341" sc="1" el="341" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="342" ordinal="5" sl="342" sc="1" el="342" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="343" ordinal="6" sl="343" sc="1" el="343" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="338" ordinal="0" path="0" offset="10" offsetend="12" sl="338" fileid="304" /> <BranchPoint vc="0" uspid="338" ordinal="1" path="1" offset="10" offsetend="13" sl="338" fileid="304" /> <BranchPoint vc="0" uspid="338" ordinal="3" path="1" offset="15" offsetend="19" sl="338" fileid="304" /> <BranchPoint vc="0" uspid="338" ordinal="2" path="0" offset="15" offsetend="24" sl="338" fileid="304" /> <BranchPoint vc="0" uspid="341" ordinal="4" path="0" offset="29" offsetend="31" sl="341" fileid="304" /> <BranchPoint vc="0" uspid="341" ordinal="5" path="1" offset="29" offsetend="32" sl="341" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="12" offset="12" sc="0" sl="337" ec="1" el="343" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.ItemParser::ImportDistanceDefenceDodge(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="346" ordinal="0" sl="346" sc="1" el="346" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="347" ordinal="1" sl="347" sc="1" el="347" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="348" ordinal="2" sl="348" sc="1" el="348" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="349" ordinal="3" sl="349" sc="1" el="349" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="350" ordinal="4" sl="350" sc="1" el="350" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="351" ordinal="5" sl="351" sc="1" el="351" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="352" ordinal="6" sl="352" sc="1" el="352" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="347" ordinal="0" path="0" offset="10" offsetend="12" sl="347" fileid="304" /> <BranchPoint vc="0" uspid="347" ordinal="1" path="1" offset="10" offsetend="13" sl="347" fileid="304" /> <BranchPoint vc="0" uspid="347" ordinal="3" path="1" offset="15" offsetend="19" sl="347" fileid="304" /> <BranchPoint vc="0" uspid="347" ordinal="2" path="0" offset="15" offsetend="37" sl="347" fileid="304" /> <BranchPoint vc="0" uspid="350" ordinal="4" path="0" offset="46" offsetend="48" sl="350" fileid="304" /> <BranchPoint vc="0" uspid="350" ordinal="5" path="1" offset="46" offsetend="49" sl="350" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="13" offset="13" sc="0" sl="346" ec="1" el="352" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.ItemParser::ImportCriticalRate(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="354" ordinal="0" sl="354" sc="1" el="354" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="355" ordinal="1" sl="355" sc="1" el="355" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="356" ordinal="2" sl="356" sc="1" el="356" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="357" ordinal="3" sl="357" sc="1" el="357" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="358" ordinal="4" sl="358" sc="1" el="358" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="359" ordinal="5" sl="359" sc="1" el="359" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="360" ordinal="6" sl="360" sc="1" el="360" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="355" ordinal="0" path="0" offset="10" offsetend="12" sl="355" fileid="304" /> <BranchPoint vc="0" uspid="355" ordinal="1" path="1" offset="10" offsetend="13" sl="355" fileid="304" /> <BranchPoint vc="0" uspid="355" ordinal="3" path="1" offset="15" offsetend="19" sl="355" fileid="304" /> <BranchPoint vc="0" uspid="355" ordinal="2" path="0" offset="15" offsetend="37" sl="355" fileid="304" /> <BranchPoint vc="0" uspid="358" ordinal="4" path="0" offset="46" offsetend="48" sl="358" fileid="304" /> <BranchPoint vc="0" uspid="358" ordinal="5" path="1" offset="46" offsetend="49" sl="358" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="14" offset="14" sc="0" sl="354" ec="1" el="360" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="14" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="14" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="14" minCyclomaticComplexity="14" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int64 NosCore.Parser.Parsers.ItemParser::ImportItemValidTime(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="363" ordinal="0" sl="363" sc="1" el="363" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="364" ordinal="1" sl="364" sc="1" el="364" ec="2" bec="6" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="365" ordinal="2" sl="365" sc="1" el="365" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="366" ordinal="3" sl="366" sc="1" el="366" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="367" ordinal="4" sl="367" sc="1" el="367" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="368" ordinal="5" sl="368" sc="1" el="368" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="369" ordinal="6" sl="369" sc="1" el="369" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="370" ordinal="7" sl="370" sc="1" el="370" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="364" ordinal="0" path="0" offset="10" offsetend="12" sl="364" fileid="304" /> <BranchPoint vc="0" uspid="364" ordinal="1" path="1" offset="10" offsetend="13" sl="364" fileid="304" /> <BranchPoint vc="0" uspid="364" ordinal="2" path="0" offset="15" offsetend="19" sl="364" fileid="304" /> <BranchPoint vc="0" uspid="364" ordinal="5" path="1" offset="21" offsetend="25" sl="364" fileid="304" /> <BranchPoint vc="0" uspid="366" ordinal="7" path="1" offset="34" offsetend="38" sl="366" fileid="304" /> <BranchPoint vc="0" uspid="364" ordinal="3" path="1" offset="15" offsetend="65" sl="364" fileid="304" /> <BranchPoint vc="0" uspid="367" ordinal="8" path="0" offset="74" offsetend="76" sl="367" fileid="304" /> <BranchPoint vc="0" uspid="367" ordinal="9" path="1" offset="74" offsetend="89" sl="367" fileid="304" /> <BranchPoint vc="0" uspid="367" ordinal="11" path="1" offset="85" offsetend="89" sl="367" fileid="304" /> <BranchPoint vc="0" uspid="364" ordinal="4" path="0" offset="21" offsetend="120" sl="364" fileid="304" /> <BranchPoint vc="0" uspid="366" ordinal="6" path="0" offset="34" offsetend="120" sl="366" fileid="304" /> <BranchPoint vc="0" uspid="367" ordinal="10" path="0" offset="85" offsetend="120" sl="367" fileid="304" /> <BranchPoint vc="0" uspid="368" ordinal="12" path="0" offset="126" offsetend="128" sl="368" fileid="304" /> <BranchPoint vc="0" uspid="368" ordinal="13" path="1" offset="126" offsetend="129" sl="368" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="15" offset="15" sc="0" sl="363" ec="1" el="370" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>NosCore.Packets.Enumerations.ElementType NosCore.Parser.Parsers.ItemParser::ImportElement(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="373" ordinal="0" sl="373" sc="1" el="373" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="374" ordinal="1" sl="374" sc="1" el="374" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="375" ordinal="2" sl="375" sc="1" el="375" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="376" ordinal="3" sl="376" sc="1" el="376" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="377" ordinal="4" sl="377" sc="1" el="377" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="378" ordinal="5" sl="378" sc="1" el="378" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="379" ordinal="6" sl="379" sc="1" el="379" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="374" ordinal="0" path="0" offset="21" offsetend="23" sl="374" fileid="304" /> <BranchPoint vc="0" uspid="374" ordinal="1" path="1" offset="21" offsetend="24" sl="374" fileid="304" /> <BranchPoint vc="0" uspid="374" ordinal="3" path="1" offset="26" offsetend="30" sl="374" fileid="304" /> <BranchPoint vc="0" uspid="376" ordinal="5" path="1" offset="39" offsetend="43" sl="376" fileid="304" /> <BranchPoint vc="0" uspid="374" ordinal="2" path="0" offset="26" offsetend="61" sl="374" fileid="304" /> <BranchPoint vc="0" uspid="376" ordinal="4" path="0" offset="39" offsetend="61" sl="376" fileid="304" /> <BranchPoint vc="0" uspid="377" ordinal="6" path="0" offset="70" offsetend="72" sl="377" fileid="304" /> <BranchPoint vc="0" uspid="377" ordinal="7" path="1" offset="70" offsetend="73" sl="377" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="16" offset="16" sc="0" sl="373" ec="1" el="379" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="10" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Byte NosCore.Parser.Parsers.ItemParser::ImportMaxCellonLvl(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="382" ordinal="0" sl="382" sc="1" el="382" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="383" ordinal="1" sl="383" sc="1" el="383" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="384" ordinal="2" sl="384" sc="1" el="384" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="385" ordinal="3" sl="385" sc="1" el="385" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="386" ordinal="4" sl="386" sc="1" el="386" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="387" ordinal="5" sl="387" sc="1" el="387" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="388" ordinal="6" sl="388" sc="1" el="388" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="383" ordinal="0" path="0" offset="10" offsetend="12" sl="383" fileid="304" /> <BranchPoint vc="0" uspid="383" ordinal="1" path="1" offset="10" offsetend="13" sl="383" fileid="304" /> <BranchPoint vc="0" uspid="383" ordinal="3" path="1" offset="15" offsetend="19" sl="383" fileid="304" /> <BranchPoint vc="0" uspid="385" ordinal="4" path="0" offset="28" offsetend="30" sl="385" fileid="304" /> <BranchPoint vc="0" uspid="385" ordinal="7" path="1" offset="39" offsetend="43" sl="385" fileid="304" /> <BranchPoint vc="0" uspid="383" ordinal="2" path="0" offset="15" offsetend="61" sl="383" fileid="304" /> <BranchPoint vc="0" uspid="385" ordinal="5" path="1" offset="28" offsetend="61" sl="385" fileid="304" /> <BranchPoint vc="0" uspid="385" ordinal="6" path="0" offset="39" offsetend="61" sl="385" fileid="304" /> <BranchPoint vc="0" uspid="386" ordinal="8" path="0" offset="70" offsetend="72" sl="386" fileid="304" /> <BranchPoint vc="0" uspid="386" ordinal="9" path="1" offset="70" offsetend="73" sl="386" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="17" offset="17" sc="0" sl="382" ec="1" el="388" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="10" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Byte NosCore.Parser.Parsers.ItemParser::ImportMaxCellon(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="391" ordinal="0" sl="391" sc="1" el="391" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="392" ordinal="1" sl="392" sc="1" el="392" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="393" ordinal="2" sl="393" sc="1" el="393" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="394" ordinal="3" sl="394" sc="1" el="394" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="395" ordinal="4" sl="395" sc="1" el="395" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="396" ordinal="5" sl="396" sc="1" el="396" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="397" ordinal="6" sl="397" sc="1" el="397" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="392" ordinal="0" path="0" offset="10" offsetend="12" sl="392" fileid="304" /> <BranchPoint vc="0" uspid="392" ordinal="1" path="1" offset="10" offsetend="13" sl="392" fileid="304" /> <BranchPoint vc="0" uspid="392" ordinal="3" path="1" offset="15" offsetend="19" sl="392" fileid="304" /> <BranchPoint vc="0" uspid="394" ordinal="4" path="0" offset="28" offsetend="30" sl="394" fileid="304" /> <BranchPoint vc="0" uspid="394" ordinal="7" path="1" offset="39" offsetend="43" sl="394" fileid="304" /> <BranchPoint vc="0" uspid="392" ordinal="2" path="0" offset="15" offsetend="61" sl="392" fileid="304" /> <BranchPoint vc="0" uspid="394" ordinal="5" path="1" offset="28" offsetend="61" sl="394" fileid="304" /> <BranchPoint vc="0" uspid="394" ordinal="6" path="0" offset="39" offsetend="61" sl="394" fileid="304" /> <BranchPoint vc="0" uspid="395" ordinal="8" path="0" offset="70" offsetend="72" sl="395" fileid="304" /> <BranchPoint vc="0" uspid="395" ordinal="9" path="1" offset="70" offsetend="73" sl="395" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="18" offset="18" sc="0" sl="391" ec="1" el="397" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.ItemParser::ImportCloseDefence(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="400" ordinal="0" sl="400" sc="1" el="400" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="401" ordinal="1" sl="401" sc="1" el="401" ec="2" bec="6" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="402" ordinal="2" sl="402" sc="1" el="402" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="403" ordinal="3" sl="403" sc="1" el="403" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="404" ordinal="4" sl="404" sc="1" el="404" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="405" ordinal="5" sl="405" sc="1" el="405" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="406" ordinal="6" sl="406" sc="1" el="406" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="407" ordinal="7" sl="407" sc="1" el="407" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="401" ordinal="0" path="0" offset="10" offsetend="12" sl="401" fileid="304" /> <BranchPoint vc="0" uspid="401" ordinal="1" path="1" offset="10" offsetend="13" sl="401" fileid="304" /> <BranchPoint vc="0" uspid="401" ordinal="2" path="0" offset="15" offsetend="19" sl="401" fileid="304" /> <BranchPoint vc="0" uspid="401" ordinal="3" path="1" offset="15" offsetend="25" sl="401" fileid="304" /> <BranchPoint vc="0" uspid="401" ordinal="5" path="1" offset="21" offsetend="43" sl="401" fileid="304" /> <BranchPoint vc="0" uspid="401" ordinal="4" path="0" offset="21" offsetend="61" sl="401" fileid="304" /> <BranchPoint vc="0" uspid="405" ordinal="6" path="0" offset="70" offsetend="72" sl="405" fileid="304" /> <BranchPoint vc="0" uspid="405" ordinal="7" path="1" offset="70" offsetend="73" sl="405" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="19" offset="19" sc="0" sl="400" ec="1" el="407" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.ItemParser::ImportDistanceDefence(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="409" ordinal="0" sl="409" sc="1" el="409" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="410" ordinal="1" sl="410" sc="1" el="410" ec="2" bec="6" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="411" ordinal="2" sl="411" sc="1" el="411" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="412" ordinal="3" sl="412" sc="1" el="412" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="413" ordinal="4" sl="413" sc="1" el="413" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="414" ordinal="5" sl="414" sc="1" el="414" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="415" ordinal="6" sl="415" sc="1" el="415" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="416" ordinal="7" sl="416" sc="1" el="416" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="410" ordinal="0" path="0" offset="10" offsetend="12" sl="410" fileid="304" /> <BranchPoint vc="0" uspid="410" ordinal="1" path="1" offset="10" offsetend="13" sl="410" fileid="304" /> <BranchPoint vc="0" uspid="410" ordinal="2" path="0" offset="15" offsetend="19" sl="410" fileid="304" /> <BranchPoint vc="0" uspid="410" ordinal="3" path="1" offset="15" offsetend="25" sl="410" fileid="304" /> <BranchPoint vc="0" uspid="410" ordinal="5" path="1" offset="21" offsetend="43" sl="410" fileid="304" /> <BranchPoint vc="0" uspid="410" ordinal="4" path="0" offset="21" offsetend="61" sl="410" fileid="304" /> <BranchPoint vc="0" uspid="414" ordinal="6" path="0" offset="70" offsetend="72" sl="414" fileid="304" /> <BranchPoint vc="0" uspid="414" ordinal="7" path="1" offset="70" offsetend="73" sl="414" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="20" offset="20" sc="0" sl="409" ec="1" el="416" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.ItemParser::ImportMagicDefence(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="418" ordinal="0" sl="418" sc="1" el="418" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="419" ordinal="1" sl="419" sc="1" el="419" ec="2" bec="6" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="420" ordinal="2" sl="420" sc="1" el="420" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="421" ordinal="3" sl="421" sc="1" el="421" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="422" ordinal="4" sl="422" sc="1" el="422" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="423" ordinal="5" sl="423" sc="1" el="423" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="424" ordinal="6" sl="424" sc="1" el="424" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="425" ordinal="7" sl="425" sc="1" el="425" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="419" ordinal="0" path="0" offset="10" offsetend="12" sl="419" fileid="304" /> <BranchPoint vc="0" uspid="419" ordinal="1" path="1" offset="10" offsetend="13" sl="419" fileid="304" /> <BranchPoint vc="0" uspid="419" ordinal="2" path="0" offset="15" offsetend="19" sl="419" fileid="304" /> <BranchPoint vc="0" uspid="419" ordinal="3" path="1" offset="15" offsetend="25" sl="419" fileid="304" /> <BranchPoint vc="0" uspid="419" ordinal="5" path="1" offset="21" offsetend="43" sl="419" fileid="304" /> <BranchPoint vc="0" uspid="419" ordinal="4" path="0" offset="21" offsetend="61" sl="419" fileid="304" /> <BranchPoint vc="0" uspid="423" ordinal="6" path="0" offset="70" offsetend="72" sl="423" fileid="304" /> <BranchPoint vc="0" uspid="423" ordinal="7" path="1" offset="70" offsetend="73" sl="423" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="21" offset="21" sc="0" sl="418" ec="1" el="425" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="10" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.ItemParser::ImportHp(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="428" ordinal="0" sl="428" sc="1" el="428" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="429" ordinal="1" sl="429" sc="1" el="429" ec="2" bec="8" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="430" ordinal="2" sl="430" sc="1" el="430" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="431" ordinal="3" sl="431" sc="1" el="431" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="432" ordinal="4" sl="432" sc="1" el="432" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="433" ordinal="5" sl="433" sc="1" el="433" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="434" ordinal="6" sl="434" sc="1" el="434" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="435" ordinal="7" sl="435" sc="1" el="435" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="436" ordinal="8" sl="436" sc="1" el="436" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="429" ordinal="0" path="0" offset="10" offsetend="12" sl="429" fileid="304" /> <BranchPoint vc="0" uspid="429" ordinal="1" path="1" offset="10" offsetend="13" sl="429" fileid="304" /> <BranchPoint vc="0" uspid="429" ordinal="2" path="0" offset="16" offsetend="20" sl="429" fileid="304" /> <BranchPoint vc="0" uspid="429" ordinal="4" path="0" offset="23" offsetend="27" sl="429" fileid="304" /> <BranchPoint vc="0" uspid="429" ordinal="5" path="1" offset="23" offsetend="34" sl="429" fileid="304" /> <BranchPoint vc="0" uspid="429" ordinal="3" path="1" offset="16" offsetend="52" sl="429" fileid="304" /> <BranchPoint vc="0" uspid="429" ordinal="7" path="1" offset="30" offsetend="70" sl="429" fileid="304" /> <BranchPoint vc="0" uspid="429" ordinal="6" path="0" offset="30" offsetend="88" sl="429" fileid="304" /> <BranchPoint vc="0" uspid="434" ordinal="8" path="0" offset="97" offsetend="99" sl="434" fileid="304" /> <BranchPoint vc="0" uspid="434" ordinal="9" path="1" offset="97" offsetend="100" sl="434" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="22" offset="22" sc="0" sl="428" ec="1" el="436" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.ItemParser::ImportWaitDelay(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="439" ordinal="0" sl="439" sc="1" el="439" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="440" ordinal="1" sl="440" sc="1" el="440" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="441" ordinal="2" sl="441" sc="1" el="441" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="442" ordinal="3" sl="442" sc="1" el="442" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="443" ordinal="4" sl="443" sc="1" el="443" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="444" ordinal="5" sl="444" sc="1" el="444" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="445" ordinal="6" sl="445" sc="1" el="445" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="440" ordinal="0" path="0" offset="10" offsetend="12" sl="440" fileid="304" /> <BranchPoint vc="0" uspid="440" ordinal="1" path="1" offset="10" offsetend="13" sl="440" fileid="304" /> <BranchPoint vc="0" uspid="440" ordinal="3" path="1" offset="16" offsetend="20" sl="440" fileid="304" /> <BranchPoint vc="0" uspid="440" ordinal="2" path="0" offset="16" offsetend="28" sl="440" fileid="304" /> <BranchPoint vc="0" uspid="443" ordinal="4" path="0" offset="33" offsetend="35" sl="443" fileid="304" /> <BranchPoint vc="0" uspid="443" ordinal="5" path="1" offset="33" offsetend="36" sl="443" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="23" offset="23" sc="0" sl="439" ec="1" el="445" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="10" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.ItemParser::ImportElementRate(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="447" ordinal="0" sl="447" sc="1" el="447" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="448" ordinal="1" sl="448" sc="1" el="448" ec="2" bec="6" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="449" ordinal="2" sl="449" sc="1" el="449" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="450" ordinal="3" sl="450" sc="1" el="450" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="451" ordinal="4" sl="451" sc="1" el="451" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="452" ordinal="5" sl="452" sc="1" el="452" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="453" ordinal="6" sl="453" sc="1" el="453" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="454" ordinal="7" sl="454" sc="1" el="454" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="448" ordinal="0" path="0" offset="10" offsetend="12" sl="448" fileid="304" /> <BranchPoint vc="0" uspid="448" ordinal="1" path="1" offset="10" offsetend="13" sl="448" fileid="304" /> <BranchPoint vc="0" uspid="448" ordinal="2" path="0" offset="15" offsetend="19" sl="448" fileid="304" /> <BranchPoint vc="0" uspid="448" ordinal="3" path="1" offset="15" offsetend="25" sl="448" fileid="304" /> <BranchPoint vc="0" uspid="450" ordinal="7" path="1" offset="34" offsetend="38" sl="450" fileid="304" /> <BranchPoint vc="0" uspid="448" ordinal="5" path="1" offset="21" offsetend="56" sl="448" fileid="304" /> <BranchPoint vc="0" uspid="448" ordinal="4" path="0" offset="21" offsetend="74" sl="448" fileid="304" /> <BranchPoint vc="0" uspid="450" ordinal="6" path="0" offset="34" offsetend="74" sl="450" fileid="304" /> <BranchPoint vc="0" uspid="452" ordinal="8" path="0" offset="83" offsetend="85" sl="452" fileid="304" /> <BranchPoint vc="0" uspid="452" ordinal="9" path="1" offset="83" offsetend="86" sl="452" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="24" offset="24" sc="0" sl="447" ec="1" el="454" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Byte NosCore.Parser.Parsers.ItemParser::ImportSpeed(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="456" ordinal="0" sl="456" sc="1" el="456" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="457" ordinal="1" sl="457" sc="1" el="457" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="458" ordinal="2" sl="458" sc="1" el="458" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="459" ordinal="3" sl="459" sc="1" el="459" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="460" ordinal="4" sl="460" sc="1" el="460" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="461" ordinal="5" sl="461" sc="1" el="461" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="462" ordinal="6" sl="462" sc="1" el="462" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="457" ordinal="0" path="0" offset="10" offsetend="12" sl="457" fileid="304" /> <BranchPoint vc="0" uspid="457" ordinal="1" path="1" offset="10" offsetend="13" sl="457" fileid="304" /> <BranchPoint vc="0" uspid="457" ordinal="3" path="1" offset="15" offsetend="19" sl="457" fileid="304" /> <BranchPoint vc="0" uspid="457" ordinal="2" path="0" offset="15" offsetend="37" sl="457" fileid="304" /> <BranchPoint vc="0" uspid="460" ordinal="4" path="0" offset="46" offsetend="48" sl="460" fileid="304" /> <BranchPoint vc="0" uspid="460" ordinal="5" path="1" offset="46" offsetend="49" sl="460" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="25" offset="25" sc="0" sl="456" ec="1" el="462" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Byte NosCore.Parser.Parsers.ItemParser::ImportSpType(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="464" ordinal="0" sl="464" sc="1" el="464" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="465" ordinal="1" sl="465" sc="1" el="465" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="466" ordinal="2" sl="466" sc="1" el="466" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="467" ordinal="3" sl="467" sc="1" el="467" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="468" ordinal="4" sl="468" sc="1" el="468" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="469" ordinal="5" sl="469" sc="1" el="469" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="470" ordinal="6" sl="470" sc="1" el="470" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="465" ordinal="0" path="0" offset="10" offsetend="12" sl="465" fileid="304" /> <BranchPoint vc="0" uspid="465" ordinal="1" path="1" offset="10" offsetend="13" sl="465" fileid="304" /> <BranchPoint vc="0" uspid="465" ordinal="3" path="1" offset="15" offsetend="19" sl="465" fileid="304" /> <BranchPoint vc="0" uspid="465" ordinal="2" path="0" offset="15" offsetend="38" sl="465" fileid="304" /> <BranchPoint vc="0" uspid="468" ordinal="4" path="0" offset="47" offsetend="49" sl="468" fileid="304" /> <BranchPoint vc="0" uspid="468" ordinal="5" path="1" offset="47" offsetend="50" sl="468" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="26" offset="26" sc="0" sl="464" ec="1" el="470" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Byte NosCore.Parser.Parsers.ItemParser::ImportLevelJobMinimum(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="472" ordinal="0" sl="472" sc="1" el="472" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="473" ordinal="1" sl="473" sc="1" el="473" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="474" ordinal="2" sl="474" sc="1" el="474" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="475" ordinal="3" sl="475" sc="1" el="475" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="476" ordinal="4" sl="476" sc="1" el="476" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="477" ordinal="5" sl="477" sc="1" el="477" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="478" ordinal="6" sl="478" sc="1" el="478" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="473" ordinal="0" path="0" offset="10" offsetend="12" sl="473" fileid="304" /> <BranchPoint vc="0" uspid="473" ordinal="1" path="1" offset="10" offsetend="13" sl="473" fileid="304" /> <BranchPoint vc="0" uspid="473" ordinal="3" path="1" offset="15" offsetend="19" sl="473" fileid="304" /> <BranchPoint vc="0" uspid="473" ordinal="2" path="0" offset="15" offsetend="38" sl="473" fileid="304" /> <BranchPoint vc="0" uspid="476" ordinal="4" path="0" offset="47" offsetend="49" sl="476" fileid="304" /> <BranchPoint vc="0" uspid="476" ordinal="5" path="1" offset="47" offsetend="50" sl="476" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="27" offset="27" sc="0" sl="472" ec="1" el="478" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Byte NosCore.Parser.Parsers.ItemParser::ImportReputationMinimum(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="480" ordinal="0" sl="480" sc="1" el="480" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="481" ordinal="1" sl="481" sc="1" el="481" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="482" ordinal="2" sl="482" sc="1" el="482" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="483" ordinal="3" sl="483" sc="1" el="483" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="484" ordinal="4" sl="484" sc="1" el="484" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="485" ordinal="5" sl="485" sc="1" el="485" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="486" ordinal="6" sl="486" sc="1" el="486" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="481" ordinal="0" path="0" offset="10" offsetend="12" sl="481" fileid="304" /> <BranchPoint vc="0" uspid="481" ordinal="1" path="1" offset="10" offsetend="13" sl="481" fileid="304" /> <BranchPoint vc="0" uspid="481" ordinal="3" path="1" offset="15" offsetend="19" sl="481" fileid="304" /> <BranchPoint vc="0" uspid="481" ordinal="2" path="0" offset="15" offsetend="38" sl="481" fileid="304" /> <BranchPoint vc="0" uspid="484" ordinal="4" path="0" offset="47" offsetend="49" sl="484" fileid="304" /> <BranchPoint vc="0" uspid="484" ordinal="5" path="1" offset="47" offsetend="50" sl="484" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="28" offset="28" sc="0" sl="480" ec="1" el="486" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Byte NosCore.Parser.Parsers.ItemParser::ImportBasicUpgrade(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="489" ordinal="0" sl="489" sc="1" el="489" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="490" ordinal="1" sl="490" sc="1" el="490" ec="2" bec="6" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="491" ordinal="2" sl="491" sc="1" el="491" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="492" ordinal="3" sl="492" sc="1" el="492" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="493" ordinal="4" sl="493" sc="1" el="493" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="494" ordinal="5" sl="494" sc="1" el="494" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="495" ordinal="6" sl="495" sc="1" el="495" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="496" ordinal="7" sl="496" sc="1" el="496" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="490" ordinal="0" path="0" offset="10" offsetend="12" sl="490" fileid="304" /> <BranchPoint vc="0" uspid="490" ordinal="1" path="1" offset="10" offsetend="13" sl="490" fileid="304" /> <BranchPoint vc="0" uspid="490" ordinal="2" path="0" offset="14" offsetend="18" sl="490" fileid="304" /> <BranchPoint vc="0" uspid="490" ordinal="5" path="1" offset="20" offsetend="24" sl="490" fileid="304" /> <BranchPoint vc="0" uspid="490" ordinal="3" path="1" offset="14" offsetend="43" sl="490" fileid="304" /> <BranchPoint vc="0" uspid="490" ordinal="4" path="0" offset="20" offsetend="62" sl="490" fileid="304" /> <BranchPoint vc="0" uspid="494" ordinal="6" path="0" offset="71" offsetend="73" sl="494" fileid="304" /> <BranchPoint vc="0" uspid="494" ordinal="7" path="1" offset="71" offsetend="74" sl="494" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="29" offset="29" sc="0" sl="489" ec="1" el="496" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="19" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="14" visitedSequencePoints="0" numBranchPoints="19" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="19" minCyclomaticComplexity="19" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>NosCore.Data.Enumerations.Items.ItemEffectType NosCore.Parser.Parsers.ItemParser::ImportEffect(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="498" ordinal="0" sl="498" sc="1" el="498" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="499" ordinal="1" sl="499" sc="1" el="499" ec="2" bec="17" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="500" ordinal="2" sl="500" sc="1" el="500" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="501" ordinal="3" sl="501" sc="1" el="501" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="502" ordinal="4" sl="502" sc="1" el="502" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="503" ordinal="5" sl="503" sc="1" el="503" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="504" ordinal="6" sl="504" sc="1" el="504" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="505" ordinal="7" sl="505" sc="1" el="505" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="506" ordinal="8" sl="506" sc="1" el="506" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="507" ordinal="9" sl="507" sc="1" el="507" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="508" ordinal="10" sl="508" sc="1" el="508" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="509" ordinal="11" sl="509" sc="1" el="509" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="510" ordinal="12" sl="510" sc="1" el="510" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="511" ordinal="13" sl="511" sc="1" el="511" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="499" ordinal="0" path="0" offset="10" offsetend="12" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="499" ordinal="1" path="1" offset="10" offsetend="13" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="499" ordinal="2" path="0" offset="16" offsetend="63" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="499" ordinal="13" path="0" offset="66" offsetend="70" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="499" ordinal="12" path="10" offset="16" offsetend="80" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="499" ordinal="3" path="1" offset="16" offsetend="101" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="499" ordinal="14" path="1" offset="66" offsetend="119" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="499" ordinal="10" path="8" offset="16" offsetend="137" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="499" ordinal="11" path="9" offset="16" offsetend="155" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="499" ordinal="8" path="6" offset="16" offsetend="173" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="499" ordinal="16" path="1" offset="73" offsetend="191" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="499" ordinal="9" path="7" offset="16" offsetend="209" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="499" ordinal="4" path="2" offset="16" offsetend="227" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="499" ordinal="5" path="3" offset="16" offsetend="227" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="499" ordinal="6" path="4" offset="16" offsetend="227" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="499" ordinal="7" path="5" offset="16" offsetend="227" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="499" ordinal="15" path="0" offset="73" offsetend="227" sl="499" fileid="304" /> <BranchPoint vc="0" uspid="509" ordinal="17" path="0" offset="236" offsetend="238" sl="509" fileid="304" /> <BranchPoint vc="0" uspid="509" ordinal="18" path="1" offset="236" offsetend="239" sl="509" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="30" offset="30" sc="0" sl="498" ec="1" el="511" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="2" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>NosCore.Packets.Enumerations.EquipmentType NosCore.Parser.Parsers.ItemParser::ImportEquipmentType(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="513" ordinal="0" sl="513" sc="1" el="513" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="514" ordinal="1" sl="514" sc="1" el="514" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="513" ordinal="0" path="0" offset="35" offsetend="37" sl="513" fileid="304" /> <BranchPoint vc="0" uspid="513" ordinal="1" path="1" offset="35" offsetend="44" sl="513" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="31" offset="31" sc="0" sl="513" ec="1" el="514" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>NosCore.Data.Enumerations.Items.ItemType NosCore.Parser.Parsers.ItemParser::ImportItemType(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="516" ordinal="0" sl="516" sc="1" el="516" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="517" ordinal="1" sl="517" sc="1" el="517" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="518" ordinal="2" sl="518" sc="1" el="518" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="516" ordinal="0" path="0" offset="25" offsetend="27" sl="516" fileid="304" /> <BranchPoint vc="0" uspid="516" ordinal="1" path="1" offset="25" offsetend="30" sl="516" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="32" offset="32" sc="0" sl="516" ec="1" el="518" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="12" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="10" visitedSequencePoints="0" numBranchPoints="12" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="12" minCyclomaticComplexity="12" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>NosCore.Data.Enumerations.NoscorePocketType NosCore.Parser.Parsers.ItemParser::ImportType(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="521" ordinal="0" sl="521" sc="1" el="521" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="522" ordinal="1" sl="522" sc="1" el="522" ec="2" bec="10" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="523" ordinal="2" sl="523" sc="1" el="523" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="524" ordinal="3" sl="524" sc="1" el="524" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="525" ordinal="4" sl="525" sc="1" el="525" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="526" ordinal="5" sl="526" sc="1" el="526" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="527" ordinal="6" sl="527" sc="1" el="527" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="528" ordinal="7" sl="528" sc="1" el="528" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="529" ordinal="8" sl="529" sc="1" el="529" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="530" ordinal="9" sl="530" sc="1" el="530" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="522" ordinal="0" path="0" offset="23" offsetend="25" sl="522" fileid="304" /> <BranchPoint vc="0" uspid="522" ordinal="1" path="1" offset="23" offsetend="26" sl="522" fileid="304" /> <BranchPoint vc="0" uspid="522" ordinal="3" path="1" offset="29" offsetend="64" sl="522" fileid="304" /> <BranchPoint vc="0" uspid="522" ordinal="7" path="5" offset="29" offsetend="68" sl="522" fileid="304" /> <BranchPoint vc="0" uspid="522" ordinal="8" path="6" offset="29" offsetend="72" sl="522" fileid="304" /> <BranchPoint vc="0" uspid="522" ordinal="9" path="7" offset="29" offsetend="76" sl="522" fileid="304" /> <BranchPoint vc="0" uspid="522" ordinal="2" path="0" offset="29" offsetend="80" sl="522" fileid="304" /> <BranchPoint vc="0" uspid="522" ordinal="4" path="2" offset="29" offsetend="80" sl="522" fileid="304" /> <BranchPoint vc="0" uspid="522" ordinal="5" path="3" offset="29" offsetend="80" sl="522" fileid="304" /> <BranchPoint vc="0" uspid="522" ordinal="6" path="4" offset="29" offsetend="80" sl="522" fileid="304" /> <BranchPoint vc="0" uspid="528" ordinal="10" path="0" offset="119" offsetend="121" sl="528" fileid="304" /> <BranchPoint vc="0" uspid="528" ordinal="11" path="1" offset="119" offsetend="122" sl="528" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="33" offset="33" sc="0" sl="521" ec="1" el="530" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="17" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="17" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="17" minCyclomaticComplexity="17" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.ItemParser::ImportResistance(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>,NosCore.Packets.Enumerations.ElementType)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="533" ordinal="0" sl="533" sc="1" el="533" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="534" ordinal="1" sl="534" sc="1" el="534" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="535" ordinal="2" sl="535" sc="1" el="535" ec="2" bec="7" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="536" ordinal="3" sl="536" sc="1" el="536" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="537" ordinal="4" sl="537" sc="1" el="537" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="538" ordinal="5" sl="538" sc="1" el="538" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="539" ordinal="6" sl="539" sc="1" el="539" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="540" ordinal="7" sl="540" sc="1" el="540" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="541" ordinal="8" sl="541" sc="1" el="541" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="542" ordinal="9" sl="542" sc="1" el="542" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="543" ordinal="10" sl="543" sc="1" el="543" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="535" ordinal="0" path="0" offset="10" offsetend="12" sl="535" fileid="304" /> <BranchPoint vc="0" uspid="535" ordinal="1" path="1" offset="10" offsetend="13" sl="535" fileid="304" /> <BranchPoint vc="0" uspid="535" ordinal="3" path="1" offset="16" offsetend="42" sl="535" fileid="304" /> <BranchPoint vc="0" uspid="537" ordinal="7" path="0" offset="45" offsetend="47" sl="537" fileid="304" /> <BranchPoint vc="0" uspid="537" ordinal="8" path="1" offset="45" offsetend="64" sl="537" fileid="304" /> <BranchPoint vc="0" uspid="535" ordinal="5" path="3" offset="16" offsetend="86" sl="535" fileid="304" /> <BranchPoint vc="0" uspid="538" ordinal="9" path="0" offset="89" offsetend="91" sl="538" fileid="304" /> <BranchPoint vc="0" uspid="538" ordinal="10" path="1" offset="89" offsetend="109" sl="538" fileid="304" /> <BranchPoint vc="0" uspid="535" ordinal="4" path="2" offset="16" offsetend="128" sl="535" fileid="304" /> <BranchPoint vc="0" uspid="539" ordinal="11" path="0" offset="131" offsetend="133" sl="539" fileid="304" /> <BranchPoint vc="0" uspid="539" ordinal="12" path="1" offset="131" offsetend="150" sl="539" fileid="304" /> <BranchPoint vc="0" uspid="535" ordinal="6" path="4" offset="16" offsetend="169" sl="535" fileid="304" /> <BranchPoint vc="0" uspid="540" ordinal="13" path="0" offset="172" offsetend="174" sl="540" fileid="304" /> <BranchPoint vc="0" uspid="540" ordinal="14" path="1" offset="172" offsetend="192" sl="540" fileid="304" /> <BranchPoint vc="0" uspid="535" ordinal="2" path="0" offset="16" offsetend="211" sl="535" fileid="304" /> <BranchPoint vc="0" uspid="541" ordinal="15" path="0" offset="220" offsetend="222" sl="541" fileid="304" /> <BranchPoint vc="0" uspid="541" ordinal="16" path="1" offset="220" offsetend="223" sl="541" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="34" offset="34" sc="0" sl="533" ec="1" el="543" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="15" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.ItemParser::SetVehicles(System.Collections.Generic.List`1<NosCore.Data.StaticEntities.ItemDto>,System.Collections.Generic.Dictionary`2<System.Byte,System.Collections.Generic.List`1<System.ValueTuple`2<System.Int16,System.Int16>>>)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="546" ordinal="0" sl="546" sc="1" el="546" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="547" ordinal="1" sl="547" sc="1" el="547" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="548" ordinal="2" sl="548" sc="1" el="548" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="549" ordinal="3" sl="549" sc="1" el="549" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="550" ordinal="4" sl="550" sc="1" el="550" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="551" ordinal="5" sl="551" sc="1" el="551" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="552" ordinal="6" sl="552" sc="1" el="552" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="553" ordinal="7" sl="553" sc="1" el="553" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="554" ordinal="8" sl="554" sc="1" el="554" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="557" ordinal="9" sl="557" sc="1" el="557" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="558" ordinal="10" sl="558" sc="1" el="558" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="559" ordinal="11" sl="559" sc="1" el="559" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="560" ordinal="12" sl="560" sc="1" el="560" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="561" ordinal="13" sl="561" sc="1" el="561" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="563" ordinal="14" sl="563" sc="1" el="563" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="547" ordinal="5" path="1" offset="175" offsetend="14" sl="547" fileid="304" /> <BranchPoint vc="0" uspid="549" ordinal="3" path="1" offset="148" offsetend="39" sl="549" fileid="304" /> <BranchPoint vc="0" uspid="552" ordinal="0" path="0" offset="88" offsetend="90" sl="552" fileid="304" /> <BranchPoint vc="0" uspid="552" ordinal="1" path="1" offset="88" offsetend="93" sl="552" fileid="304" /> <BranchPoint vc="0" uspid="549" ordinal="2" path="0" offset="148" offsetend="150" sl="549" fileid="304" /> <BranchPoint vc="0" uspid="547" ordinal="4" path="0" offset="175" offsetend="180" sl="547" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="35" offset="35" sc="0" sl="546" ec="1" el="563" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="430" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="110" visitedSequencePoints="0" numBranchPoints="430" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="430" minCyclomaticComplexity="430" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.ItemParser::HardcodeItem(NosCore.Data.StaticEntities.ItemDto)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="566" ordinal="0" sl="566" sc="1" el="566" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="567" ordinal="1" sl="567" sc="1" el="567" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="568" ordinal="2" sl="568" sc="1" el="568" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="569" ordinal="3" sl="569" sc="1" el="569" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="570" ordinal="4" sl="570" sc="1" el="570" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="571" ordinal="5" sl="571" sc="1" el="571" ec="2" bec="12" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="572" ordinal="6" sl="572" sc="1" el="572" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="573" ordinal="7" sl="573" sc="1" el="573" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="574" ordinal="8" sl="574" sc="1" el="574" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="575" ordinal="9" sl="575" sc="1" el="575" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="576" ordinal="10" sl="576" sc="1" el="576" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="577" ordinal="11" sl="577" sc="1" el="577" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="578" ordinal="12" sl="578" sc="1" el="578" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="579" ordinal="13" sl="579" sc="1" el="579" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="580" ordinal="14" sl="580" sc="1" el="580" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="582" ordinal="15" sl="582" sc="1" el="582" ec="2" bec="34" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="583" ordinal="16" sl="583" sc="1" el="583" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="584" ordinal="17" sl="584" sc="1" el="584" ec="2" bec="6" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="585" ordinal="18" sl="585" sc="1" el="585" ec="2" bec="6" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="586" ordinal="19" sl="586" sc="1" el="586" ec="2" bec="6" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="587" ordinal="20" sl="587" sc="1" el="587" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="588" ordinal="21" sl="588" sc="1" el="588" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="589" ordinal="22" sl="589" sc="1" el="589" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="590" ordinal="23" sl="590" sc="1" el="590" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="591" ordinal="24" sl="591" sc="1" el="591" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="592" ordinal="25" sl="592" sc="1" el="592" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="593" ordinal="26" sl="593" sc="1" el="593" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="594" ordinal="27" sl="594" sc="1" el="594" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="595" ordinal="28" sl="595" sc="1" el="595" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="596" ordinal="29" sl="596" sc="1" el="596" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="597" ordinal="30" sl="597" sc="1" el="597" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="598" ordinal="31" sl="598" sc="1" el="598" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="599" ordinal="32" sl="599" sc="1" el="599" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="600" ordinal="33" sl="600" sc="1" el="600" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="601" ordinal="34" sl="601" sc="1" el="601" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="602" ordinal="35" sl="602" sc="1" el="602" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="603" ordinal="36" sl="603" sc="1" el="603" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="604" ordinal="37" sl="604" sc="1" el="604" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="605" ordinal="38" sl="605" sc="1" el="605" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="606" ordinal="39" sl="606" sc="1" el="606" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="607" ordinal="40" sl="607" sc="1" el="607" ec="2" bec="16" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="608" ordinal="41" sl="608" sc="1" el="608" ec="2" bec="10" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="609" ordinal="42" sl="609" sc="1" el="609" ec="2" bec="6" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="610" ordinal="43" sl="610" sc="1" el="610" ec="2" bec="6" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="611" ordinal="44" sl="611" sc="1" el="611" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="612" ordinal="45" sl="612" sc="1" el="612" ec="2" bec="16" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="613" ordinal="46" sl="613" sc="1" el="613" ec="2" bec="18" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="614" ordinal="47" sl="614" sc="1" el="614" ec="2" bec="16" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="615" ordinal="48" sl="615" sc="1" el="615" ec="2" bec="6" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="616" ordinal="49" sl="616" sc="1" el="616" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="617" ordinal="50" sl="617" sc="1" el="617" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="618" ordinal="51" sl="618" sc="1" el="618" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="619" ordinal="52" sl="619" sc="1" el="619" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="620" ordinal="53" sl="620" sc="1" el="620" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="621" ordinal="54" sl="621" sc="1" el="621" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="622" ordinal="55" sl="622" sc="1" el="622" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="623" ordinal="56" sl="623" sc="1" el="623" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="624" ordinal="57" sl="624" sc="1" el="624" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="625" ordinal="58" sl="625" sc="1" el="625" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="626" ordinal="59" sl="626" sc="1" el="626" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="628" ordinal="60" sl="628" sc="1" el="628" ec="2" bec="12" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="629" ordinal="61" sl="629" sc="1" el="629" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="630" ordinal="62" sl="630" sc="1" el="630" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="631" ordinal="63" sl="631" sc="1" el="631" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="632" ordinal="64" sl="632" sc="1" el="632" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="633" ordinal="65" sl="633" sc="1" el="633" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="634" ordinal="66" sl="634" sc="1" el="634" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="635" ordinal="67" sl="635" sc="1" el="635" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="637" ordinal="68" sl="637" sc="1" el="637" ec="2" bec="24" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="638" ordinal="69" sl="638" sc="1" el="638" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="639" ordinal="70" sl="639" sc="1" el="639" ec="2" bec="10" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="640" ordinal="71" sl="640" sc="1" el="640" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="641" ordinal="72" sl="641" sc="1" el="641" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="642" ordinal="73" sl="642" sc="1" el="642" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="643" ordinal="74" sl="643" sc="1" el="643" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="644" ordinal="75" sl="644" sc="1" el="644" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="645" ordinal="76" sl="645" sc="1" el="645" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="646" ordinal="77" sl="646" sc="1" el="646" ec="2" bec="8" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="647" ordinal="78" sl="647" sc="1" el="647" ec="2" bec="10" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="648" ordinal="79" sl="648" sc="1" el="648" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="649" ordinal="80" sl="649" sc="1" el="649" ec="2" bec="16" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="650" ordinal="81" sl="650" sc="1" el="650" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="651" ordinal="82" sl="651" sc="1" el="651" ec="2" bec="18" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="652" ordinal="83" sl="652" sc="1" el="652" ec="2" bec="6" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="653" ordinal="84" sl="653" sc="1" el="653" ec="2" bec="12" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="654" ordinal="85" sl="654" sc="1" el="654" ec="2" bec="14" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="655" ordinal="86" sl="655" sc="1" el="655" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="656" ordinal="87" sl="656" sc="1" el="656" ec="2" bec="8" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="657" ordinal="88" sl="657" sc="1" el="657" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="658" ordinal="89" sl="658" sc="1" el="658" ec="2" bec="6" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="659" ordinal="90" sl="659" sc="1" el="659" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="660" ordinal="91" sl="660" sc="1" el="660" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="661" ordinal="92" sl="661" sc="1" el="661" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="662" ordinal="93" sl="662" sc="1" el="662" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="663" ordinal="94" sl="663" sc="1" el="663" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="664" ordinal="95" sl="664" sc="1" el="664" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="665" ordinal="96" sl="665" sc="1" el="665" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="666" ordinal="97" sl="666" sc="1" el="666" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="667" ordinal="98" sl="667" sc="1" el="667" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="669" ordinal="99" sl="669" sc="1" el="669" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="670" ordinal="100" sl="670" sc="1" el="670" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="671" ordinal="101" sl="671" sc="1" el="671" ec="2" bec="4" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="672" ordinal="102" sl="672" sc="1" el="672" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="673" ordinal="103" sl="673" sc="1" el="673" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="675" ordinal="104" sl="675" sc="1" el="675" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="676" ordinal="105" sl="676" sc="1" el="676" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="677" ordinal="106" sl="677" sc="1" el="677" ec="2" bec="16" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="678" ordinal="107" sl="678" sc="1" el="678" ec="2" bec="2" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="679" ordinal="108" sl="679" sc="1" el="679" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="680" ordinal="109" sl="680" sc="1" el="680" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="567" ordinal="0" path="0" offset="13" offsetend="18" sl="567" fileid="304" /> <BranchPoint vc="0" uspid="569" ordinal="2" path="0" offset="32" offsetend="34" sl="569" fileid="304" /> <BranchPoint vc="0" uspid="569" ordinal="3" path="1" offset="32" offsetend="42" sl="569" fileid="304" /> <BranchPoint vc="0" uspid="569" ordinal="4" path="0" offset="51" offsetend="53" sl="569" fileid="304" /> <BranchPoint vc="0" uspid="569" ordinal="5" path="1" offset="51" offsetend="54" sl="569" fileid="304" /> <BranchPoint vc="0" uspid="571" ordinal="6" path="0" offset="58" offsetend="60" sl="571" fileid="304" /> <BranchPoint vc="0" uspid="571" ordinal="8" path="0" offset="62" offsetend="66" sl="571" fileid="304" /> <BranchPoint vc="0" uspid="571" ordinal="7" path="1" offset="58" offsetend="74" sl="571" fileid="304" /> <BranchPoint vc="0" uspid="571" ordinal="12" path="0" offset="78" offsetend="82" sl="571" fileid="304" /> <BranchPoint vc="0" uspid="571" ordinal="14" path="0" offset="86" offsetend="90" sl="571" fileid="304" /> <BranchPoint vc="0" uspid="571" ordinal="9" path="1" offset="62" offsetend="98" sl="571" fileid="304" /> <BranchPoint vc="0" uspid="573" ordinal="18" path="0" offset="109" offsetend="111" sl="573" fileid="304" /> <BranchPoint vc="0" uspid="573" ordinal="19" path="1" offset="109" offsetend="124" sl="573" fileid="304" /> <BranchPoint vc="0" uspid="573" ordinal="20" path="0" offset="122" offsetend="124" sl="573" fileid="304" /> <BranchPoint vc="0" uspid="573" ordinal="21" path="1" offset="122" offsetend="128" sl="573" fileid="304" /> <BranchPoint vc="0" uspid="571" ordinal="11" path="1" offset="70" offsetend="133" sl="571" fileid="304" /> <BranchPoint vc="0" uspid="574" ordinal="22" path="0" offset="144" offsetend="146" sl="574" fileid="304" /> <BranchPoint vc="0" uspid="574" ordinal="23" path="1" offset="144" offsetend="159" sl="574" fileid="304" /> <BranchPoint vc="0" uspid="574" ordinal="24" path="0" offset="157" offsetend="159" sl="574" fileid="304" /> <BranchPoint vc="0" uspid="574" ordinal="25" path="1" offset="157" offsetend="163" sl="574" fileid="304" /> <BranchPoint vc="0" uspid="571" ordinal="13" path="1" offset="78" offsetend="168" sl="571" fileid="304" /> <BranchPoint vc="0" uspid="571" ordinal="15" path="1" offset="86" offsetend="173" sl="571" fileid="304" /> <BranchPoint vc="0" uspid="571" ordinal="17" path="1" offset="94" offsetend="178" sl="571" fileid="304" /> <BranchPoint vc="0" uspid="571" ordinal="10" path="0" offset="70" offsetend="183" sl="571" fileid="304" /> <BranchPoint vc="0" uspid="571" ordinal="16" path="0" offset="94" offsetend="183" sl="571" fileid="304" /> <BranchPoint vc="0" uspid="578" ordinal="26" path="0" offset="188" offsetend="190" sl="578" fileid="304" /> <BranchPoint vc="0" uspid="578" ordinal="27" path="1" offset="188" offsetend="191" sl="578" fileid="304" /> <BranchPoint vc="0" uspid="567" ordinal="1" path="1" offset="13" offsetend="202" sl="567" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="28" path="0" offset="214" offsetend="216" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="589" ordinal="88" path="0" offset="691" offsetend="222" sl="589" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="30" path="0" offset="229" offsetend="236" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="593" ordinal="96" path="0" offset="790" offsetend="253" sl="593" fileid="304" /> <BranchPoint vc="0" uspid="595" ordinal="100" path="0" offset="841" offsetend="270" sl="595" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="36" path="0" offset="277" offsetend="284" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="604" ordinal="128" path="0" offset="1120" offsetend="301" sl="604" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="40" path="0" offset="308" offsetend="315" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="610" ordinal="166" path="0" offset="1378" offsetend="332" sl="610" fileid="304" /> <BranchPoint vc="0" uspid="616" ordinal="226" path="0" offset="1736" offsetend="349" sl="616" fileid="304" /> <BranchPoint vc="0" uspid="618" ordinal="229" path="1" offset="1768" offsetend="366" sl="618" fileid="304" /> <BranchPoint vc="0" uspid="618" ordinal="230" path="0" offset="1777" offsetend="366" sl="618" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="48" path="0" offset="373" offsetend="375" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="50" path="0" offset="382" offsetend="389" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="52" path="0" offset="396" offsetend="403" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="49" path="1" offset="373" offsetend="420" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="56" path="0" offset="427" offsetend="434" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="58" path="0" offset="441" offsetend="448" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="29" path="1" offset="214" offsetend="465" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="584" ordinal="62" path="0" offset="476" offsetend="478" sl="584" fileid="304" /> <BranchPoint vc="0" uspid="584" ordinal="63" path="1" offset="476" offsetend="491" sl="584" fileid="304" /> <BranchPoint vc="0" uspid="584" ordinal="64" path="0" offset="489" offsetend="491" sl="584" fileid="304" /> <BranchPoint vc="0" uspid="584" ordinal="67" path="1" offset="498" offsetend="502" sl="584" fileid="304" /> <BranchPoint vc="0" uspid="584" ordinal="65" path="1" offset="489" offsetend="514" sl="584" fileid="304" /> <BranchPoint vc="0" uspid="584" ordinal="66" path="0" offset="498" offsetend="514" sl="584" fileid="304" /> <BranchPoint vc="0" uspid="585" ordinal="68" path="0" offset="525" offsetend="527" sl="585" fileid="304" /> <BranchPoint vc="0" uspid="585" ordinal="69" path="1" offset="525" offsetend="540" sl="585" fileid="304" /> <BranchPoint vc="0" uspid="585" ordinal="70" path="0" offset="538" offsetend="540" sl="585" fileid="304" /> <BranchPoint vc="0" uspid="585" ordinal="73" path="1" offset="547" offsetend="551" sl="585" fileid="304" /> <BranchPoint vc="0" uspid="585" ordinal="71" path="1" offset="538" offsetend="563" sl="585" fileid="304" /> <BranchPoint vc="0" uspid="585" ordinal="72" path="0" offset="547" offsetend="563" sl="585" fileid="304" /> <BranchPoint vc="0" uspid="586" ordinal="74" path="0" offset="574" offsetend="576" sl="586" fileid="304" /> <BranchPoint vc="0" uspid="586" ordinal="75" path="1" offset="574" offsetend="589" sl="586" fileid="304" /> <BranchPoint vc="0" uspid="586" ordinal="76" path="0" offset="587" offsetend="589" sl="586" fileid="304" /> <BranchPoint vc="0" uspid="586" ordinal="79" path="1" offset="596" offsetend="600" sl="586" fileid="304" /> <BranchPoint vc="0" uspid="586" ordinal="77" path="1" offset="587" offsetend="612" sl="586" fileid="304" /> <BranchPoint vc="0" uspid="586" ordinal="78" path="0" offset="596" offsetend="612" sl="586" fileid="304" /> <BranchPoint vc="0" uspid="587" ordinal="81" path="1" offset="623" offsetend="627" sl="587" fileid="304" /> <BranchPoint vc="0" uspid="587" ordinal="80" path="0" offset="623" offsetend="639" sl="587" fileid="304" /> <BranchPoint vc="0" uspid="588" ordinal="82" path="0" offset="646" offsetend="648" sl="588" fileid="304" /> <BranchPoint vc="0" uspid="588" ordinal="83" path="1" offset="646" offsetend="659" sl="588" fileid="304" /> <BranchPoint vc="0" uspid="588" ordinal="85" path="1" offset="655" offsetend="659" sl="588" fileid="304" /> <BranchPoint vc="0" uspid="588" ordinal="84" path="0" offset="655" offsetend="671" sl="588" fileid="304" /> <BranchPoint vc="0" uspid="589" ordinal="86" path="0" offset="682" offsetend="684" sl="589" fileid="304" /> <BranchPoint vc="0" uspid="589" ordinal="87" path="1" offset="682" offsetend="698" sl="589" fileid="304" /> <BranchPoint vc="0" uspid="589" ordinal="89" path="1" offset="691" offsetend="698" sl="589" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="31" path="1" offset="229" offsetend="710" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="33" path="1" offset="243" offsetend="722" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="32" path="0" offset="243" offsetend="734" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="592" ordinal="90" path="0" offset="745" offsetend="747" sl="592" fileid="304" /> <BranchPoint vc="0" uspid="592" ordinal="91" path="1" offset="745" offsetend="758" sl="592" fileid="304" /> <BranchPoint vc="0" uspid="592" ordinal="93" path="1" offset="754" offsetend="758" sl="592" fileid="304" /> <BranchPoint vc="0" uspid="592" ordinal="92" path="0" offset="754" offsetend="770" sl="592" fileid="304" /> <BranchPoint vc="0" uspid="593" ordinal="94" path="0" offset="781" offsetend="783" sl="593" fileid="304" /> <BranchPoint vc="0" uspid="593" ordinal="95" path="1" offset="781" offsetend="797" sl="593" fileid="304" /> <BranchPoint vc="0" uspid="593" ordinal="97" path="1" offset="790" offsetend="797" sl="593" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="35" path="1" offset="260" offsetend="809" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="34" path="0" offset="260" offsetend="821" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="595" ordinal="98" path="0" offset="832" offsetend="834" sl="595" fileid="304" /> <BranchPoint vc="0" uspid="595" ordinal="99" path="1" offset="832" offsetend="848" sl="595" fileid="304" /> <BranchPoint vc="0" uspid="595" ordinal="101" path="1" offset="841" offsetend="848" sl="595" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="37" path="1" offset="277" offsetend="860" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="39" path="1" offset="291" offsetend="872" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="38" path="0" offset="291" offsetend="884" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="598" ordinal="102" path="0" offset="895" offsetend="897" sl="598" fileid="304" /> <BranchPoint vc="0" uspid="598" ordinal="103" path="1" offset="895" offsetend="908" sl="598" fileid="304" /> <BranchPoint vc="0" uspid="598" ordinal="105" path="1" offset="904" offsetend="908" sl="598" fileid="304" /> <BranchPoint vc="0" uspid="598" ordinal="104" path="0" offset="904" offsetend="920" sl="598" fileid="304" /> <BranchPoint vc="0" uspid="599" ordinal="106" path="0" offset="931" offsetend="933" sl="599" fileid="304" /> <BranchPoint vc="0" uspid="599" ordinal="107" path="1" offset="931" offsetend="944" sl="599" fileid="304" /> <BranchPoint vc="0" uspid="599" ordinal="109" path="1" offset="940" offsetend="944" sl="599" fileid="304" /> <BranchPoint vc="0" uspid="599" ordinal="108" path="0" offset="940" offsetend="956" sl="599" fileid="304" /> <BranchPoint vc="0" uspid="600" ordinal="110" path="0" offset="967" offsetend="969" sl="600" fileid="304" /> <BranchPoint vc="0" uspid="600" ordinal="111" path="1" offset="967" offsetend="980" sl="600" fileid="304" /> <BranchPoint vc="0" uspid="600" ordinal="113" path="1" offset="976" offsetend="980" sl="600" fileid="304" /> <BranchPoint vc="0" uspid="600" ordinal="112" path="0" offset="976" offsetend="992" sl="600" fileid="304" /> <BranchPoint vc="0" uspid="601" ordinal="114" path="0" offset="1003" offsetend="1005" sl="601" fileid="304" /> <BranchPoint vc="0" uspid="601" ordinal="115" path="1" offset="1003" offsetend="1016" sl="601" fileid="304" /> <BranchPoint vc="0" uspid="601" ordinal="117" path="1" offset="1012" offsetend="1016" sl="601" fileid="304" /> <BranchPoint vc="0" uspid="601" ordinal="116" path="0" offset="1012" offsetend="1028" sl="601" fileid="304" /> <BranchPoint vc="0" uspid="602" ordinal="118" path="0" offset="1039" offsetend="1041" sl="602" fileid="304" /> <BranchPoint vc="0" uspid="602" ordinal="119" path="1" offset="1039" offsetend="1052" sl="602" fileid="304" /> <BranchPoint vc="0" uspid="602" ordinal="121" path="1" offset="1048" offsetend="1052" sl="602" fileid="304" /> <BranchPoint vc="0" uspid="602" ordinal="120" path="0" offset="1048" offsetend="1064" sl="602" fileid="304" /> <BranchPoint vc="0" uspid="603" ordinal="122" path="0" offset="1075" offsetend="1077" sl="603" fileid="304" /> <BranchPoint vc="0" uspid="603" ordinal="123" path="1" offset="1075" offsetend="1088" sl="603" fileid="304" /> <BranchPoint vc="0" uspid="603" ordinal="125" path="1" offset="1084" offsetend="1088" sl="603" fileid="304" /> <BranchPoint vc="0" uspid="603" ordinal="124" path="0" offset="1084" offsetend="1100" sl="603" fileid="304" /> <BranchPoint vc="0" uspid="604" ordinal="126" path="0" offset="1111" offsetend="1113" sl="604" fileid="304" /> <BranchPoint vc="0" uspid="604" ordinal="127" path="1" offset="1111" offsetend="1127" sl="604" fileid="304" /> <BranchPoint vc="0" uspid="604" ordinal="129" path="1" offset="1120" offsetend="1127" sl="604" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="41" path="1" offset="308" offsetend="1139" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="43" path="1" offset="322" offsetend="1151" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="42" path="0" offset="322" offsetend="1163" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="607" ordinal="130" path="0" offset="1174" offsetend="1176" sl="607" fileid="304" /> <BranchPoint vc="0" uspid="607" ordinal="132" path="0" offset="1183" offsetend="1185" sl="607" fileid="304" /> <BranchPoint vc="0" uspid="607" ordinal="134" path="0" offset="1192" offsetend="1194" sl="607" fileid="304" /> <BranchPoint vc="0" uspid="607" ordinal="136" path="0" offset="1201" offsetend="1203" sl="607" fileid="304" /> <BranchPoint vc="0" uspid="607" ordinal="138" path="0" offset="1210" offsetend="1212" sl="607" fileid="304" /> <BranchPoint vc="0" uspid="607" ordinal="140" path="0" offset="1219" offsetend="1221" sl="607" fileid="304" /> <BranchPoint vc="0" uspid="607" ordinal="142" path="0" offset="1228" offsetend="1230" sl="607" fileid="304" /> <BranchPoint vc="0" uspid="607" ordinal="131" path="1" offset="1174" offsetend="1241" sl="607" fileid="304" /> <BranchPoint vc="0" uspid="607" ordinal="133" path="1" offset="1183" offsetend="1241" sl="607" fileid="304" /> <BranchPoint vc="0" uspid="607" ordinal="135" path="1" offset="1192" offsetend="1241" sl="607" fileid="304" /> <BranchPoint vc="0" uspid="607" ordinal="137" path="1" offset="1201" offsetend="1241" sl="607" fileid="304" /> <BranchPoint vc="0" uspid="607" ordinal="139" path="1" offset="1210" offsetend="1241" sl="607" fileid="304" /> <BranchPoint vc="0" uspid="607" ordinal="141" path="1" offset="1219" offsetend="1241" sl="607" fileid="304" /> <BranchPoint vc="0" uspid="607" ordinal="143" path="1" offset="1228" offsetend="1241" sl="607" fileid="304" /> <BranchPoint vc="0" uspid="607" ordinal="145" path="1" offset="1237" offsetend="1241" sl="607" fileid="304" /> <BranchPoint vc="0" uspid="607" ordinal="144" path="0" offset="1237" offsetend="1249" sl="607" fileid="304" /> <BranchPoint vc="0" uspid="608" ordinal="146" path="0" offset="1260" offsetend="1262" sl="608" fileid="304" /> <BranchPoint vc="0" uspid="608" ordinal="148" path="0" offset="1269" offsetend="1271" sl="608" fileid="304" /> <BranchPoint vc="0" uspid="608" ordinal="150" path="0" offset="1278" offsetend="1280" sl="608" fileid="304" /> <BranchPoint vc="0" uspid="608" ordinal="152" path="0" offset="1287" offsetend="1289" sl="608" fileid="304" /> <BranchPoint vc="0" uspid="608" ordinal="147" path="1" offset="1260" offsetend="1300" sl="608" fileid="304" /> <BranchPoint vc="0" uspid="608" ordinal="149" path="1" offset="1269" offsetend="1300" sl="608" fileid="304" /> <BranchPoint vc="0" uspid="608" ordinal="151" path="1" offset="1278" offsetend="1300" sl="608" fileid="304" /> <BranchPoint vc="0" uspid="608" ordinal="153" path="1" offset="1287" offsetend="1300" sl="608" fileid="304" /> <BranchPoint vc="0" uspid="608" ordinal="155" path="1" offset="1296" offsetend="1300" sl="608" fileid="304" /> <BranchPoint vc="0" uspid="608" ordinal="154" path="0" offset="1296" offsetend="1308" sl="608" fileid="304" /> <BranchPoint vc="0" uspid="609" ordinal="156" path="0" offset="1319" offsetend="1321" sl="609" fileid="304" /> <BranchPoint vc="0" uspid="609" ordinal="158" path="0" offset="1328" offsetend="1330" sl="609" fileid="304" /> <BranchPoint vc="0" uspid="609" ordinal="157" path="1" offset="1319" offsetend="1341" sl="609" fileid="304" /> <BranchPoint vc="0" uspid="609" ordinal="159" path="1" offset="1328" offsetend="1341" sl="609" fileid="304" /> <BranchPoint vc="0" uspid="609" ordinal="161" path="1" offset="1337" offsetend="1341" sl="609" fileid="304" /> <BranchPoint vc="0" uspid="609" ordinal="160" path="0" offset="1337" offsetend="1349" sl="609" fileid="304" /> <BranchPoint vc="0" uspid="610" ordinal="162" path="0" offset="1360" offsetend="1362" sl="610" fileid="304" /> <BranchPoint vc="0" uspid="610" ordinal="164" path="0" offset="1369" offsetend="1371" sl="610" fileid="304" /> <BranchPoint vc="0" uspid="610" ordinal="163" path="1" offset="1360" offsetend="1385" sl="610" fileid="304" /> <BranchPoint vc="0" uspid="610" ordinal="165" path="1" offset="1369" offsetend="1385" sl="610" fileid="304" /> <BranchPoint vc="0" uspid="610" ordinal="167" path="1" offset="1378" offsetend="1385" sl="610" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="45" path="1" offset="339" offsetend="1393" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="44" path="0" offset="339" offsetend="1405" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="612" ordinal="168" path="0" offset="1416" offsetend="1418" sl="612" fileid="304" /> <BranchPoint vc="0" uspid="612" ordinal="170" path="0" offset="1425" offsetend="1427" sl="612" fileid="304" /> <BranchPoint vc="0" uspid="612" ordinal="172" path="0" offset="1434" offsetend="1436" sl="612" fileid="304" /> <BranchPoint vc="0" uspid="612" ordinal="174" path="0" offset="1443" offsetend="1445" sl="612" fileid="304" /> <BranchPoint vc="0" uspid="612" ordinal="176" path="0" offset="1452" offsetend="1454" sl="612" fileid="304" /> <BranchPoint vc="0" uspid="612" ordinal="178" path="0" offset="1461" offsetend="1463" sl="612" fileid="304" /> <BranchPoint vc="0" uspid="612" ordinal="180" path="0" offset="1470" offsetend="1472" sl="612" fileid="304" /> <BranchPoint vc="0" uspid="612" ordinal="169" path="1" offset="1416" offsetend="1483" sl="612" fileid="304" /> <BranchPoint vc="0" uspid="612" ordinal="171" path="1" offset="1425" offsetend="1483" sl="612" fileid="304" /> <BranchPoint vc="0" uspid="612" ordinal="173" path="1" offset="1434" offsetend="1483" sl="612" fileid="304" /> <BranchPoint vc="0" uspid="612" ordinal="175" path="1" offset="1443" offsetend="1483" sl="612" fileid="304" /> <BranchPoint vc="0" uspid="612" ordinal="177" path="1" offset="1452" offsetend="1483" sl="612" fileid="304" /> <BranchPoint vc="0" uspid="612" ordinal="179" path="1" offset="1461" offsetend="1483" sl="612" fileid="304" /> <BranchPoint vc="0" uspid="612" ordinal="181" path="1" offset="1470" offsetend="1483" sl="612" fileid="304" /> <BranchPoint vc="0" uspid="612" ordinal="183" path="1" offset="1479" offsetend="1483" sl="612" fileid="304" /> <BranchPoint vc="0" uspid="612" ordinal="182" path="0" offset="1479" offsetend="1492" sl="612" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="184" path="0" offset="1503" offsetend="1505" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="186" path="0" offset="1512" offsetend="1514" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="188" path="0" offset="1521" offsetend="1523" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="190" path="0" offset="1530" offsetend="1532" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="192" path="0" offset="1539" offsetend="1541" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="194" path="0" offset="1548" offsetend="1550" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="196" path="0" offset="1557" offsetend="1559" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="198" path="0" offset="1566" offsetend="1568" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="185" path="1" offset="1503" offsetend="1579" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="187" path="1" offset="1512" offsetend="1579" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="189" path="1" offset="1521" offsetend="1579" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="191" path="1" offset="1530" offsetend="1579" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="193" path="1" offset="1539" offsetend="1579" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="195" path="1" offset="1548" offsetend="1579" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="197" path="1" offset="1557" offsetend="1579" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="199" path="1" offset="1566" offsetend="1579" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="201" path="1" offset="1575" offsetend="1579" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="613" ordinal="200" path="0" offset="1575" offsetend="1588" sl="613" fileid="304" /> <BranchPoint vc="0" uspid="614" ordinal="202" path="0" offset="1599" offsetend="1601" sl="614" fileid="304" /> <BranchPoint vc="0" uspid="614" ordinal="204" path="0" offset="1608" offsetend="1610" sl="614" fileid="304" /> <BranchPoint vc="0" uspid="614" ordinal="206" path="0" offset="1617" offsetend="1619" sl="614" fileid="304" /> <BranchPoint vc="0" uspid="614" ordinal="208" path="0" offset="1626" offsetend="1628" sl="614" fileid="304" /> <BranchPoint vc="0" uspid="614" ordinal="210" path="0" offset="1635" offsetend="1637" sl="614" fileid="304" /> <BranchPoint vc="0" uspid="614" ordinal="212" path="0" offset="1644" offsetend="1646" sl="614" fileid="304" /> <BranchPoint vc="0" uspid="614" ordinal="214" path="0" offset="1653" offsetend="1655" sl="614" fileid="304" /> <BranchPoint vc="0" uspid="614" ordinal="203" path="1" offset="1599" offsetend="1666" sl="614" fileid="304" /> <BranchPoint vc="0" uspid="614" ordinal="205" path="1" offset="1608" offsetend="1666" sl="614" fileid="304" /> <BranchPoint vc="0" uspid="614" ordinal="207" path="1" offset="1617" offsetend="1666" sl="614" fileid="304" /> <BranchPoint vc="0" uspid="614" ordinal="209" path="1" offset="1626" offsetend="1666" sl="614" fileid="304" /> <BranchPoint vc="0" uspid="614" ordinal="211" path="1" offset="1635" offsetend="1666" sl="614" fileid="304" /> <BranchPoint vc="0" uspid="614" ordinal="213" path="1" offset="1644" offsetend="1666" sl="614" fileid="304" /> <BranchPoint vc="0" uspid="614" ordinal="215" path="1" offset="1653" offsetend="1666" sl="614" fileid="304" /> <BranchPoint vc="0" uspid="614" ordinal="217" path="1" offset="1662" offsetend="1666" sl="614" fileid="304" /> <BranchPoint vc="0" uspid="614" ordinal="216" path="0" offset="1662" offsetend="1675" sl="614" fileid="304" /> <BranchPoint vc="0" uspid="615" ordinal="218" path="0" offset="1686" offsetend="1688" sl="615" fileid="304" /> <BranchPoint vc="0" uspid="615" ordinal="220" path="0" offset="1695" offsetend="1697" sl="615" fileid="304" /> <BranchPoint vc="0" uspid="615" ordinal="219" path="1" offset="1686" offsetend="1708" sl="615" fileid="304" /> <BranchPoint vc="0" uspid="615" ordinal="221" path="1" offset="1695" offsetend="1708" sl="615" fileid="304" /> <BranchPoint vc="0" uspid="615" ordinal="223" path="1" offset="1704" offsetend="1708" sl="615" fileid="304" /> <BranchPoint vc="0" uspid="615" ordinal="222" path="0" offset="1704" offsetend="1716" sl="615" fileid="304" /> <BranchPoint vc="0" uspid="616" ordinal="224" path="0" offset="1727" offsetend="1729" sl="616" fileid="304" /> <BranchPoint vc="0" uspid="616" ordinal="225" path="1" offset="1727" offsetend="1743" sl="616" fileid="304" /> <BranchPoint vc="0" uspid="616" ordinal="227" path="1" offset="1736" offsetend="1743" sl="616" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="47" path="1" offset="356" offsetend="1748" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="46" path="0" offset="356" offsetend="1757" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="618" ordinal="228" path="0" offset="1768" offsetend="1770" sl="618" fileid="304" /> <BranchPoint vc="0" uspid="618" ordinal="231" path="1" offset="1777" offsetend="1784" sl="618" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="51" path="1" offset="382" offsetend="1800" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="53" path="1" offset="396" offsetend="1806" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="55" path="1" offset="410" offsetend="1812" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="57" path="1" offset="427" offsetend="1818" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="59" path="1" offset="441" offsetend="1824" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="61" path="1" offset="455" offsetend="1830" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="54" path="0" offset="410" offsetend="1836" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="582" ordinal="60" path="0" offset="455" offsetend="1836" sl="582" fileid="304" /> <BranchPoint vc="0" uspid="625" ordinal="232" path="0" offset="1847" offsetend="1849" sl="625" fileid="304" /> <BranchPoint vc="0" uspid="625" ordinal="233" path="1" offset="1847" offsetend="1850" sl="625" fileid="304" /> <BranchPoint vc="0" uspid="628" ordinal="234" path="0" offset="1872" offsetend="1874" sl="628" fileid="304" /> <BranchPoint vc="0" uspid="628" ordinal="235" path="1" offset="1872" offsetend="1875" sl="628" fileid="304" /> <BranchPoint vc="0" uspid="628" ordinal="236" path="0" offset="1882" offsetend="1884" sl="628" fileid="304" /> <BranchPoint vc="0" uspid="628" ordinal="238" path="0" offset="1891" offsetend="1895" sl="628" fileid="304" /> <BranchPoint vc="0" uspid="628" ordinal="237" path="1" offset="1882" offsetend="1906" sl="628" fileid="304" /> <BranchPoint vc="0" uspid="628" ordinal="242" path="0" offset="1913" offsetend="1917" sl="628" fileid="304" /> <BranchPoint vc="0" uspid="628" ordinal="239" path="1" offset="1891" offsetend="1928" sl="628" fileid="304" /> <BranchPoint vc="0" uspid="628" ordinal="241" path="1" offset="1902" offsetend="1933" sl="628" fileid="304" /> <BranchPoint vc="0" uspid="628" ordinal="243" path="1" offset="1913" offsetend="1938" sl="628" fileid="304" /> <BranchPoint vc="0" uspid="628" ordinal="245" path="1" offset="1924" offsetend="1943" sl="628" fileid="304" /> <BranchPoint vc="0" uspid="628" ordinal="240" path="0" offset="1902" offsetend="1948" sl="628" fileid="304" /> <BranchPoint vc="0" uspid="628" ordinal="244" path="0" offset="1924" offsetend="1948" sl="628" fileid="304" /> <BranchPoint vc="0" uspid="634" ordinal="246" path="0" offset="1959" offsetend="1961" sl="634" fileid="304" /> <BranchPoint vc="0" uspid="634" ordinal="247" path="1" offset="1959" offsetend="1962" sl="634" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="248" path="0" offset="1984" offsetend="1986" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="640" ordinal="283" path="1" offset="2228" offsetend="1992" sl="640" fileid="304" /> <BranchPoint vc="0" uspid="640" ordinal="284" path="0" offset="2237" offsetend="1992" sl="640" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="250" path="0" offset="2000" offsetend="2019" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="254" path="0" offset="2026" offsetend="2033" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="647" ordinal="302" path="0" offset="2411" offsetend="2050" sl="647" fileid="304" /> <BranchPoint vc="0" uspid="656" ordinal="384" path="0" offset="2939" offsetend="2067" sl="656" fileid="304" /> <BranchPoint vc="0" uspid="658" ordinal="390" path="0" offset="2999" offsetend="2084" sl="658" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="262" path="0" offset="2091" offsetend="2098" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="662" ordinal="397" path="1" offset="3074" offsetend="2115" sl="662" fileid="304" /> <BranchPoint vc="0" uspid="662" ordinal="398" path="0" offset="3083" offsetend="2115" sl="662" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="266" path="0" offset="2122" offsetend="2129" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="268" path="0" offset="2136" offsetend="2143" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="249" path="1" offset="1984" offsetend="2160" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="639" ordinal="272" path="0" offset="2168" offsetend="2170" sl="639" fileid="304" /> <BranchPoint vc="0" uspid="639" ordinal="274" path="0" offset="2177" offsetend="2179" sl="639" fileid="304" /> <BranchPoint vc="0" uspid="639" ordinal="275" path="1" offset="2177" offsetend="2188" sl="639" fileid="304" /> <BranchPoint vc="0" uspid="639" ordinal="276" path="0" offset="2186" offsetend="2188" sl="639" fileid="304" /> <BranchPoint vc="0" uspid="639" ordinal="278" path="0" offset="2195" offsetend="2197" sl="639" fileid="304" /> <BranchPoint vc="0" uspid="639" ordinal="277" path="1" offset="2186" offsetend="2208" sl="639" fileid="304" /> <BranchPoint vc="0" uspid="639" ordinal="281" path="1" offset="2204" offsetend="2208" sl="639" fileid="304" /> <BranchPoint vc="0" uspid="639" ordinal="273" path="1" offset="2168" offsetend="2217" sl="639" fileid="304" /> <BranchPoint vc="0" uspid="639" ordinal="279" path="1" offset="2195" offsetend="2217" sl="639" fileid="304" /> <BranchPoint vc="0" uspid="639" ordinal="280" path="0" offset="2204" offsetend="2217" sl="639" fileid="304" /> <BranchPoint vc="0" uspid="640" ordinal="282" path="0" offset="2228" offsetend="2230" sl="640" fileid="304" /> <BranchPoint vc="0" uspid="640" ordinal="285" path="1" offset="2237" offsetend="2244" sl="640" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="251" path="1" offset="2000" offsetend="2253" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="252" path="2" offset="2000" offsetend="2265" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="253" path="3" offset="2000" offsetend="2277" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="257" path="1" offset="2040" offsetend="2289" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="255" path="1" offset="2026" offsetend="2301" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="256" path="0" offset="2040" offsetend="2313" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="646" ordinal="286" path="0" offset="2324" offsetend="2326" sl="646" fileid="304" /> <BranchPoint vc="0" uspid="646" ordinal="288" path="0" offset="2333" offsetend="2335" sl="646" fileid="304" /> <BranchPoint vc="0" uspid="646" ordinal="290" path="0" offset="2342" offsetend="2344" sl="646" fileid="304" /> <BranchPoint vc="0" uspid="646" ordinal="287" path="1" offset="2324" offsetend="2355" sl="646" fileid="304" /> <BranchPoint vc="0" uspid="646" ordinal="289" path="1" offset="2333" offsetend="2355" sl="646" fileid="304" /> <BranchPoint vc="0" uspid="646" ordinal="291" path="1" offset="2342" offsetend="2355" sl="646" fileid="304" /> <BranchPoint vc="0" uspid="646" ordinal="293" path="1" offset="2351" offsetend="2355" sl="646" fileid="304" /> <BranchPoint vc="0" uspid="646" ordinal="292" path="0" offset="2351" offsetend="2364" sl="646" fileid="304" /> <BranchPoint vc="0" uspid="647" ordinal="294" path="0" offset="2375" offsetend="2377" sl="647" fileid="304" /> <BranchPoint vc="0" uspid="647" ordinal="296" path="0" offset="2384" offsetend="2386" sl="647" fileid="304" /> <BranchPoint vc="0" uspid="647" ordinal="298" path="0" offset="2393" offsetend="2395" sl="647" fileid="304" /> <BranchPoint vc="0" uspid="647" ordinal="300" path="0" offset="2402" offsetend="2404" sl="647" fileid="304" /> <BranchPoint vc="0" uspid="647" ordinal="295" path="1" offset="2375" offsetend="2418" sl="647" fileid="304" /> <BranchPoint vc="0" uspid="647" ordinal="297" path="1" offset="2384" offsetend="2418" sl="647" fileid="304" /> <BranchPoint vc="0" uspid="647" ordinal="299" path="1" offset="2393" offsetend="2418" sl="647" fileid="304" /> <BranchPoint vc="0" uspid="647" ordinal="301" path="1" offset="2402" offsetend="2418" sl="647" fileid="304" /> <BranchPoint vc="0" uspid="647" ordinal="303" path="1" offset="2411" offsetend="2418" sl="647" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="259" path="1" offset="2057" offsetend="2430" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="258" path="0" offset="2057" offsetend="2442" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="649" ordinal="304" path="0" offset="2453" offsetend="2455" sl="649" fileid="304" /> <BranchPoint vc="0" uspid="649" ordinal="306" path="0" offset="2462" offsetend="2464" sl="649" fileid="304" /> <BranchPoint vc="0" uspid="649" ordinal="308" path="0" offset="2471" offsetend="2473" sl="649" fileid="304" /> <BranchPoint vc="0" uspid="649" ordinal="310" path="0" offset="2480" offsetend="2482" sl="649" fileid="304" /> <BranchPoint vc="0" uspid="649" ordinal="312" path="0" offset="2489" offsetend="2491" sl="649" fileid="304" /> <BranchPoint vc="0" uspid="649" ordinal="314" path="0" offset="2498" offsetend="2500" sl="649" fileid="304" /> <BranchPoint vc="0" uspid="649" ordinal="316" path="0" offset="2507" offsetend="2509" sl="649" fileid="304" /> <BranchPoint vc="0" uspid="649" ordinal="305" path="1" offset="2453" offsetend="2520" sl="649" fileid="304" /> <BranchPoint vc="0" uspid="649" ordinal="307" path="1" offset="2462" offsetend="2520" sl="649" fileid="304" /> <BranchPoint vc="0" uspid="649" ordinal="309" path="1" offset="2471" offsetend="2520" sl="649" fileid="304" /> <BranchPoint vc="0" uspid="649" ordinal="311" path="1" offset="2480" offsetend="2520" sl="649" fileid="304" /> <BranchPoint vc="0" uspid="649" ordinal="313" path="1" offset="2489" offsetend="2520" sl="649" fileid="304" /> <BranchPoint vc="0" uspid="649" ordinal="315" path="1" offset="2498" offsetend="2520" sl="649" fileid="304" /> <BranchPoint vc="0" uspid="649" ordinal="317" path="1" offset="2507" offsetend="2520" sl="649" fileid="304" /> <BranchPoint vc="0" uspid="649" ordinal="319" path="1" offset="2516" offsetend="2520" sl="649" fileid="304" /> <BranchPoint vc="0" uspid="649" ordinal="318" path="0" offset="2516" offsetend="2532" sl="649" fileid="304" /> <BranchPoint vc="0" uspid="650" ordinal="320" path="0" offset="2543" offsetend="2545" sl="650" fileid="304" /> <BranchPoint vc="0" uspid="650" ordinal="321" path="1" offset="2543" offsetend="2556" sl="650" fileid="304" /> <BranchPoint vc="0" uspid="650" ordinal="323" path="1" offset="2552" offsetend="2556" sl="650" fileid="304" /> <BranchPoint vc="0" uspid="650" ordinal="322" path="0" offset="2552" offsetend="2568" sl="650" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="324" path="0" offset="2579" offsetend="2581" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="326" path="0" offset="2588" offsetend="2590" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="328" path="0" offset="2597" offsetend="2599" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="330" path="0" offset="2606" offsetend="2608" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="332" path="0" offset="2615" offsetend="2617" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="334" path="0" offset="2624" offsetend="2626" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="336" path="0" offset="2633" offsetend="2635" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="338" path="0" offset="2642" offsetend="2644" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="325" path="1" offset="2579" offsetend="2655" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="327" path="1" offset="2588" offsetend="2655" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="329" path="1" offset="2597" offsetend="2655" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="331" path="1" offset="2606" offsetend="2655" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="333" path="1" offset="2615" offsetend="2655" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="335" path="1" offset="2624" offsetend="2655" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="337" path="1" offset="2633" offsetend="2655" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="339" path="1" offset="2642" offsetend="2655" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="341" path="1" offset="2651" offsetend="2655" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="651" ordinal="340" path="0" offset="2651" offsetend="2667" sl="651" fileid="304" /> <BranchPoint vc="0" uspid="652" ordinal="342" path="0" offset="2678" offsetend="2680" sl="652" fileid="304" /> <BranchPoint vc="0" uspid="652" ordinal="344" path="0" offset="2687" offsetend="2689" sl="652" fileid="304" /> <BranchPoint vc="0" uspid="652" ordinal="343" path="1" offset="2678" offsetend="2700" sl="652" fileid="304" /> <BranchPoint vc="0" uspid="652" ordinal="345" path="1" offset="2687" offsetend="2700" sl="652" fileid="304" /> <BranchPoint vc="0" uspid="652" ordinal="347" path="1" offset="2696" offsetend="2700" sl="652" fileid="304" /> <BranchPoint vc="0" uspid="652" ordinal="346" path="0" offset="2696" offsetend="2712" sl="652" fileid="304" /> <BranchPoint vc="0" uspid="653" ordinal="348" path="0" offset="2723" offsetend="2725" sl="653" fileid="304" /> <BranchPoint vc="0" uspid="653" ordinal="350" path="0" offset="2732" offsetend="2734" sl="653" fileid="304" /> <BranchPoint vc="0" uspid="653" ordinal="352" path="0" offset="2741" offsetend="2743" sl="653" fileid="304" /> <BranchPoint vc="0" uspid="653" ordinal="354" path="0" offset="2750" offsetend="2752" sl="653" fileid="304" /> <BranchPoint vc="0" uspid="653" ordinal="356" path="0" offset="2759" offsetend="2761" sl="653" fileid="304" /> <BranchPoint vc="0" uspid="653" ordinal="349" path="1" offset="2723" offsetend="2772" sl="653" fileid="304" /> <BranchPoint vc="0" uspid="653" ordinal="351" path="1" offset="2732" offsetend="2772" sl="653" fileid="304" /> <BranchPoint vc="0" uspid="653" ordinal="353" path="1" offset="2741" offsetend="2772" sl="653" fileid="304" /> <BranchPoint vc="0" uspid="653" ordinal="355" path="1" offset="2750" offsetend="2772" sl="653" fileid="304" /> <BranchPoint vc="0" uspid="653" ordinal="357" path="1" offset="2759" offsetend="2772" sl="653" fileid="304" /> <BranchPoint vc="0" uspid="653" ordinal="359" path="1" offset="2768" offsetend="2772" sl="653" fileid="304" /> <BranchPoint vc="0" uspid="653" ordinal="358" path="0" offset="2768" offsetend="2784" sl="653" fileid="304" /> <BranchPoint vc="0" uspid="654" ordinal="360" path="0" offset="2795" offsetend="2797" sl="654" fileid="304" /> <BranchPoint vc="0" uspid="654" ordinal="362" path="0" offset="2804" offsetend="2806" sl="654" fileid="304" /> <BranchPoint vc="0" uspid="654" ordinal="364" path="0" offset="2813" offsetend="2815" sl="654" fileid="304" /> <BranchPoint vc="0" uspid="654" ordinal="366" path="0" offset="2822" offsetend="2824" sl="654" fileid="304" /> <BranchPoint vc="0" uspid="654" ordinal="368" path="0" offset="2831" offsetend="2833" sl="654" fileid="304" /> <BranchPoint vc="0" uspid="654" ordinal="370" path="0" offset="2840" offsetend="2842" sl="654" fileid="304" /> <BranchPoint vc="0" uspid="654" ordinal="361" path="1" offset="2795" offsetend="2853" sl="654" fileid="304" /> <BranchPoint vc="0" uspid="654" ordinal="363" path="1" offset="2804" offsetend="2853" sl="654" fileid="304" /> <BranchPoint vc="0" uspid="654" ordinal="365" path="1" offset="2813" offsetend="2853" sl="654" fileid="304" /> <BranchPoint vc="0" uspid="654" ordinal="367" path="1" offset="2822" offsetend="2853" sl="654" fileid="304" /> <BranchPoint vc="0" uspid="654" ordinal="369" path="1" offset="2831" offsetend="2853" sl="654" fileid="304" /> <BranchPoint vc="0" uspid="654" ordinal="371" path="1" offset="2840" offsetend="2853" sl="654" fileid="304" /> <BranchPoint vc="0" uspid="654" ordinal="373" path="1" offset="2849" offsetend="2853" sl="654" fileid="304" /> <BranchPoint vc="0" uspid="654" ordinal="372" path="0" offset="2849" offsetend="2865" sl="654" fileid="304" /> <BranchPoint vc="0" uspid="655" ordinal="374" path="0" offset="2876" offsetend="2878" sl="655" fileid="304" /> <BranchPoint vc="0" uspid="655" ordinal="375" path="1" offset="2876" offsetend="2889" sl="655" fileid="304" /> <BranchPoint vc="0" uspid="655" ordinal="377" path="1" offset="2885" offsetend="2889" sl="655" fileid="304" /> <BranchPoint vc="0" uspid="655" ordinal="376" path="0" offset="2885" offsetend="2901" sl="655" fileid="304" /> <BranchPoint vc="0" uspid="656" ordinal="378" path="0" offset="2912" offsetend="2914" sl="656" fileid="304" /> <BranchPoint vc="0" uspid="656" ordinal="380" path="0" offset="2921" offsetend="2923" sl="656" fileid="304" /> <BranchPoint vc="0" uspid="656" ordinal="382" path="0" offset="2930" offsetend="2932" sl="656" fileid="304" /> <BranchPoint vc="0" uspid="656" ordinal="379" path="1" offset="2912" offsetend="2946" sl="656" fileid="304" /> <BranchPoint vc="0" uspid="656" ordinal="381" path="1" offset="2921" offsetend="2946" sl="656" fileid="304" /> <BranchPoint vc="0" uspid="656" ordinal="383" path="1" offset="2930" offsetend="2946" sl="656" fileid="304" /> <BranchPoint vc="0" uspid="656" ordinal="385" path="1" offset="2939" offsetend="2946" sl="656" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="261" path="1" offset="2074" offsetend="2958" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="260" path="0" offset="2074" offsetend="2970" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="658" ordinal="386" path="0" offset="2981" offsetend="2983" sl="658" fileid="304" /> <BranchPoint vc="0" uspid="658" ordinal="388" path="0" offset="2990" offsetend="2992" sl="658" fileid="304" /> <BranchPoint vc="0" uspid="658" ordinal="387" path="1" offset="2981" offsetend="3006" sl="658" fileid="304" /> <BranchPoint vc="0" uspid="658" ordinal="389" path="1" offset="2990" offsetend="3006" sl="658" fileid="304" /> <BranchPoint vc="0" uspid="658" ordinal="391" path="1" offset="2999" offsetend="3006" sl="658" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="263" path="1" offset="2091" offsetend="3015" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="265" path="1" offset="2105" offsetend="3021" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="264" path="0" offset="2105" offsetend="3030" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="661" ordinal="392" path="0" offset="3041" offsetend="3043" sl="661" fileid="304" /> <BranchPoint vc="0" uspid="661" ordinal="395" path="1" offset="3050" offsetend="3054" sl="661" fileid="304" /> <BranchPoint vc="0" uspid="661" ordinal="393" path="1" offset="3041" offsetend="3063" sl="661" fileid="304" /> <BranchPoint vc="0" uspid="661" ordinal="394" path="0" offset="3050" offsetend="3063" sl="661" fileid="304" /> <BranchPoint vc="0" uspid="662" ordinal="396" path="0" offset="3074" offsetend="3076" sl="662" fileid="304" /> <BranchPoint vc="0" uspid="662" ordinal="399" path="1" offset="3083" offsetend="3090" sl="662" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="271" path="1" offset="2150" offsetend="3099" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="267" path="1" offset="2122" offsetend="3108" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="269" path="1" offset="2136" offsetend="3117" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="637" ordinal="270" path="0" offset="2150" offsetend="3126" sl="637" fileid="304" /> <BranchPoint vc="0" uspid="666" ordinal="400" path="0" offset="3137" offsetend="3139" sl="666" fileid="304" /> <BranchPoint vc="0" uspid="666" ordinal="401" path="1" offset="3137" offsetend="3140" sl="666" fileid="304" /> <BranchPoint vc="0" uspid="669" ordinal="402" path="0" offset="3162" offsetend="3164" sl="669" fileid="304" /> <BranchPoint vc="0" uspid="669" ordinal="403" path="1" offset="3162" offsetend="3167" sl="669" fileid="304" /> <BranchPoint vc="0" uspid="671" ordinal="404" path="0" offset="3174" offsetend="3176" sl="671" fileid="304" /> <BranchPoint vc="0" uspid="671" ordinal="407" path="1" offset="3183" offsetend="3187" sl="671" fileid="304" /> <BranchPoint vc="0" uspid="671" ordinal="405" path="1" offset="3174" offsetend="3192" sl="671" fileid="304" /> <BranchPoint vc="0" uspid="671" ordinal="406" path="0" offset="3183" offsetend="3192" sl="671" fileid="304" /> <BranchPoint vc="0" uspid="672" ordinal="408" path="0" offset="3203" offsetend="3205" sl="672" fileid="304" /> <BranchPoint vc="0" uspid="672" ordinal="409" path="1" offset="3203" offsetend="3206" sl="672" fileid="304" /> <BranchPoint vc="0" uspid="675" ordinal="410" path="0" offset="3228" offsetend="3230" sl="675" fileid="304" /> <BranchPoint vc="0" uspid="675" ordinal="411" path="1" offset="3228" offsetend="3233" sl="675" fileid="304" /> <BranchPoint vc="0" uspid="677" ordinal="412" path="0" offset="3240" offsetend="3242" sl="677" fileid="304" /> <BranchPoint vc="0" uspid="677" ordinal="413" path="1" offset="3240" offsetend="3251" sl="677" fileid="304" /> <BranchPoint vc="0" uspid="677" ordinal="414" path="0" offset="3249" offsetend="3251" sl="677" fileid="304" /> <BranchPoint vc="0" uspid="677" ordinal="416" path="0" offset="3258" offsetend="3260" sl="677" fileid="304" /> <BranchPoint vc="0" uspid="677" ordinal="417" path="1" offset="3258" offsetend="3269" sl="677" fileid="304" /> <BranchPoint vc="0" uspid="677" ordinal="418" path="0" offset="3267" offsetend="3269" sl="677" fileid="304" /> <BranchPoint vc="0" uspid="677" ordinal="420" path="0" offset="3276" offsetend="3278" sl="677" fileid="304" /> <BranchPoint vc="0" uspid="677" ordinal="421" path="1" offset="3276" offsetend="3287" sl="677" fileid="304" /> <BranchPoint vc="0" uspid="677" ordinal="422" path="0" offset="3285" offsetend="3287" sl="677" fileid="304" /> <BranchPoint vc="0" uspid="677" ordinal="424" path="0" offset="3294" offsetend="3296" sl="677" fileid="304" /> <BranchPoint vc="0" uspid="677" ordinal="415" path="1" offset="3249" offsetend="3307" sl="677" fileid="304" /> <BranchPoint vc="0" uspid="677" ordinal="419" path="1" offset="3267" offsetend="3307" sl="677" fileid="304" /> <BranchPoint vc="0" uspid="677" ordinal="423" path="1" offset="3285" offsetend="3307" sl="677" fileid="304" /> <BranchPoint vc="0" uspid="677" ordinal="425" path="1" offset="3294" offsetend="3307" sl="677" fileid="304" /> <BranchPoint vc="0" uspid="677" ordinal="427" path="1" offset="3303" offsetend="3307" sl="677" fileid="304" /> <BranchPoint vc="0" uspid="677" ordinal="426" path="0" offset="3303" offsetend="3317" sl="677" fileid="304" /> <BranchPoint vc="0" uspid="678" ordinal="428" path="0" offset="3328" offsetend="3330" sl="678" fileid="304" /> <BranchPoint vc="0" uspid="678" ordinal="429" path="1" offset="3328" offsetend="3331" sl="678" fileid="304" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="36" offset="36" sc="0" sl="566" ec="1" el="680" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.ItemParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.ItemDto,System.Int16>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.BCardDto,System.Int16>,Serilog.ILogger)</Name> <FileRef uid="304" /> <SequencePoints> <SequencePoint vc="0" uspid="51" ordinal="0" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="57" ordinal="1" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="58" ordinal="2" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="59" ordinal="3" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="60" ordinal="4" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="61" ordinal="5" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="304" /> <SequencePoint vc="0" uspid="62" ordinal="6" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="304" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="37" offset="37" sc="0" sl="51" ec="1" el="62" bec="0" bev="0" fileid="304" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Parser.Parsers.MapMonsterParser</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.MapMonsterParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.MapMonsterDto,System.Int32>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.NpcMonsterDto,System.Int16>,Serilog.ILogger)</Name> <FileRef uid="305" /> <SequencePoints> <SequencePoint vc="0" uspid="39" ordinal="0" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="305" /> <SequencePoint vc="0" uspid="40" ordinal="1" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="305" /> <SequencePoint vc="0" uspid="41" ordinal="2" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="305" /> <SequencePoint vc="0" uspid="42" ordinal="3" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="305" /> <SequencePoint vc="0" uspid="43" ordinal="4" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="305" /> <SequencePoint vc="0" uspid="44" ordinal="5" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="305" /> <SequencePoint vc="0" uspid="45" ordinal="6" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="305" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="39" ec="1" el="45" bec="0" bev="0" fileid="305" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Parser.Parsers.MapNpcParser</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.MapNpcParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.MapNpcDto,System.Int32>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.NpcMonsterDto,System.Int16>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.NpcTalkDto,System.Int16>,Serilog.ILogger)</Name> <FileRef uid="306" /> <SequencePoints> <SequencePoint vc="0" uspid="40" ordinal="0" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="306" /> <SequencePoint vc="0" uspid="41" ordinal="1" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="306" /> <SequencePoint vc="0" uspid="42" ordinal="2" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="306" /> <SequencePoint vc="0" uspid="43" ordinal="3" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="306" /> <SequencePoint vc="0" uspid="44" ordinal="4" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="306" /> <SequencePoint vc="0" uspid="45" ordinal="5" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="306" /> <SequencePoint vc="0" uspid="46" ordinal="6" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="306" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="40" ec="1" el="46" bec="0" bev="0" fileid="306" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="16" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Parser.Parsers.MapParser</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task`1<System.Collections.Generic.List`1<NosCore.Data.StaticEntities.MapDto>> NosCore.Parser.Parsers.MapParser::ParseDatAsync(System.String)</Name> <FileRef uid="307" /> <SequencePoints> <SequencePoint vc="0" uspid="52" ordinal="0" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="307" /> <SequencePoint vc="0" uspid="53" ordinal="1" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="307" /> <SequencePoint vc="0" uspid="54" ordinal="2" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="307" /> <SequencePoint vc="0" uspid="55" ordinal="3" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="307" /> <SequencePoint vc="0" uspid="56" ordinal="4" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="307" /> <SequencePoint vc="0" uspid="57" ordinal="5" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="307" /> <SequencePoint vc="0" uspid="58" ordinal="6" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="307" /> <SequencePoint vc="0" uspid="59" ordinal="7" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="307" /> <SequencePoint vc="0" uspid="60" ordinal="8" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="307" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="52" ec="1" el="60" bec="0" bev="0" fileid="307" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.MapParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.MapDto,System.Int16>,Serilog.ILogger)</Name> <FileRef uid="307" /> <SequencePoints> <SequencePoint vc="0" uspid="39" ordinal="0" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="307" /> <SequencePoint vc="0" uspid="40" ordinal="1" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="307" /> <SequencePoint vc="0" uspid="45" ordinal="2" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="307" /> <SequencePoint vc="0" uspid="46" ordinal="3" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="307" /> <SequencePoint vc="0" uspid="47" ordinal="4" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="307" /> <SequencePoint vc="0" uspid="48" ordinal="5" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="307" /> <SequencePoint vc="0" uspid="49" ordinal="6" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="307" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="39" ec="1" el="49" bec="0" bev="0" fileid="307" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="146" visitedSequencePoints="0" numBranchPoints="140" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="140" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.Parser.Parsers.MapTypeMapParser</FullName> <Methods> <Method cyclomaticComplexity="140" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="141" visitedSequencePoints="0" numBranchPoints="140" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="140" minCyclomaticComplexity="140" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.Parser.Parsers.MapTypeMapParser::InsertMapTypeMapsAsync()</Name> <FileRef uid="308" /> <SequencePoints> <SequencePoint vc="0" uspid="42" ordinal="0" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="43" ordinal="1" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="44" ordinal="2" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="45" ordinal="3" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="46" ordinal="4" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="47" ordinal="5" sl="47" sc="1" el="47" ec="2" bec="2" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="48" ordinal="6" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="49" ordinal="7" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="50" ordinal="8" sl="50" sc="1" el="50" ec="2" bec="20" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="51" ordinal="9" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="52" ordinal="10" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="53" ordinal="11" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="55" ordinal="12" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="56" ordinal="13" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="57" ordinal="14" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="58" ordinal="15" sl="58" sc="1" el="58" ec="2" bec="12" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="59" ordinal="16" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="61" ordinal="17" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="62" ordinal="18" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="63" ordinal="19" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="64" ordinal="20" sl="64" sc="1" el="64" ec="2" bec="16" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="65" ordinal="21" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="66" ordinal="22" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="68" ordinal="23" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="69" ordinal="24" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="70" ordinal="25" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="71" ordinal="26" sl="71" sc="1" el="71" ec="2" bec="2" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="72" ordinal="27" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="74" ordinal="28" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="75" ordinal="29" sl="75" sc="1" el="75" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="76" ordinal="30" sl="76" sc="1" el="76" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="77" ordinal="31" sl="77" sc="1" el="77" ec="2" bec="16" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="78" ordinal="32" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="79" ordinal="33" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="81" ordinal="34" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="82" ordinal="35" sl="82" sc="1" el="82" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="83" ordinal="36" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="84" ordinal="37" sl="84" sc="1" el="84" ec="2" bec="2" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="85" ordinal="38" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="87" ordinal="39" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="88" ordinal="40" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="89" ordinal="41" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="90" ordinal="42" sl="90" sc="1" el="90" ec="2" bec="4" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="91" ordinal="43" sl="91" sc="1" el="91" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="93" ordinal="44" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="94" ordinal="45" sl="94" sc="1" el="94" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="95" ordinal="46" sl="95" sc="1" el="95" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="96" ordinal="47" sl="96" sc="1" el="96" ec="2" bec="4" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="97" ordinal="48" sl="97" sc="1" el="97" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="99" ordinal="49" sl="99" sc="1" el="99" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="100" ordinal="50" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="101" ordinal="51" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="102" ordinal="52" sl="102" sc="1" el="102" ec="2" bec="8" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="103" ordinal="53" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="104" ordinal="54" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="105" ordinal="55" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="106" ordinal="56" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="107" ordinal="57" sl="107" sc="1" el="107" ec="2" bec="6" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="108" ordinal="58" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="110" ordinal="59" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="111" ordinal="60" sl="111" sc="1" el="111" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="112" ordinal="61" sl="112" sc="1" el="112" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="113" ordinal="62" sl="113" sc="1" el="113" ec="2" bec="8" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="114" ordinal="63" sl="114" sc="1" el="114" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="116" ordinal="64" sl="116" sc="1" el="116" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="117" ordinal="65" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="118" ordinal="66" sl="118" sc="1" el="118" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="119" ordinal="67" sl="119" sc="1" el="119" ec="2" bec="2" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="120" ordinal="68" sl="120" sc="1" el="120" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="122" ordinal="69" sl="122" sc="1" el="122" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="123" ordinal="70" sl="123" sc="1" el="123" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="124" ordinal="71" sl="124" sc="1" el="124" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="125" ordinal="72" sl="125" sc="1" el="125" ec="2" bec="2" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="126" ordinal="73" sl="126" sc="1" el="126" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="128" ordinal="74" sl="128" sc="1" el="128" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="129" ordinal="75" sl="129" sc="1" el="129" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="130" ordinal="76" sl="130" sc="1" el="130" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="131" ordinal="77" sl="131" sc="1" el="131" ec="2" bec="4" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="132" ordinal="78" sl="132" sc="1" el="132" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="134" ordinal="79" sl="134" sc="1" el="134" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="135" ordinal="80" sl="135" sc="1" el="135" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="136" ordinal="81" sl="136" sc="1" el="136" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="137" ordinal="82" sl="137" sc="1" el="137" ec="2" bec="2" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="138" ordinal="83" sl="138" sc="1" el="138" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="140" ordinal="84" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="141" ordinal="85" sl="141" sc="1" el="141" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="142" ordinal="86" sl="142" sc="1" el="142" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="143" ordinal="87" sl="143" sc="1" el="143" ec="2" bec="2" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="144" ordinal="88" sl="144" sc="1" el="144" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="146" ordinal="89" sl="146" sc="1" el="146" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="147" ordinal="90" sl="147" sc="1" el="147" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="148" ordinal="91" sl="148" sc="1" el="148" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="149" ordinal="92" sl="149" sc="1" el="149" ec="2" bec="2" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="150" ordinal="93" sl="150" sc="1" el="150" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="152" ordinal="94" sl="152" sc="1" el="152" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="153" ordinal="95" sl="153" sc="1" el="153" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="154" ordinal="96" sl="154" sc="1" el="154" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="155" ordinal="97" sl="155" sc="1" el="155" ec="2" bec="8" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="156" ordinal="98" sl="156" sc="1" el="156" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="158" ordinal="99" sl="158" sc="1" el="158" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="159" ordinal="100" sl="159" sc="1" el="159" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="160" ordinal="101" sl="160" sc="1" el="160" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="161" ordinal="102" sl="161" sc="1" el="161" ec="2" bec="4" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="162" ordinal="103" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="164" ordinal="104" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="165" ordinal="105" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="166" ordinal="106" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="167" ordinal="107" sl="167" sc="1" el="167" ec="2" bec="2" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="168" ordinal="108" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="170" ordinal="109" sl="170" sc="1" el="170" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="171" ordinal="110" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="172" ordinal="111" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="173" ordinal="112" sl="173" sc="1" el="173" ec="2" bec="2" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="174" ordinal="113" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="176" ordinal="114" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="177" ordinal="115" sl="177" sc="1" el="177" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="178" ordinal="116" sl="178" sc="1" el="178" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="179" ordinal="117" sl="179" sc="1" el="179" ec="2" bec="2" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="180" ordinal="118" sl="180" sc="1" el="180" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="182" ordinal="119" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="183" ordinal="120" sl="183" sc="1" el="183" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="184" ordinal="121" sl="184" sc="1" el="184" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="185" ordinal="122" sl="185" sc="1" el="185" ec="2" bec="2" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="186" ordinal="123" sl="186" sc="1" el="186" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="187" ordinal="124" sl="187" sc="1" el="187" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="188" ordinal="125" sl="188" sc="1" el="188" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="189" ordinal="126" sl="189" sc="1" el="189" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="192" ordinal="127" sl="192" sc="1" el="192" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="193" ordinal="128" sl="193" sc="1" el="193" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="194" ordinal="129" sl="194" sc="1" el="194" ec="2" bec="6" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="195" ordinal="130" sl="195" sc="1" el="195" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="196" ordinal="131" sl="196" sc="1" el="196" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="197" ordinal="132" sl="197" sc="1" el="197" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="198" ordinal="133" sl="198" sc="1" el="198" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="199" ordinal="134" sl="199" sc="1" el="199" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="200" ordinal="135" sl="200" sc="1" el="200" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="201" ordinal="136" sl="201" sc="1" el="201" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="202" ordinal="137" sl="202" sc="1" el="202" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="204" ordinal="138" sl="204" sc="1" el="204" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="205" ordinal="139" sl="205" sc="1" el="205" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="206" ordinal="140" sl="206" sc="1" el="206" ec="2" bec="0" bev="0" fileid="308" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="47" ordinal="139" path="1" offset="1514" offsetend="63" sl="47" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="0" path="0" offset="82" offsetend="84" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="2" path="0" offset="93" offsetend="95" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="3" path="1" offset="93" offsetend="106" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="4" path="0" offset="104" offsetend="106" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="6" path="0" offset="115" offsetend="117" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="7" path="1" offset="115" offsetend="128" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="8" path="0" offset="126" offsetend="128" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="10" path="0" offset="137" offsetend="139" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="12" path="0" offset="148" offsetend="150" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="13" path="1" offset="148" offsetend="161" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="14" path="0" offset="159" offsetend="161" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="16" path="0" offset="173" offsetend="175" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="17" path="1" offset="173" offsetend="191" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="1" path="1" offset="82" offsetend="194" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="5" path="1" offset="104" offsetend="194" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="9" path="1" offset="126" offsetend="194" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="11" path="1" offset="137" offsetend="194" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="15" path="1" offset="159" offsetend="194" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="18" path="0" offset="199" offsetend="201" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="50" ordinal="19" path="1" offset="199" offsetend="213" sl="50" fileid="308" /> <BranchPoint vc="0" uspid="58" ordinal="20" path="0" offset="222" offsetend="224" sl="58" fileid="308" /> <BranchPoint vc="0" uspid="58" ordinal="21" path="1" offset="222" offsetend="235" sl="58" fileid="308" /> <BranchPoint vc="0" uspid="58" ordinal="22" path="0" offset="233" offsetend="235" sl="58" fileid="308" /> <BranchPoint vc="0" uspid="58" ordinal="24" path="0" offset="244" offsetend="246" sl="58" fileid="308" /> <BranchPoint vc="0" uspid="58" ordinal="25" path="1" offset="244" offsetend="257" sl="58" fileid="308" /> <BranchPoint vc="0" uspid="58" ordinal="26" path="0" offset="255" offsetend="257" sl="58" fileid="308" /> <BranchPoint vc="0" uspid="58" ordinal="28" path="0" offset="266" offsetend="268" sl="58" fileid="308" /> <BranchPoint vc="0" uspid="58" ordinal="29" path="1" offset="266" offsetend="281" sl="58" fileid="308" /> <BranchPoint vc="0" uspid="58" ordinal="23" path="1" offset="233" offsetend="284" sl="58" fileid="308" /> <BranchPoint vc="0" uspid="58" ordinal="27" path="1" offset="255" offsetend="284" sl="58" fileid="308" /> <BranchPoint vc="0" uspid="58" ordinal="30" path="0" offset="289" offsetend="291" sl="58" fileid="308" /> <BranchPoint vc="0" uspid="58" ordinal="31" path="1" offset="289" offsetend="303" sl="58" fileid="308" /> <BranchPoint vc="0" uspid="64" ordinal="32" path="0" offset="312" offsetend="314" sl="64" fileid="308" /> <BranchPoint vc="0" uspid="64" ordinal="33" path="1" offset="312" offsetend="325" sl="64" fileid="308" /> <BranchPoint vc="0" uspid="64" ordinal="34" path="0" offset="323" offsetend="325" sl="64" fileid="308" /> <BranchPoint vc="0" uspid="64" ordinal="36" path="0" offset="334" offsetend="336" sl="64" fileid="308" /> <BranchPoint vc="0" uspid="64" ordinal="37" path="1" offset="334" offsetend="347" sl="64" fileid="308" /> <BranchPoint vc="0" uspid="64" ordinal="38" path="0" offset="345" offsetend="347" sl="64" fileid="308" /> <BranchPoint vc="0" uspid="64" ordinal="40" path="0" offset="356" offsetend="358" sl="64" fileid="308" /> <BranchPoint vc="0" uspid="64" ordinal="41" path="1" offset="356" offsetend="369" sl="64" fileid="308" /> <BranchPoint vc="0" uspid="64" ordinal="42" path="0" offset="367" offsetend="369" sl="64" fileid="308" /> <BranchPoint vc="0" uspid="64" ordinal="44" path="0" offset="378" offsetend="380" sl="64" fileid="308" /> <BranchPoint vc="0" uspid="64" ordinal="45" path="1" offset="378" offsetend="396" sl="64" fileid="308" /> <BranchPoint vc="0" uspid="64" ordinal="35" path="1" offset="323" offsetend="399" sl="64" fileid="308" /> <BranchPoint vc="0" uspid="64" ordinal="39" path="1" offset="345" offsetend="399" sl="64" fileid="308" /> <BranchPoint vc="0" uspid="64" ordinal="43" path="1" offset="367" offsetend="399" sl="64" fileid="308" /> <BranchPoint vc="0" uspid="64" ordinal="46" path="0" offset="404" offsetend="406" sl="64" fileid="308" /> <BranchPoint vc="0" uspid="64" ordinal="47" path="1" offset="404" offsetend="418" sl="64" fileid="308" /> <BranchPoint vc="0" uspid="71" ordinal="48" path="0" offset="436" offsetend="438" sl="71" fileid="308" /> <BranchPoint vc="0" uspid="71" ordinal="49" path="1" offset="436" offsetend="451" sl="71" fileid="308" /> <BranchPoint vc="0" uspid="77" ordinal="50" path="0" offset="463" offsetend="465" sl="77" fileid="308" /> <BranchPoint vc="0" uspid="77" ordinal="51" path="1" offset="463" offsetend="479" sl="77" fileid="308" /> <BranchPoint vc="0" uspid="77" ordinal="52" path="0" offset="477" offsetend="479" sl="77" fileid="308" /> <BranchPoint vc="0" uspid="77" ordinal="54" path="0" offset="491" offsetend="493" sl="77" fileid="308" /> <BranchPoint vc="0" uspid="77" ordinal="56" path="0" offset="505" offsetend="507" sl="77" fileid="308" /> <BranchPoint vc="0" uspid="77" ordinal="58" path="0" offset="519" offsetend="521" sl="77" fileid="308" /> <BranchPoint vc="0" uspid="77" ordinal="60" path="0" offset="533" offsetend="535" sl="77" fileid="308" /> <BranchPoint vc="0" uspid="77" ordinal="62" path="0" offset="547" offsetend="549" sl="77" fileid="308" /> <BranchPoint vc="0" uspid="77" ordinal="63" path="1" offset="547" offsetend="565" sl="77" fileid="308" /> <BranchPoint vc="0" uspid="77" ordinal="53" path="1" offset="477" offsetend="568" sl="77" fileid="308" /> <BranchPoint vc="0" uspid="77" ordinal="55" path="1" offset="491" offsetend="568" sl="77" fileid="308" /> <BranchPoint vc="0" uspid="77" ordinal="57" path="1" offset="505" offsetend="568" sl="77" fileid="308" /> <BranchPoint vc="0" uspid="77" ordinal="59" path="1" offset="519" offsetend="568" sl="77" fileid="308" /> <BranchPoint vc="0" uspid="77" ordinal="61" path="1" offset="533" offsetend="568" sl="77" fileid="308" /> <BranchPoint vc="0" uspid="77" ordinal="64" path="0" offset="573" offsetend="575" sl="77" fileid="308" /> <BranchPoint vc="0" uspid="77" ordinal="65" path="1" offset="573" offsetend="587" sl="77" fileid="308" /> <BranchPoint vc="0" uspid="84" ordinal="66" path="0" offset="605" offsetend="607" sl="84" fileid="308" /> <BranchPoint vc="0" uspid="84" ordinal="67" path="1" offset="605" offsetend="619" sl="84" fileid="308" /> <BranchPoint vc="0" uspid="90" ordinal="68" path="0" offset="631" offsetend="633" sl="90" fileid="308" /> <BranchPoint vc="0" uspid="90" ordinal="69" path="1" offset="631" offsetend="649" sl="90" fileid="308" /> <BranchPoint vc="0" uspid="90" ordinal="70" path="0" offset="654" offsetend="656" sl="90" fileid="308" /> <BranchPoint vc="0" uspid="90" ordinal="71" path="1" offset="654" offsetend="668" sl="90" fileid="308" /> <BranchPoint vc="0" uspid="96" ordinal="72" path="0" offset="680" offsetend="682" sl="96" fileid="308" /> <BranchPoint vc="0" uspid="96" ordinal="73" path="1" offset="680" offsetend="698" sl="96" fileid="308" /> <BranchPoint vc="0" uspid="96" ordinal="74" path="0" offset="703" offsetend="705" sl="96" fileid="308" /> <BranchPoint vc="0" uspid="96" ordinal="75" path="1" offset="703" offsetend="717" sl="96" fileid="308" /> <BranchPoint vc="0" uspid="102" ordinal="76" path="0" offset="729" offsetend="731" sl="102" fileid="308" /> <BranchPoint vc="0" uspid="102" ordinal="77" path="1" offset="729" offsetend="745" sl="102" fileid="308" /> <BranchPoint vc="0" uspid="102" ordinal="78" path="0" offset="743" offsetend="745" sl="102" fileid="308" /> <BranchPoint vc="0" uspid="102" ordinal="80" path="0" offset="757" offsetend="759" sl="102" fileid="308" /> <BranchPoint vc="0" uspid="102" ordinal="81" path="1" offset="757" offsetend="775" sl="102" fileid="308" /> <BranchPoint vc="0" uspid="102" ordinal="79" path="1" offset="743" offsetend="778" sl="102" fileid="308" /> <BranchPoint vc="0" uspid="102" ordinal="82" path="0" offset="783" offsetend="785" sl="102" fileid="308" /> <BranchPoint vc="0" uspid="102" ordinal="83" path="1" offset="783" offsetend="797" sl="102" fileid="308" /> <BranchPoint vc="0" uspid="107" ordinal="84" path="0" offset="809" offsetend="811" sl="107" fileid="308" /> <BranchPoint vc="0" uspid="107" ordinal="85" path="1" offset="809" offsetend="825" sl="107" fileid="308" /> <BranchPoint vc="0" uspid="107" ordinal="86" path="0" offset="823" offsetend="825" sl="107" fileid="308" /> <BranchPoint vc="0" uspid="107" ordinal="87" path="1" offset="823" offsetend="841" sl="107" fileid="308" /> <BranchPoint vc="0" uspid="107" ordinal="88" path="0" offset="846" offsetend="848" sl="107" fileid="308" /> <BranchPoint vc="0" uspid="107" ordinal="89" path="1" offset="846" offsetend="861" sl="107" fileid="308" /> <BranchPoint vc="0" uspid="113" ordinal="90" path="0" offset="873" offsetend="875" sl="113" fileid="308" /> <BranchPoint vc="0" uspid="113" ordinal="91" path="1" offset="873" offsetend="889" sl="113" fileid="308" /> <BranchPoint vc="0" uspid="113" ordinal="92" path="0" offset="887" offsetend="889" sl="113" fileid="308" /> <BranchPoint vc="0" uspid="113" ordinal="94" path="0" offset="901" offsetend="903" sl="113" fileid="308" /> <BranchPoint vc="0" uspid="113" ordinal="95" path="1" offset="901" offsetend="919" sl="113" fileid="308" /> <BranchPoint vc="0" uspid="113" ordinal="93" path="1" offset="887" offsetend="922" sl="113" fileid="308" /> <BranchPoint vc="0" uspid="113" ordinal="96" path="0" offset="927" offsetend="929" sl="113" fileid="308" /> <BranchPoint vc="0" uspid="113" ordinal="97" path="1" offset="927" offsetend="942" sl="113" fileid="308" /> <BranchPoint vc="0" uspid="119" ordinal="98" path="0" offset="957" offsetend="959" sl="119" fileid="308" /> <BranchPoint vc="0" uspid="119" ordinal="99" path="1" offset="957" offsetend="972" sl="119" fileid="308" /> <BranchPoint vc="0" uspid="125" ordinal="100" path="0" offset="986" offsetend="988" sl="125" fileid="308" /> <BranchPoint vc="0" uspid="125" ordinal="101" path="1" offset="986" offsetend="1001" sl="125" fileid="308" /> <BranchPoint vc="0" uspid="131" ordinal="102" path="0" offset="1009" offsetend="1011" sl="131" fileid="308" /> <BranchPoint vc="0" uspid="131" ordinal="103" path="1" offset="1009" offsetend="1024" sl="131" fileid="308" /> <BranchPoint vc="0" uspid="131" ordinal="104" path="0" offset="1029" offsetend="1031" sl="131" fileid="308" /> <BranchPoint vc="0" uspid="131" ordinal="105" path="1" offset="1029" offsetend="1044" sl="131" fileid="308" /> <BranchPoint vc="0" uspid="137" ordinal="106" path="0" offset="1058" offsetend="1060" sl="137" fileid="308" /> <BranchPoint vc="0" uspid="137" ordinal="107" path="1" offset="1058" offsetend="1073" sl="137" fileid="308" /> <BranchPoint vc="0" uspid="143" ordinal="108" path="0" offset="1087" offsetend="1089" sl="143" fileid="308" /> <BranchPoint vc="0" uspid="143" ordinal="109" path="1" offset="1087" offsetend="1102" sl="143" fileid="308" /> <BranchPoint vc="0" uspid="149" ordinal="110" path="0" offset="1116" offsetend="1118" sl="149" fileid="308" /> <BranchPoint vc="0" uspid="149" ordinal="111" path="1" offset="1116" offsetend="1131" sl="149" fileid="308" /> <BranchPoint vc="0" uspid="155" ordinal="112" path="0" offset="1140" offsetend="1142" sl="155" fileid="308" /> <BranchPoint vc="0" uspid="155" ordinal="113" path="1" offset="1140" offsetend="1153" sl="155" fileid="308" /> <BranchPoint vc="0" uspid="155" ordinal="114" path="0" offset="1151" offsetend="1153" sl="155" fileid="308" /> <BranchPoint vc="0" uspid="155" ordinal="116" path="0" offset="1162" offsetend="1164" sl="155" fileid="308" /> <BranchPoint vc="0" uspid="155" ordinal="117" path="1" offset="1162" offsetend="1177" sl="155" fileid="308" /> <BranchPoint vc="0" uspid="155" ordinal="115" path="1" offset="1151" offsetend="1180" sl="155" fileid="308" /> <BranchPoint vc="0" uspid="155" ordinal="118" path="0" offset="1185" offsetend="1187" sl="155" fileid="308" /> <BranchPoint vc="0" uspid="155" ordinal="119" path="1" offset="1185" offsetend="1200" sl="155" fileid="308" /> <BranchPoint vc="0" uspid="161" ordinal="120" path="0" offset="1209" offsetend="1211" sl="161" fileid="308" /> <BranchPoint vc="0" uspid="161" ordinal="121" path="1" offset="1209" offsetend="1224" sl="161" fileid="308" /> <BranchPoint vc="0" uspid="161" ordinal="122" path="0" offset="1229" offsetend="1231" sl="161" fileid="308" /> <BranchPoint vc="0" uspid="161" ordinal="123" path="1" offset="1229" offsetend="1241" sl="161" fileid="308" /> <BranchPoint vc="0" uspid="167" ordinal="124" path="0" offset="1259" offsetend="1261" sl="167" fileid="308" /> <BranchPoint vc="0" uspid="167" ordinal="125" path="1" offset="1259" offsetend="1271" sl="167" fileid="308" /> <BranchPoint vc="0" uspid="173" ordinal="126" path="0" offset="1289" offsetend="1291" sl="173" fileid="308" /> <BranchPoint vc="0" uspid="173" ordinal="127" path="1" offset="1289" offsetend="1301" sl="173" fileid="308" /> <BranchPoint vc="0" uspid="179" ordinal="128" path="0" offset="1319" offsetend="1321" sl="179" fileid="308" /> <BranchPoint vc="0" uspid="179" ordinal="129" path="1" offset="1319" offsetend="1331" sl="179" fileid="308" /> <BranchPoint vc="0" uspid="185" ordinal="130" path="0" offset="1349" offsetend="1351" sl="185" fileid="308" /> <BranchPoint vc="0" uspid="185" ordinal="131" path="1" offset="1349" offsetend="1359" sl="185" fileid="308" /> <BranchPoint vc="0" uspid="194" ordinal="132" path="0" offset="1384" offsetend="1386" sl="194" fileid="308" /> <BranchPoint vc="0" uspid="194" ordinal="134" path="0" offset="1405" offsetend="1407" sl="194" fileid="308" /> <BranchPoint vc="0" uspid="194" ordinal="133" path="1" offset="1384" offsetend="1431" sl="194" fileid="308" /> <BranchPoint vc="0" uspid="194" ordinal="135" path="1" offset="1405" offsetend="1431" sl="194" fileid="308" /> <BranchPoint vc="0" uspid="194" ordinal="136" path="0" offset="1436" offsetend="1438" sl="194" fileid="308" /> <BranchPoint vc="0" uspid="194" ordinal="137" path="1" offset="1436" offsetend="1475" sl="194" fileid="308" /> <BranchPoint vc="0" uspid="47" ordinal="138" path="0" offset="1514" offsetend="1519" sl="47" fileid="308" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="42" ec="1" el="206" bec="0" bev="0" fileid="308" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.MapTypeMapParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.MapTypeMapDto,System.Int16>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.MapDto,System.Int16>)</Name> <FileRef uid="308" /> <SequencePoints> <SequencePoint vc="0" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="36" ordinal="1" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="37" ordinal="2" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="38" ordinal="3" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="308" /> <SequencePoint vc="0" uspid="39" ordinal="4" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="308" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="35" ec="1" el="39" bec="0" bev="0" fileid="308" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Parser.Parsers.MapTypeParser</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.MapTypeParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.MapTypeDto,System.Int16>,Serilog.ILogger)</Name> <FileRef uid="309" /> <SequencePoints> <SequencePoint vc="0" uspid="37" ordinal="0" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="309" /> <SequencePoint vc="0" uspid="38" ordinal="1" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="309" /> <SequencePoint vc="0" uspid="39" ordinal="2" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="309" /> <SequencePoint vc="0" uspid="40" ordinal="3" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="309" /> <SequencePoint vc="0" uspid="41" ordinal="4" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="309" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="37" ec="1" el="41" bec="0" bev="0" fileid="309" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="298" visitedSequencePoints="0" numBranchPoints="197" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="79" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="15" /> <FullName>NosCore.Parser.Parsers.NpcMonsterParser</FullName> <Methods> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.NpcMonsterParser::ImportDamageMinimum(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="310" /> <SequencePoints> <SequencePoint vc="0" uspid="161" ordinal="0" sl="161" sc="1" el="161" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="162" ordinal="1" sl="162" sc="1" el="162" ec="2" bec="6" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="163" ordinal="2" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="164" ordinal="3" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="165" ordinal="4" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="166" ordinal="5" sl="166" sc="1" el="166" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="167" ordinal="6" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="168" ordinal="7" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="310" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="162" ordinal="0" path="0" offset="18" offsetend="20" sl="162" fileid="310" /> <BranchPoint vc="0" uspid="162" ordinal="1" path="1" offset="18" offsetend="21" sl="162" fileid="310" /> <BranchPoint vc="0" uspid="162" ordinal="2" path="0" offset="32" offsetend="34" sl="162" fileid="310" /> <BranchPoint vc="0" uspid="162" ordinal="3" path="1" offset="32" offsetend="52" sl="162" fileid="310" /> <BranchPoint vc="0" uspid="162" ordinal="5" path="1" offset="45" offsetend="139" sl="162" fileid="310" /> <BranchPoint vc="0" uspid="162" ordinal="4" path="0" offset="45" offsetend="202" sl="162" fileid="310" /> <BranchPoint vc="0" uspid="166" ordinal="6" path="0" offset="207" offsetend="209" sl="166" fileid="310" /> <BranchPoint vc="0" uspid="166" ordinal="7" path="1" offset="207" offsetend="210" sl="166" fileid="310" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="161" ec="1" el="168" bec="0" bev="0" fileid="310" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.NpcMonsterParser::ImportDamageMaximum(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="310" /> <SequencePoints> <SequencePoint vc="0" uspid="171" ordinal="0" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="172" ordinal="1" sl="172" sc="1" el="172" ec="2" bec="6" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="173" ordinal="2" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="174" ordinal="3" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="175" ordinal="4" sl="175" sc="1" el="175" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="176" ordinal="5" sl="176" sc="1" el="176" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="177" ordinal="6" sl="177" sc="1" el="177" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="179" ordinal="7" sl="179" sc="1" el="179" ec="2" bec="0" bev="0" fileid="310" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="172" ordinal="0" path="0" offset="18" offsetend="20" sl="172" fileid="310" /> <BranchPoint vc="0" uspid="172" ordinal="1" path="1" offset="18" offsetend="21" sl="172" fileid="310" /> <BranchPoint vc="0" uspid="172" ordinal="2" path="0" offset="32" offsetend="34" sl="172" fileid="310" /> <BranchPoint vc="0" uspid="172" ordinal="3" path="1" offset="32" offsetend="52" sl="172" fileid="310" /> <BranchPoint vc="0" uspid="172" ordinal="5" path="1" offset="45" offsetend="139" sl="172" fileid="310" /> <BranchPoint vc="0" uspid="172" ordinal="4" path="0" offset="45" offsetend="202" sl="172" fileid="310" /> <BranchPoint vc="0" uspid="176" ordinal="6" path="0" offset="207" offsetend="209" sl="176" fileid="310" /> <BranchPoint vc="0" uspid="176" ordinal="7" path="1" offset="207" offsetend="210" sl="176" fileid="310" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="171" ec="1" el="179" bec="0" bev="0" fileid="310" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.NpcMonsterParser::ImportConcentrate(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="310" /> <SequencePoints> <SequencePoint vc="0" uspid="182" ordinal="0" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="183" ordinal="1" sl="183" sc="1" el="183" ec="2" bec="6" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="184" ordinal="2" sl="184" sc="1" el="184" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="185" ordinal="3" sl="185" sc="1" el="185" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="186" ordinal="4" sl="186" sc="1" el="186" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="187" ordinal="5" sl="187" sc="1" el="187" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="188" ordinal="6" sl="188" sc="1" el="188" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="189" ordinal="7" sl="189" sc="1" el="189" ec="2" bec="0" bev="0" fileid="310" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="183" ordinal="0" path="0" offset="18" offsetend="20" sl="183" fileid="310" /> <BranchPoint vc="0" uspid="183" ordinal="1" path="1" offset="18" offsetend="21" sl="183" fileid="310" /> <BranchPoint vc="0" uspid="183" ordinal="2" path="0" offset="32" offsetend="34" sl="183" fileid="310" /> <BranchPoint vc="0" uspid="183" ordinal="3" path="1" offset="32" offsetend="49" sl="183" fileid="310" /> <BranchPoint vc="0" uspid="183" ordinal="5" path="1" offset="45" offsetend="105" sl="183" fileid="310" /> <BranchPoint vc="0" uspid="183" ordinal="4" path="0" offset="45" offsetend="136" sl="183" fileid="310" /> <BranchPoint vc="0" uspid="187" ordinal="6" path="0" offset="141" offsetend="143" sl="187" fileid="310" /> <BranchPoint vc="0" uspid="187" ordinal="7" path="1" offset="141" offsetend="144" sl="187" fileid="310" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="182" ec="1" el="189" bec="0" bev="0" fileid="310" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Byte NosCore.Parser.Parsers.NpcMonsterParser::ImportCriticalChance(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="310" /> <SequencePoints> <SequencePoint vc="0" uspid="192" ordinal="0" sl="192" sc="1" el="192" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="193" ordinal="1" sl="193" sc="1" el="193" ec="2" bec="4" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="194" ordinal="2" sl="194" sc="1" el="194" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="195" ordinal="3" sl="195" sc="1" el="195" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="196" ordinal="4" sl="196" sc="1" el="196" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="197" ordinal="5" sl="197" sc="1" el="197" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="198" ordinal="6" sl="198" sc="1" el="198" ec="2" bec="0" bev="0" fileid="310" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="193" ordinal="0" path="0" offset="18" offsetend="20" sl="193" fileid="310" /> <BranchPoint vc="0" uspid="193" ordinal="1" path="1" offset="18" offsetend="21" sl="193" fileid="310" /> <BranchPoint vc="0" uspid="193" ordinal="3" path="1" offset="32" offsetend="36" sl="193" fileid="310" /> <BranchPoint vc="0" uspid="193" ordinal="2" path="0" offset="32" offsetend="66" sl="193" fileid="310" /> <BranchPoint vc="0" uspid="196" ordinal="4" path="0" offset="71" offsetend="73" sl="196" fileid="310" /> <BranchPoint vc="0" uspid="196" ordinal="5" path="1" offset="71" offsetend="74" sl="196" fileid="310" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="192" ec="1" el="198" bec="0" bev="0" fileid="310" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int16 NosCore.Parser.Parsers.NpcMonsterParser::ImportCriticalRate(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="310" /> <SequencePoints> <SequencePoint vc="0" uspid="201" ordinal="0" sl="201" sc="1" el="201" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="202" ordinal="1" sl="202" sc="1" el="202" ec="2" bec="4" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="203" ordinal="2" sl="203" sc="1" el="203" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="204" ordinal="3" sl="204" sc="1" el="204" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="205" ordinal="4" sl="205" sc="1" el="205" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="206" ordinal="5" sl="206" sc="1" el="206" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="207" ordinal="6" sl="207" sc="1" el="207" ec="2" bec="0" bev="0" fileid="310" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="202" ordinal="0" path="0" offset="18" offsetend="20" sl="202" fileid="310" /> <BranchPoint vc="0" uspid="202" ordinal="1" path="1" offset="18" offsetend="21" sl="202" fileid="310" /> <BranchPoint vc="0" uspid="202" ordinal="3" path="1" offset="32" offsetend="36" sl="202" fileid="310" /> <BranchPoint vc="0" uspid="202" ordinal="2" path="0" offset="32" offsetend="67" sl="202" fileid="310" /> <BranchPoint vc="0" uspid="205" ordinal="4" path="0" offset="72" offsetend="74" sl="205" fileid="310" /> <BranchPoint vc="0" uspid="205" ordinal="5" path="1" offset="72" offsetend="75" sl="205" fileid="310" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="201" ec="1" el="207" bec="0" bev="0" fileid="310" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="21" visitedSequencePoints="0" numBranchPoints="10" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Collections.Generic.List`1<NosCore.Data.StaticEntities.NpcMonsterSkillDto> NosCore.Parser.Parsers.NpcMonsterParser::ImportNpcMonsterSkill(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="310" /> <SequencePoints> <SequencePoint vc="0" uspid="210" ordinal="0" sl="210" sc="1" el="210" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="211" ordinal="1" sl="211" sc="1" el="211" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="212" ordinal="2" sl="212" sc="1" el="212" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="213" ordinal="3" sl="213" sc="1" el="213" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="214" ordinal="4" sl="214" sc="1" el="214" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="215" ordinal="5" sl="215" sc="1" el="215" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="216" ordinal="6" sl="216" sc="1" el="216" ec="2" bec="4" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="217" ordinal="7" sl="217" sc="1" el="217" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="218" ordinal="8" sl="218" sc="1" el="218" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="221" ordinal="9" sl="221" sc="1" el="221" ec="2" bec="4" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="222" ordinal="10" sl="222" sc="1" el="222" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="223" ordinal="11" sl="223" sc="1" el="223" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="226" ordinal="12" sl="226" sc="1" el="226" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="227" ordinal="13" sl="227" sc="1" el="227" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="228" ordinal="14" sl="228" sc="1" el="228" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="229" ordinal="15" sl="229" sc="1" el="229" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="230" ordinal="16" sl="230" sc="1" el="230" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="231" ordinal="17" sl="231" sc="1" el="231" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="232" ordinal="18" sl="232" sc="1" el="232" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="234" ordinal="19" sl="234" sc="1" el="234" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="235" ordinal="20" sl="235" sc="1" el="235" ec="2" bec="0" bev="0" fileid="310" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="213" ordinal="9" path="1" offset="194" offsetend="35" sl="213" fileid="310" /> <BranchPoint vc="0" uspid="216" ordinal="0" path="0" offset="59" offsetend="61" sl="216" fileid="310" /> <BranchPoint vc="0" uspid="216" ordinal="1" path="1" offset="59" offsetend="67" sl="216" fileid="310" /> <BranchPoint vc="0" uspid="216" ordinal="2" path="0" offset="72" offsetend="74" sl="216" fileid="310" /> <BranchPoint vc="0" uspid="216" ordinal="3" path="1" offset="72" offsetend="77" sl="216" fileid="310" /> <BranchPoint vc="0" uspid="221" ordinal="4" path="0" offset="84" offsetend="86" sl="221" fileid="310" /> <BranchPoint vc="0" uspid="221" ordinal="5" path="1" offset="84" offsetend="90" sl="221" fileid="310" /> <BranchPoint vc="0" uspid="221" ordinal="6" path="0" offset="103" offsetend="105" sl="221" fileid="310" /> <BranchPoint vc="0" uspid="221" ordinal="7" path="1" offset="103" offsetend="108" sl="221" fileid="310" /> <BranchPoint vc="0" uspid="213" ordinal="8" path="0" offset="194" offsetend="199" sl="213" fileid="310" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="5" offset="5" sc="0" sl="210" ec="1" el="235" bec="0" bev="0" fileid="310" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="16" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="41" visitedSequencePoints="0" numBranchPoints="16" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="16" minCyclomaticComplexity="16" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Collections.Generic.List`1<NosCore.Data.StaticEntities.BCardDto> NosCore.Parser.Parsers.NpcMonsterParser::ImportBCards(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="310" /> <SequencePoints> <SequencePoint vc="0" uspid="239" ordinal="0" sl="239" sc="1" el="239" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="240" ordinal="1" sl="240" sc="1" el="240" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="241" ordinal="2" sl="241" sc="1" el="241" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="243" ordinal="3" sl="243" sc="1" el="243" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="244" ordinal="4" sl="244" sc="1" el="244" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="245" ordinal="5" sl="245" sc="1" el="245" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="246" ordinal="6" sl="246" sc="1" el="246" ec="2" bec="4" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="247" ordinal="7" sl="247" sc="1" el="247" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="248" ordinal="8" sl="248" sc="1" el="248" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="251" ordinal="9" sl="251" sc="1" el="251" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="252" ordinal="10" sl="252" sc="1" el="252" ec="2" bec="6" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="253" ordinal="11" sl="253" sc="1" el="253" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="254" ordinal="12" sl="254" sc="1" el="254" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="255" ordinal="13" sl="255" sc="1" el="255" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="256" ordinal="14" sl="256" sc="1" el="256" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="257" ordinal="15" sl="257" sc="1" el="257" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="258" ordinal="16" sl="258" sc="1" el="258" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="259" ordinal="17" sl="259" sc="1" el="259" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="260" ordinal="18" sl="260" sc="1" el="260" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="261" ordinal="19" sl="261" sc="1" el="261" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="262" ordinal="20" sl="262" sc="1" el="262" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="263" ordinal="21" sl="263" sc="1" el="263" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="264" ordinal="22" sl="264" sc="1" el="264" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="266" ordinal="23" sl="266" sc="1" el="266" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="267" ordinal="24" sl="267" sc="1" el="267" ec="2" bec="4" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="268" ordinal="25" sl="268" sc="1" el="268" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="269" ordinal="26" sl="269" sc="1" el="269" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="270" ordinal="27" sl="270" sc="1" el="270" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="271" ordinal="28" sl="271" sc="1" el="271" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="272" ordinal="29" sl="272" sc="1" el="272" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="273" ordinal="30" sl="273" sc="1" el="273" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="274" ordinal="31" sl="274" sc="1" el="274" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="275" ordinal="32" sl="275" sc="1" el="275" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="276" ordinal="33" sl="276" sc="1" el="276" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="277" ordinal="34" sl="277" sc="1" el="277" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="278" ordinal="35" sl="278" sc="1" el="278" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="279" ordinal="36" sl="279" sc="1" el="279" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="280" ordinal="37" sl="280" sc="1" el="280" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="281" ordinal="38" sl="281" sc="1" el="281" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="283" ordinal="39" sl="283" sc="1" el="283" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="284" ordinal="40" sl="284" sc="1" el="284" ec="2" bec="0" bev="0" fileid="310" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="243" ordinal="15" path="1" offset="567" offsetend="35" sl="243" fileid="310" /> <BranchPoint vc="0" uspid="246" ordinal="0" path="0" offset="63" offsetend="65" sl="246" fileid="310" /> <BranchPoint vc="0" uspid="246" ordinal="1" path="1" offset="63" offsetend="75" sl="246" fileid="310" /> <BranchPoint vc="0" uspid="246" ordinal="2" path="0" offset="80" offsetend="82" sl="246" fileid="310" /> <BranchPoint vc="0" uspid="246" ordinal="3" path="1" offset="80" offsetend="88" sl="246" fileid="310" /> <BranchPoint vc="0" uspid="252" ordinal="4" path="0" offset="173" offsetend="175" sl="252" fileid="310" /> <BranchPoint vc="0" uspid="252" ordinal="5" path="1" offset="173" offsetend="178" sl="252" fileid="310" /> <BranchPoint vc="0" uspid="252" ordinal="6" path="0" offset="207" offsetend="209" sl="252" fileid="310" /> <BranchPoint vc="0" uspid="252" ordinal="7" path="1" offset="207" offsetend="214" sl="252" fileid="310" /> <BranchPoint vc="0" uspid="252" ordinal="8" path="0" offset="231" offsetend="233" sl="252" fileid="310" /> <BranchPoint vc="0" uspid="252" ordinal="9" path="1" offset="231" offsetend="238" sl="252" fileid="310" /> <BranchPoint vc="0" uspid="267" ordinal="10" path="0" offset="415" offsetend="417" sl="267" fileid="310" /> <BranchPoint vc="0" uspid="267" ordinal="11" path="1" offset="415" offsetend="420" sl="267" fileid="310" /> <BranchPoint vc="0" uspid="267" ordinal="12" path="0" offset="433" offsetend="435" sl="267" fileid="310" /> <BranchPoint vc="0" uspid="267" ordinal="13" path="1" offset="433" offsetend="440" sl="267" fileid="310" /> <BranchPoint vc="0" uspid="243" ordinal="14" path="0" offset="567" offsetend="572" sl="243" fileid="310" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="6" offset="6" sc="0" sl="239" ec="1" el="284" bec="0" bev="0" fileid="310" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="22" visitedSequencePoints="0" numBranchPoints="10" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Collections.Generic.List`1<NosCore.Data.StaticEntities.DropDto> NosCore.Parser.Parsers.NpcMonsterParser::ImportDrops(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="310" /> <SequencePoints> <SequencePoint vc="0" uspid="287" ordinal="0" sl="287" sc="1" el="287" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="288" ordinal="1" sl="288" sc="1" el="288" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="289" ordinal="2" sl="289" sc="1" el="289" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="291" ordinal="3" sl="291" sc="1" el="291" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="292" ordinal="4" sl="292" sc="1" el="292" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="293" ordinal="5" sl="293" sc="1" el="293" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="294" ordinal="6" sl="294" sc="1" el="294" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="295" ordinal="7" sl="295" sc="1" el="295" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="296" ordinal="8" sl="296" sc="1" el="296" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="299" ordinal="9" sl="299" sc="1" el="299" ec="2" bec="6" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="300" ordinal="10" sl="300" sc="1" el="300" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="301" ordinal="11" sl="301" sc="1" el="301" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="304" ordinal="12" sl="304" sc="1" el="304" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="305" ordinal="13" sl="305" sc="1" el="305" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="306" ordinal="14" sl="306" sc="1" el="306" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="307" ordinal="15" sl="307" sc="1" el="307" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="308" ordinal="16" sl="308" sc="1" el="308" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="309" ordinal="17" sl="309" sc="1" el="309" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="310" ordinal="18" sl="310" sc="1" el="310" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="311" ordinal="19" sl="311" sc="1" el="311" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="313" ordinal="20" sl="313" sc="1" el="313" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="314" ordinal="21" sl="314" sc="1" el="314" ec="2" bec="0" bev="0" fileid="310" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="291" ordinal="9" path="1" offset="279" offsetend="35" sl="291" fileid="310" /> <BranchPoint vc="0" uspid="294" ordinal="0" path="0" offset="81" offsetend="83" sl="294" fileid="310" /> <BranchPoint vc="0" uspid="294" ordinal="1" path="1" offset="81" offsetend="89" sl="294" fileid="310" /> <BranchPoint vc="0" uspid="299" ordinal="2" path="0" offset="96" offsetend="98" sl="299" fileid="310" /> <BranchPoint vc="0" uspid="299" ordinal="3" path="1" offset="96" offsetend="102" sl="299" fileid="310" /> <BranchPoint vc="0" uspid="299" ordinal="4" path="0" offset="108" offsetend="110" sl="299" fileid="310" /> <BranchPoint vc="0" uspid="299" ordinal="5" path="1" offset="108" offsetend="144" sl="299" fileid="310" /> <BranchPoint vc="0" uspid="299" ordinal="6" path="0" offset="149" offsetend="151" sl="299" fileid="310" /> <BranchPoint vc="0" uspid="299" ordinal="7" path="1" offset="149" offsetend="154" sl="299" fileid="310" /> <BranchPoint vc="0" uspid="291" ordinal="8" path="0" offset="279" offsetend="284" sl="291" fileid="310" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="7" offset="7" sc="0" sl="287" ec="1" el="314" bec="0" bev="0" fileid="310" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="6" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="6" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="6" minCyclomaticComplexity="6" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>NosCore.Data.Enumerations.Map.MonsterType NosCore.Parser.Parsers.NpcMonsterParser::ImportMonsterType(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="310" /> <SequencePoints> <SequencePoint vc="0" uspid="317" ordinal="0" sl="317" sc="1" el="317" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="318" ordinal="1" sl="318" sc="1" el="318" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="319" ordinal="2" sl="319" sc="1" el="319" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="320" ordinal="3" sl="320" sc="1" el="320" ec="2" bec="4" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="321" ordinal="4" sl="321" sc="1" el="321" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="322" ordinal="5" sl="322" sc="1" el="322" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="325" ordinal="6" sl="325" sc="1" el="325" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="326" ordinal="7" sl="326" sc="1" el="326" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="327" ordinal="8" sl="327" sc="1" el="327" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="330" ordinal="9" sl="330" sc="1" el="330" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="331" ordinal="10" sl="331" sc="1" el="331" ec="2" bec="0" bev="0" fileid="310" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="320" ordinal="0" path="0" offset="36" offsetend="38" sl="320" fileid="310" /> <BranchPoint vc="0" uspid="320" ordinal="1" path="1" offset="36" offsetend="51" sl="320" fileid="310" /> <BranchPoint vc="0" uspid="320" ordinal="2" path="0" offset="54" offsetend="56" sl="320" fileid="310" /> <BranchPoint vc="0" uspid="320" ordinal="3" path="1" offset="54" offsetend="61" sl="320" fileid="310" /> <BranchPoint vc="0" uspid="325" ordinal="4" path="0" offset="74" offsetend="76" sl="325" fileid="310" /> <BranchPoint vc="0" uspid="325" ordinal="5" path="1" offset="74" offsetend="81" sl="325" fileid="310" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="8" offset="8" sc="0" sl="317" ec="1" el="331" bec="0" bev="0" fileid="310" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="36" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="90" visitedSequencePoints="0" numBranchPoints="36" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="36" minCyclomaticComplexity="36" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.NpcMonsterParser::InitStats()</Name> <FileRef uid="310" /> <SequencePoints> <SequencePoint vc="0" uspid="334" ordinal="0" sl="334" sc="1" el="334" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="336" ordinal="1" sl="336" sc="1" el="336" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="337" ordinal="2" sl="337" sc="1" el="337" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="338" ordinal="3" sl="338" sc="1" el="338" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="339" ordinal="4" sl="339" sc="1" el="339" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="340" ordinal="5" sl="340" sc="1" el="340" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="341" ordinal="6" sl="341" sc="1" el="341" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="342" ordinal="7" sl="342" sc="1" el="342" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="344" ordinal="8" sl="344" sc="1" el="344" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="345" ordinal="9" sl="345" sc="1" el="345" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="346" ordinal="10" sl="346" sc="1" el="346" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="347" ordinal="11" sl="347" sc="1" el="347" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="348" ordinal="12" sl="348" sc="1" el="348" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="350" ordinal="13" sl="350" sc="1" el="350" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="351" ordinal="14" sl="351" sc="1" el="351" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="352" ordinal="15" sl="352" sc="1" el="352" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="355" ordinal="16" sl="355" sc="1" el="355" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="356" ordinal="17" sl="356" sc="1" el="356" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="357" ordinal="18" sl="357" sc="1" el="357" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="358" ordinal="19" sl="358" sc="1" el="358" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="359" ordinal="20" sl="359" sc="1" el="359" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="362" ordinal="21" sl="362" sc="1" el="362" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="363" ordinal="22" sl="363" sc="1" el="363" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="364" ordinal="23" sl="364" sc="1" el="364" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="366" ordinal="24" sl="366" sc="1" el="366" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="367" ordinal="25" sl="367" sc="1" el="367" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="368" ordinal="26" sl="368" sc="1" el="368" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="369" ordinal="27" sl="369" sc="1" el="369" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="371" ordinal="28" sl="371" sc="1" el="371" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="372" ordinal="29" sl="372" sc="1" el="372" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="373" ordinal="30" sl="373" sc="1" el="373" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="374" ordinal="31" sl="374" sc="1" el="374" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="375" ordinal="32" sl="375" sc="1" el="375" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="376" ordinal="33" sl="376" sc="1" el="376" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="379" ordinal="34" sl="379" sc="1" el="379" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="380" ordinal="35" sl="380" sc="1" el="380" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="381" ordinal="36" sl="381" sc="1" el="381" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="382" ordinal="37" sl="382" sc="1" el="382" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="384" ordinal="38" sl="384" sc="1" el="384" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="385" ordinal="39" sl="385" sc="1" el="385" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="386" ordinal="40" sl="386" sc="1" el="386" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="387" ordinal="41" sl="387" sc="1" el="387" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="388" ordinal="42" sl="388" sc="1" el="388" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="389" ordinal="43" sl="389" sc="1" el="389" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="391" ordinal="44" sl="391" sc="1" el="391" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="392" ordinal="45" sl="392" sc="1" el="392" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="393" ordinal="46" sl="393" sc="1" el="393" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="394" ordinal="47" sl="394" sc="1" el="394" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="395" ordinal="48" sl="395" sc="1" el="395" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="396" ordinal="49" sl="396" sc="1" el="396" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="398" ordinal="50" sl="398" sc="1" el="398" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="399" ordinal="51" sl="399" sc="1" el="399" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="400" ordinal="52" sl="400" sc="1" el="400" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="401" ordinal="53" sl="401" sc="1" el="401" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="402" ordinal="54" sl="402" sc="1" el="402" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="403" ordinal="55" sl="403" sc="1" el="403" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="405" ordinal="56" sl="405" sc="1" el="405" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="406" ordinal="57" sl="406" sc="1" el="406" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="407" ordinal="58" sl="407" sc="1" el="407" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="408" ordinal="59" sl="408" sc="1" el="408" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="409" ordinal="60" sl="409" sc="1" el="409" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="410" ordinal="61" sl="410" sc="1" el="410" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="411" ordinal="62" sl="411" sc="1" el="411" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="412" ordinal="63" sl="412" sc="1" el="412" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="414" ordinal="64" sl="414" sc="1" el="414" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="415" ordinal="65" sl="415" sc="1" el="415" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="418" ordinal="66" sl="418" sc="1" el="418" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="419" ordinal="67" sl="419" sc="1" el="419" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="420" ordinal="68" sl="420" sc="1" el="420" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="422" ordinal="69" sl="422" sc="1" el="422" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="423" ordinal="70" sl="423" sc="1" el="423" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="425" ordinal="71" sl="425" sc="1" el="425" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="426" ordinal="72" sl="426" sc="1" el="426" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="427" ordinal="73" sl="427" sc="1" el="427" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="428" ordinal="74" sl="428" sc="1" el="428" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="429" ordinal="75" sl="429" sc="1" el="429" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="430" ordinal="76" sl="430" sc="1" el="430" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="433" ordinal="77" sl="433" sc="1" el="433" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="434" ordinal="78" sl="434" sc="1" el="434" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="435" ordinal="79" sl="435" sc="1" el="435" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="436" ordinal="80" sl="436" sc="1" el="436" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="439" ordinal="81" sl="439" sc="1" el="439" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="440" ordinal="82" sl="440" sc="1" el="440" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="441" ordinal="83" sl="441" sc="1" el="441" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="442" ordinal="84" sl="442" sc="1" el="442" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="445" ordinal="85" sl="445" sc="1" el="445" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="446" ordinal="86" sl="446" sc="1" el="446" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="447" ordinal="87" sl="447" sc="1" el="447" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="448" ordinal="88" sl="448" sc="1" el="448" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="450" ordinal="89" sl="450" sc="1" el="450" ec="2" bec="0" bev="0" fileid="310" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="338" ordinal="7" path="1" offset="111" offsetend="15" sl="338" fileid="310" /> <BranchPoint vc="0" uspid="344" ordinal="0" path="0" offset="44" offsetend="46" sl="344" fileid="310" /> <BranchPoint vc="0" uspid="344" ordinal="1" path="1" offset="44" offsetend="57" sl="344" fileid="310" /> <BranchPoint vc="0" uspid="350" ordinal="2" path="0" offset="67" offsetend="69" sl="350" fileid="310" /> <BranchPoint vc="0" uspid="350" ordinal="3" path="1" offset="67" offsetend="72" sl="350" fileid="310" /> <BranchPoint vc="0" uspid="355" ordinal="4" path="0" offset="86" offsetend="88" sl="355" fileid="310" /> <BranchPoint vc="0" uspid="355" ordinal="5" path="1" offset="86" offsetend="94" sl="355" fileid="310" /> <BranchPoint vc="0" uspid="338" ordinal="6" path="0" offset="111" offsetend="113" sl="338" fileid="310" /> <BranchPoint vc="0" uspid="371" ordinal="23" path="1" offset="369" offsetend="161" sl="371" fileid="310" /> <BranchPoint vc="0" uspid="373" ordinal="8" path="0" offset="174" offsetend="176" sl="373" fileid="310" /> <BranchPoint vc="0" uspid="373" ordinal="9" path="1" offset="174" offsetend="214" sl="373" fileid="310" /> <BranchPoint vc="0" uspid="379" ordinal="10" path="0" offset="223" offsetend="225" sl="379" fileid="310" /> <BranchPoint vc="0" uspid="384" ordinal="12" path="0" offset="243" offsetend="245" sl="384" fileid="310" /> <BranchPoint vc="0" uspid="386" ordinal="14" path="0" offset="252" offsetend="254" sl="386" fileid="310" /> <BranchPoint vc="0" uspid="386" ordinal="15" path="1" offset="252" offsetend="261" sl="386" fileid="310" /> <BranchPoint vc="0" uspid="384" ordinal="13" path="1" offset="243" offsetend="272" sl="384" fileid="310" /> <BranchPoint vc="0" uspid="398" ordinal="16" path="0" offset="280" offsetend="282" sl="398" fileid="310" /> <BranchPoint vc="0" uspid="398" ordinal="17" path="1" offset="280" offsetend="289" sl="398" fileid="310" /> <BranchPoint vc="0" uspid="379" ordinal="11" path="1" offset="223" offsetend="292" sl="379" fileid="310" /> <BranchPoint vc="0" uspid="407" ordinal="18" path="0" offset="306" offsetend="308" sl="407" fileid="310" /> <BranchPoint vc="0" uspid="407" ordinal="19" path="1" offset="306" offsetend="315" sl="407" fileid="310" /> <BranchPoint vc="0" uspid="414" ordinal="20" path="0" offset="339" offsetend="341" sl="414" fileid="310" /> <BranchPoint vc="0" uspid="414" ordinal="21" path="1" offset="339" offsetend="344" sl="414" fileid="310" /> <BranchPoint vc="0" uspid="371" ordinal="22" path="0" offset="369" offsetend="374" sl="371" fileid="310" /> <BranchPoint vc="0" uspid="425" ordinal="31" path="1" offset="542" offsetend="416" sl="425" fileid="310" /> <BranchPoint vc="0" uspid="427" ordinal="24" path="0" offset="429" offsetend="431" sl="427" fileid="310" /> <BranchPoint vc="0" uspid="427" ordinal="25" path="1" offset="429" offsetend="468" sl="427" fileid="310" /> <BranchPoint vc="0" uspid="434" ordinal="26" path="0" offset="479" offsetend="481" sl="434" fileid="310" /> <BranchPoint vc="0" uspid="434" ordinal="27" path="1" offset="479" offsetend="484" sl="434" fileid="310" /> <BranchPoint vc="0" uspid="435" ordinal="28" path="0" offset="511" offsetend="513" sl="435" fileid="310" /> <BranchPoint vc="0" uspid="435" ordinal="29" path="1" offset="511" offsetend="516" sl="435" fileid="310" /> <BranchPoint vc="0" uspid="425" ordinal="30" path="0" offset="542" offsetend="544" sl="425" fileid="310" /> <BranchPoint vc="0" uspid="439" ordinal="33" path="1" offset="584" offsetend="549" sl="439" fileid="310" /> <BranchPoint vc="0" uspid="439" ordinal="32" path="0" offset="584" offsetend="586" sl="439" fileid="310" /> <BranchPoint vc="0" uspid="445" ordinal="35" path="1" offset="623" offsetend="591" sl="445" fileid="310" /> <BranchPoint vc="0" uspid="445" ordinal="34" path="0" offset="623" offsetend="625" sl="445" fileid="310" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="9" offset="9" sc="0" sl="334" ec="1" el="450" bec="0" bev="0" fileid="310" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="79" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="47" visitedSequencePoints="0" numBranchPoints="79" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="79" minCyclomaticComplexity="79" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int32 NosCore.Parser.Parsers.NpcMonsterParser::ImportHeroXp(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="310" /> <SequencePoints> <SequencePoint vc="0" uspid="453" ordinal="0" sl="453" sc="1" el="453" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="454" ordinal="1" sl="454" sc="1" el="454" ec="2" bec="77" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="455" ordinal="2" sl="455" sc="1" el="455" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="456" ordinal="3" sl="456" sc="1" el="456" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="457" ordinal="4" sl="457" sc="1" el="457" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="458" ordinal="5" sl="458" sc="1" el="458" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="459" ordinal="6" sl="459" sc="1" el="459" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="460" ordinal="7" sl="460" sc="1" el="460" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="461" ordinal="8" sl="461" sc="1" el="461" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="462" ordinal="9" sl="462" sc="1" el="462" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="463" ordinal="10" sl="463" sc="1" el="463" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="464" ordinal="11" sl="464" sc="1" el="464" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="465" ordinal="12" sl="465" sc="1" el="465" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="466" ordinal="13" sl="466" sc="1" el="466" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="467" ordinal="14" sl="467" sc="1" el="467" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="468" ordinal="15" sl="468" sc="1" el="468" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="469" ordinal="16" sl="469" sc="1" el="469" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="470" ordinal="17" sl="470" sc="1" el="470" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="471" ordinal="18" sl="471" sc="1" el="471" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="472" ordinal="19" sl="472" sc="1" el="472" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="473" ordinal="20" sl="473" sc="1" el="473" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="474" ordinal="21" sl="474" sc="1" el="474" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="475" ordinal="22" sl="475" sc="1" el="475" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="476" ordinal="23" sl="476" sc="1" el="476" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="477" ordinal="24" sl="477" sc="1" el="477" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="478" ordinal="25" sl="478" sc="1" el="478" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="479" ordinal="26" sl="479" sc="1" el="479" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="480" ordinal="27" sl="480" sc="1" el="480" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="481" ordinal="28" sl="481" sc="1" el="481" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="482" ordinal="29" sl="482" sc="1" el="482" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="483" ordinal="30" sl="483" sc="1" el="483" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="484" ordinal="31" sl="484" sc="1" el="484" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="485" ordinal="32" sl="485" sc="1" el="485" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="486" ordinal="33" sl="486" sc="1" el="486" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="487" ordinal="34" sl="487" sc="1" el="487" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="488" ordinal="35" sl="488" sc="1" el="488" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="489" ordinal="36" sl="489" sc="1" el="489" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="490" ordinal="37" sl="490" sc="1" el="490" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="491" ordinal="38" sl="491" sc="1" el="491" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="492" ordinal="39" sl="492" sc="1" el="492" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="493" ordinal="40" sl="493" sc="1" el="493" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="494" ordinal="41" sl="494" sc="1" el="494" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="495" ordinal="42" sl="495" sc="1" el="495" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="496" ordinal="43" sl="496" sc="1" el="496" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="497" ordinal="44" sl="497" sc="1" el="497" ec="2" bec="2" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="498" ordinal="45" sl="498" sc="1" el="498" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="499" ordinal="46" sl="499" sc="1" el="499" ec="2" bec="0" bev="0" fileid="310" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="454" ordinal="0" path="0" offset="23" offsetend="25" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="1" path="1" offset="23" offsetend="26" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="13" path="11" offset="33" offsetend="339" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="4" path="2" offset="33" offsetend="350" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="15" path="13" offset="33" offsetend="361" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="5" path="3" offset="33" offsetend="372" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="6" path="4" offset="33" offsetend="383" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="8" path="6" offset="33" offsetend="394" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="9" path="7" offset="33" offsetend="405" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="10" path="8" offset="33" offsetend="416" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="11" path="9" offset="33" offsetend="427" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="3" path="1" offset="33" offsetend="438" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="12" path="10" offset="33" offsetend="449" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="14" path="12" offset="33" offsetend="460" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="16" path="14" offset="33" offsetend="471" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="18" path="16" offset="33" offsetend="482" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="19" path="17" offset="33" offsetend="493" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="20" path="18" offset="33" offsetend="504" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="21" path="19" offset="33" offsetend="515" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="22" path="20" offset="33" offsetend="526" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="23" path="21" offset="33" offsetend="537" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="24" path="22" offset="33" offsetend="548" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="25" path="23" offset="33" offsetend="559" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="26" path="24" offset="33" offsetend="570" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="27" path="25" offset="33" offsetend="581" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="28" path="26" offset="33" offsetend="592" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="29" path="27" offset="33" offsetend="603" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="30" path="28" offset="33" offsetend="614" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="33" path="31" offset="33" offsetend="622" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="62" path="60" offset="33" offsetend="630" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="63" path="61" offset="33" offsetend="638" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="64" path="62" offset="33" offsetend="646" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="65" path="63" offset="33" offsetend="654" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="66" path="64" offset="33" offsetend="662" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="67" path="65" offset="33" offsetend="670" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="69" path="67" offset="33" offsetend="678" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="70" path="68" offset="33" offsetend="686" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="71" path="69" offset="33" offsetend="694" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="72" path="70" offset="33" offsetend="702" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="73" path="71" offset="33" offsetend="710" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="74" path="72" offset="33" offsetend="718" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="75" path="73" offset="33" offsetend="726" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="76" path="74" offset="33" offsetend="734" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="2" path="0" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="7" path="5" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="17" path="15" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="31" path="29" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="32" path="30" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="34" path="32" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="35" path="33" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="36" path="34" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="37" path="35" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="38" path="36" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="39" path="37" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="40" path="38" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="41" path="39" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="42" path="40" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="43" path="41" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="44" path="42" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="45" path="43" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="46" path="44" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="47" path="45" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="48" path="46" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="49" path="47" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="50" path="48" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="51" path="49" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="52" path="50" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="53" path="51" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="54" path="52" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="55" path="53" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="56" path="54" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="57" path="55" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="58" path="56" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="59" path="57" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="60" path="58" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="61" path="59" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="454" ordinal="68" path="66" offset="33" offsetend="742" sl="454" fileid="310" /> <BranchPoint vc="0" uspid="497" ordinal="77" path="0" offset="747" offsetend="749" sl="497" fileid="310" /> <BranchPoint vc="0" uspid="497" ordinal="78" path="1" offset="747" offsetend="750" sl="497" fileid="310" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="10" offset="10" sc="0" sl="453" ec="1" el="499" bec="0" bev="0" fileid="310" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Byte NosCore.Parser.Parsers.NpcMonsterParser::Level(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="310" /> <SequencePoints> <SequencePoint vc="0" uspid="502" ordinal="0" sl="502" sc="1" el="502" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="503" ordinal="1" sl="503" sc="1" el="503" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="504" ordinal="2" sl="504" sc="1" el="504" ec="2" bec="0" bev="0" fileid="310" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="11" offset="11" sc="0" sl="502" ec="1" el="504" bec="0" bev="0" fileid="310" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int64 NosCore.Parser.Parsers.NpcMonsterParser::LoadUnknownData(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="310" /> <SequencePoints> <SequencePoint vc="0" uspid="507" ordinal="0" sl="507" sc="1" el="507" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="508" ordinal="1" sl="508" sc="1" el="508" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="509" ordinal="2" sl="509" sc="1" el="509" ec="2" bec="0" bev="0" fileid="310" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="12" offset="12" sc="0" sl="507" ec="1" el="509" bec="0" bev="0" fileid="310" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="4" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="4" minCyclomaticComplexity="4" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Boolean NosCore.Parser.Parsers.NpcMonsterParser::ShouldLoadPetinfo(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="310" /> <SequencePoints> <SequencePoint vc="0" uspid="511" ordinal="0" sl="511" sc="1" el="511" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="512" ordinal="1" sl="512" sc="1" el="512" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="513" ordinal="2" sl="513" sc="1" el="513" ec="2" bec="4" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="514" ordinal="3" sl="514" sc="1" el="514" ec="2" bec="0" bev="0" fileid="310" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="513" ordinal="0" path="0" offset="16" offsetend="18" sl="513" fileid="310" /> <BranchPoint vc="0" uspid="513" ordinal="2" path="0" offset="25" offsetend="27" sl="513" fileid="310" /> <BranchPoint vc="0" uspid="513" ordinal="1" path="1" offset="16" offsetend="38" sl="513" fileid="310" /> <BranchPoint vc="0" uspid="513" ordinal="3" path="1" offset="25" offsetend="38" sl="513" fileid="310" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="13" offset="13" sc="0" sl="511" ec="1" el="514" bec="0" bev="0" fileid="310" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="18" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.NpcMonsterParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.SkillDto,System.Int16>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.BCardDto,System.Int16>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.DropDto,System.Int16>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.NpcMonsterSkillDto,System.Int64>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.NpcMonsterDto,System.Int16>,Serilog.ILogger)</Name> <FileRef uid="310" /> <SequencePoints> <SequencePoint vc="0" uspid="63" ordinal="0" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="70" ordinal="1" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="71" ordinal="2" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="72" ordinal="3" sl="72" sc="1" el="72" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="73" ordinal="4" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="74" ordinal="5" sl="74" sc="1" el="74" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="78" ordinal="6" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="79" ordinal="7" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="80" ordinal="8" sl="80" sc="1" el="80" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="81" ordinal="9" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="82" ordinal="10" sl="82" sc="1" el="82" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="83" ordinal="11" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="84" ordinal="12" sl="84" sc="1" el="84" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="85" ordinal="13" sl="85" sc="1" el="85" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="86" ordinal="14" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="87" ordinal="15" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="88" ordinal="16" sl="88" sc="1" el="88" ec="2" bec="0" bev="0" fileid="310" /> <SequencePoint vc="0" uspid="89" ordinal="17" sl="89" sc="1" el="89" ec="2" bec="0" bev="0" fileid="310" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="14" offset="14" sc="0" sl="63" ec="1" el="89" bec="0" bev="0" fileid="310" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Parser.Parsers.NpcTalkParser</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.NpcTalkParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.NpcTalkDto,System.Int16>,Serilog.ILogger)</Name> <FileRef uid="311" /> <SequencePoints> <SequencePoint vc="0" uspid="49" ordinal="0" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="311" /> <SequencePoint vc="0" uspid="53" ordinal="1" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="311" /> <SequencePoint vc="0" uspid="54" ordinal="2" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="311" /> <SequencePoint vc="0" uspid="55" ordinal="3" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="311" /> <SequencePoint vc="0" uspid="56" ordinal="4" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="311" /> <SequencePoint vc="0" uspid="57" ordinal="5" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="311" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="49" ec="1" el="57" bec="0" bev="0" fileid="311" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Parser.Parsers.PortalParser</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="8" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.PortalParser::.ctor(Serilog.ILogger,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.MapDto,System.Int16>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.PortalDto,System.Int32>)</Name> <FileRef uid="312" /> <SequencePoints> <SequencePoint vc="0" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="312" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="312" /> <SequencePoint vc="0" uspid="41" ordinal="2" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="312" /> <SequencePoint vc="0" uspid="42" ordinal="3" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="312" /> <SequencePoint vc="0" uspid="43" ordinal="4" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="312" /> <SequencePoint vc="0" uspid="44" ordinal="5" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="312" /> <SequencePoint vc="0" uspid="45" ordinal="6" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="312" /> <SequencePoint vc="0" uspid="46" ordinal="7" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="312" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="35" ec="1" el="46" bec="0" bev="0" fileid="312" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="46" visitedSequencePoints="0" numBranchPoints="18" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.Parser.Parsers.QuestParser</FullName> <Methods> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="17" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Collections.Generic.List`1<NosCore.Data.StaticEntities.QuestQuestRewardDto> NosCore.Parser.Parsers.QuestParser::ImportQuestQuestRewards(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="313" /> <SequencePoints> <SequencePoint vc="0" uspid="107" ordinal="0" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="108" ordinal="1" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="109" ordinal="2" sl="109" sc="1" el="109" ec="2" bec="2" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="110" ordinal="3" sl="110" sc="1" el="110" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="111" ordinal="4" sl="111" sc="1" el="111" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="112" ordinal="5" sl="112" sc="1" el="112" ec="2" bec="6" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="113" ordinal="6" sl="113" sc="1" el="113" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="114" ordinal="7" sl="114" sc="1" el="114" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="117" ordinal="8" sl="117" sc="1" el="117" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="118" ordinal="9" sl="118" sc="1" el="118" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="119" ordinal="10" sl="119" sc="1" el="119" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="120" ordinal="11" sl="120" sc="1" el="120" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="121" ordinal="12" sl="121" sc="1" el="121" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="122" ordinal="13" sl="122" sc="1" el="122" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="123" ordinal="14" sl="123" sc="1" el="123" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="125" ordinal="15" sl="125" sc="1" el="125" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="126" ordinal="16" sl="126" sc="1" el="126" ec="2" bec="0" bev="0" fileid="313" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="109" ordinal="7" path="1" offset="141" offsetend="11" sl="109" fileid="313" /> <BranchPoint vc="0" uspid="112" ordinal="0" path="0" offset="35" offsetend="37" sl="112" fileid="313" /> <BranchPoint vc="0" uspid="112" ordinal="2" path="0" offset="44" offsetend="46" sl="112" fileid="313" /> <BranchPoint vc="0" uspid="112" ordinal="3" path="1" offset="44" offsetend="50" sl="112" fileid="313" /> <BranchPoint vc="0" uspid="112" ordinal="1" path="1" offset="35" offsetend="61" sl="112" fileid="313" /> <BranchPoint vc="0" uspid="112" ordinal="4" path="0" offset="64" offsetend="66" sl="112" fileid="313" /> <BranchPoint vc="0" uspid="112" ordinal="5" path="1" offset="64" offsetend="69" sl="112" fileid="313" /> <BranchPoint vc="0" uspid="109" ordinal="6" path="0" offset="141" offsetend="146" sl="109" fileid="313" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="107" ec="1" el="126" bec="0" bev="0" fileid="313" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="10" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="19" visitedSequencePoints="0" numBranchPoints="10" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="10" minCyclomaticComplexity="10" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Collections.Generic.List`1<NosCore.Data.StaticEntities.QuestObjectiveDto> NosCore.Parser.Parsers.QuestParser::ImportQuestObjectives(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="313" /> <SequencePoints> <SequencePoint vc="0" uspid="129" ordinal="0" sl="129" sc="1" el="129" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="130" ordinal="1" sl="130" sc="1" el="130" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="131" ordinal="2" sl="131" sc="1" el="131" ec="2" bec="2" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="132" ordinal="3" sl="132" sc="1" el="132" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="133" ordinal="4" sl="133" sc="1" el="133" ec="2" bec="2" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="134" ordinal="5" sl="134" sc="1" el="134" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="135" ordinal="6" sl="135" sc="1" el="135" ec="2" bec="6" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="136" ordinal="7" sl="136" sc="1" el="136" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="137" ordinal="8" sl="137" sc="1" el="137" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="138" ordinal="9" sl="138" sc="1" el="138" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="139" ordinal="10" sl="139" sc="1" el="139" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="140" ordinal="11" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="141" ordinal="12" sl="141" sc="1" el="141" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="142" ordinal="13" sl="142" sc="1" el="142" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="143" ordinal="14" sl="143" sc="1" el="143" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="144" ordinal="15" sl="144" sc="1" el="144" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="145" ordinal="16" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="146" ordinal="17" sl="146" sc="1" el="146" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="147" ordinal="18" sl="147" sc="1" el="147" ec="2" bec="0" bev="0" fileid="313" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="131" ordinal="9" path="1" offset="272" offsetend="27" sl="131" fileid="313" /> <BranchPoint vc="0" uspid="133" ordinal="0" path="0" offset="49" offsetend="54" sl="133" fileid="313" /> <BranchPoint vc="0" uspid="135" ordinal="2" path="0" offset="117" offsetend="119" sl="135" fileid="313" /> <BranchPoint vc="0" uspid="135" ordinal="3" path="1" offset="117" offsetend="134" sl="135" fileid="313" /> <BranchPoint vc="0" uspid="135" ordinal="4" path="0" offset="164" offsetend="166" sl="135" fileid="313" /> <BranchPoint vc="0" uspid="135" ordinal="5" path="1" offset="164" offsetend="181" sl="135" fileid="313" /> <BranchPoint vc="0" uspid="135" ordinal="6" path="0" offset="211" offsetend="213" sl="135" fileid="313" /> <BranchPoint vc="0" uspid="135" ordinal="7" path="1" offset="211" offsetend="228" sl="135" fileid="313" /> <BranchPoint vc="0" uspid="133" ordinal="1" path="1" offset="49" offsetend="263" sl="133" fileid="313" /> <BranchPoint vc="0" uspid="131" ordinal="8" path="0" offset="272" offsetend="277" sl="131" fileid="313" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="129" ec="1" el="147" bec="0" bev="0" fileid="313" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="10" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.QuestParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.QuestDto,System.Int16>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.QuestObjectiveDto,System.Guid>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.QuestRewardDto,System.Int16>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.QuestQuestRewardDto,System.Guid>,Serilog.ILogger)</Name> <FileRef uid="313" /> <SequencePoints> <SequencePoint vc="0" uspid="53" ordinal="0" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="61" ordinal="1" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="62" ordinal="2" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="63" ordinal="3" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="64" ordinal="4" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="65" ordinal="5" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="66" ordinal="6" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="67" ordinal="7" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="68" ordinal="8" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="313" /> <SequencePoint vc="0" uspid="69" ordinal="9" sl="69" sc="1" el="69" ec="2" bec="0" bev="0" fileid="313" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="53" ec="1" el="69" bec="0" bev="0" fileid="313" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="43" visitedSequencePoints="0" numBranchPoints="44" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="25" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.Parser.Parsers.QuestPrizeParser</FullName> <Methods> <Method cyclomaticComplexity="25" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="18" visitedSequencePoints="0" numBranchPoints="25" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="25" minCyclomaticComplexity="25" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int32 NosCore.Parser.Parsers.QuestPrizeParser::ImportData(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="314" /> <SequencePoints> <SequencePoint vc="0" uspid="70" ordinal="0" sl="70" sc="1" el="70" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="71" ordinal="1" sl="71" sc="1" el="71" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="72" ordinal="2" sl="72" sc="1" el="72" ec="2" bec="15" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="73" ordinal="3" sl="73" sc="1" el="73" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="74" ordinal="4" sl="74" sc="1" el="74" ec="2" bec="2" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="75" ordinal="5" sl="75" sc="1" el="75" ec="2" bec="2" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="76" ordinal="6" sl="76" sc="1" el="76" ec="2" bec="2" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="77" ordinal="7" sl="77" sc="1" el="77" ec="2" bec="2" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="78" ordinal="8" sl="78" sc="1" el="78" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="79" ordinal="9" sl="79" sc="1" el="79" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="80" ordinal="10" sl="80" sc="1" el="80" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="81" ordinal="11" sl="81" sc="1" el="81" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="82" ordinal="12" sl="82" sc="1" el="82" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="83" ordinal="13" sl="83" sc="1" el="83" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="84" ordinal="14" sl="84" sc="1" el="84" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="85" ordinal="15" sl="85" sc="1" el="85" ec="2" bec="2" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="86" ordinal="16" sl="86" sc="1" el="86" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="87" ordinal="17" sl="87" sc="1" el="87" ec="2" bec="0" bev="0" fileid="314" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="72" ordinal="0" path="0" offset="24" offsetend="26" sl="72" fileid="314" /> <BranchPoint vc="0" uspid="72" ordinal="1" path="1" offset="24" offsetend="27" sl="72" fileid="314" /> <BranchPoint vc="0" uspid="72" ordinal="5" path="3" offset="30" offsetend="88" sl="72" fileid="314" /> <BranchPoint vc="0" uspid="74" ordinal="15" path="0" offset="109" offsetend="111" sl="74" fileid="314" /> <BranchPoint vc="0" uspid="74" ordinal="16" path="1" offset="109" offsetend="133" sl="74" fileid="314" /> <BranchPoint vc="0" uspid="72" ordinal="6" path="4" offset="30" offsetend="140" sl="72" fileid="314" /> <BranchPoint vc="0" uspid="75" ordinal="17" path="0" offset="161" offsetend="163" sl="75" fileid="314" /> <BranchPoint vc="0" uspid="75" ordinal="18" path="1" offset="161" offsetend="185" sl="75" fileid="314" /> <BranchPoint vc="0" uspid="72" ordinal="7" path="5" offset="30" offsetend="192" sl="72" fileid="314" /> <BranchPoint vc="0" uspid="76" ordinal="19" path="0" offset="213" offsetend="215" sl="76" fileid="314" /> <BranchPoint vc="0" uspid="76" ordinal="20" path="1" offset="213" offsetend="237" sl="76" fileid="314" /> <BranchPoint vc="0" uspid="72" ordinal="14" path="12" offset="30" offsetend="244" sl="72" fileid="314" /> <BranchPoint vc="0" uspid="77" ordinal="21" path="0" offset="265" offsetend="267" sl="77" fileid="314" /> <BranchPoint vc="0" uspid="77" ordinal="22" path="1" offset="265" offsetend="289" sl="77" fileid="314" /> <BranchPoint vc="0" uspid="72" ordinal="10" path="8" offset="30" offsetend="293" sl="72" fileid="314" /> <BranchPoint vc="0" uspid="72" ordinal="9" path="7" offset="30" offsetend="316" sl="72" fileid="314" /> <BranchPoint vc="0" uspid="72" ordinal="3" path="1" offset="30" offsetend="339" sl="72" fileid="314" /> <BranchPoint vc="0" uspid="72" ordinal="4" path="2" offset="30" offsetend="343" sl="72" fileid="314" /> <BranchPoint vc="0" uspid="72" ordinal="12" path="10" offset="30" offsetend="347" sl="72" fileid="314" /> <BranchPoint vc="0" uspid="72" ordinal="13" path="11" offset="30" offsetend="351" sl="72" fileid="314" /> <BranchPoint vc="0" uspid="72" ordinal="11" path="9" offset="30" offsetend="355" sl="72" fileid="314" /> <BranchPoint vc="0" uspid="72" ordinal="2" path="0" offset="30" offsetend="359" sl="72" fileid="314" /> <BranchPoint vc="0" uspid="72" ordinal="8" path="6" offset="30" offsetend="359" sl="72" fileid="314" /> <BranchPoint vc="0" uspid="85" ordinal="23" path="0" offset="383" offsetend="385" sl="85" fileid="314" /> <BranchPoint vc="0" uspid="85" ordinal="24" path="1" offset="383" offsetend="386" sl="85" fileid="314" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="70" ec="1" el="87" bec="0" bev="0" fileid="314" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="19" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="19" visitedSequencePoints="0" numBranchPoints="19" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="19" minCyclomaticComplexity="19" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Int32 NosCore.Parser.Parsers.QuestPrizeParser::ImportAmount(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="314" /> <SequencePoints> <SequencePoint vc="0" uspid="90" ordinal="0" sl="90" sc="1" el="90" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="91" ordinal="1" sl="91" sc="1" el="91" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="92" ordinal="2" sl="92" sc="1" el="92" ec="2" bec="15" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="93" ordinal="3" sl="93" sc="1" el="93" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="94" ordinal="4" sl="94" sc="1" el="94" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="95" ordinal="5" sl="95" sc="1" el="95" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="96" ordinal="6" sl="96" sc="1" el="96" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="97" ordinal="7" sl="97" sc="1" el="97" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="98" ordinal="8" sl="98" sc="1" el="98" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="99" ordinal="9" sl="99" sc="1" el="99" ec="2" bec="2" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="100" ordinal="10" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="101" ordinal="11" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="102" ordinal="12" sl="102" sc="1" el="102" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="103" ordinal="13" sl="103" sc="1" el="103" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="104" ordinal="14" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="105" ordinal="15" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="106" ordinal="16" sl="106" sc="1" el="106" ec="2" bec="2" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="107" ordinal="17" sl="107" sc="1" el="107" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="108" ordinal="18" sl="108" sc="1" el="108" ec="2" bec="0" bev="0" fileid="314" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="92" ordinal="0" path="0" offset="24" offsetend="26" sl="92" fileid="314" /> <BranchPoint vc="0" uspid="92" ordinal="1" path="1" offset="24" offsetend="27" sl="92" fileid="314" /> <BranchPoint vc="0" uspid="92" ordinal="5" path="3" offset="30" offsetend="88" sl="92" fileid="314" /> <BranchPoint vc="0" uspid="92" ordinal="6" path="4" offset="30" offsetend="114" sl="92" fileid="314" /> <BranchPoint vc="0" uspid="92" ordinal="7" path="5" offset="30" offsetend="140" sl="92" fileid="314" /> <BranchPoint vc="0" uspid="92" ordinal="14" path="12" offset="30" offsetend="166" sl="92" fileid="314" /> <BranchPoint vc="0" uspid="92" ordinal="10" path="8" offset="30" offsetend="192" sl="92" fileid="314" /> <BranchPoint vc="0" uspid="92" ordinal="9" path="7" offset="30" offsetend="199" sl="92" fileid="314" /> <BranchPoint vc="0" uspid="99" ordinal="15" path="0" offset="220" offsetend="222" sl="99" fileid="314" /> <BranchPoint vc="0" uspid="99" ordinal="16" path="1" offset="220" offsetend="244" sl="99" fileid="314" /> <BranchPoint vc="0" uspid="92" ordinal="3" path="1" offset="30" offsetend="251" sl="92" fileid="314" /> <BranchPoint vc="0" uspid="92" ordinal="4" path="2" offset="30" offsetend="274" sl="92" fileid="314" /> <BranchPoint vc="0" uspid="92" ordinal="12" path="10" offset="30" offsetend="297" sl="92" fileid="314" /> <BranchPoint vc="0" uspid="92" ordinal="13" path="11" offset="30" offsetend="320" sl="92" fileid="314" /> <BranchPoint vc="0" uspid="92" ordinal="11" path="9" offset="30" offsetend="343" sl="92" fileid="314" /> <BranchPoint vc="0" uspid="92" ordinal="2" path="0" offset="30" offsetend="366" sl="92" fileid="314" /> <BranchPoint vc="0" uspid="92" ordinal="8" path="6" offset="30" offsetend="366" sl="92" fileid="314" /> <BranchPoint vc="0" uspid="106" ordinal="17" path="0" offset="390" offsetend="392" sl="106" fileid="314" /> <BranchPoint vc="0" uspid="106" ordinal="18" path="1" offset="390" offsetend="393" sl="106" fileid="314" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="90" ec="1" el="108" bec="0" bev="0" fileid="314" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.QuestPrizeParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.QuestRewardDto,System.Int16>,Serilog.ILogger)</Name> <FileRef uid="314" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="48" ordinal="1" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="49" ordinal="2" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="50" ordinal="3" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="51" ordinal="4" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="314" /> <SequencePoint vc="0" uspid="52" ordinal="5" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="314" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="43" ec="1" el="52" bec="0" bev="0" fileid="314" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Parser.Parsers.RespawnMapTypeParser</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.RespawnMapTypeParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.RespawnMapTypeDto,System.Int64>,Serilog.ILogger)</Name> <FileRef uid="315" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="315" /> <SequencePoint vc="0" uspid="39" ordinal="1" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="315" /> <SequencePoint vc="0" uspid="40" ordinal="2" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="315" /> <SequencePoint vc="0" uspid="41" ordinal="3" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="315" /> <SequencePoint vc="0" uspid="42" ordinal="4" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="315" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="38" ec="1" el="42" bec="0" bev="0" fileid="315" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Parser.Parsers.ScriptParser</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.ScriptParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.ScriptDto,System.Guid>,Serilog.ILogger)</Name> <FileRef uid="316" /> <SequencePoints> <SequencePoint vc="0" uspid="38" ordinal="0" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="316" /> <SequencePoint vc="0" uspid="42" ordinal="1" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="316" /> <SequencePoint vc="0" uspid="43" ordinal="2" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="316" /> <SequencePoint vc="0" uspid="44" ordinal="3" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="316" /> <SequencePoint vc="0" uspid="45" ordinal="4" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="316" /> <SequencePoint vc="0" uspid="46" ordinal="5" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="316" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="38" ec="1" el="46" bec="0" bev="0" fileid="316" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Parser.Parsers.ShopItemParser</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.ShopItemParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.ShopItemDto,System.Int32>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.ShopDto,System.Int32>,Serilog.ILogger)</Name> <FileRef uid="317" /> <SequencePoints> <SequencePoint vc="0" uspid="37" ordinal="0" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="317" /> <SequencePoint vc="0" uspid="38" ordinal="1" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="317" /> <SequencePoint vc="0" uspid="39" ordinal="2" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="317" /> <SequencePoint vc="0" uspid="40" ordinal="3" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="317" /> <SequencePoint vc="0" uspid="41" ordinal="4" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="317" /> <SequencePoint vc="0" uspid="42" ordinal="5" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="317" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="37" ec="1" el="42" bec="0" bev="0" fileid="317" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.Parser.Parsers.ShopParser</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.ShopParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.ShopDto,System.Int32>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.Dto.MapNpcDto,System.Int32>,Serilog.ILogger)</Name> <FileRef uid="318" /> <SequencePoints> <SequencePoint vc="0" uspid="39" ordinal="0" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="318" /> <SequencePoint vc="0" uspid="40" ordinal="1" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="318" /> <SequencePoint vc="0" uspid="41" ordinal="2" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="318" /> <SequencePoint vc="0" uspid="42" ordinal="3" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="318" /> <SequencePoint vc="0" uspid="43" ordinal="4" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="318" /> <SequencePoint vc="0" uspid="44" ordinal="5" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="318" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="39" ec="1" el="44" bec="0" bev="0" fileid="318" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="51" visitedSequencePoints="0" numBranchPoints="22" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="14" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.Parser.Parsers.SkillParser</FullName> <Methods> <Method cyclomaticComplexity="14" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="24" visitedSequencePoints="0" numBranchPoints="14" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="14" minCyclomaticComplexity="14" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Collections.Generic.List`1<NosCore.Data.StaticEntities.BCardDto> NosCore.Parser.Parsers.SkillParser::AddBCards(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="319" /> <SequencePoints> <SequencePoint vc="0" uspid="142" ordinal="0" sl="142" sc="1" el="142" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="143" ordinal="1" sl="143" sc="1" el="143" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="144" ordinal="2" sl="144" sc="1" el="144" ec="2" bec="2" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="145" ordinal="3" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="146" ordinal="4" sl="146" sc="1" el="146" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="147" ordinal="5" sl="147" sc="1" el="147" ec="2" bec="4" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="148" ordinal="6" sl="148" sc="1" el="148" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="149" ordinal="7" sl="149" sc="1" el="149" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="152" ordinal="8" sl="152" sc="1" el="152" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="153" ordinal="9" sl="153" sc="1" el="153" ec="2" bec="8" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="154" ordinal="10" sl="154" sc="1" el="154" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="155" ordinal="11" sl="155" sc="1" el="155" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="156" ordinal="12" sl="156" sc="1" el="156" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="157" ordinal="13" sl="157" sc="1" el="157" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="158" ordinal="14" sl="158" sc="1" el="158" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="159" ordinal="15" sl="159" sc="1" el="159" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="160" ordinal="16" sl="160" sc="1" el="160" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="161" ordinal="17" sl="161" sc="1" el="161" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="162" ordinal="18" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="163" ordinal="19" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="164" ordinal="20" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="165" ordinal="21" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="167" ordinal="22" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="168" ordinal="23" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="319" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="144" ordinal="13" path="1" offset="330" offsetend="14" sl="144" fileid="319" /> <BranchPoint vc="0" uspid="147" ordinal="0" path="0" offset="38" offsetend="40" sl="147" fileid="319" /> <BranchPoint vc="0" uspid="147" ordinal="1" path="1" offset="38" offsetend="50" sl="147" fileid="319" /> <BranchPoint vc="0" uspid="147" ordinal="2" path="0" offset="55" offsetend="57" sl="147" fileid="319" /> <BranchPoint vc="0" uspid="147" ordinal="3" path="1" offset="55" offsetend="63" sl="147" fileid="319" /> <BranchPoint vc="0" uspid="153" ordinal="4" path="0" offset="159" offsetend="161" sl="153" fileid="319" /> <BranchPoint vc="0" uspid="153" ordinal="5" path="1" offset="159" offsetend="164" sl="153" fileid="319" /> <BranchPoint vc="0" uspid="153" ordinal="6" path="0" offset="176" offsetend="178" sl="153" fileid="319" /> <BranchPoint vc="0" uspid="153" ordinal="7" path="1" offset="176" offsetend="181" sl="153" fileid="319" /> <BranchPoint vc="0" uspid="153" ordinal="8" path="0" offset="198" offsetend="200" sl="153" fileid="319" /> <BranchPoint vc="0" uspid="153" ordinal="9" path="1" offset="198" offsetend="203" sl="153" fileid="319" /> <BranchPoint vc="0" uspid="153" ordinal="10" path="0" offset="218" offsetend="220" sl="153" fileid="319" /> <BranchPoint vc="0" uspid="153" ordinal="11" path="1" offset="218" offsetend="226" sl="153" fileid="319" /> <BranchPoint vc="0" uspid="144" ordinal="12" path="0" offset="330" offsetend="335" sl="144" fileid="319" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="142" ec="1" el="168" bec="0" bev="0" fileid="319" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="8" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="18" visitedSequencePoints="0" numBranchPoints="8" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="8" minCyclomaticComplexity="8" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Collections.Generic.List`1<NosCore.Data.StaticEntities.ComboDto> NosCore.Parser.Parsers.SkillParser::AddCombos(System.Collections.Generic.Dictionary`2<System.String,System.String[][]>)</Name> <FileRef uid="319" /> <SequencePoints> <SequencePoint vc="0" uspid="171" ordinal="0" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="172" ordinal="1" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="173" ordinal="2" sl="173" sc="1" el="173" ec="2" bec="2" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="174" ordinal="3" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="175" ordinal="4" sl="175" sc="1" el="175" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="176" ordinal="5" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="177" ordinal="6" sl="177" sc="1" el="177" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="178" ordinal="7" sl="178" sc="1" el="178" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="179" ordinal="8" sl="179" sc="1" el="179" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="180" ordinal="9" sl="180" sc="1" el="180" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="181" ordinal="10" sl="181" sc="1" el="181" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="182" ordinal="11" sl="182" sc="1" el="182" ec="2" bec="6" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="183" ordinal="12" sl="183" sc="1" el="183" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="184" ordinal="13" sl="184" sc="1" el="184" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="186" ordinal="14" sl="186" sc="1" el="186" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="187" ordinal="15" sl="187" sc="1" el="187" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="189" ordinal="16" sl="189" sc="1" el="189" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="190" ordinal="17" sl="190" sc="1" el="190" ec="2" bec="0" bev="0" fileid="319" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="173" ordinal="7" path="1" offset="197" offsetend="14" sl="173" fileid="319" /> <BranchPoint vc="0" uspid="182" ordinal="0" path="0" offset="147" offsetend="149" sl="182" fileid="319" /> <BranchPoint vc="0" uspid="182" ordinal="2" path="0" offset="155" offsetend="157" sl="182" fileid="319" /> <BranchPoint vc="0" uspid="182" ordinal="1" path="1" offset="147" offsetend="168" sl="182" fileid="319" /> <BranchPoint vc="0" uspid="182" ordinal="3" path="1" offset="155" offsetend="168" sl="182" fileid="319" /> <BranchPoint vc="0" uspid="182" ordinal="4" path="0" offset="171" offsetend="173" sl="182" fileid="319" /> <BranchPoint vc="0" uspid="182" ordinal="5" path="1" offset="171" offsetend="176" sl="182" fileid="319" /> <BranchPoint vc="0" uspid="173" ordinal="6" path="0" offset="197" offsetend="202" sl="173" fileid="319" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="171" ec="1" el="190" bec="0" bev="0" fileid="319" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.SkillParser::.ctor(NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.BCardDto,System.Int16>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.ComboDto,System.Int32>,NosCore.Dao.Interfaces.IDao`2<NosCore.Data.StaticEntities.SkillDto,System.Int16>,Serilog.ILogger)</Name> <FileRef uid="319" /> <SequencePoints> <SequencePoint vc="0" uspid="55" ordinal="0" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="61" ordinal="1" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="62" ordinal="2" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="63" ordinal="3" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="64" ordinal="4" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="65" ordinal="5" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="66" ordinal="6" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="67" ordinal="7" sl="67" sc="1" el="67" ec="2" bec="0" bev="0" fileid="319" /> <SequencePoint vc="0" uspid="68" ordinal="8" sl="68" sc="1" el="68" ec="2" bec="0" bev="0" fileid="319" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="55" ec="1" el="68" bec="0" bev="0" fileid="319" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="16" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="3" /> <FullName>NosCore.Parser.Parsers.Generic.GenericParser`1</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="6" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Collections.Generic.IEnumerable`1<System.String> NosCore.Parser.Parsers.Generic.GenericParser`1::ParseTextFromFile()</Name> <FileRef uid="320" /> <SequencePoints> <SequencePoint vc="0" uspid="36" ordinal="0" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="320" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="320" /> <SequencePoint vc="0" uspid="38" ordinal="2" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="320" /> <SequencePoint vc="0" uspid="39" ordinal="3" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="320" /> <SequencePoint vc="0" uspid="40" ordinal="4" sl="40" sc="1" el="40" ec="2" bec="0" bev="0" fileid="320" /> <SequencePoint vc="0" uspid="41" ordinal="5" sl="41" sc="1" el="41" ec="2" bec="0" bev="0" fileid="320" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="36" ec="1" el="41" bec="0" bev="0" fileid="320" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task`1<System.Collections.Generic.List`1<T>> NosCore.Parser.Parsers.Generic.GenericParser`1::GetDtosAsync()</Name> <FileRef uid="320" /> <SequencePoints> <SequencePoint vc="0" uspid="42" ordinal="0" sl="42" sc="1" el="42" ec="2" bec="0" bev="0" fileid="320" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="42" ec="1" el="42" bec="0" bev="0" fileid="320" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.Parser.Parsers.Generic.GenericParser`1::.ctor(System.String,System.String,System.Int32,System.Collections.Generic.Dictionary`2<System.String,System.Func`2<System.Collections.Generic.Dictionary`2<System.String,System.String[][]>,System.Object>>,Serilog.ILogger)</Name> <FileRef uid="320" /> <SequencePoints> <SequencePoint vc="0" uspid="25" ordinal="0" sl="25" sc="1" el="25" ec="2" bec="0" bev="0" fileid="320" /> <SequencePoint vc="0" uspid="26" ordinal="1" sl="26" sc="1" el="26" ec="2" bec="0" bev="0" fileid="320" /> <SequencePoint vc="0" uspid="27" ordinal="2" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="320" /> <SequencePoint vc="0" uspid="28" ordinal="3" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="320" /> <SequencePoint vc="0" uspid="29" ordinal="4" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="320" /> <SequencePoint vc="0" uspid="30" ordinal="5" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="320" /> <SequencePoint vc="0" uspid="31" ordinal="6" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="320" /> <SequencePoint vc="0" uspid="32" ordinal="7" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="320" /> <SequencePoint vc="0" uspid="33" ordinal="8" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="320" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="25" ec="1" el="33" bec="0" bev="0" fileid="320" xmlns:p8="xsi" /> </Method> </Methods> </Class> </Classes> </Module> <Module hash="3A8E99F9-B964-49C8-87D1-22E60A8B2EEC"> <ModulePath>NosCore.WebApi.dll</ModulePath> <ModuleTime>2020-12-29T09:41:25</ModuleTime> <ModuleName>NosCore.WebApi</ModuleName> <Files> <File uid="321" fullPath="C:\dev\NosCore\src\NosCore.WebApi\WebApiBootstrap.cs" /> </Files> <Classes> <Class> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.WebApi.LoginServerBootstrap</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Threading.Tasks.Task NosCore.WebApi.LoginServerBootstrap::Main(System.String[])</Name> <FileRef uid="321" /> <SequencePoints> <SequencePoint vc="0" uspid="27" ordinal="0" sl="27" sc="1" el="27" ec="2" bec="0" bev="0" fileid="321" /> <SequencePoint vc="0" uspid="28" ordinal="1" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="321" /> <SequencePoint vc="0" uspid="29" ordinal="2" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="321" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="27" ec="1" el="29" bec="0" bev="0" fileid="321" xmlns:p8="xsi" /> </Method> </Methods> </Class> </Classes> </Module> <Module hash="BF004964-E5C1-451B-8642-F8E08462764C"> <ModulePath>NosCore.WebApi.Tests.dll</ModulePath> <ModuleTime>2020-12-29T09:41:25</ModuleTime> <ModuleName>NosCore.WebApi.Tests</ModuleName> <Files> <File uid="322" fullPath="C:\Users\Erwan\.nuget\packages\microsoft.net.test.sdk\16.8.3\build\netcoreapp2.1\Microsoft.NET.Test.Sdk.Program.cs" /> <File uid="323" fullPath="C:\dev\NosCore\test\NosCore.WebApi.Tests\SetupAssemblyInitializer.cs" /> <File uid="324" fullPath="C:\dev\NosCore\test\NosCore.WebApi.Tests\ApiTests\AuthControllerTests.cs" /> <File uid="325" fullPath="C:\dev\NosCore\test\NosCore.WebApi.Tests\ApiTests\BazaarControllerTests.cs" /> </Files> <Classes> <Class> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>AutoGeneratedProgram</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void AutoGeneratedProgram::Main(System.String[])</Name> <FileRef uid="322" /> <SequencePoints> <SequencePoint vc="0" uspid="4" ordinal="0" sl="4" sc="1" el="4" ec="2" bec="0" bev="0" fileid="322" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="4" ec="1" el="4" bec="0" bev="0" fileid="322" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.WebApi.Tests.SetupAssemblyInitializer</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WebApi.Tests.SetupAssemblyInitializer::AssemblyInit(Microsoft.VisualStudio.TestTools.UnitTesting.TestContext)</Name> <FileRef uid="323" /> <SequencePoints> <SequencePoint vc="0" uspid="32" ordinal="0" sl="32" sc="1" el="32" ec="2" bec="0" bev="0" fileid="323" /> <SequencePoint vc="0" uspid="33" ordinal="1" sl="33" sc="1" el="33" ec="2" bec="0" bev="0" fileid="323" /> <SequencePoint vc="0" uspid="34" ordinal="2" sl="34" sc="1" el="34" ec="2" bec="0" bev="0" fileid="323" /> <SequencePoint vc="0" uspid="35" ordinal="3" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="323" /> <SequencePoint vc="0" uspid="36" ordinal="4" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="323" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="32" ec="1" el="36" bec="0" bev="0" fileid="323" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="75" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="10" /> <FullName>NosCore.WebApi.Tests.ApiTests.AuthControllerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="20" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WebApi.Tests.ApiTests.AuthControllerTests::GetAuthCodeGenerateAuthCodeWhenValidIdentity()</Name> <FileRef uid="324" /> <SequencePoints> <SequencePoint vc="0" uspid="130" ordinal="0" sl="130" sc="1" el="130" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="131" ordinal="1" sl="131" sc="1" el="131" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="132" ordinal="2" sl="132" sc="1" el="132" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="133" ordinal="3" sl="133" sc="1" el="133" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="134" ordinal="4" sl="134" sc="1" el="134" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="135" ordinal="5" sl="135" sc="1" el="135" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="136" ordinal="6" sl="136" sc="1" el="136" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="137" ordinal="7" sl="137" sc="1" el="137" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="138" ordinal="8" sl="138" sc="1" el="138" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="139" ordinal="9" sl="139" sc="1" el="139" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="140" ordinal="10" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="141" ordinal="11" sl="141" sc="1" el="141" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="142" ordinal="12" sl="142" sc="1" el="142" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="143" ordinal="13" sl="143" sc="1" el="143" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="145" ordinal="14" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="146" ordinal="15" sl="146" sc="1" el="146" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="147" ordinal="16" sl="147" sc="1" el="147" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="148" ordinal="17" sl="148" sc="1" el="148" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="149" ordinal="18" sl="149" sc="1" el="149" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="150" ordinal="19" sl="150" sc="1" el="150" ec="2" bec="0" bev="0" fileid="324" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="130" ec="1" el="150" bec="0" bev="0" fileid="324" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="20" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WebApi.Tests.ApiTests.AuthControllerTests::GetAuthCodeDoesNotGenerateAuthCodeWhenInvalidIdentity()</Name> <FileRef uid="324" /> <SequencePoints> <SequencePoint vc="0" uspid="154" ordinal="0" sl="154" sc="1" el="154" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="155" ordinal="1" sl="155" sc="1" el="155" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="156" ordinal="2" sl="156" sc="1" el="156" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="157" ordinal="3" sl="157" sc="1" el="157" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="158" ordinal="4" sl="158" sc="1" el="158" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="159" ordinal="5" sl="159" sc="1" el="159" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="160" ordinal="6" sl="160" sc="1" el="160" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="162" ordinal="7" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="163" ordinal="8" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="164" ordinal="9" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="165" ordinal="10" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="166" ordinal="11" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="167" ordinal="12" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="168" ordinal="13" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="170" ordinal="14" sl="170" sc="1" el="170" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="171" ordinal="15" sl="171" sc="1" el="171" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="172" ordinal="16" sl="172" sc="1" el="172" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="173" ordinal="17" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="174" ordinal="18" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="175" ordinal="19" sl="175" sc="1" el="175" ec="2" bec="0" bev="0" fileid="324" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="154" ec="1" el="175" bec="0" bev="0" fileid="324" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WebApi.Tests.ApiTests.AuthControllerTests::GetExpectingConnectionReturnNullWhenTokenNull()</Name> <FileRef uid="324" /> <SequencePoints> <SequencePoint vc="0" uspid="179" ordinal="0" sl="179" sc="1" el="179" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="180" ordinal="1" sl="180" sc="1" el="180" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="181" ordinal="2" sl="181" sc="1" el="181" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="182" ordinal="3" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="324" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="179" ec="1" el="182" bec="0" bev="0" fileid="324" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WebApi.Tests.ApiTests.AuthControllerTests::GetExpectingConnectionReturnNullWhenNotAuthCode()</Name> <FileRef uid="324" /> <SequencePoints> <SequencePoint vc="0" uspid="186" ordinal="0" sl="186" sc="1" el="186" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="187" ordinal="1" sl="187" sc="1" el="187" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="188" ordinal="2" sl="188" sc="1" el="188" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="189" ordinal="3" sl="189" sc="1" el="189" ec="2" bec="0" bev="0" fileid="324" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="186" ec="1" el="189" bec="0" bev="0" fileid="324" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WebApi.Tests.ApiTests.AuthControllerTests::GetExpectingConnectionReturnAccountNameWhenAuthCode()</Name> <FileRef uid="324" /> <SequencePoints> <SequencePoint vc="0" uspid="193" ordinal="0" sl="193" sc="1" el="193" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="194" ordinal="1" sl="194" sc="1" el="194" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="195" ordinal="2" sl="195" sc="1" el="195" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="196" ordinal="3" sl="196" sc="1" el="196" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="197" ordinal="4" sl="197" sc="1" el="197" ec="2" bec="0" bev="0" fileid="324" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="193" ec="1" el="197" bec="0" bev="0" fileid="324" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WebApi.Tests.ApiTests.AuthControllerTests::GetExpectingConnectionReturnNullWhenTokenNoneSessionTicket()</Name> <FileRef uid="324" /> <SequencePoints> <SequencePoint vc="0" uspid="201" ordinal="0" sl="201" sc="1" el="201" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="202" ordinal="1" sl="202" sc="1" el="202" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="203" ordinal="2" sl="203" sc="1" el="203" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="204" ordinal="3" sl="204" sc="1" el="204" ec="2" bec="0" bev="0" fileid="324" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="5" offset="5" sc="0" sl="201" ec="1" el="204" bec="0" bev="0" fileid="324" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WebApi.Tests.ApiTests.AuthControllerTests::GetExpectingConnectionReturnTrueWhenGfModeAndExpecting()</Name> <FileRef uid="324" /> <SequencePoints> <SequencePoint vc="0" uspid="208" ordinal="0" sl="208" sc="1" el="208" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="209" ordinal="1" sl="209" sc="1" el="209" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="210" ordinal="2" sl="210" sc="1" el="210" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="211" ordinal="3" sl="211" sc="1" el="211" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="212" ordinal="4" sl="212" sc="1" el="212" ec="2" bec="0" bev="0" fileid="324" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="6" offset="6" sc="0" sl="208" ec="1" el="212" bec="0" bev="0" fileid="324" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WebApi.Tests.ApiTests.AuthControllerTests::GetExpectingConnectionReturnTrueWhenGfModeAndExpectingButWrongSessionId()</Name> <FileRef uid="324" /> <SequencePoints> <SequencePoint vc="0" uspid="216" ordinal="0" sl="216" sc="1" el="216" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="217" ordinal="1" sl="217" sc="1" el="217" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="218" ordinal="2" sl="218" sc="1" el="218" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="219" ordinal="3" sl="219" sc="1" el="219" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="220" ordinal="4" sl="220" sc="1" el="220" ec="2" bec="0" bev="0" fileid="324" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="7" offset="7" sc="0" sl="216" ec="1" el="220" bec="0" bev="0" fileid="324" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WebApi.Tests.ApiTests.AuthControllerTests::GetExpectingConnectionReturnFalseWhenGfModeAndNotExpecting()</Name> <FileRef uid="324" /> <SequencePoints> <SequencePoint vc="0" uspid="224" ordinal="0" sl="224" sc="1" el="224" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="225" ordinal="1" sl="225" sc="1" el="225" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="226" ordinal="2" sl="226" sc="1" el="226" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="227" ordinal="3" sl="227" sc="1" el="227" ec="2" bec="0" bev="0" fileid="324" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="8" offset="8" sc="0" sl="224" ec="1" el="227" bec="0" bev="0" fileid="324" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WebApi.Tests.ApiTests.AuthControllerTests::.ctor()</Name> <FileRef uid="324" /> <SequencePoints> <SequencePoint vc="0" uspid="28" ordinal="0" sl="28" sc="1" el="28" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="29" ordinal="1" sl="29" sc="1" el="29" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="30" ordinal="2" sl="30" sc="1" el="30" ec="2" bec="0" bev="0" fileid="324" /> <SequencePoint vc="0" uspid="31" ordinal="3" sl="31" sc="1" el="31" ec="2" bec="0" bev="0" fileid="324" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="9" offset="9" sc="0" sl="28" ec="1" el="31" bec="0" bev="0" fileid="324" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="13" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.WebApi.Tests.ApiTests.BazaarControllerTests</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="13" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WebApi.Tests.ApiTests.BazaarControllerTests::Setup()</Name> <FileRef uid="325" /> <SequencePoints> <SequencePoint vc="0" uspid="53" ordinal="0" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="325" /> <SequencePoint vc="0" uspid="54" ordinal="1" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="325" /> <SequencePoint vc="0" uspid="55" ordinal="2" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="325" /> <SequencePoint vc="0" uspid="56" ordinal="3" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="325" /> <SequencePoint vc="0" uspid="58" ordinal="4" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="325" /> <SequencePoint vc="0" uspid="59" ordinal="5" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="325" /> <SequencePoint vc="0" uspid="60" ordinal="6" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="325" /> <SequencePoint vc="0" uspid="61" ordinal="7" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="325" /> <SequencePoint vc="0" uspid="62" ordinal="8" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="325" /> <SequencePoint vc="0" uspid="63" ordinal="9" sl="63" sc="1" el="63" ec="2" bec="0" bev="0" fileid="325" /> <SequencePoint vc="0" uspid="64" ordinal="10" sl="64" sc="1" el="64" ec="2" bec="0" bev="0" fileid="325" /> <SequencePoint vc="0" uspid="65" ordinal="11" sl="65" sc="1" el="65" ec="2" bec="0" bev="0" fileid="325" /> <SequencePoint vc="0" uspid="66" ordinal="12" sl="66" sc="1" el="66" ec="2" bec="0" bev="0" fileid="325" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="53" ec="1" el="66" bec="0" bev="0" fileid="325" xmlns:p8="xsi" /> </Method> </Methods> </Class> </Classes> </Module> <Module hash="E4A6FF64-6B61-4172-AB07-F8914B58150A"> <ModulePath>NosCore.WorldServer.dll</ModulePath> <ModuleTime>2020-12-29T09:41:25</ModuleTime> <ModuleName>NosCore.WorldServer</ModuleName> <Files> <File uid="326" fullPath="C:\dev\NosCore\src\NosCore.WorldServer\Startup.cs" /> <File uid="327" fullPath="C:\dev\NosCore\src\NosCore.WorldServer\WorldServer.cs" /> <File uid="328" fullPath="C:\dev\NosCore\src\NosCore.WorldServer\WorldServerBootstrap.cs" /> <File uid="329" fullPath="C:\dev\NosCore\src\NosCore.WorldServer\Controllers\connectedAccountController.cs" /> <File uid="330" fullPath="C:\dev\NosCore\src\NosCore.WorldServer\Controllers\PacketController.cs" /> <File uid="331" fullPath="C:\dev\NosCore\src\NosCore.WorldServer\Controllers\StatController.cs" /> </Files> <Classes> <Class> <Summary numSequencePoints="227" visitedSequencePoints="0" numBranchPoints="4" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="8" /> <FullName>NosCore.WorldServer.Startup</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="3" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WorldServer.Startup::RegisterMapper(Autofac.IContainer)</Name> <FileRef uid="326" /> <SequencePoints> <SequencePoint vc="0" uspid="104" ordinal="0" sl="104" sc="1" el="104" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="105" ordinal="1" sl="105" sc="1" el="105" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="106" ordinal="2" sl="106" sc="1" el="106" ec="2" bec="0" bev="0" fileid="326" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="104" ec="1" el="106" bec="0" bev="0" fileid="326" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="41" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WorldServer.Startup::RegisterDatabaseObject(Autofac.ContainerBuilder,System.Boolean)</Name> <FileRef uid="326" /> <SequencePoints> <SequencePoint vc="0" uspid="111" ordinal="0" sl="111" sc="1" el="111" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="112" ordinal="1" sl="112" sc="1" el="112" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="113" ordinal="2" sl="113" sc="1" el="113" ec="2" bec="2" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="114" ordinal="3" sl="114" sc="1" el="114" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="115" ordinal="4" sl="115" sc="1" el="115" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="118" ordinal="5" sl="118" sc="1" el="118" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="119" ordinal="6" sl="119" sc="1" el="119" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="120" ordinal="7" sl="120" sc="1" el="120" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="121" ordinal="8" sl="121" sc="1" el="121" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="122" ordinal="9" sl="122" sc="1" el="122" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="123" ordinal="10" sl="123" sc="1" el="123" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="124" ordinal="11" sl="124" sc="1" el="124" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="125" ordinal="12" sl="125" sc="1" el="125" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="126" ordinal="13" sl="126" sc="1" el="126" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="127" ordinal="14" sl="127" sc="1" el="127" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="128" ordinal="15" sl="128" sc="1" el="128" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="129" ordinal="16" sl="129" sc="1" el="129" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="130" ordinal="17" sl="130" sc="1" el="130" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="131" ordinal="18" sl="131" sc="1" el="131" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="132" ordinal="19" sl="132" sc="1" el="132" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="133" ordinal="20" sl="133" sc="1" el="133" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="134" ordinal="21" sl="134" sc="1" el="134" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="135" ordinal="22" sl="135" sc="1" el="135" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="136" ordinal="23" sl="136" sc="1" el="136" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="137" ordinal="24" sl="137" sc="1" el="137" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="138" ordinal="25" sl="138" sc="1" el="138" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="139" ordinal="26" sl="139" sc="1" el="139" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="140" ordinal="27" sl="140" sc="1" el="140" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="141" ordinal="28" sl="141" sc="1" el="141" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="142" ordinal="29" sl="142" sc="1" el="142" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="143" ordinal="30" sl="143" sc="1" el="143" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="144" ordinal="31" sl="144" sc="1" el="144" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="145" ordinal="32" sl="145" sc="1" el="145" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="146" ordinal="33" sl="146" sc="1" el="146" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="147" ordinal="34" sl="147" sc="1" el="147" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="148" ordinal="35" sl="148" sc="1" el="148" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="149" ordinal="36" sl="149" sc="1" el="149" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="150" ordinal="37" sl="150" sc="1" el="150" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="151" ordinal="38" sl="151" sc="1" el="151" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="152" ordinal="39" sl="152" sc="1" el="152" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="153" ordinal="40" sl="153" sc="1" el="153" ec="2" bec="0" bev="0" fileid="326" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="113" ordinal="0" path="0" offset="35" offsetend="37" sl="113" fileid="326" /> <BranchPoint vc="0" uspid="113" ordinal="1" path="1" offset="35" offsetend="40" sl="113" fileid="326" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="111" ec="1" el="153" bec="0" bev="0" fileid="326" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="14" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WorldServer.Startup::RegisterGo(Autofac.IContainer)</Name> <FileRef uid="326" /> <SequencePoints> <SequencePoint vc="0" uspid="156" ordinal="0" sl="156" sc="1" el="156" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="157" ordinal="1" sl="157" sc="1" el="157" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="158" ordinal="2" sl="158" sc="1" el="158" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="159" ordinal="3" sl="159" sc="1" el="159" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="161" ordinal="4" sl="161" sc="1" el="161" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="162" ordinal="5" sl="162" sc="1" el="162" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="163" ordinal="6" sl="163" sc="1" el="163" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="164" ordinal="7" sl="164" sc="1" el="164" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="165" ordinal="8" sl="165" sc="1" el="165" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="166" ordinal="9" sl="166" sc="1" el="166" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="167" ordinal="10" sl="167" sc="1" el="167" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="168" ordinal="11" sl="168" sc="1" el="168" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="169" ordinal="12" sl="169" sc="1" el="169" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="170" ordinal="13" sl="170" sc="1" el="170" ec="2" bec="0" bev="0" fileid="326" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="2" offset="2" sc="0" sl="156" ec="1" el="170" bec="0" bev="0" fileid="326" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="31" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WorldServer.Startup::RegisterDto(Autofac.ContainerBuilder)</Name> <FileRef uid="326" /> <SequencePoints> <SequencePoint vc="0" uspid="173" ordinal="0" sl="173" sc="1" el="173" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="174" ordinal="1" sl="174" sc="1" el="174" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="175" ordinal="2" sl="175" sc="1" el="175" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="176" ordinal="3" sl="176" sc="1" el="176" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="177" ordinal="4" sl="177" sc="1" el="177" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="178" ordinal="5" sl="178" sc="1" el="178" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="179" ordinal="6" sl="179" sc="1" el="179" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="180" ordinal="7" sl="180" sc="1" el="180" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="182" ordinal="8" sl="182" sc="1" el="182" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="183" ordinal="9" sl="183" sc="1" el="183" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="184" ordinal="10" sl="184" sc="1" el="184" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="186" ordinal="11" sl="186" sc="1" el="186" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="187" ordinal="12" sl="187" sc="1" el="187" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="188" ordinal="13" sl="188" sc="1" el="188" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="189" ordinal="14" sl="189" sc="1" el="189" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="190" ordinal="15" sl="190" sc="1" el="190" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="191" ordinal="16" sl="191" sc="1" el="191" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="192" ordinal="17" sl="192" sc="1" el="192" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="193" ordinal="18" sl="193" sc="1" el="193" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="194" ordinal="19" sl="194" sc="1" el="194" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="195" ordinal="20" sl="195" sc="1" el="195" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="196" ordinal="21" sl="196" sc="1" el="196" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="197" ordinal="22" sl="197" sc="1" el="197" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="198" ordinal="23" sl="198" sc="1" el="198" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="199" ordinal="24" sl="199" sc="1" el="199" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="200" ordinal="25" sl="200" sc="1" el="200" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="201" ordinal="26" sl="201" sc="1" el="201" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="202" ordinal="27" sl="202" sc="1" el="202" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="203" ordinal="28" sl="203" sc="1" el="203" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="205" ordinal="29" sl="205" sc="1" el="205" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="206" ordinal="30" sl="206" sc="1" el="206" ec="2" bec="0" bev="0" fileid="326" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="3" offset="3" sc="0" sl="173" ec="1" el="206" bec="0" bev="0" fileid="326" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="74" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WorldServer.Startup::InitializeContainer(Autofac.ContainerBuilder)</Name> <FileRef uid="326" /> <SequencePoints> <SequencePoint vc="0" uspid="209" ordinal="0" sl="209" sc="1" el="209" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="210" ordinal="1" sl="210" sc="1" el="210" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="211" ordinal="2" sl="211" sc="1" el="211" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="212" ordinal="3" sl="212" sc="1" el="212" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="213" ordinal="4" sl="213" sc="1" el="213" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="214" ordinal="5" sl="214" sc="1" el="214" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="215" ordinal="6" sl="215" sc="1" el="215" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="216" ordinal="7" sl="216" sc="1" el="216" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="217" ordinal="8" sl="217" sc="1" el="217" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="218" ordinal="9" sl="218" sc="1" el="218" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="219" ordinal="10" sl="219" sc="1" el="219" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="220" ordinal="11" sl="220" sc="1" el="220" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="221" ordinal="12" sl="221" sc="1" el="221" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="222" ordinal="13" sl="222" sc="1" el="222" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="225" ordinal="14" sl="225" sc="1" el="225" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="226" ordinal="15" sl="226" sc="1" el="226" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="227" ordinal="16" sl="227" sc="1" el="227" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="228" ordinal="17" sl="228" sc="1" el="228" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="229" ordinal="18" sl="229" sc="1" el="229" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="230" ordinal="19" sl="230" sc="1" el="230" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="231" ordinal="20" sl="231" sc="1" el="231" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="233" ordinal="21" sl="233" sc="1" el="233" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="234" ordinal="22" sl="234" sc="1" el="234" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="235" ordinal="23" sl="235" sc="1" el="235" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="236" ordinal="24" sl="236" sc="1" el="236" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="237" ordinal="25" sl="237" sc="1" el="237" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="238" ordinal="26" sl="238" sc="1" el="238" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="239" ordinal="27" sl="239" sc="1" el="239" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="240" ordinal="28" sl="240" sc="1" el="240" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="241" ordinal="29" sl="241" sc="1" el="241" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="242" ordinal="30" sl="242" sc="1" el="242" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="243" ordinal="31" sl="243" sc="1" el="243" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="244" ordinal="32" sl="244" sc="1" el="244" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="245" ordinal="33" sl="245" sc="1" el="245" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="246" ordinal="34" sl="246" sc="1" el="246" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="247" ordinal="35" sl="247" sc="1" el="247" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="248" ordinal="36" sl="248" sc="1" el="248" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="249" ordinal="37" sl="249" sc="1" el="249" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="250" ordinal="38" sl="250" sc="1" el="250" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="251" ordinal="39" sl="251" sc="1" el="251" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="252" ordinal="40" sl="252" sc="1" el="252" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="253" ordinal="41" sl="253" sc="1" el="253" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="254" ordinal="42" sl="254" sc="1" el="254" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="255" ordinal="43" sl="255" sc="1" el="255" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="256" ordinal="44" sl="256" sc="1" el="256" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="259" ordinal="45" sl="259" sc="1" el="259" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="260" ordinal="46" sl="260" sc="1" el="260" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="261" ordinal="47" sl="261" sc="1" el="261" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="264" ordinal="48" sl="264" sc="1" el="264" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="265" ordinal="49" sl="265" sc="1" el="265" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="266" ordinal="50" sl="266" sc="1" el="266" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="269" ordinal="51" sl="269" sc="1" el="269" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="270" ordinal="52" sl="270" sc="1" el="270" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="271" ordinal="53" sl="271" sc="1" el="271" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="272" ordinal="54" sl="272" sc="1" el="272" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="274" ordinal="55" sl="274" sc="1" el="274" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="276" ordinal="56" sl="276" sc="1" el="276" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="277" ordinal="57" sl="277" sc="1" el="277" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="278" ordinal="58" sl="278" sc="1" el="278" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="280" ordinal="59" sl="280" sc="1" el="280" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="281" ordinal="60" sl="281" sc="1" el="281" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="282" ordinal="61" sl="282" sc="1" el="282" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="284" ordinal="62" sl="284" sc="1" el="284" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="286" ordinal="63" sl="286" sc="1" el="286" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="287" ordinal="64" sl="287" sc="1" el="287" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="288" ordinal="65" sl="288" sc="1" el="288" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="290" ordinal="66" sl="290" sc="1" el="290" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="291" ordinal="67" sl="291" sc="1" el="291" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="293" ordinal="68" sl="293" sc="1" el="293" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="294" ordinal="69" sl="294" sc="1" el="294" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="295" ordinal="70" sl="295" sc="1" el="295" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="296" ordinal="71" sl="296" sc="1" el="296" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="297" ordinal="72" sl="297" sc="1" el="297" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="298" ordinal="73" sl="298" sc="1" el="298" ec="2" bec="0" bev="0" fileid="326" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="4" offset="4" sc="0" sl="209" ec="1" el="298" bec="0" bev="0" fileid="326" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="2" nPathComplexity="0" sequenceCoverage="0" branchCoverage="0" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="48" visitedSequencePoints="0" numBranchPoints="2" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="0" maxCyclomaticComplexity="2" minCyclomaticComplexity="2" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.IServiceProvider NosCore.WorldServer.Startup::ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)</Name> <FileRef uid="326" /> <SequencePoints> <SequencePoint vc="0" uspid="302" ordinal="0" sl="302" sc="1" el="302" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="303" ordinal="1" sl="303" sc="1" el="303" ec="2" bec="2" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="304" ordinal="2" sl="304" sc="1" el="304" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="305" ordinal="3" sl="305" sc="1" el="305" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="306" ordinal="4" sl="306" sc="1" el="306" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="307" ordinal="5" sl="307" sc="1" el="307" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="308" ordinal="6" sl="308" sc="1" el="308" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="309" ordinal="7" sl="309" sc="1" el="309" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="310" ordinal="8" sl="310" sc="1" el="310" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="312" ordinal="9" sl="312" sc="1" el="312" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="313" ordinal="10" sl="313" sc="1" el="313" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="314" ordinal="11" sl="314" sc="1" el="314" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="315" ordinal="12" sl="315" sc="1" el="315" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="316" ordinal="13" sl="316" sc="1" el="316" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="317" ordinal="14" sl="317" sc="1" el="317" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="318" ordinal="15" sl="318" sc="1" el="318" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="319" ordinal="16" sl="319" sc="1" el="319" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="320" ordinal="17" sl="320" sc="1" el="320" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="321" ordinal="18" sl="321" sc="1" el="321" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="322" ordinal="19" sl="322" sc="1" el="322" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="323" ordinal="20" sl="323" sc="1" el="323" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="324" ordinal="21" sl="324" sc="1" el="324" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="325" ordinal="22" sl="325" sc="1" el="325" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="326" ordinal="23" sl="326" sc="1" el="326" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="328" ordinal="24" sl="328" sc="1" el="328" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="329" ordinal="25" sl="329" sc="1" el="329" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="330" ordinal="26" sl="330" sc="1" el="330" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="331" ordinal="27" sl="331" sc="1" el="331" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="332" ordinal="28" sl="332" sc="1" el="332" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="334" ordinal="29" sl="334" sc="1" el="334" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="335" ordinal="30" sl="335" sc="1" el="335" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="337" ordinal="31" sl="337" sc="1" el="337" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="338" ordinal="32" sl="338" sc="1" el="338" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="339" ordinal="33" sl="339" sc="1" el="339" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="340" ordinal="34" sl="340" sc="1" el="340" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="341" ordinal="35" sl="341" sc="1" el="341" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="342" ordinal="36" sl="342" sc="1" el="342" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="343" ordinal="37" sl="343" sc="1" el="343" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="344" ordinal="38" sl="344" sc="1" el="344" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="345" ordinal="39" sl="345" sc="1" el="345" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="346" ordinal="40" sl="346" sc="1" el="346" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="347" ordinal="41" sl="347" sc="1" el="347" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="348" ordinal="42" sl="348" sc="1" el="348" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="349" ordinal="43" sl="349" sc="1" el="349" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="350" ordinal="44" sl="350" sc="1" el="350" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="351" ordinal="45" sl="351" sc="1" el="351" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="353" ordinal="46" sl="353" sc="1" el="353" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="354" ordinal="47" sl="354" sc="1" el="354" ec="2" bec="0" bev="0" fileid="326" /> </SequencePoints> <BranchPoints> <BranchPoint vc="0" uspid="303" ordinal="0" path="0" offset="19" offsetend="21" sl="303" fileid="326" /> <BranchPoint vc="0" uspid="303" ordinal="1" path="1" offset="19" offsetend="34" sl="303" fileid="326" /> </BranchPoints> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="5" offset="5" sc="0" sl="302" ec="1" el="354" bec="0" bev="0" fileid="326" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="12" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WorldServer.Startup::Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder)</Name> <FileRef uid="326" /> <SequencePoints> <SequencePoint vc="0" uspid="358" ordinal="0" sl="358" sc="1" el="358" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="359" ordinal="1" sl="359" sc="1" el="359" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="360" ordinal="2" sl="360" sc="1" el="360" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="361" ordinal="3" sl="361" sc="1" el="361" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="362" ordinal="4" sl="362" sc="1" el="362" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="363" ordinal="5" sl="363" sc="1" el="363" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="365" ordinal="6" sl="365" sc="1" el="365" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="366" ordinal="7" sl="366" sc="1" el="366" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="367" ordinal="8" sl="367" sc="1" el="367" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="368" ordinal="9" sl="368" sc="1" el="368" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="369" ordinal="10" sl="369" sc="1" el="369" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="370" ordinal="11" sl="370" sc="1" el="370" ec="2" bec="0" bev="0" fileid="326" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="6" offset="6" sc="0" sl="358" ec="1" el="370" bec="0" bev="0" fileid="326" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WorldServer.Startup::.ctor(Microsoft.Extensions.Configuration.IConfiguration)</Name> <FileRef uid="326" /> <SequencePoints> <SequencePoint vc="0" uspid="98" ordinal="0" sl="98" sc="1" el="98" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="99" ordinal="1" sl="99" sc="1" el="99" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="100" ordinal="2" sl="100" sc="1" el="100" ec="2" bec="0" bev="0" fileid="326" /> <SequencePoint vc="0" uspid="101" ordinal="3" sl="101" sc="1" el="101" ec="2" bec="0" bev="0" fileid="326" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="7" offset="7" sc="0" sl="98" ec="1" el="101" bec="0" bev="0" fileid="326" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.WorldServer.WorldServer</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="9" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WorldServer.WorldServer::.ctor(Microsoft.Extensions.Options.IOptions`1<NosCore.Core.Configuration.WorldConfiguration>,NosCore.NetworkManager,NosCore.GameObject.Services.EventLoaderService.Clock,Serilog.ILogger,NosCore.Core.HttpClients.ChannelHttpClients.IChannelHub,NosCore.GameObject.Services.MapInstanceGenerationService.IMapInstanceGeneratorService)</Name> <FileRef uid="327" /> <SequencePoints> <SequencePoint vc="0" uspid="47" ordinal="0" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="327" /> <SequencePoint vc="0" uspid="48" ordinal="1" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="327" /> <SequencePoint vc="0" uspid="49" ordinal="2" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="327" /> <SequencePoint vc="0" uspid="50" ordinal="3" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="327" /> <SequencePoint vc="0" uspid="51" ordinal="4" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="327" /> <SequencePoint vc="0" uspid="52" ordinal="5" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="327" /> <SequencePoint vc="0" uspid="53" ordinal="6" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="327" /> <SequencePoint vc="0" uspid="54" ordinal="7" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="327" /> <SequencePoint vc="0" uspid="55" ordinal="8" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="327" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="47" ec="1" el="55" bec="0" bev="0" fileid="327" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="14" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.WorldServer.WorldServerBootstrap</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="13" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>Microsoft.AspNetCore.Hosting.IWebHost NosCore.WorldServer.WorldServerBootstrap::BuildWebHost(System.String[])</Name> <FileRef uid="328" /> <SequencePoints> <SequencePoint vc="0" uspid="50" ordinal="0" sl="50" sc="1" el="50" ec="2" bec="0" bev="0" fileid="328" /> <SequencePoint vc="0" uspid="51" ordinal="1" sl="51" sc="1" el="51" ec="2" bec="0" bev="0" fileid="328" /> <SequencePoint vc="0" uspid="52" ordinal="2" sl="52" sc="1" el="52" ec="2" bec="0" bev="0" fileid="328" /> <SequencePoint vc="0" uspid="53" ordinal="3" sl="53" sc="1" el="53" ec="2" bec="0" bev="0" fileid="328" /> <SequencePoint vc="0" uspid="54" ordinal="4" sl="54" sc="1" el="54" ec="2" bec="0" bev="0" fileid="328" /> <SequencePoint vc="0" uspid="55" ordinal="5" sl="55" sc="1" el="55" ec="2" bec="0" bev="0" fileid="328" /> <SequencePoint vc="0" uspid="56" ordinal="6" sl="56" sc="1" el="56" ec="2" bec="0" bev="0" fileid="328" /> <SequencePoint vc="0" uspid="57" ordinal="7" sl="57" sc="1" el="57" ec="2" bec="0" bev="0" fileid="328" /> <SequencePoint vc="0" uspid="58" ordinal="8" sl="58" sc="1" el="58" ec="2" bec="0" bev="0" fileid="328" /> <SequencePoint vc="0" uspid="59" ordinal="9" sl="59" sc="1" el="59" ec="2" bec="0" bev="0" fileid="328" /> <SequencePoint vc="0" uspid="60" ordinal="10" sl="60" sc="1" el="60" ec="2" bec="0" bev="0" fileid="328" /> <SequencePoint vc="0" uspid="61" ordinal="11" sl="61" sc="1" el="61" ec="2" bec="0" bev="0" fileid="328" /> <SequencePoint vc="0" uspid="62" ordinal="12" sl="62" sc="1" el="62" ec="2" bec="0" bev="0" fileid="328" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="50" ec="1" el="62" bec="0" bev="0" fileid="328" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="1" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WorldServer.WorldServerBootstrap::.cctor()</Name> <FileRef uid="328" /> <SequencePoints> <SequencePoint vc="0" uspid="35" ordinal="0" sl="35" sc="1" el="35" ec="2" bec="0" bev="0" fileid="328" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="35" ec="1" el="35" bec="0" bev="0" fileid="328" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="11" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="2" /> <FullName>NosCore.WorldServer.Controllers.ConnectedAccountController</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="False" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="7" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Collections.Generic.List`1<NosCore.Data.WebApi.Subscriber> NosCore.WorldServer.Controllers.ConnectedAccountController::GetconnectedAccount()</Name> <FileRef uid="329" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="329" /> <SequencePoint vc="0" uspid="44" ordinal="1" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="329" /> <SequencePoint vc="0" uspid="45" ordinal="2" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="329" /> <SequencePoint vc="0" uspid="46" ordinal="3" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="329" /> <SequencePoint vc="0" uspid="47" ordinal="4" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="329" /> <SequencePoint vc="0" uspid="48" ordinal="5" sl="48" sc="1" el="48" ec="2" bec="0" bev="0" fileid="329" /> <SequencePoint vc="0" uspid="49" ordinal="6" sl="49" sc="1" el="49" ec="2" bec="0" bev="0" fileid="329" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="43" ec="1" el="49" bec="0" bev="0" fileid="329" xmlns:p8="xsi" /> </Method> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="4" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WorldServer.Controllers.ConnectedAccountController::.ctor(NosCore.Core.Channel)</Name> <FileRef uid="329" /> <SequencePoints> <SequencePoint vc="0" uspid="36" ordinal="0" sl="36" sc="1" el="36" ec="2" bec="0" bev="0" fileid="329" /> <SequencePoint vc="0" uspid="37" ordinal="1" sl="37" sc="1" el="37" ec="2" bec="0" bev="0" fileid="329" /> <SequencePoint vc="0" uspid="38" ordinal="2" sl="38" sc="1" el="38" ec="2" bec="0" bev="0" fileid="329" /> <SequencePoint vc="0" uspid="39" ordinal="3" sl="39" sc="1" el="39" ec="2" bec="0" bev="0" fileid="329" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="1" offset="1" sc="0" sl="36" ec="1" el="39" bec="0" bev="0" fileid="329" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.WorldServer.Controllers.PacketController</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WorldServer.Controllers.PacketController::.ctor(Serilog.ILogger,NosCore.Packets.Interfaces.IDeserializer)</Name> <FileRef uid="330" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="330" /> <SequencePoint vc="0" uspid="44" ordinal="1" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="330" /> <SequencePoint vc="0" uspid="45" ordinal="2" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="330" /> <SequencePoint vc="0" uspid="46" ordinal="3" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="330" /> <SequencePoint vc="0" uspid="47" ordinal="4" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="330" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="43" ec="1" el="47" bec="0" bev="0" fileid="330" xmlns:p8="xsi" /> </Method> </Methods> </Class> <Class> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="1" visitedMethods="0" numMethods="1" /> <FullName>NosCore.WorldServer.Controllers.StatController</FullName> <Methods> <Method cyclomaticComplexity="1" nPathComplexity="0" sequenceCoverage="0" branchCoverage="100" isConstructor="True" isGetter="False" isSetter="False" isStatic="True"> <Summary numSequencePoints="5" visitedSequencePoints="0" numBranchPoints="0" visitedBranchPoints="0" sequenceCoverage="0" branchCoverage="100" maxCyclomaticComplexity="1" minCyclomaticComplexity="1" visitedClasses="0" numClasses="0" visitedMethods="0" numMethods="1" /> <MetadataToken /> <Name>System.Void NosCore.WorldServer.Controllers.StatController::.ctor(Microsoft.Extensions.Options.IOptions`1<NosCore.Core.Configuration.WorldConfiguration>,Serilog.ILogger)</Name> <FileRef uid="331" /> <SequencePoints> <SequencePoint vc="0" uspid="43" ordinal="0" sl="43" sc="1" el="43" ec="2" bec="0" bev="0" fileid="331" /> <SequencePoint vc="0" uspid="44" ordinal="1" sl="44" sc="1" el="44" ec="2" bec="0" bev="0" fileid="331" /> <SequencePoint vc="0" uspid="45" ordinal="2" sl="45" sc="1" el="45" ec="2" bec="0" bev="0" fileid="331" /> <SequencePoint vc="0" uspid="46" ordinal="3" sl="46" sc="1" el="46" ec="2" bec="0" bev="0" fileid="331" /> <SequencePoint vc="0" uspid="47" ordinal="4" sl="47" sc="1" el="47" ec="2" bec="0" bev="0" fileid="331" /> </SequencePoints> <BranchPoints /> <MethodPoint vc="0" uspid="0" p8:type="SequencePoint" ordinal="0" offset="0" sc="0" sl="43" ec="1" el="47" bec="0" bev="0" fileid="331" xmlns:p8="xsi" /> </Method> </Methods> </Class> </Classes> </Module> </Modules> </CoverageSession> ================================================ FILE: test/NosCore.WebApi.Tests/ApiTests/AuthControllerTests.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using NosCore.Core.Encryption; using NosCore.Data.Enumerations.I18N; using NosCore.GameObject.InterChannelCommunication.Hubs.AuthHub; using NosCore.GameObject.Networking.ClientSession; using NosCore.GameObject.Services.AuthService; using NosCore.Shared.Configuration; using NosCore.Tests.Shared; using NosCore.WebApi.Controllers; using SpecLight; using System; using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Text.Json; using System.Threading.Tasks; using TwoFactorAuthNet; namespace NosCore.WebApi.Tests.ApiTests { [TestClass] public class AuthControllerTests { private readonly string TokenGuid = Guid.NewGuid().ToString(); private AuthController Controller = null!; private ClientSession Session = null!; private Mock<ILogger<AuthController>> Logger = null!; private IAuthCodeService AuthCodeService = null!; private IActionResult? Result; [TestInitialize] public async Task Setup() { AuthCodeService = new AuthCodeService(); await TestHelpers.ResetAsync(); Session = await TestHelpers.Instance.GenerateSessionAsync(); Logger = new Mock<ILogger<AuthController>>(); Controller = new AuthController(Options.Create(new WebApiConfiguration() { Password = "123" }), TestHelpers.Instance.AccountDao, Logger.Object, new Sha512Hasher(), TestHelpers.Instance.LogLanguageLocalizer, new AuthHub(AuthCodeService)); } [TestMethod] public async Task ConnectUserShouldLogSuccess() { await new Spec("Connect user should log success") .WhenAsync(UserConnectsWithValidCredentials) .Then(SuccessShouldBeLogged) .ExecuteAsync(); } private async Task UserConnectsWithValidCredentials() { await Controller.ConnectUserAsync(new ApiSession { Identity = Session.Account.Name, GfLang = "EN", Password = "test", Locale = "en-GB" }); } private void SuccessShouldBeLogged() { Logger.Verify( x => x.Log( LogLevel.Information, It.IsAny<EventId>(), It.Is<It.IsAnyType>((o, t) => string.Equals(string.Format(TestHelpers.Instance.LogLanguageLocalizer[LogLanguageKey.AUTH_API_SUCCESS], Session.Account.Name, It.IsAny<Guid>(), "en-GB"), o.ToString(), StringComparison.InvariantCultureIgnoreCase)), It.IsAny<Exception>(), It.IsAny<Func<It.IsAnyType, Exception?, string>>()), Times.Once); } [TestMethod] public async Task ConnectUserWithInvalidPasswordShouldFail() { await new Spec("Connect user with invalid password should fail") .WhenAsync(UserConnectsWithInvalidPassword) .Then(ShouldReturnAuthIncorrectError) .ExecuteAsync(); } private async Task UserConnectsWithInvalidPassword() { Result = await Controller.ConnectUserAsync(new ApiSession { Identity = Session.Account.Name, GfLang = "EN", Password = "test2" }); } private void ShouldReturnAuthIncorrectError() { Assert.AreEqual(JsonSerializer.Serialize(new BadRequestObjectResult(TestHelpers.Instance.LogLanguageLocalizer[LogLanguageKey.AUTH_INCORRECT])), JsonSerializer.Serialize((BadRequestObjectResult)Result!)); } [TestMethod] public async Task ConnectUserWithInvalidAccountShouldFail() { await new Spec("Connect user with invalid account should fail") .WhenAsync(UserConnectsWithInvalidAccount) .Then(ShouldReturnAuthError) .ExecuteAsync(); } private async Task UserConnectsWithInvalidAccount() { Result = await Controller.ConnectUserAsync(new ApiSession { Identity = Session.Account.Name + "abc" }); } private void ShouldReturnAuthError() { Assert.AreEqual(JsonSerializer.Serialize(new BadRequestObjectResult(TestHelpers.Instance.LogLanguageLocalizer[LogLanguageKey.AUTH_ERROR])), JsonSerializer.Serialize((BadRequestObjectResult)Result!)); } [TestMethod] public async Task ConnectUserWithInvalidMfaShouldFail() { await new Spec("Connect user with invalid MFA should fail") .GivenAsync(UserHasMfaEnabled) .WhenAsync(UserConnectsWithInvalidMfaCode) .Then(ShouldReturnMfaIncorrectError) .ExecuteAsync(); } private TwoFactorAuth? Tfa; private async Task UserHasMfaEnabled() { Tfa = new TwoFactorAuth(); Session.Account.MfaSecret = Tfa.CreateSecret(); await TestHelpers.Instance.AccountDao.TryInsertOrUpdateAsync(Session.Account); } private async Task UserConnectsWithInvalidMfaCode() { Result = await Controller.ConnectUserAsync(new ApiSession { Identity = Session.Account.Name, Mfa = Tfa!.GetCode(string.Concat(Session.Account.MfaSecret!.Reverse())), }); } private void ShouldReturnMfaIncorrectError() { Assert.AreEqual(JsonSerializer.Serialize(new BadRequestObjectResult(TestHelpers.Instance.LogLanguageLocalizer[LogLanguageKey.MFA_INCORRECT])), JsonSerializer.Serialize((BadRequestObjectResult)Result!)); } [TestMethod] public async Task ConnectUserWithoutMfaShouldSucceed() { await new Spec("Connect user without MFA should succeed") .WhenAsync(UserConnectsWithoutMfa) .Then(ShouldNotReturnMfaIncorrectError) .ExecuteAsync(); } private async Task UserConnectsWithoutMfa() { Result = await Controller.ConnectUserAsync(new ApiSession { Identity = Session.Account.Name }); } private void ShouldNotReturnMfaIncorrectError() { Assert.AreNotEqual(JsonSerializer.Serialize(new BadRequestObjectResult(TestHelpers.Instance.LogLanguageLocalizer[LogLanguageKey.MFA_INCORRECT])), JsonSerializer.Serialize((BadRequestObjectResult)Result!)); } [TestMethod] public async Task ConnectUserWithValidMfaShouldSucceed() { await new Spec("Connect user with valid MFA should succeed") .GivenAsync(UserHasMfaEnabled) .WhenAsync(UserConnectsWithValidMfaCode) .Then(ShouldNotReturnMfaIncorrectError) .ExecuteAsync(); } private async Task UserConnectsWithValidMfaCode() { Result = await Controller.ConnectUserAsync(new ApiSession { Identity = Session.Account.Name, Mfa = Tfa!.GetCode(Session.Account.MfaSecret!), }); } [TestMethod] public async Task GetAuthCodeShouldGenerateCodeWhenValidIdentity() { await new Spec("Get auth code should generate code when valid identity") .Given(ControllerHasValidIdentity) .WhenAsync(GettingAuthCodeAsync) .Then(ShouldReturnValidGuid) .ExecuteAsync(); } private void ControllerHasValidIdentity() { var claims = new List<Claim>() { new(ClaimTypes.Sid, "123"), new(ClaimTypes.NameIdentifier, Session.Account.Name), }; var identity = new ClaimsIdentity(claims, "TestAuthType"); Controller.ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext { User = new ClaimsPrincipal(identity) } }; } private async Task GettingAuthCodeAsync() { Result = await Controller.GetAuthCodeAsync(new ApiPlatformGameAccount { PlatformGameAccountId = "123" }); } private void ShouldReturnValidGuid() { var okResult = (OkObjectResult)Result!; Assert.IsNotNull(okResult.Value); var codeProperty = okResult.Value.GetType().GetProperty("code"); Assert.IsNotNull(codeProperty); var codeValue = codeProperty.GetValue(okResult.Value); Assert.IsTrue(Guid.TryParse(codeValue?.ToString(), out _)); } [TestMethod] public async Task GetAuthCodeShouldFailWhenInvalidIdentity() { await new Spec("Get auth code should fail when invalid identity") .Given(ControllerHasInvalidIdentity) .WhenAsync(GettingAuthCodeAsync) .Then(ShouldReturnAuthIncorrectError) .ExecuteAsync(); } private void ControllerHasInvalidIdentity() { var claims = new List<Claim>() { new(ClaimTypes.Sid, "124"), new(ClaimTypes.NameIdentifier, Session.Account.Name), }; var identity = new ClaimsIdentity(claims, "TestAuthType"); Controller.ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext { User = new ClaimsPrincipal(identity) } }; } [TestMethod] public async Task GetExpectingConnectionShouldReturnNullWhenTokenNull() { await new Spec("Get expecting connection should return null when token null") .WhenAsync(GettingExpectingConnectionWithNullToken) .Then(ShouldReturnNull) .ExecuteAsync(); } private async Task GettingExpectingConnectionWithNullToken() { Result = await Controller.GetExpectingConnection(Session.Account.Name, null, 1); } private void ShouldReturnNull() { Assert.AreEqual(null, ((OkObjectResult)Result!).Value); } [TestMethod] public async Task GetExpectingConnectionShouldReturnNullWhenNoAuthCode() { await new Spec("Get expecting connection should return null when no auth code") .WhenAsync(GettingExpectingConnectionWithInvalidAuthCode) .Then(ShouldReturnNull) .ExecuteAsync(); } private async Task GettingExpectingConnectionWithInvalidAuthCode() { Result = await Controller.GetExpectingConnection(Session.Account.Name, "A1A2A3", 1); } [TestMethod] public async Task GetExpectingConnectionShouldReturnAccountNameWhenAuthCode() { await new Spec("Get expecting connection should return account name when auth code") .Given(AuthCodeIsStored) .WhenAsync(GettingExpectingConnectionWithValidAuthCode) .Then(ShouldReturnAccountName) .ExecuteAsync(); } private void AuthCodeIsStored() { AuthCodeService.StoreAuthCode(TokenGuid, Session.Account.Name); } private async Task GettingExpectingConnectionWithValidAuthCode() { Result = await Controller.GetExpectingConnection(Session.Account.Name, string.Join("", TokenGuid.ToCharArray().Select(s => Convert.ToByte(s).ToString("x"))), 1); } private void ShouldReturnAccountName() { Assert.AreEqual(Session.Account.Name, ((OkObjectResult)Result!).Value); } [TestMethod] public async Task GetExpectingConnectionShouldReturnNullWhenNoneSessionTicket() { await new Spec("Get expecting connection should return null when none session ticket") .WhenAsync(GettingExpectingConnectionWithNoneSessionTicket) .Then(ShouldReturnNull) .ExecuteAsync(); } private async Task GettingExpectingConnectionWithNoneSessionTicket() { Result = await Controller.GetExpectingConnection(Session.Account.Name, "NONE_SESSION_TICKET", 1); } [TestMethod] public async Task GetExpectingConnectionShouldReturnTrueWhenGfModeAndExpecting() { await new Spec("Get expecting connection should return true when gf mode and expecting") .Given(UserIsMarkedReadyForAuth) .WhenAsync(GettingExpectingConnectionInGfMode) .Then(ShouldReturnTrue) .ExecuteAsync(); } private void UserIsMarkedReadyForAuth() { AuthCodeService.MarkReadyForAuth(Session.Account.Name, 1); } private async Task GettingExpectingConnectionInGfMode() { Result = await Controller.GetExpectingConnection(Session.Account.Name, "thisisgfmode", 1); } private void ShouldReturnTrue() { Assert.AreEqual("true", ((OkObjectResult)Result!).Value); } [TestMethod] public async Task GetExpectingConnectionShouldReturnFalseWhenGfModeButWrongSessionId() { await new Spec("Get expecting connection should return false when gf mode but wrong session id") .Given(UserIsMarkedReadyForAuth) .WhenAsync(GettingExpectingConnectionInGfModeWithWrongSession) .Then(ShouldReturnFalse) .ExecuteAsync(); } private async Task GettingExpectingConnectionInGfModeWithWrongSession() { Result = await Controller.GetExpectingConnection(Session.Account.Name, "thisisgfmode", 2); } private void ShouldReturnFalse() { Assert.AreEqual("false", ((OkObjectResult)Result!).Value); } [TestMethod] public async Task GetExpectingConnectionShouldReturnFalseWhenGfModeAndNotExpecting() { await new Spec("Get expecting connection should return false when gf mode and not expecting") .WhenAsync(GettingExpectingConnectionInGfMode) .Then(ShouldReturnFalse) .ExecuteAsync(); } [TestMethod] public async Task HasMfaEnabledShouldReturnTrueWhenMfaSecretExists() { await new Spec("Has MFA enabled should return true when MFA secret exists") .GivenAsync(UserHasMfaSecret) .WhenAsync(CheckingIfMfaEnabled) .Then(ShouldReturnTrueValue) .ExecuteAsync(); } private async Task UserHasMfaSecret() { Session.Account.MfaSecret = "12345"; await TestHelpers.Instance.AccountDao.TryInsertOrUpdateAsync(Session.Account); } private async Task CheckingIfMfaEnabled() { Result = await Controller.HasMfaEnabled(Session.Account.Name); } private void ShouldReturnTrueValue() { Assert.AreEqual(true, ((OkObjectResult)Result!).Value); } [TestMethod] public async Task HasMfaEnabledShouldReturnFalseWhenNoMfaSecret() { await new Spec("Has MFA enabled should return false when no MFA secret") .WhenAsync(CheckingIfMfaEnabled) .Then(ShouldReturnFalseValue) .ExecuteAsync(); } private void ShouldReturnFalseValue() { Assert.AreEqual(false, ((OkObjectResult)Result!).Value); } } } ================================================ FILE: test/NosCore.WebApi.Tests/NosCore.WebApi.Tests.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net10.0</TargetFramework> <IsPackable>false</IsPackable> <NoWarn>MSTEST0001;MSTEST0037;MSTEST0044;NU1701</NoWarn> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <OutputPath>..\..\build\</OutputPath> </PropertyGroup> <ItemGroup> <PackageReference Include="coverlet.msbuild"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Microsoft.NET.Test.Sdk" /> <PackageReference Include="MSTest.TestAdapter" /> <PackageReference Include="MSTest.TestFramework" /> <PackageReference Include="SpecLight" /> <PackageReference Include="AutoFixture" /> <PackageReference Include="AutoFixture.AutoMoq" /> <ProjectReference Include="..\..\src\NosCore.MasterServer\NosCore.MasterServer.csproj" /> <ProjectReference Include="..\..\src\NosCore.WebApi\NosCore.WebApi.csproj" /> <ProjectReference Include="..\..\src\NosCore.WorldServer\NosCore.WorldServer.csproj" /> <ProjectReference Include="..\NosCore.GameObject.Tests\NosCore.GameObject.Tests.csproj" /> <ProjectReference Include="..\NosCore.Tests.Shared\NosCore.Tests.Shared.csproj" /> </ItemGroup> <ItemGroup> <PackageReference Include="NosCore.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> </Project> ================================================ FILE: test/NosCore.WebApi.Tests/SetupAssemblyInitializer.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using Mapster; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.Data.Dto; using NosCore.Tests.Shared; namespace NosCore.WebApi.Tests { [TestClass] public class SetupAssemblyInitializer { [AssemblyInitialize] public static void AssemblyInit(TestContext _) { TestHelpers.Instance.InitDatabase(); TypeAdapterConfig.GlobalSettings.ForDestinationType<IStaticDto>() .IgnoreMember((member, side) => typeof(I18NString).IsAssignableFrom(member.Type)); } } } ================================================ FILE: tools/NosCore.DtoGenerator/DtoGenerator.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // // Copyright (C) 2019 - NosCore // // NosCore is a 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 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 Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Text; using System.IO; using System.Linq; using System.Text; namespace NosCore.DtoGenerator { [Generator] public class DtoGenerator : ISourceGenerator { public void Initialize(GeneratorInitializationContext context) { //uncomment line to debug generator //#if DEBUG // if (!Debugger.IsAttached) // { // Debugger.Launch(); // } //#endif } public void Execute(GeneratorExecutionContext context) { var path = Path.GetDirectoryName(context.AdditionalFiles.First(f => f.Path.EndsWith(".csproj")).Path); var files = Directory.GetFiles(path, "*.cs", SearchOption.AllDirectories); var options = (context.Compilation as CSharpCompilation)?.SyntaxTrees.FirstOrDefault()?.Options as CSharpParseOptions ?? new CSharpParseOptions(LanguageVersion.Preview); var trees = files.Select(f => CSharpSyntaxTree.ParseText(File.ReadAllText(f), options)).ToList(); var compilation = context.Compilation.AddSyntaxTrees(trees); foreach (var ns in trees) { var semanticModel = compilation.GetSemanticModel(ns); foreach (var cc in ns.GetRoot().DescendantNodes().OfType<ClassDeclarationSyntax>()) { var className = cc.Identifier.ValueText; var fullEntityName = (cc.Parent as NamespaceDeclarationSyntax)?.Name.ToString(); if (fullEntityName != "NosCore.Database.Entities") { continue; } //var directory string classNamespace = "NosCore.Data.Dto"; int keyCount = 0; string dtoInterface = "IDto"; var propertyList = ""; var classSymbol = cc.BaseList?.Types.Select(s => semanticModel.GetTypeInfo(s.Type).Type!); if (classSymbol?.Any(s => s.TypeKind != TypeKind.Interface) == true) { if (classSymbol.Any(s => s.Name.EndsWith("Instance"))) { dtoInterface = classSymbol.First(s => s.Name.EndsWith("Instance")).Name + "Dto"; keyCount = 1; } else { foreach (var symbol in classSymbol.First().GetMembers() .Where(m => m.Kind == SymbolKind.Property)) { var prop = (IPropertySymbol)symbol; var keyAttribute = prop.GetAttributes().FirstOrDefault(o => o.AttributeClass?.Name == "KeyAttribute"); if (keyAttribute != null) { keyCount++; propertyList += " [Key]\n"; } propertyList += $" public {prop.Type} {prop.Name} {{get; set;}}\n\n"; } } } if (className == "ItemInstance") { dtoInterface = "IItemInstanceDto"; } if (className.StartsWith("I18N")) { //directory = "I18N"; dtoInterface = "II18NDto"; classNamespace = "NosCore.Data.I18N"; } if (classSymbol?.FirstOrDefault(s => s.TypeKind == TypeKind.Interface && s.Name.Contains("IStaticEntity")) != null) { //directory = "StaticEntities"; dtoInterface = "IStaticDto"; classNamespace = "NosCore.Data.StaticEntities"; } var props = cc.DescendantNodes().OfType<PropertyDeclarationSyntax>(); foreach (var prop in props) { var protectionLevel = "public"; var typeSymbol = semanticModel.GetTypeInfo(prop.Type).Type; var i18nStr = prop.AttributeLists.SelectMany(o => o.Attributes).FirstOrDefault(o => o.Name.ToString() == "I18NString"); if (i18nStr != null) { propertyList += $" [I18NFrom({i18nStr.ArgumentList!.Arguments[0].ToString().TrimEnd(')')}Dto))]"; propertyList += $" public I18NString {prop.Identifier} {{ get; set; }} = new I18NString();"; propertyList += $" [AdaptMember(\"{prop.Identifier}\")]"; propertyList += $" public {prop.Type} {prop.Identifier}I18NKey {{ get; set; }}"; } else { var nullableType = prop.Type.ToString().Contains("?"); if (nullableType) { propertyList += "#nullable enable\n"; } var namespaceType = typeSymbol?.ContainingNamespace == null ? "" : typeSymbol.ContainingNamespace + "."; if (typeSymbol?.ContainingType != null) { namespaceType = typeSymbol?.ContainingType + "."; } var dtoName = prop.Type.ToString(); if ((typeSymbol as INamedTypeSymbol)?.TypeArguments.Any() == true && typeSymbol?.Name == "Nullable" && (typeSymbol as INamedTypeSymbol)!.TypeArguments[0].ToString().StartsWith("NosCore")) { namespaceType = ""; dtoName = (typeSymbol as INamedTypeSymbol)!.TypeArguments[0].ToString(); if (nullableType) { dtoName += "?"; } } if (prop.Modifiers.Any(s => s.ValueText == "virtual")) { protectionLevel = "internal"; if (!dtoName.EndsWith(">")) { namespaceType = ""; } if (nullableType) { dtoName = dtoName.Replace("?", ""); } dtoName = dtoName.Insert(dtoName.EndsWith(">") ? dtoName.Length - 1 : dtoName.Length, "Dto"); if (nullableType) { dtoName += "?"; } } if (namespaceType == "System.") { namespaceType = ""; } var keyAttribute = prop.AttributeLists.SelectMany(o => o.Attributes).FirstOrDefault(o => o.Name.ToString() == "Key"); if (keyAttribute != null) { keyCount++; propertyList += " [Key]\n"; } propertyList += $" {protectionLevel} {namespaceType}{dtoName} {prop.Identifier} {{get; set;}}\n"; if (nullableType) { propertyList += "#nullable disable\n"; } } propertyList += "\n"; } if (keyCount != 1) { context.ReportDiagnostic(Diagnostic.Create( new DiagnosticDescriptor( "SG0001", "Missing primary key", $"Class {className} does not have a key.", "SourceGenerator", DiagnosticSeverity.Error, true), null)); } var code = $@"// __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // // Copyright (C) 2019 - NosCore // // NosCore is a 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 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.ComponentModel.DataAnnotations; using NosCore.Data.I18N; using NosCore.Data.Dto; using NosCore.Data.StaticEntities; using NosCore.Data.DataAttributes; using NosCore.Data.Enumerations.I18N; using NodaTime; using Mapster; using System; namespace {classNamespace} {{ /// <summary> /// Represents a DTO class for {fullEntityName}. /// NOTE: This class is generated by NosCore.DtoGenerator /// </summary> public class {className}Dto : {dtoInterface} {{ {propertyList} }} }}"; context.AddSource( $"{className}Dto.generated.cs", SourceText.From(code, Encoding.UTF8) ); } } } } } ================================================ FILE: tools/NosCore.DtoGenerator/NosCore.DtoGenerator.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework> <EnforceExtendedAnalyzerRules>false</EnforceExtendedAnalyzerRules> <NoWarn>RS1042</NoWarn> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.CodeAnalysis.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Microsoft.CodeAnalysis.CSharp"> <PrivateAssets>all</PrivateAssets> </PackageReference> </ItemGroup> <ItemGroup> <PackageReference Include="NosCore.Analyzers"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> </Project> ================================================ FILE: tools/NosCore.EcsGenerator/ComponentBundleGenerator.cs ================================================ // __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // using System.Collections.Generic; using System.Collections.Immutable; using System.Linq; using System.Text; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Text; namespace NosCore.EcsGenerator; [Generator] public class ComponentBundleGenerator : IIncrementalGenerator { private const string ComponentBundleAttributeName = "NosCore.GameObject.Ecs.Attributes.ComponentBundleAttribute"; public void Initialize(IncrementalGeneratorInitializationContext context) { var bundleDeclarations = context.SyntaxProvider .CreateSyntaxProvider( predicate: static (s, _) => IsPartialStruct(s), transform: static (ctx, _) => GetBundleInfo(ctx)) .Where(static m => m is not null); var compilationAndBundles = context.CompilationProvider.Combine(bundleDeclarations.Collect()); context.RegisterSourceOutput(compilationAndBundles, static (spc, source) => Execute(source.Left, source.Right!, spc)); } private static bool IsPartialStruct(SyntaxNode node) { return node is StructDeclarationSyntax sds && sds.Modifiers.Any(SyntaxKind.PartialKeyword); } private static BundleInfo? GetBundleInfo(GeneratorSyntaxContext context) { var structDeclaration = (StructDeclarationSyntax)context.Node; var symbol = context.SemanticModel.GetDeclaredSymbol(structDeclaration); if (symbol is null) return null; var bundleAttr = symbol.GetAttributes() .FirstOrDefault(ad => ad.AttributeClass?.ToDisplayString() == ComponentBundleAttributeName); if (bundleAttr is null) return null; var includedComponents = new List<IncludedComponent>(); // Get component types from attribute constructor arguments foreach (var arg in bundleAttr.ConstructorArguments) { if (arg.Kind == TypedConstantKind.Array) { foreach (var typeArg in arg.Values) { if (typeArg.Value is INamedTypeSymbol componentSymbol) { var component = CreateIncludedComponent(componentSymbol); if (component != null) includedComponents.Add(component); } } } } if (includedComponents.Count == 0) return null; return new BundleInfo( symbol.ContainingNamespace.ToDisplayString(), symbol.Name, includedComponents); } private static IncludedComponent? CreateIncludedComponent(INamedTypeSymbol componentSymbol) { var properties = new List<ComponentProperty>(); var typeNamespaces = new HashSet<string>(); foreach (var member in componentSymbol.GetMembers()) { if (member is IPropertySymbol prop && prop.DeclaredAccessibility == Accessibility.Public) { var defaultValue = GetDefaultValue(prop.Type); properties.Add(new ComponentProperty( prop.Name, prop.Type.ToDisplayString(), !prop.IsReadOnly, defaultValue)); CollectNamespaces(prop.Type, typeNamespaces); } } var componentName = componentSymbol.Name; var shortName = componentName.EndsWith("Component") ? componentName.Substring(0, componentName.Length - "Component".Length) : componentName; var fieldName = "_" + char.ToLowerInvariant(shortName[0]) + shortName.Substring(1); return new IncludedComponent( componentSymbol.ContainingNamespace.ToDisplayString(), componentName, shortName, fieldName, properties, typeNamespaces); } private static void CollectNamespaces(ITypeSymbol type, HashSet<string> namespaces) { if (type is INamedTypeSymbol namedType) { var containing = namedType.ContainingNamespace; if (containing != null && !containing.IsGlobalNamespace) { var ns = containing.ToDisplayString(); if (!string.IsNullOrEmpty(ns) && ns != "System" && !ns!.StartsWith("System.")) { namespaces.Add(ns); } } foreach (var typeArg in namedType.TypeArguments) { CollectNamespaces(typeArg, namespaces); } } else if (type is IArrayTypeSymbol arrayType) { CollectNamespaces(arrayType.ElementType, namespaces); } } private static void Execute(Compilation compilation, ImmutableArray<BundleInfo?> bundles, SourceProductionContext context) { if (bundles.IsDefaultOrEmpty) return; var bundleDict = new Dictionary<string, BundleInfo>(); foreach (var b in bundles) { if (b is null) continue; var key = $"{b.Namespace}.{b.Name}"; if (!bundleDict.ContainsKey(key)) { bundleDict[key] = b; } } foreach (var bundle in bundleDict.Values) { var source = GenerateBundlePartial(bundle); context.AddSource($"{bundle.Name}.g.cs", SourceText.From(source, Encoding.UTF8)); } } private static string GenerateBundlePartial(BundleInfo bundle) { var sb = new StringBuilder(); sb.AppendLine("// <auto-generated/>"); sb.AppendLine("#nullable enable"); sb.AppendLine("#pragma warning disable CS0282 // Field ordering in partial struct"); sb.AppendLine(); sb.AppendLine("using Arch.Core;"); sb.AppendLine("using NosCore.GameObject.Ecs;"); var namespaces = bundle.Components .Select(c => c.Namespace) .Concat(bundle.Components.SelectMany(c => c.TypeNamespaces)) .Distinct() .Where(ns => ns != bundle.Namespace && ns != "Arch.Core" && ns != "NosCore.GameObject.Ecs") .OrderBy(ns => ns); foreach (var ns in namespaces) { sb.AppendLine($"using {ns};"); } sb.AppendLine(); sb.AppendLine($"namespace {bundle.Namespace};"); sb.AppendLine(); sb.AppendLine($"public partial struct {bundle.Name}"); sb.AppendLine("{"); // Generate Entity and World as readonly fields sb.AppendLine(" public readonly Entity Entity;"); sb.AppendLine(" public readonly MapWorld World;"); sb.AppendLine(); // Generate constructor sb.AppendLine($" public {bundle.Name}(Entity entity, MapWorld world)"); sb.AppendLine(" {"); sb.AppendLine(" Entity = entity;"); sb.AppendLine(" World = world;"); sb.AppendLine(" }"); sb.AppendLine(); // Find duplicate property names across all components var propertyOccurrences = new Dictionary<string, int>(); foreach (var component in bundle.Components) { foreach (var prop in component.Properties) { if (!propertyOccurrences.ContainsKey(prop.Name)) propertyOccurrences[prop.Name] = 0; propertyOccurrences[prop.Name]++; } } var duplicateProperties = new HashSet<string>( propertyOccurrences.Where(kv => kv.Value > 1).Select(kv => kv.Key)); foreach (var component in bundle.Components) { sb.AppendLine($" public static implicit operator {component.Name}({bundle.Name} bundle)"); sb.AppendLine(" {"); sb.AppendLine($" var __value = bundle.World.TryGetComponent<{component.Name}>(bundle.Entity);"); sb.AppendLine(" if (__value == null)"); sb.AppendLine(" {"); sb.AppendLine($" throw new global::System.InvalidOperationException($\"{component.Name} missing on entity {{bundle.Entity}}\");"); sb.AppendLine(" }"); sb.AppendLine(" return __value.Value;"); sb.AppendLine(" }"); } sb.AppendLine(); // Generate properties using casts foreach (var component in bundle.Components) { sb.AppendLine($" // From {component.Name}"); foreach (var prop in component.Properties) { var memberName = duplicateProperties.Contains(prop.Name) ? $"{component.ShortName}{prop.Name}" : prop.Name; if (prop.HasSetter) { sb.AppendLine($" public {prop.Type} {memberName}"); sb.AppendLine(" {"); sb.AppendLine($" get => (({component.Name})this).{prop.Name};"); sb.AppendLine($" set => World.SetComponent(Entity, (({component.Name})this) with {{ {prop.Name} = value }});"); sb.AppendLine(" }"); } else { sb.AppendLine($" public {prop.Type} {memberName} => (({component.Name})this).{prop.Name};"); } } sb.AppendLine(); } sb.AppendLine("}"); return sb.ToString(); } private class BundleInfo { public string Namespace { get; } public string Name { get; } public List<IncludedComponent> Components { get; } public BundleInfo(string @namespace, string name, List<IncludedComponent> components) { Namespace = @namespace; Name = name; Components = components; } } private class IncludedComponent { public string Namespace { get; } public string Name { get; } public string ShortName { get; } public string FieldName { get; } public List<ComponentProperty> Properties { get; } public HashSet<string> TypeNamespaces { get; } public IncludedComponent(string @namespace, string name, string shortName, string fieldName, List<ComponentProperty> properties, HashSet<string> typeNamespaces) { Namespace = @namespace; Name = name; ShortName = shortName; FieldName = fieldName; Properties = properties; TypeNamespaces = typeNamespaces; } } private static string GetDefaultValue(ITypeSymbol type) { return type.SpecialType switch { SpecialType.System_Boolean => "false", SpecialType.System_Byte => "0", SpecialType.System_SByte => "0", SpecialType.System_Int16 => "0", SpecialType.System_UInt16 => "0", SpecialType.System_Int32 => "0", SpecialType.System_UInt32 => "0", SpecialType.System_Int64 => "0", SpecialType.System_UInt64 => "0", SpecialType.System_Single => "0f", SpecialType.System_Double => "0d", SpecialType.System_String => "string.Empty", _ => type.IsValueType ? type.NullableAnnotation == NullableAnnotation.Annotated ? "null" : "default" : "null!" }; } private class ComponentProperty { public string Name { get; } public string Type { get; } public bool HasSetter { get; } public string DefaultValue { get; } public ComponentProperty(string name, string type, bool hasSetter, string defaultValue) { Name = name; Type = type; HasSetter = hasSetter; DefaultValue = defaultValue; } } } ================================================ FILE: tools/NosCore.EcsGenerator/NosCore.EcsGenerator.csproj ================================================ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework> <EnforceExtendedAnalyzerRules>true</EnforceExtendedAnalyzerRules> <IsRoslynComponent>true</IsRoslynComponent> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.CodeAnalysis.CSharp" VersionOverride="4.8.0" PrivateAssets="all" /> <PackageReference Include="Microsoft.CodeAnalysis.Analyzers" VersionOverride="3.3.4" PrivateAssets="all" /> </ItemGroup> </Project>